| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | """Initialization of the Draft workbench (graphical interface).""" |
| |
|
| | import os |
| |
|
| | import FreeCAD |
| | import FreeCADGui |
| |
|
| | __title__ = "FreeCAD Draft Workbench - Init file" |
| | __author__ = "Yorik van Havre <yorik@uncreated.net>" |
| | __url__ = "https://www.freecad.org" |
| |
|
| |
|
| | class DraftWorkbench(FreeCADGui.Workbench): |
| | """The Draft Workbench definition.""" |
| |
|
| | def __init__(self): |
| | def QT_TRANSLATE_NOOP(context, text): |
| | return text |
| |
|
| | __dirname__ = os.path.join(FreeCAD.getResourceDir(), "Mod", "Draft") |
| | _tooltip = "The Draft workbench is used for 2D drafting on a grid" |
| | self.__class__.Icon = os.path.join(__dirname__, "Resources", "icons", "DraftWorkbench.svg") |
| | self.__class__.MenuText = QT_TRANSLATE_NOOP("draft", "Draft") |
| | self.__class__.ToolTip = QT_TRANSLATE_NOOP("draft", _tooltip) |
| |
|
| | def Initialize(self): |
| | """When the workbench is first loaded.""" |
| |
|
| | def QT_TRANSLATE_NOOP(context, text): |
| | return text |
| |
|
| | |
| | dependencies_OK = False |
| | try: |
| | from pivy import coin |
| |
|
| | if FreeCADGui.getSoDBVersion() != coin.SoDB.getVersion(): |
| | raise AssertionError( |
| | "FreeCAD and Pivy use different versions " |
| | "of Coin. " |
| | "This will lead to unexpected behaviour." |
| | ) |
| | except AssertionError: |
| | FreeCAD.Console.PrintWarning( |
| | "Error: FreeCAD and Pivy " |
| | "use different versions of Coin. " |
| | "This will lead to unexpected " |
| | "behaviour.\n" |
| | ) |
| | except ImportError: |
| | FreeCAD.Console.PrintWarning( |
| | "Error: Pivy not found, " "Draft Workbench will be disabled.\n" |
| | ) |
| | except Exception: |
| | FreeCAD.Console.PrintWarning("Error: Unknown error " "while trying to load Pivy.\n") |
| | else: |
| | dependencies_OK = True |
| |
|
| | if not dependencies_OK: |
| | return |
| |
|
| | |
| | try: |
| | import Draft_rc |
| | import DraftTools |
| | import DraftGui |
| |
|
| | FreeCADGui.addLanguagePath(":/translations") |
| | FreeCADGui.addIconPath(":/icons") |
| | except Exception as exc: |
| | FreeCAD.Console.PrintError(exc) |
| | FreeCAD.Console.PrintError( |
| | "Error: Initializing one or more " |
| | "of the Draft modules failed, " |
| | "Draft will not work as expected.\n" |
| | ) |
| |
|
| | |
| | import draftutils.init_tools as it |
| |
|
| | self.drawing_commands = it.get_draft_drawing_commands() |
| | self.annotation_commands = it.get_draft_annotation_commands() |
| | self.modification_commands = it.get_draft_modification_commands() |
| | self.utility_commands_menu = it.get_draft_utility_commands_menu() |
| | self.utility_commands_toolbar = it.get_draft_utility_commands_toolbar() |
| | self.context_commands = it.get_draft_context_commands() |
| |
|
| | |
| | it.init_toolbar( |
| | self, QT_TRANSLATE_NOOP("Workbench", "Draft Creation"), self.drawing_commands |
| | ) |
| | it.init_toolbar( |
| | self, QT_TRANSLATE_NOOP("Workbench", "Draft Annotation"), self.annotation_commands |
| | ) |
| | it.init_toolbar( |
| | self, QT_TRANSLATE_NOOP("Workbench", "Draft Modification"), self.modification_commands |
| | ) |
| | it.init_toolbar( |
| | self, QT_TRANSLATE_NOOP("Workbench", "Draft Utility"), self.utility_commands_toolbar |
| | ) |
| | it.init_toolbar( |
| | self, QT_TRANSLATE_NOOP("Workbench", "Draft Snap"), it.get_draft_snap_commands() |
| | ) |
| |
|
| | |
| | it.init_menu(self, [QT_TRANSLATE_NOOP("Workbench", "&Drafting")], self.drawing_commands) |
| | it.init_menu( |
| | self, [QT_TRANSLATE_NOOP("Workbench", "&Annotation")], self.annotation_commands |
| | ) |
| | it.init_menu( |
| | self, [QT_TRANSLATE_NOOP("Workbench", "&Modification")], self.modification_commands |
| | ) |
| | it.init_menu( |
| | self, [QT_TRANSLATE_NOOP("Workbench", "&Utilities")], self.utility_commands_menu |
| | ) |
| |
|
| | |
| | if hasattr(FreeCADGui, "draftToolBar"): |
| | if not hasattr(FreeCADGui.draftToolBar, "loadedPreferences"): |
| | from draftutils import params |
| |
|
| | params._param_observer_start() |
| | FreeCADGui.addPreferencePage( |
| | ":/ui/preferences-draft.ui", QT_TRANSLATE_NOOP("QObject", "Draft") |
| | ) |
| | FreeCADGui.addPreferencePage( |
| | ":/ui/preferences-draftinterface.ui", QT_TRANSLATE_NOOP("QObject", "Draft") |
| | ) |
| | FreeCADGui.addPreferencePage( |
| | ":/ui/preferences-draftsnap.ui", QT_TRANSLATE_NOOP("QObject", "Draft") |
| | ) |
| | FreeCADGui.addPreferencePage( |
| | ":/ui/preferences-draftvisual.ui", QT_TRANSLATE_NOOP("QObject", "Draft") |
| | ) |
| | FreeCADGui.addPreferencePage( |
| | ":/ui/preferences-drafttexts.ui", QT_TRANSLATE_NOOP("QObject", "Draft") |
| | ) |
| | FreeCADGui.draftToolBar.loadedPreferences = True |
| |
|
| | FreeCADGui.getMainWindow().mainWindowClosed.connect(self.Deactivated) |
| |
|
| | FreeCAD.Console.PrintLog("Loading Draft workbench, done.\n") |
| |
|
| | def Activated(self): |
| | """When entering the workbench.""" |
| | if hasattr(FreeCADGui, "draftToolBar"): |
| | FreeCADGui.draftToolBar.Activated() |
| | if hasattr(FreeCADGui, "Snapper"): |
| | FreeCADGui.Snapper.show() |
| | from draftutils import init_draft_statusbar |
| |
|
| | init_draft_statusbar.show_draft_statusbar() |
| | import WorkingPlane |
| |
|
| | WorkingPlane._view_observer_start() |
| | from draftutils import grid_observer |
| |
|
| | grid_observer._view_observer_setup() |
| | FreeCAD.Console.PrintLog("Draft workbench activated.\n") |
| |
|
| | def Deactivated(self): |
| | """When quitting the workbench.""" |
| | if hasattr(FreeCADGui, "draftToolBar"): |
| | FreeCADGui.draftToolBar.Deactivated() |
| | if hasattr(FreeCADGui, "Snapper"): |
| | FreeCADGui.Snapper.hide() |
| | from draftutils import init_draft_statusbar |
| |
|
| | init_draft_statusbar.hide_draft_statusbar() |
| | import WorkingPlane |
| |
|
| | WorkingPlane._view_observer_stop() |
| | from draftutils import grid_observer |
| |
|
| | grid_observer._view_observer_setup() |
| | FreeCAD.Console.PrintLog("Draft workbench deactivated.\n") |
| |
|
| | def ContextMenu(self, recipient): |
| | """Define an optional custom context menu.""" |
| | has_text = False |
| | for o in FreeCADGui.Selection.getCompleteSelection(): |
| | if hasattr(o.Object, "Text"): |
| | has_text = True |
| | break |
| |
|
| | if has_text: |
| | import sys |
| | from draftguitools import gui_hyperlink |
| |
|
| | hyperlinks_search = gui_hyperlink.Draft_Hyperlink() |
| | if hyperlinks_search.has_hyperlinks() and sys.platform in [ |
| | "win32", |
| | "cygwin", |
| | "darwin", |
| | "linux", |
| | ]: |
| | self.appendContextMenu("", ["Draft_Hyperlink"]) |
| |
|
| | self.appendContextMenu("Utilities", self.context_commands) |
| |
|
| | def GetClassName(self): |
| | """Type of workbench.""" |
| | return "Gui::PythonWorkbench" |
| |
|
| |
|
| | FreeCADGui.addWorkbench(DraftWorkbench) |
| |
|
| | |
| | |
| | import Draft_rc |
| | from PySide.QtCore import QT_TRANSLATE_NOOP |
| |
|
| | FreeCADGui.addPreferencePage( |
| | ":/ui/preferences-dxf.ui", QT_TRANSLATE_NOOP("QObject", "Import-Export") |
| | ) |
| | FreeCADGui.addPreferencePage( |
| | ":/ui/preferences-dwg.ui", QT_TRANSLATE_NOOP("QObject", "Import-Export") |
| | ) |
| | FreeCADGui.addPreferencePage( |
| | ":/ui/preferences-svg.ui", QT_TRANSLATE_NOOP("QObject", "Import-Export") |
| | ) |
| | FreeCADGui.addPreferencePage( |
| | ":/ui/preferences-oca.ui", QT_TRANSLATE_NOOP("QObject", "Import-Export") |
| | ) |
| |
|
| | FreeCAD.__unit_test__ += ["TestDraftGui"] |
| |
|