From 5740cde4dae343b7e183db79fb28cf78c54255e9 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Sun, 25 Dec 2011 17:49:30 -0200 Subject: [PATCH] fixed bug #549 - Undo of offset objects causes Draft tools to stop functioning --- src/Mod/Draft/DraftGui.py | 13 +++++++++++-- src/Mod/Draft/DraftTools.py | 25 ++++++------------------- src/Mod/Draft/DraftTrackers.py | 5 ++++- 3 files changed, 21 insertions(+), 22 deletions(-) diff --git a/src/Mod/Draft/DraftGui.py b/src/Mod/Draft/DraftGui.py index fc4e6f1948..114d0078e3 100644 --- a/src/Mod/Draft/DraftGui.py +++ b/src/Mod/Draft/DraftGui.py @@ -533,11 +533,10 @@ class DraftToolBar: self.radiusValue.selectAll() def offUi(self): + todo.delay(FreeCADGui.Control.closeDialog,None) if self.taskmode: self.isTaskOn = False - todo.delay(FreeCADGui.Control.closeDialog,None) self.baseWidget = QtGui.QWidget() - # print "UI turned off" else: self.setTitle(translate("draft", "None")) self.labelx.setText(translate("draft", "X")) @@ -637,6 +636,7 @@ class DraftToolBar: if not self.taskmode: self.labelx.setText(translate("draft", "Pick Object")) self.labelx.show() + self.makeDumbTask() def editUi(self): self.taskUi(translate("draft", "Edit")) @@ -701,6 +701,15 @@ class DraftToolBar: else: self.layout.setDirection(QtGui.QBoxLayout.LeftToRight) + def makeDumbTask(self): + "create a dumb taskdialog to prevent deleting the temp object" + class TaskPanel: + def __init__(self): + pass + def getStandardButtons(self): + return 0 + panel = TaskPanel() + FreeCADGui.Control.showDialog(panel) #--------------------------------------------------------------------------- # Processing functions diff --git a/src/Mod/Draft/DraftTools.py b/src/Mod/Draft/DraftTools.py index ac1610bf49..e9b55d6e1a 100755 --- a/src/Mod/Draft/DraftTools.py +++ b/src/Mod/Draft/DraftTools.py @@ -389,24 +389,11 @@ class Line(Creator): self.obj=self.doc.addObject("Part::Feature",self.featureName) # self.obj.ViewObject.Selectable = False Draft.formatObject(self.obj) - if not Draft.getParam("UiMode"): self.makeDumbTask() self.call = self.view.addEventCallback("SoEvent",self.action) msg(translate("draft", "Pick first point:\n")) - def makeDumbTask(self): - "create a dumb taskdialog to prevent deleting the temp object" - class TaskPanel: - def __init__(self): - pass - def getStandardButtons(self): - return 0 - panel = TaskPanel() - FreeCADGui.Control.showDialog(panel) - def finish(self,closed=False,cont=False): "terminates the operation and closes the poly if asked" - if not Draft.getParam("UiMode"): - FreeCADGui.Control.closeDialog() if self.obj: old = self.obj.Name todo.delay(self.doc.removeObject,old) @@ -1627,6 +1614,12 @@ class Modifier: def __init__(self): self.commitList = [] + + def IsActive(self): + if Draft.getSelection(): + return True + else: + return False def Activated(self,name="None"): if FreeCAD.activeDraftCommand: @@ -1655,12 +1648,6 @@ class Modifier: self.snap = snapTracker() self.extsnap = lineTracker(dotted=True) self.planetrack = PlaneTracker() - - def IsActive(self): - if FreeCADGui.ActiveDocument: - return True - else: - return False def finish(self): self.node = [] diff --git a/src/Mod/Draft/DraftTrackers.py b/src/Mod/Draft/DraftTrackers.py index da064ffd92..29494d6fb4 100644 --- a/src/Mod/Draft/DraftTrackers.py +++ b/src/Mod/Draft/DraftTrackers.py @@ -503,7 +503,10 @@ class wireTracker(Tracker): def update(self,wire): if wire: - self.line.numVertices.setValue(len(wire.Vertexes)) + if self.closed: + self.line.numVertices.setValue(len(wire.Vertexes)+1) + else: + self.line.numVertices.setValue(len(wire.Vertexes)) for i in range(len(wire.Vertexes)): p=wire.Vertexes[i].Point self.coords.point.set1Value(i,[p.x,p.y,p.z])