FreeCAD workbench to create assembly handbooks
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

28 lines
933 B

import FreeCADGui as Gui
global ahb_commands
ahb_commands = {}
class AHB_CommandWrapper:
def __init__(self, command_name):
self.command_name = command_name
def __getattr__(self, attrName):
instance = ahb_commands[self.command_name]
result = getattr(instance, attrName)
if callable(result):
# replace self
def f(*args, **kwargs): return result.__func__(instance, *args, **kwargs)
return f
else:
return result
@staticmethod
def addGuiCommand(command_name, command_instance):
#print(("adding" if not command_name in ahb_commands else "updating") + " command " + command_name)
ahb_commands.update({ command_name: command_instance })
Gui.addCommand(command_name, AHB_CommandWrapper(command_name))
@staticmethod
def listGuiCommands():
return ahb_commands.keys()