FreeCAD_assembly3/init_gui.py

76 lines
2.6 KiB
Python

import FreeCAD, FreeCADGui
from .utils import logger
try:
from . import sys_slvs
except ImportError as e:
logger.debug('failed to import slvs: {}'.format(e))
try:
from . import sys_sympy
except ImportError as e:
logger.debug('failed to import sympy: {}'.format(e))
import sys
if not 'freecad.asm3.sys_slvs' in sys.modules:
logger.warn('no solver backend found')
class Assembly3Workbench(FreeCADGui.Workbench):
from . import utils
MenuText = 'Assembly 3'
Icon = utils.addIconToFCAD('AssemblyWorkbench.svg')
from .gui import SelectionObserver
_observer = SelectionObserver()
from .mover import AsmDocumentObserver
_DocObserver = AsmDocumentObserver()
def __init__(self):
pass
def Activated(self):
from .gui import AsmCmdManager
AsmCmdManager.WorkbenchActivated = True
for cmd in AsmCmdManager.getInfo().Types:
cmd.workbenchActivated()
def Deactivated(self):
from .gui import AsmCmdManager
AsmCmdManager.WorkbenchActivated = False
for cmd in AsmCmdManager.getInfo().Types:
cmd.workbenchDeactivated()
def Initialize(self):
from .gui import AsmCmdManager,AsmCmdGotoRelation,\
AsmCmdGotoLinked, AsmCmdGotoLinkedFinal
AsmCmdManager.init()
cmdSet = set()
for name,cmds in AsmCmdManager.Toolbars.items():
cmdSet.update(cmds)
self.appendToolbar(name,[cmd.getName() for cmd in cmds])
self.appendToolbar('Assembly3 Navigation', ["Std_SelBack",
"Std_SelForward",AsmCmdGotoRelation.getName(),
AsmCmdGotoLinked.getName(), AsmCmdGotoLinkedFinal.getName(),
"Std_LinkSelectAllLinks","Std_TreeSelectAllInstances"])
for name,cmds in AsmCmdManager.Menus.items():
cmdSet.update(cmds)
self.appendMenu(name,[cmd.getName() for cmd in cmds])
self._observer.setCommands(cmdSet)
# FreeCADGui.addPreferencePage(
# ':/assembly3/ui/assembly3_prefs.ui','Assembly3')
def _contextMenu(self):
from .gui import AsmCmdManager
from collections import OrderedDict
menus = OrderedDict()
for cmd in AsmCmdManager.getInfo().Types:
name = cmd.getContextMenuName()
if name:
menus.setdefault(name,[]).append(cmd.getName())
for name,cmds in menus.items():
self.appendContextMenu(name,cmds)
def ContextMenu(self, _recipient):
logger.catch('',self._contextMenu)
FreeCADGui.addWorkbench(Assembly3Workbench)