+ fixed bugs when entering manual coords in Draft Taskview mode
git-svn-id: https://free-cad.svn.sourceforge.net/svnroot/free-cad/trunk@5146 e8eeb9e2-ec13-0410-a4a9-efa5cf37419d
This commit is contained in:
parent
5f3a22073f
commit
3784de7c76
|
@ -64,7 +64,10 @@ class todo:
|
|||
for f, arg in todo.itinerary:
|
||||
try:
|
||||
# print "debug: executing",f
|
||||
f(arg)
|
||||
if arg:
|
||||
f(arg)
|
||||
else:
|
||||
f()
|
||||
except:
|
||||
wrn = "[Draft.todo] Unexpected error:" + sys.exc_info()[0]
|
||||
FreeCAD.Console.PrintWarning (wrn)
|
||||
|
@ -72,10 +75,14 @@ class todo:
|
|||
if todo.commitlist:
|
||||
for name,func in todo.commitlist:
|
||||
# print "debug: committing ",str(name)
|
||||
name = str(name)
|
||||
FreeCAD.ActiveDocument.openTransaction(name)
|
||||
func()
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
try:
|
||||
name = str(name)
|
||||
FreeCAD.ActiveDocument.openTransaction(name)
|
||||
func()
|
||||
FreeCAD.ActiveDocument.commitTransaction()
|
||||
except:
|
||||
wrn = "[Draft.todo] Unexpected error:" + sys.exc_info()[0]
|
||||
FreeCAD.Console.PrintWarning (wrn)
|
||||
todo.commitlist = []
|
||||
|
||||
@staticmethod
|
||||
|
@ -160,6 +167,7 @@ class DraftToolBar:
|
|||
self.textbuffer = []
|
||||
self.crossedViews = []
|
||||
self.isTaskOn = False
|
||||
self.fillmode = Draft.getParam("fillmode")
|
||||
|
||||
if self.taskmode:
|
||||
# only a dummy widget, since widgets are created on demand
|
||||
|
@ -289,7 +297,7 @@ class DraftToolBar:
|
|||
self.radiusValue = self._lineedit("radiusValue", self.layout, width=60)
|
||||
self.radiusValue.setText("0.00")
|
||||
self.isRelative = self._checkbox("isRelative",self.layout,checked=True)
|
||||
self.hasFill = self._checkbox("hasFill",self.layout,checked=Draft.getParam("fillmode"))
|
||||
self.hasFill = self._checkbox("hasFill",self.layout,checked=self.fillmode)
|
||||
self.continueCmd = self._checkbox("continueCmd",self.layout,checked=False)
|
||||
self.occOffset = self._checkbox("occOffset",self.layout,checked=False)
|
||||
self.undoButton = self._pushbutton("undoButton", self.layout, icon='Draft_Rotate')
|
||||
|
@ -339,6 +347,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.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)
|
||||
QtCore.QObject.connect(self.xValue,QtCore.SIGNAL("escaped()"),self.finish)
|
||||
|
@ -527,7 +536,7 @@ class DraftToolBar:
|
|||
def offUi(self):
|
||||
if self.taskmode:
|
||||
self.isTaskOn = False
|
||||
FreeCADGui.Control.closeDialog()
|
||||
todo.delay(FreeCADGui.Control.closeDialog,None)
|
||||
self.baseWidget = QtGui.QWidget()
|
||||
# print "UI turned off"
|
||||
else:
|
||||
|
@ -662,12 +671,36 @@ class DraftToolBar:
|
|||
self.addButton.setEnabled(mode)
|
||||
self.delButton.setEnabled(mode)
|
||||
|
||||
def setNextFocus(self):
|
||||
def isThere(widget):
|
||||
if widget.isEnabled() and widget.isVisible():
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
if (not self.taskmode) or self.isTaskOn:
|
||||
if isThere(self.xValue):
|
||||
self.xValue.setFocus()
|
||||
self.xValue.selectAll()
|
||||
elif isThere(self.yValue):
|
||||
self.yValue.setFocus()
|
||||
self.yValue.selectAll()
|
||||
elif isThere(self.zValue):
|
||||
self.zValue.setFocus()
|
||||
self.zValue.selectAll()
|
||||
elif isThere(self.radiusValue):
|
||||
self.radiusValue.setFocus()
|
||||
self.radiusValue.selectAll()
|
||||
|
||||
def setRelative(self):
|
||||
if (not self.taskmode) or self.isTaskOn:
|
||||
self.isRelative.show()
|
||||
|
||||
def relocate(self):
|
||||
"relocates the right-aligned buttons depending on the toolbar size"
|
||||
if self.baseWidget.geometry().width() < 400:
|
||||
self.layout.setDirection(QtGui.QBoxLayout.TopToBottom)
|
||||
else:
|
||||
self.layout.setDirection(QtGui.QBoxLayout.LeftToRight)
|
||||
self.layout.setDirection(QtGui.QBoxLayout.LeftToRight)
|
||||
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
|
@ -726,6 +759,9 @@ class DraftToolBar:
|
|||
def setContinue(self,val):
|
||||
self.continueMode = bool(val)
|
||||
|
||||
def setFill(self,val):
|
||||
self.fillmode = bool(val)
|
||||
|
||||
def apply(self):
|
||||
for i in FreeCADGui.Selection.getSelection():
|
||||
Draft.formatObject(i)
|
||||
|
|
|
@ -1308,7 +1308,7 @@ class Line(Creator):
|
|||
if (len(self.node) > 1):
|
||||
self.commit(translate("draft","Create Wire"),
|
||||
partial(Draft.makeWire,self.node,closed,
|
||||
face=self.ui.hasFill.isChecked(),support=self.support))
|
||||
face=self.ui.fillmode,support=self.support))
|
||||
if self.ui:
|
||||
self.linetrack.finalize()
|
||||
self.constraintrack.finalize()
|
||||
|
@ -1416,16 +1416,7 @@ class Line(Creator):
|
|||
self.drawSegment(point)
|
||||
if (not self.isWire and len(self.node) == 2):
|
||||
self.finish(False,cont=True)
|
||||
if self.ui.xValue.isEnabled():
|
||||
self.ui.xValue.setFocus()
|
||||
self.ui.xValue.selectAll()
|
||||
elif self.ui.yValue.isEnabled():
|
||||
self.ui.yValue.setFocus()
|
||||
self.ui.yValue.selectAll()
|
||||
else:
|
||||
self.ui.zValue.setFocus()
|
||||
self.ui.zValue.selectAll()
|
||||
|
||||
self.ui.setNextFocus()
|
||||
|
||||
class Wire(Line):
|
||||
"a FreeCAD command for creating a wire"
|
||||
|
@ -1520,9 +1511,12 @@ class BSpline(Line):
|
|||
if (len(self.node) > 1):
|
||||
old = self.obj.Name
|
||||
self.doc.removeObject(old)
|
||||
self.commit(translate("draft","Create BSpline"),
|
||||
partial(Draft.makeBSpline,self.node,closed,
|
||||
face=self.ui.hasFill.isChecked(),support=self.support))
|
||||
try:
|
||||
self.commit(translate("draft","Create BSpline"),
|
||||
partial(Draft.makeBSpline,self.node,closed,
|
||||
face=self.ui.fillmode,support=self.support))
|
||||
except:
|
||||
print "Draft: error delaying commit"
|
||||
if self.ui:
|
||||
self.bsplinetrack.finalize()
|
||||
self.constraintrack.finalize()
|
||||
|
@ -1632,10 +1626,14 @@ class Rectangle(Creator):
|
|||
if abs(fcvec.angle(p2.sub(p1),plane.v,plane.axis)) > 1: height = -height
|
||||
p = plane.getRotation()
|
||||
p.move(p1)
|
||||
self.commit(translate("draft","Create Rectangle"),
|
||||
partial(Draft.makeRectangle,length,height,
|
||||
p,self.ui.hasFill.isChecked(),support=self.support))
|
||||
try:
|
||||
self.commit(translate("draft","Create Rectangle"),
|
||||
partial(Draft.makeRectangle,length,height,
|
||||
p,self.ui.fillmode,support=self.support))
|
||||
except:
|
||||
print "Draft: error delaying commit"
|
||||
self.finish(cont=True)
|
||||
print "all done"
|
||||
|
||||
def action(self,arg):
|
||||
"scene event handler"
|
||||
|
@ -1667,7 +1665,7 @@ class Rectangle(Creator):
|
|||
self.createObject()
|
||||
else:
|
||||
msg(translate("draft", "Pick opposite point:\n"))
|
||||
self.ui.isRelative.show()
|
||||
self.ui.setRelative()
|
||||
self.rect.setorigin(point)
|
||||
self.rect.on()
|
||||
self.planetrack.set(point)
|
||||
|
@ -1903,17 +1901,22 @@ class Arc(Creator):
|
|||
p = plane.getRotation()
|
||||
p.move(self.center)
|
||||
if self.closedCircle:
|
||||
self.commit(translate("draft","Create Circle"),
|
||||
partial(Draft.makeCircle,self.rad,p,
|
||||
self.ui.hasFill.isChecked(),support=self.support))
|
||||
try:
|
||||
self.commit(translate("draft","Create Circle"),
|
||||
partial(Draft.makeCircle,self.rad,p,
|
||||
self.ui.fillmode,support=self.support))
|
||||
except:
|
||||
print "Draft: error delaying commit"
|
||||
else:
|
||||
sta = math.degrees(self.firstangle)
|
||||
end = math.degrees(self.firstangle+self.angle)
|
||||
print "debug:",sta, end
|
||||
if end < sta: sta,end = end,sta
|
||||
self.commit(translate("draft","Create Arc"),
|
||||
partial(Draft.makeCircle,self.rad,p,self.ui.hasFill.isChecked(),
|
||||
sta,end,support=self.support))
|
||||
try:
|
||||
self.commit(translate("draft","Create Arc"),
|
||||
partial(Draft.makeCircle,self.rad,p,self.ui.fillmode,
|
||||
sta,end,support=self.support))
|
||||
except:
|
||||
print "Draft: error delaying commit"
|
||||
self.finish(cont=True)
|
||||
|
||||
def numericInput(self,numx,numy,numz):
|
||||
|
@ -1924,7 +1927,7 @@ class Arc(Creator):
|
|||
self.arctrack.on()
|
||||
self.ui.radiusUi()
|
||||
self.step = 1
|
||||
self.ui.radiusValue.setFocus()
|
||||
self.ui.setNextFocus()
|
||||
msg(translate("draft", "Pick radius:\n"))
|
||||
|
||||
def numericRadius(self,rad):
|
||||
|
@ -1948,14 +1951,14 @@ class Arc(Creator):
|
|||
else:
|
||||
self.step = 2
|
||||
self.arctrack.setCenter(self.center)
|
||||
self.ui.labelRadius.setText("Start angle")
|
||||
self.ui.labelRadius.setText(str(translate("draft", "Start Angle")))
|
||||
self.linetrack.p1(self.center)
|
||||
self.linetrack.on()
|
||||
self.ui.radiusValue.setText("")
|
||||
self.ui.radiusValue.setFocus()
|
||||
msg(translate("draft", "Pick start angle:\n"))
|
||||
elif (self.step == 2):
|
||||
self.ui.labelRadius.setText("Aperture")
|
||||
self.ui.labelRadius.setText(str(translate("draft", "Aperture")))
|
||||
self.firstangle = math.radians(rad)
|
||||
if fcvec.equals(plane.axis, Vector(1,0,0)): u = Vector(0,self.rad,0)
|
||||
else: u = fcvec.scaleTo(Vector(1,0,0).cross(plane.axis), self.rad)
|
||||
|
@ -2143,7 +2146,7 @@ class Polygon(Creator):
|
|||
p.move(self.center)
|
||||
self.commit(translate("draft","Create Polygon"),
|
||||
partial(Draft.makePolygon,self.ui.numFaces.value(),self.rad,
|
||||
True,p,face=self.ui.hasFill.isChecked(),support=self.support))
|
||||
True,p,face=self.ui.fillmode,support=self.support))
|
||||
self.finish(cont=True)
|
||||
|
||||
def numericInput(self,numx,numy,numz):
|
||||
|
|
Loading…
Reference in New Issue
Block a user