Skip to content

Commit

Permalink
Draft: Fixed weaknesses in Draft Edit command
Browse files Browse the repository at this point in the history
  • Loading branch information
yorikvanhavre committed Apr 16, 2017
1 parent 9a3b2a9 commit 3b06b86
Showing 1 changed file with 47 additions and 7 deletions.
54 changes: 47 additions & 7 deletions src/Mod/Draft/DraftTools.py
Expand Up @@ -3718,6 +3718,11 @@ def __init__(self):
self.running = False
self.trackers = []
self.obj = None
self.call = None
self.selectstate = None
self.originalDisplayMode = None
self.originalPoints = None
self.originalNodes = None

def GetResources(self):
return {'Pixmap' : 'Draft_Edit',
Expand All @@ -3731,22 +3736,50 @@ def Activated(self):
Modifier.Activated(self,"Edit")
if FreeCADGui.Selection.getSelection():
self.selection = FreeCADGui.Selection.getSelection()
if "Proxy" in self.selection[0].PropertiesList:
if hasattr(self.selection[0].Proxy,"Type"):
self.proceed()
if len(self.selection) == 1:
if "Proxy" in self.selection[0].PropertiesList:
if hasattr(self.selection[0].Proxy,"Type"):
if not Draft.getType(self.selection[0]) in ["BezCurve","Wire","BSpline","Circle","Rectangle",
"Polygon","Dimension","Space","Structure","PanelCut",
"PanelSheet"]:
msg(translate("draft", "This object type is not editable\n"),'warning')
self.finish()
return
self.proceed()
return
else:
msg(translate("draft", "This object type is not editable\n"),'warning')
self.finish()
return
else:
msg(translate("draft", "This object type is not editable\n"),'warning')
self.finish()
return
else:
msg(translate("draft", "Please select only one object\n"),'warning')
self.finish()
return
self.ghost = None
self.ui.selectUi()
msg(translate("draft", "Select a Draft object to edit\n"))
if self.call:
self.view.removeEventCallback("SoEvent",self.call)
self.call = self.view.addEventCallback("SoEvent",selectObject)

def proceed(self):
if self.call:
self.view.removeEventCallback("SoEvent",self.call)
self.call = None
if self.doc:
self.obj = FreeCADGui.Selection.getSelection()
if self.obj:
self.obj = self.obj[0]
if not Draft.getType(self.obj) in ["BezCurve","Wire","BSpline","Circle","Rectangle",
"Polygon","Dimension","Space","Structure","PanelCut",
"PanelSheet"]:
msg(translate("draft", "This object type is not editable\n"),'warning')
self.finish()
return
if (Draft.getType(self.obj) == "BezCurve"):
self.ui.editUi("BezCurve")
else:
Expand Down Expand Up @@ -3867,12 +3900,19 @@ def finish(self,closed=False):
for t in self.trackers:
t.finalize()
if self.obj:
if hasattr(self.obj.ViewObject,"Selectable"):
if hasattr(self.obj.ViewObject,"Selectable") and (self.selectstate != None):
self.obj.ViewObject.Selectable = self.selectstate
if Draft.getType(self.obj) == "Structure":
self.obj.ViewObject.DisplayMode = self.originalDisplayMode
self.obj.ViewObject.NodeSize = self.originalPoints
self.obj.ViewObject.ShowNodes = self.originalNodes
if self.originalDisplayMode != None:
self.obj.ViewObject.DisplayMode = self.originalDisplayMode
if self.originalPoints != None:
self.obj.ViewObject.NodeSize = self.originalPoints
if self.originalNodes != None:
self.obj.ViewObject.ShowNodes = self.originalNodes
self.selectstate = None
self.originalDisplayMode = None
self.originalPoints = None
self.originalNodes = None
Modifier.finish(self)
plane.restore()
if FreeCADGui.Snapper.grid:
Expand Down

0 comments on commit 3b06b86

Please sign in to comment.