Merge pull request #7174 from Roy-043/Draft-Fix-EditMode-for-hatch,-facebinder-and-shapestring

Draft: Fix EditMode for hatch, facebinder and shapestring
This commit is contained in:
Yorik van Havre
2022-07-14 12:02:01 +02:00
committed by GitHub
3 changed files with 50 additions and 23 deletions

View File

@@ -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

View File

@@ -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)

View File

@@ -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())