diff --git a/src/Mod/Draft/DraftGui.py b/src/Mod/Draft/DraftGui.py index 3fd0339d4..17b3dba50 100644 --- a/src/Mod/Draft/DraftGui.py +++ b/src/Mod/Draft/DraftGui.py @@ -150,6 +150,8 @@ class DraftTaskPanel: FreeCADGui.ActiveDocument.resetEdit() return True def reject(self): + FreeCADGui.draftToolBar.isTaskOn = False + FreeCADGui.draftToolBar.escape() FreeCADGui.ActiveDocument.resetEdit() return True @@ -169,6 +171,7 @@ class DraftToolBar: self.paramconstr = Draft.getParam("constructioncolor")>>8 self.constrMode = False self.continueMode = False + self.relativeMode = True self.state = None self.textbuffer = [] self.crossedViews = [] @@ -307,7 +310,7 @@ class DraftToolBar: self.labelRadius = self._label("labelRadius", self.layout) self.radiusValue = self._lineedit("radiusValue", self.layout, width=60) self.radiusValue.setText("0.00") - self.isRelative = self._checkbox("isRelative",self.layout,checked=True) + self.isRelative = self._checkbox("isRelative",self.layout,checked=self.relativeMode) self.hasFill = self._checkbox("hasFill",self.layout,checked=self.fillmode) self.continueCmd = self._checkbox("continueCmd",self.layout,checked=self.continueMode) self.occOffset = self._checkbox("occOffset",self.layout,checked=False) @@ -358,6 +361,7 @@ class DraftToolBar: QtCore.QObject.connect(self.xzButton,QtCore.SIGNAL("clicked()"),self.selectXZ) QtCore.QObject.connect(self.yzButton,QtCore.SIGNAL("clicked()"),self.selectYZ) QtCore.QObject.connect(self.continueCmd,QtCore.SIGNAL("stateChanged(int)"),self.setContinue) + QtCore.QObject.connect(self.isRelative,QtCore.SIGNAL("stateChanged(int)"),self.setRelative) QtCore.QObject.connect(self.hasFill,QtCore.SIGNAL("stateChanged(int)"),self.setFill) QtCore.QObject.connect(self.currentViewButton,QtCore.SIGNAL("clicked()"),self.selectCurrentView) QtCore.QObject.connect(self.resetPlaneButton,QtCore.SIGNAL("clicked()"),self.selectResetPlane) @@ -712,7 +716,8 @@ class DraftToolBar: self.radiusValue.setFocus() self.radiusValue.selectAll() - def setRelative(self): + def setRelative(self,val=1): + self.relativeMode = bool(val) if (not self.taskmode) or self.isTaskOn: self.isRelative.show() @@ -836,9 +841,9 @@ class DraftToolBar: pass else: if self.pointcallback: - self.pointcallback(FreeCAD.Vector(numx,numy,numz),(self.isRelative.isVisible() and self.isRelative.isChecked())) + self.pointcallback(FreeCAD.Vector(numx,numy,numz),self.relativeMode) else: - if self.isRelative.isVisible() and self.isRelative.isChecked(): + if self.relativeMode: if self.sourceCmd.node: if self.sourceCmd.featureName == "Rectangle": last = self.sourceCmd.node[0] @@ -903,6 +908,7 @@ class DraftToolBar: spec = False if txt.endsWith(" ") or txt.endsWith("r"): self.isRelative.setChecked(not self.isRelative.isChecked()) + self.relativeMode = self.isRelative.isChecked() spec = True elif txt.endsWith("i"): if self.hasFill.isVisible(): @@ -972,44 +978,46 @@ class DraftToolBar: def displayPoint(self, point, last=None, plane=None, mask=None): "this function displays the passed coords in the x, y, and z widgets" - # get coords to display - dp = point - if self.isRelative.isChecked() and (last != None): - if plane: - dp = plane.getLocalCoords(FreeCAD.Vector(point.x-last.x, point.y-last.y, point.z-last.z)) + if (not self.taskmode) or self.isTaskOn: + + # get coords to display + dp = point + if self.relativeMode and (last != None): + if plane: + dp = plane.getLocalCoords(FreeCAD.Vector(point.x-last.x, point.y-last.y, point.z-last.z)) + else: + dp = FreeCAD.Vector(point.x-last.x, point.y-last.y, point.z-last.z) + + # set widgets + self.xValue.setText("%.2f" % dp.x) + self.yValue.setText("%.2f" % dp.y) + self.zValue.setText("%.2f" % dp.z) + + # set masks + if mask == "x": + self.xValue.setEnabled(True) + self.yValue.setEnabled(False) + self.zValue.setEnabled(False) + self.xValue.setFocus() + self.xValue.selectAll() + elif mask == "y": + self.xValue.setEnabled(False) + self.yValue.setEnabled(True) + self.zValue.setEnabled(False) + self.yValue.setFocus() + self.yValue.selectAll() + elif mask == "z": + self.xValue.setEnabled(False) + self.yValue.setEnabled(False) + self.zValue.setEnabled(True) + self.zValue.setFocus() + self.zValue.selectAll() else: - dp = FreeCAD.Vector(point.x-last.x, point.y-last.y, point.z-last.z) - - # set widgets - self.xValue.setText("%.2f" % dp.x) - self.yValue.setText("%.2f" % dp.y) - self.zValue.setText("%.2f" % dp.z) - - # set masks - if mask == "x": - self.xValue.setEnabled(True) - self.yValue.setEnabled(False) - self.zValue.setEnabled(False) - self.xValue.setFocus() - self.xValue.selectAll() - elif mask == "y": - self.xValue.setEnabled(False) - self.yValue.setEnabled(True) - self.zValue.setEnabled(False) - self.yValue.setFocus() - self.yValue.selectAll() - elif mask == "z": - self.xValue.setEnabled(False) - self.yValue.setEnabled(False) - self.zValue.setEnabled(True) - self.zValue.setFocus() - self.zValue.selectAll() - else: - self.xValue.setEnabled(True) - self.yValue.setEnabled(True) - self.zValue.setEnabled(True) - self.xValue.setFocus() - self.xValue.selectAll() + self.xValue.setEnabled(True) + self.yValue.setEnabled(True) + self.zValue.setEnabled(True) + self.xValue.setFocus() + self.xValue.selectAll() def getDefaultColor(self,type,rgb=False):