Draft: Switching to Units system
This commit is contained in:
parent
97663851ec
commit
f5627b33b2
|
@ -1,3 +1,4 @@
|
|||
# -*- coding: utf8 -*-
|
||||
|
||||
#***************************************************************************
|
||||
#* *
|
||||
|
@ -175,6 +176,9 @@ class DraftToolBar:
|
|||
self.isTaskOn = False
|
||||
self.fillmode = Draft.getParam("fillmode",False)
|
||||
self.mask = None
|
||||
self.DECIMALS = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Units").GetInt("Decimals",2)
|
||||
self.FORMAT = "%." + str(self.DECIMALS) + "f mm"
|
||||
self.uiloader = FreeCADGui.UiLoader()
|
||||
|
||||
# set default to taskbar mode
|
||||
if self.taskmode == None:
|
||||
|
@ -240,8 +244,7 @@ class DraftToolBar:
|
|||
return lineedit
|
||||
|
||||
def _inputfield (self,name, layout, hide=True, width=None):
|
||||
ui = FreeCADGui.UiLoader()
|
||||
inputfield = ui.createWidget("Gui::InputField")
|
||||
inputfield = self.uiloader.createWidget("Gui::InputField")
|
||||
inputfield.setObjectName(name)
|
||||
if hide: inputfield.hide()
|
||||
if not width: width = 800
|
||||
|
@ -306,14 +309,14 @@ class DraftToolBar:
|
|||
self.layout.addLayout(yl)
|
||||
self.layout.addLayout(zl)
|
||||
self.labelx = self._label("labelx", xl)
|
||||
self.xValue = self._lineedit("xValue", xl, width=60)
|
||||
self.xValue.setText("0.00")
|
||||
self.xValue = self._inputfield("xValue", xl) #width=60
|
||||
self.xValue.setText(self.FORMAT % 0)
|
||||
self.labely = self._label("labely", yl)
|
||||
self.yValue = self._lineedit("yValue", yl, width=60)
|
||||
self.yValue.setText("0.00")
|
||||
self.yValue = self._inputfield("yValue", yl)
|
||||
self.yValue.setText(self.FORMAT % 0)
|
||||
self.labelz = self._label("labelz", zl)
|
||||
self.zValue = self._lineedit("zValue", zl, width=60)
|
||||
self.zValue.setText("0.00")
|
||||
self.zValue = self._inputfield("zValue", zl)
|
||||
self.zValue.setText(self.FORMAT % 0)
|
||||
self.textValue = self._lineedit("textValue", self.layout)
|
||||
|
||||
# shapestring
|
||||
|
@ -333,14 +336,20 @@ class DraftToolBar:
|
|||
self.chooserButton.setText("...")
|
||||
|
||||
# options
|
||||
|
||||
self.numFaces = self._spinbox("numFaces", self.layout, 3)
|
||||
self.offsetLabel = self._label("offsetlabel", self.layout)
|
||||
self.offsetValue = self._lineedit("offsetValue", self.layout, width=60)
|
||||
self.offsetValue.setText("0.00")
|
||||
self.labelRadius = self._label("labelRadius", self.layout)
|
||||
self.radiusValue = self._lineedit("radiusValue", self.layout, width=60)
|
||||
self.radiusValue.setText("0.00")
|
||||
fl = QtGui.QHBoxLayout()
|
||||
self.layout.addLayout(fl)
|
||||
self.numFacesLabel = self._label("numfaceslabel", fl)
|
||||
self.numFaces = self._spinbox("numFaces", fl, 3)
|
||||
ol = QtGui.QHBoxLayout()
|
||||
self.layout.addLayout(ol)
|
||||
self.offsetLabel = self._label("offsetlabel", ol)
|
||||
self.offsetValue = self._inputfield("offsetValue", ol)
|
||||
self.offsetValue.setText(self.FORMAT % 0)
|
||||
rl = QtGui.QHBoxLayout()
|
||||
self.layout.addLayout(rl)
|
||||
self.labelRadius = self._label("labelRadius", rl)
|
||||
self.radiusValue = self._inputfield("radiusValue", rl)
|
||||
self.radiusValue.setText(self.FORMAT % 0)
|
||||
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)
|
||||
|
@ -365,6 +374,10 @@ class DraftToolBar:
|
|||
QtGui.QSizePolicy.Expanding)
|
||||
self.layout.addItem(spacerItem)
|
||||
|
||||
|
||||
QtCore.QObject.connect(self.xValue,QtCore.SIGNAL("valueChanged(double)"),self.changeXValue)
|
||||
QtCore.QObject.connect(self.yValue,QtCore.SIGNAL("valueChanged(double)"),self.changeYValue)
|
||||
QtCore.QObject.connect(self.zValue,QtCore.SIGNAL("valueChanged(double)"),self.changeZValue)
|
||||
QtCore.QObject.connect(self.xValue,QtCore.SIGNAL("returnPressed()"),self.checkx)
|
||||
QtCore.QObject.connect(self.yValue,QtCore.SIGNAL("returnPressed()"),self.checky)
|
||||
QtCore.QObject.connect(self.xValue,QtCore.SIGNAL("textEdited(QString)"),self.checkSpecialChars)
|
||||
|
@ -467,6 +480,7 @@ class DraftToolBar:
|
|||
style += "background-color: rgb(20,100,250) }"
|
||||
self.baseWidget.setStyleSheet(style)
|
||||
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# language tools
|
||||
#---------------------------------------------------------------------------
|
||||
|
@ -504,6 +518,7 @@ class DraftToolBar:
|
|||
self.closeButton.setToolTip(translate("draft", "Finishes and closes the current line (C)"))
|
||||
self.wipeButton.setText(translate("draft", "&Wipe"))
|
||||
self.wipeButton.setToolTip(translate("draft", "Wipes the existing segments of this line and starts again from the last point (W)"))
|
||||
self.numFacesLabel.setText(translate("draft", "Sides"))
|
||||
self.numFaces.setToolTip(translate("draft", "Number of sides"))
|
||||
self.offsetLabel.setText(translate("draft", "Offset"))
|
||||
self.xyButton.setText(translate("draft", "XY"))
|
||||
|
@ -557,7 +572,7 @@ class DraftToolBar:
|
|||
# Interface modes
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
def taskUi(self,title,extra=None,icon="Draft_Draft"):
|
||||
def taskUi(self,title="Draft",extra=None,icon="Draft_Draft"):
|
||||
if self.taskmode:
|
||||
self.isTaskOn = True
|
||||
todo.delay(FreeCADGui.Control.closeDialog,None)
|
||||
|
@ -694,6 +709,7 @@ class DraftToolBar:
|
|||
self.setTitle(translate("draft", "None"))
|
||||
self.labelx.setText(translate("draft", "X"))
|
||||
self.hideXYZ()
|
||||
self.numFacesLabel.hide()
|
||||
self.numFaces.hide()
|
||||
self.isRelative.hide()
|
||||
self.hasFill.hide()
|
||||
|
@ -1019,10 +1035,13 @@ class DraftToolBar:
|
|||
self.sourceCmd.offsetHandler(offset)
|
||||
else:
|
||||
try:
|
||||
numx=float(self.xValue.text())
|
||||
numy=float(self.yValue.text())
|
||||
numz=float(self.zValue.text())
|
||||
except ValueError:
|
||||
#numx=float(self.xValue.text())
|
||||
numx = self.x
|
||||
#numy=float(self.yValue.text())
|
||||
numy = self.y
|
||||
#numz=float(self.zValue.text())
|
||||
numz = self.z
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
if self.pointcallback:
|
||||
|
@ -1271,22 +1290,21 @@ class DraftToolBar:
|
|||
dp = plane.getLocalCoords(point)
|
||||
|
||||
# set widgets
|
||||
ds = "%." + str(FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Units").GetInt("Decimals",2)) + "f"
|
||||
if self.mask in ['y','z']:
|
||||
self.xValue.setText(ds % 0)
|
||||
self.xValue.setText(self.FORMAT % 0)
|
||||
else:
|
||||
if dp:
|
||||
self.xValue.setText(ds % dp.x)
|
||||
self.xValue.setText(self.FORMAT % dp.x)
|
||||
if self.mask in ['x','z']:
|
||||
self.yValue.setText(ds % 0)
|
||||
self.yValue.setText(self.FORMAT % 0)
|
||||
else:
|
||||
if dp:
|
||||
self.yValue.setText(ds % dp.y)
|
||||
self.yValue.setText(self.FORMAT % dp.y)
|
||||
if self.mask in ['x','y']:
|
||||
self.zValue.setText(ds % 0)
|
||||
self.zValue.setText(self.FORMAT % 0)
|
||||
else:
|
||||
if dp:
|
||||
self.zValue.setText(ds % dp.z)
|
||||
self.zValue.setText(self.FORMAT % dp.z)
|
||||
|
||||
# set masks
|
||||
if (mask == "x") or (self.mask == "x"):
|
||||
|
@ -1306,13 +1324,13 @@ class DraftToolBar:
|
|||
self.yValue.setEnabled(False)
|
||||
self.zValue.setEnabled(True)
|
||||
self.zValue.setFocus()
|
||||
self.zValue.selectAll()
|
||||
self.zValue.selectAll()
|
||||
else:
|
||||
self.xValue.setEnabled(True)
|
||||
self.yValue.setEnabled(True)
|
||||
self.zValue.setEnabled(True)
|
||||
self.xValue.setFocus()
|
||||
self.xValue.selectAll()
|
||||
self.xValue.selectAll()
|
||||
|
||||
def getDefaultColor(self,type,rgb=False):
|
||||
"gets color from the preferences or toolbar"
|
||||
|
@ -1434,8 +1452,9 @@ class DraftToolBar:
|
|||
self.addButton.setChecked(False)
|
||||
self.delButton.setChecked(False)
|
||||
|
||||
def setRadiusValue(self,val):
|
||||
self.radiusValue.setText("%.2f" % val)
|
||||
def setRadiusValue(self,val,unit="mm"):
|
||||
t = self.FORMAT.replace("mm",unit) % val
|
||||
self.radiusValue.setText(t.decode("utf8".encode("latin1")))
|
||||
self.radiusValue.setFocus()
|
||||
self.radiusValue.selectAll()
|
||||
|
||||
|
@ -1479,6 +1498,15 @@ class DraftToolBar:
|
|||
if hasattr(FreeCADGui,"Snapper"):
|
||||
FreeCADGui.Snapper.mask = val
|
||||
|
||||
def changeXValue(self,d):
|
||||
self.x = d
|
||||
|
||||
def changeYValue(self,d):
|
||||
self.y = d
|
||||
|
||||
def changeZValue(self,d):
|
||||
self.z = d
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# TaskView operations
|
||||
#---------------------------------------------------------------------------
|
||||
|
|
|
@ -813,13 +813,13 @@ class Snapper:
|
|||
"setCursor(self,mode=None): sets or resets the cursor to the given mode or resets"
|
||||
if self.selectMode:
|
||||
mw = FreeCADGui.getMainWindow()
|
||||
for w in mw.findChildren(QtGui.QWidget):
|
||||
for w in mw.findChild(QtGui.QMdiArea).findChildren(QtGui.QWidget):
|
||||
if w.metaObject().className() == "SoQtGLArea":
|
||||
w.unsetCursor()
|
||||
self.cursorMode = None
|
||||
elif not mode:
|
||||
mw = FreeCADGui.getMainWindow()
|
||||
for w in mw.findChildren(QtGui.QWidget):
|
||||
for w in mw.findChild(QtGui.QMdiArea).findChildren(QtGui.QWidget):
|
||||
if w.metaObject().className() == "SoQtGLArea":
|
||||
w.unsetCursor()
|
||||
self.cursorMode = None
|
||||
|
@ -837,7 +837,7 @@ class Snapper:
|
|||
qp.end()
|
||||
cur = QtGui.QCursor(newicon,8,8)
|
||||
mw = FreeCADGui.getMainWindow()
|
||||
for w in mw.findChildren(QtGui.QWidget):
|
||||
for w in mw.findChild(QtGui.QMdiArea).findChildren(QtGui.QWidget):
|
||||
if w.metaObject().className() == "SoQtGLArea":
|
||||
w.setCursor(cur)
|
||||
self.cursorMode = mode
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
# -*- coding: utf8 -*-
|
||||
|
||||
#***************************************************************************
|
||||
#* *
|
||||
#* Copyright (c) 2009, 2010 *
|
||||
|
@ -80,6 +82,12 @@ def msg(text=None,mode=None):
|
|||
else:
|
||||
FreeCAD.Console.PrintMessage(text)
|
||||
|
||||
def formatUnit(exp,unit="mm"):
|
||||
'''returns a formatting string to set a number to the correct unit'''
|
||||
d = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Units").GetInt("Decimals",2)
|
||||
f = "%." + str(d) + "f " + unit
|
||||
return f % exp
|
||||
|
||||
def selectObject(arg):
|
||||
'''this is a scene even handler, to be called from the Draft tools
|
||||
when they need to select an object'''
|
||||
|
@ -1065,7 +1073,7 @@ class Arc(Creator):
|
|||
angle = DraftVecUtils.angle(plane.u, self.point.sub(self.center), plane.axis)
|
||||
else: angle = 0
|
||||
self.linetrack.p2(DraftVecUtils.scaleTo(self.point.sub(self.center),self.rad).add(self.center))
|
||||
self.ui.setRadiusValue(math.degrees(angle))
|
||||
self.ui.setRadiusValue(math.degrees(angle),unit="°")
|
||||
self.firstangle = angle
|
||||
else: # choose second angle
|
||||
currentrad = DraftVecUtils.dist(self.point,self.center)
|
||||
|
@ -1073,7 +1081,7 @@ class Arc(Creator):
|
|||
angle = DraftVecUtils.angle(plane.u, self.point.sub(self.center), plane.axis)
|
||||
else: angle = 0
|
||||
self.linetrack.p2(DraftVecUtils.scaleTo(self.point.sub(self.center),self.rad).add(self.center))
|
||||
self.ui.setRadiusValue(math.degrees(angle))
|
||||
self.ui.setRadiusValue(math.degrees(angle),unit="°")
|
||||
self.updateAngle(angle)
|
||||
self.arctrack.setApertureAngle(self.angle)
|
||||
|
||||
|
@ -1275,6 +1283,7 @@ class Polygon(Creator):
|
|||
self.ui.pointUi(name)
|
||||
self.ui.extUi()
|
||||
self.ui.numFaces.show()
|
||||
self.ui.numFacesLabel.show()
|
||||
self.altdown = False
|
||||
self.ui.sourceCmd = self
|
||||
self.arctrack = arcTracker()
|
||||
|
@ -2286,7 +2295,7 @@ class Rotate(Modifier):
|
|||
if (currentrad != 0):
|
||||
angle = DraftVecUtils.angle(plane.u, self.point.sub(self.center), plane.axis)
|
||||
else: angle = 0
|
||||
self.ui.radiusValue.setText("%.2f" % math.degrees(angle))
|
||||
self.ui.radiusValue.setText(formatUnit(math.degrees(angle)))
|
||||
self.firstangle = angle
|
||||
self.ui.radiusValue.setFocus()
|
||||
self.ui.radiusValue.selectAll()
|
||||
|
@ -2303,7 +2312,7 @@ class Rotate(Modifier):
|
|||
if self.ghost:
|
||||
self.ghost.rotate(plane.axis,sweep)
|
||||
self.ghost.on()
|
||||
self.ui.radiusValue.setText("%.2f" % math.degrees(sweep))
|
||||
self.ui.radiusValue.setText(formatUnit(math.degrees(sweep)))
|
||||
self.ui.radiusValue.setFocus()
|
||||
self.ui.radiusValue.selectAll()
|
||||
|
||||
|
@ -2478,7 +2487,7 @@ class Offset(Modifier):
|
|||
self.linetrack.on()
|
||||
self.linetrack.p1(self.point)
|
||||
self.linetrack.p2(self.point.add(dist[0]))
|
||||
self.ui.radiusValue.setText("%.2f" % dist[0].Length)
|
||||
self.ui.radiusValue.setText(formatUnit(dist[0].Length))
|
||||
else:
|
||||
self.dvec = None
|
||||
self.ghost.off()
|
||||
|
@ -2703,7 +2712,7 @@ class Trimex(Modifier):
|
|||
dist = self.extrude(self.shift)
|
||||
else:
|
||||
dist = self.redraw(self.point,self.snapped,self.shift,self.alt)
|
||||
self.ui.radiusValue.setText("%.2f" % dist)
|
||||
self.ui.radiusValue.setText(formatUnit(dist))
|
||||
self.ui.radiusValue.setFocus()
|
||||
self.ui.radiusValue.selectAll()
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user