diff --git a/src/Mod/Draft/draftviewproviders/view_facebinder.py b/src/Mod/Draft/draftviewproviders/view_facebinder.py index 29261cb9cc..2190493823 100644 --- a/src/Mod/Draft/draftviewproviders/view_facebinder.py +++ b/src/Mod/Draft/draftviewproviders/view_facebinder.py @@ -29,28 +29,32 @@ # @{ import FreeCADGui as Gui -import DraftGui - from draftviewproviders.view_base import ViewProviderDraft - class ViewProviderFacebinder(ViewProviderDraft): - def __init__(self,vobj): + + def __init__(self, vobj): super(ViewProviderFacebinder, self).__init__(vobj) def getIcon(self): return ":/icons/Draft_Facebinder_Provider.svg" - def setEdit(self,vobj,mode): + def setEdit(self, vobj, mode): + if mode != 0: + return None + + import DraftGui # Moving this to the top of the file results in a circular import. taskd = DraftGui.FacebinderTaskPanel() taskd.obj = vobj.Object taskd.update() Gui.Control.showDialog(taskd) return True - def unsetEdit(self,vobj,mode): - Gui.Control.closeDialog() - return False + def unsetEdit(self, vobj, mode): + if mode != 0: + return None + + return True # Alias for compatibility with v0.18 and earlier diff --git a/src/Mod/Draft/draftviewproviders/view_hatch.py b/src/Mod/Draft/draftviewproviders/view_hatch.py index aa002cea04..680fd3cc79 100644 --- a/src/Mod/Draft/draftviewproviders/view_hatch.py +++ b/src/Mod/Draft/draftviewproviders/view_hatch.py @@ -21,16 +21,19 @@ #*************************************************************************** -"""This module contains FreeCAD commands for the Draft workbench""" +"""Provides the viewprovider code for the Hatch object.""" + +import PySide.QtCore as QtCore +import PySide.QtGui as QtGui + +import FreeCADGui as Gui -import os -import FreeCAD from draftguitools.gui_hatch import Draft_Hatch_TaskPanel +from draftutils.translate import translate class ViewProviderDraftHatch: - - def __init__(self,vobj): + def __init__(self, vobj): vobj.Proxy = self @@ -42,29 +45,45 @@ class ViewProviderDraftHatch: return None - def __setstate__(self,state): + def __setstate__(self, state): return None - def setEdit(self,vobj,mode): + def setEdit(self, vobj, mode): + # EditMode 1 and 2 are handled by the Part::FeaturePython code. + # EditMode 3 (Color) does not make sense for hatches (which do not + # have faces) and we let that default to EditMode 0. - import FreeCADGui + if mode == 1 or mode == 2: + return None taskd = Draft_Hatch_TaskPanel(vobj.Object) taskd.form.File.setFileName(vobj.Object.File) taskd.form.Pattern.setCurrentText(vobj.Object.Pattern) taskd.form.Scale.setValue(vobj.Object.Scale) taskd.form.Rotation.setValue(vobj.Object.Rotation) - FreeCADGui.Control.showDialog(taskd) + Gui.Control.showDialog(taskd) return True - def unsetEdit(self,vobj,mode): + def unsetEdit(self, vobj, mode): + # See setEdit. - import FreeCADGui + if mode == 1 or mode == 2: + return None - FreeCADGui.Control.closeDialog() return True - def doubleClicked(self,vobj): + def setupContextMenu(self, vobj, menu): + action1 = QtGui.QAction(Gui.getIcon("Std_TransformManip.svg"), + translate("Command", "Transform"), # Context `Command` instead of `draft`. + menu) + QtCore.QObject.connect(action1, + QtCore.SIGNAL("triggered()"), + self.transform) + menu.addAction(action1) - self.setEdit(vobj,None) + return True # Removes `Transform` and `Set colors` from the default + # Part::FeaturePython context menu. + + def transform(self): + Gui.runCommand("Std_TransformManip", 0) diff --git a/src/Mod/Draft/draftviewproviders/view_shapestring.py b/src/Mod/Draft/draftviewproviders/view_shapestring.py index 7c104b27a5..48e2ca7513 100644 --- a/src/Mod/Draft/draftviewproviders/view_shapestring.py +++ b/src/Mod/Draft/draftviewproviders/view_shapestring.py @@ -39,6 +39,8 @@ class ViewProviderShapeString(ViewProviderDraft): return ":/icons/Draft_ShapeString.svg" def setEdit(self, vobj, mode): + if mode != 0: + return None self.wb_before_edit = Gui.activeWorkbench() Gui.activateWorkbench("DraftWorkbench") @@ -47,7 +49,9 @@ class ViewProviderShapeString(ViewProviderDraft): return True - def unsetEdit(self,vobj,mode): + def unsetEdit(self, vobj, mode): + if mode != 0: + return None self.task.finish() Gui.activateWorkbench(self.wb_before_edit.name())