Skip to content

Commit

Permalink
[Draft] Edit: separate selectstate functions
Browse files Browse the repository at this point in the history
Separated functions that save, restore and set the select state of edited object from main functions.
  • Loading branch information
carlopav authored and yorikvanhavre committed Sep 2, 2019
1 parent 3c52a3c commit e06fb52
Showing 1 changed file with 23 additions and 10 deletions.
33 changes: 23 additions & 10 deletions src/Mod/Draft/DraftEdit.py
Expand Up @@ -102,12 +102,13 @@ def proceed(self):
"this method defines editpoints and set the editTrackers"
self.unregister_selection_callback()
self.obj = self.getObjFromSelection()
if not self.obj: return self.finish()
if not self.obj: return self.finish()

# store selectable state of the object TODO: Separate function
if hasattr(self.obj.ViewObject,"Selectable"):
self.selectstate = self.obj.ViewObject.Selectable
self.obj.ViewObject.Selectable = False
# Save selectstate and turn selectable false.
# Object can remain selectable commenting following lines,
# but snap only process the first edge of self.obj TODO: fix it
self.saveSelectState(self.obj)
self.setSelectState(self.obj, False)

# start object editing
FreeCADGui.Selection.clearSelection()
Expand Down Expand Up @@ -145,9 +146,7 @@ def finish(self,closed=False):
if not self.obj.Closed:
self.obj.Closed = True
if self.ui: self.removeTrackers()
if self.obj:
if hasattr(self.obj.ViewObject,"Selectable") and (self.selectstate != None):
self.obj.ViewObject.Selectable = self.selectstate
self.restoreSelectState(self.obj)
if Draft.getType(self.obj) == "Structure":
if self.originalDisplayMode != None:
self.obj.ViewObject.DisplayMode = self.originalDisplayMode
Expand Down Expand Up @@ -301,10 +300,9 @@ def endEditing(self):
"terminate editing and start object updating process"
self.finalizeGhost()
self.trackers[self.editing].on()
#if hasattr(self.obj.ViewObject,"Selectable"):
# self.obj.ViewObject.Selectable = True
FreeCADGui.Snapper.setSelectMode(True)
self.numericInput(self.trackers[self.editing].get())
self.showTrackers()
DraftTools.redraw3DView()

#---------------------------------------------------------------------------
Expand Down Expand Up @@ -340,6 +338,19 @@ def numericInput(self,v,numy=None,numz=None):
self.ui.editUi(self.ui.lastMode)
self.node = []

def setSelectState(self, obj, selState = False):
if hasattr(obj.ViewObject,"Selectable"):
obj.ViewObject.Selectable = selState

def saveSelectState(self, obj):
if hasattr(obj.ViewObject,"Selectable"):
self.selectstate = obj.ViewObject.Selectable

def restoreSelectState(self,obj):
if obj:
if hasattr(obj.ViewObject,"Selectable") and (self.selectstate != None):
obj.ViewObject.Selectable = self.selectstate

def setPlacement(self,obj):
"set self.pl and self.invpl to self.obj placement and inverse placement"
if "Placement" in obj.PropertiesList:
Expand Down Expand Up @@ -521,6 +532,7 @@ def addPoint(self,event):
"called by action, add point to obj and reset trackers"
if not (Draft.getType(self.obj) in ["Wire","BSpline","BezCurve"]): return
pos = event.getPosition()
self.setSelectState(self.obj, True)
selobjs = FreeCADGui.ActiveDocument.ActiveView.getObjectsInfo((pos[0],pos[1]))
if not selobjs: return
for info in selobjs:
Expand All @@ -539,6 +551,7 @@ def addPoint(self,event):
self.editpoints = []
self.setEditPoints(self.obj)
self.resetTrackers()
self.setSelectState(self.obj, False)
return


Expand Down

0 comments on commit e06fb52

Please sign in to comment.