InitGui.py (2511B)
1 import sys 2 3 import ExternalAppsList 4 5 myIcon = """ 6 /* XPM */ 7 static char * icon_xpm[] = { 8 "16 16 15 1", 9 " c None", 10 ". c #FFFFFF", 11 "+ c #E8E5E5", 12 "@ c #897578", 13 "# c #9B8B8D", 14 "$ c #75575C", 15 "% c #C9C3C4", 16 "& c #FF89DA", 17 "* c #FF96DA", 18 "= c #FFA2DA", 19 "- c #FFACDA", 20 "; c #FFB2DA", 21 "> c #FFEAF3", 22 ", c #FFB9DA", 23 "' c #FF9DDA", 24 "................", 25 "..........+@....", 26 ".........#$%....", 27 "........$$$.....", 28 ".......%$$%.....", 29 ".......&%.......", 30 "......*&........", 31 ".....=&.........", 32 "....-&.....&....", 33 "...;&>....&&....", 34 "..,'&.....&&....", 35 "..&&.....&..&...", 36 ".........&&&&...", 37 "........&...&...", 38 ".......&.....&..", 39 "................"}; 40 """ 41 42 class XternalAppsWorkbench(Workbench): 43 """Subclasses must implement the appName attribute""" 44 global myIcon 45 global XternalAppsWorkbench 46 global ExternalAppsList 47 48 def __init__(self): 49 self.MenuText = "XternalApps: " + self.appName 50 self.ToolTip = "Embeds " + self.appName + " in FreeCAD" 51 self.Icon = ExternalAppsList.apps[self.appName].Icon 52 super(XternalAppsWorkbench, self).__init__() 53 54 def Initialize(self): 55 # Load commands 56 import AppCommand 57 import ToolCommand 58 import Embed 59 Embed.ExternalApps() 60 AppCommand.createCommands(self.appName) 61 ToolCommand.createCommands(self.appName) 62 63 # List of commands for this workbench 64 self.list = ['ExternalAppsOpen' + self.appName + 'Command'] \ 65 + ['ExternalAppsTool' + self.appName + toolName + 'Command' 66 for toolName in ExternalAppsList.apps[self.appName].Tools] 67 68 # Create menus and toolbars 69 self.appendMenu("ExternalApplications", self.list) 70 self.appendToolbar("ExternalApplications", self.list) 71 72 def Activated(self): 73 pass 74 75 def Deactivated(self): 76 pass 77 78 #def ContextMenu(self): 79 # pass 80 81 def GetClassName(self): 82 return "Gui::PythonWorkbench" 83 84 def addAppWorkbench(appName): 85 workbenchClass = type( 86 "XternalApps" + appName + "Workbench", 87 (XternalAppsWorkbench,), { 'appName': appName }) 88 Gui.addWorkbench(workbenchClass()) 89 90 for appName in ExternalAppsList.apps: 91 addAppWorkbench(appName)