From 4b06d4d4872f567283e0b0cf52044a898d9f6c14 Mon Sep 17 00:00:00 2001 From: ElgoogUdiab Date: Tue, 18 Mar 2025 10:25:43 +0800 Subject: [PATCH] Hide Hyper3D API key in UI Panel --- .gitignore | 3 +++ addon.py | 38 ++++++++++++++++++++++++++++++-------- 2 files changed, 33 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 505a3b1..415ef8f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ +# macOS things +**/.DS_Store + # Python-generated files __pycache__/ *.py[oc] diff --git a/addon.py b/addon.py index ea288a9..aba8603 100644 --- a/addon.py +++ b/addon.py @@ -268,8 +268,8 @@ class BlenderMCPServer: # Collect minimal object information (limit to first 10 objects) for i, obj in enumerate(bpy.context.scene.objects): - if i >= 10: # Reduced from 20 to 10 - break + # if i >= 10: # Reduced from 20 to 10 + # break obj_info = { "name": obj.name, @@ -1613,8 +1613,15 @@ class BLENDERMCP_PT_Panel(bpy.types.Panel): layout.prop(scene, "blendermcp_use_hyper3d", text="Use Hyper3D Rodin 3D model generation") if scene.blendermcp_use_hyper3d: layout.prop(scene, "blendermcp_hyper3d_mode", text="Rodin Mode") - layout.prop(scene, "blendermcp_hyper3d_api_key", text="API Key") - layout.operator("blendermcp.set_free_trial_api_key", text="Set Free Trial API Key") + + # Show API Key Status (to hide API key in UI) + api_status = "API Key Not Set" if not scene.blendermcp_hyper3d_api_key else "API Key Set" + if scene.blendermcp_hyper3d_api_key == RODIN_FREE_TRIAL_KEY: + api_status = "Using Free Trial API Key" + + layout.label(text=f"{api_status}") + layout.operator("blendermcp.set_hyper3d_api_key", text="Set API Key") + layout.operator("blendermcp.set_hyper3d_free_trial_api_key", text="Set Free Trial API Key") if not scene.blendermcp_server_running: layout.operator("blendermcp.start_server", text="Start MCP Server") @@ -1622,9 +1629,22 @@ class BLENDERMCP_PT_Panel(bpy.types.Panel): layout.operator("blendermcp.stop_server", text="Stop MCP Server") layout.label(text=f"Running on port {scene.blendermcp_port}") +class BLENDERMCP_OT_SetHyper3DAPIKey(bpy.types.Operator): + bl_idname = "blendermcp.set_hyper3d_api_key" + bl_label = "Set API Key" + + api_key: bpy.props.StringProperty(name="blendermcp.hyper3d_private_api_key") + + def execute(self, context): + context.scene.blendermcp_hyper3d_api_key = self.api_key + return {'FINISHED'} + + def invoke(self, context, event): + return context.window_manager.invoke_props_dialog(self) + # Operator to set Hyper3D API Key -class BLENDERMCP_OT_SetFreeTrialHyper3DAPIKey(bpy.types.Operator): - bl_idname = "blendermcp.set_free_trial_api_key" +class BLENDERMCP_OT_SetHyper3DFreeTrialAPIKey(bpy.types.Operator): + bl_idname = "blendermcp.set_hyper3d_free_trial_api_key" bl_label = "Set Free Trial API Key" def execute(self, context): @@ -1714,7 +1734,8 @@ def register(): ) bpy.utils.register_class(BLENDERMCP_PT_Panel) - bpy.utils.register_class(BLENDERMCP_OT_SetFreeTrialHyper3DAPIKey) + bpy.utils.register_class(BLENDERMCP_OT_SetHyper3DFreeTrialAPIKey) + bpy.utils.register_class(BLENDERMCP_OT_SetHyper3DAPIKey) bpy.utils.register_class(BLENDERMCP_OT_StartServer) bpy.utils.register_class(BLENDERMCP_OT_StopServer) @@ -1727,7 +1748,8 @@ def unregister(): del bpy.types.blendermcp_server bpy.utils.unregister_class(BLENDERMCP_PT_Panel) - bpy.utils.unregister_class(BLENDERMCP_OT_SetFreeTrialHyper3DAPIKey) + bpy.utils.unregister_class(BLENDERMCP_OT_SetHyper3DFreeTrialAPIKey) + bpy.utils.unregister_class(BLENDERMCP_OT_SetHyper3DAPIKey) bpy.utils.unregister_class(BLENDERMCP_OT_StartServer) bpy.utils.unregister_class(BLENDERMCP_OT_StopServer)