From e9761691aec932130de9f650a751071bd0f735fe Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Tue, 12 Jul 2022 13:30:01 +0200 Subject: [PATCH 1/3] Draft: Fix EditMode for hatch, facebinder and shapestring --- src/Mod/Draft/draftviewproviders/view_facebinder.py | 12 ++++++++---- src/Mod/Draft/draftviewproviders/view_hatch.py | 10 ++++------ src/Mod/Draft/draftviewproviders/view_shapestring.py | 6 +++++- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/src/Mod/Draft/draftviewproviders/view_facebinder.py b/src/Mod/Draft/draftviewproviders/view_facebinder.py index 29261cb9cc..ca75d9d7f4 100644 --- a/src/Mod/Draft/draftviewproviders/view_facebinder.py +++ b/src/Mod/Draft/draftviewproviders/view_facebinder.py @@ -29,11 +29,8 @@ # @{ import FreeCADGui as Gui -import DraftGui - from draftviewproviders.view_base import ViewProviderDraft - class ViewProviderFacebinder(ViewProviderDraft): def __init__(self,vobj): super(ViewProviderFacebinder, self).__init__(vobj) @@ -42,6 +39,10 @@ class ViewProviderFacebinder(ViewProviderDraft): return ":/icons/Draft_Facebinder_Provider.svg" 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() @@ -49,8 +50,11 @@ class ViewProviderFacebinder(ViewProviderDraft): return True def unsetEdit(self,vobj,mode): + if mode != 0: + return None + Gui.Control.closeDialog() - return False + 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..5fc274966b 100644 --- a/src/Mod/Draft/draftviewproviders/view_hatch.py +++ b/src/Mod/Draft/draftviewproviders/view_hatch.py @@ -23,8 +23,6 @@ """This module contains FreeCAD commands for the Draft workbench""" -import os -import FreeCAD from draftguitools.gui_hatch import Draft_Hatch_TaskPanel class ViewProviderDraftHatch: @@ -47,6 +45,8 @@ class ViewProviderDraftHatch: return None def setEdit(self,vobj,mode): + if mode != 0: + return None import FreeCADGui @@ -59,12 +59,10 @@ class ViewProviderDraftHatch: return True def unsetEdit(self,vobj,mode): + if mode != 0: + return None import FreeCADGui FreeCADGui.Control.closeDialog() return True - - def doubleClicked(self,vobj): - - self.setEdit(vobj,None) 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()) From 40d952dccc67729256e6aca43b3cce21d50e9582 Mon Sep 17 00:00:00 2001 From: Roy-043 <70520633+Roy-043@users.noreply.github.com> Date: Thu, 14 Jul 2022 09:17:08 +0200 Subject: [PATCH 2/3] Update view_facebinder.py There is no need for `Gui.Control.closeDialog()` in `setEdit` --- src/Mod/Draft/draftviewproviders/view_facebinder.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Mod/Draft/draftviewproviders/view_facebinder.py b/src/Mod/Draft/draftviewproviders/view_facebinder.py index ca75d9d7f4..2190493823 100644 --- a/src/Mod/Draft/draftviewproviders/view_facebinder.py +++ b/src/Mod/Draft/draftviewproviders/view_facebinder.py @@ -32,13 +32,14 @@ import FreeCADGui as Gui 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 @@ -49,11 +50,10 @@ class ViewProviderFacebinder(ViewProviderDraft): Gui.Control.showDialog(taskd) return True - def unsetEdit(self,vobj,mode): + def unsetEdit(self, vobj, mode): if mode != 0: return None - Gui.Control.closeDialog() return True From c6c67b1943c52d970791e2fae189af136218e784 Mon Sep 17 00:00:00 2001 From: Roy-043 <70520633+Roy-043@users.noreply.github.com> Date: Thu, 14 Jul 2022 09:20:25 +0200 Subject: [PATCH 3/3] Update view_hatch.py There is no need for `Gui.Control.closeDialog()` in `setEdit` `Set colors` removed from the context menu. --- .../Draft/draftviewproviders/view_hatch.py | 49 +++++++++++++------ 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/src/Mod/Draft/draftviewproviders/view_hatch.py b/src/Mod/Draft/draftviewproviders/view_hatch.py index 5fc274966b..680fd3cc79 100644 --- a/src/Mod/Draft/draftviewproviders/view_hatch.py +++ b/src/Mod/Draft/draftviewproviders/view_hatch.py @@ -21,14 +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 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 @@ -40,29 +45,45 @@ class ViewProviderDraftHatch: return None - def __setstate__(self,state): + def __setstate__(self, state): return None - def setEdit(self,vobj,mode): - if mode != 0: - return None + 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): - if mode != 0: + def unsetEdit(self, vobj, mode): + # See setEdit. + + if mode == 1 or mode == 2: return None - import FreeCADGui - - FreeCADGui.Control.closeDialog() return True + + 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) + + return True # Removes `Transform` and `Set colors` from the default + # Part::FeaturePython context menu. + + def transform(self): + Gui.runCommand("Std_TransformManip", 0)