Fixed numeric input in Arch Walls coordinates

This commit is contained in:
Yorik van Havre 2012-02-02 17:53:26 -02:00
parent 8d01d70038
commit 26602b2aa3
3 changed files with 72 additions and 24 deletions

View File

@ -98,7 +98,7 @@ class _CommandWall:
import DraftTrackers
self.points = []
self.tracker = DraftTrackers.boxTracker()
FreeCADGui.Snapper.getPoint(callback=self.getPoint,extradlg=TaskArchWall())
FreeCADGui.Snapper.getPoint(callback=self.getPoint)
def getPoint(self,point,obj):
"this function is called by the snapper when it has a 3D point"

View File

@ -136,7 +136,7 @@ class DraftLineEdit(QtGui.QLineEdit):
QtGui.QLineEdit.keyPressEvent(self, event)
class DraftTaskPanel:
def __init__(self,widget,extradlg=None):
def __init__(self,widget):
self.form = widget
def getStandardButtons(self):
return int(QtGui.QDialogButtonBox.Cancel)
@ -155,6 +155,7 @@ class DraftToolBar:
self.tray = None
self.sourceCmd = None
self.cancel = None
self.pointcallback = None
self.taskmode = Draft.getParam("UiMode")
self.paramcolor = Draft.getParam("color")>>8
self.color = QtGui.QColor(self.paramcolor)
@ -171,7 +172,7 @@ class DraftToolBar:
self.fillmode = Draft.getParam("fillmode")
if self.taskmode:
# only a dummy widget, since widgets are created on demand
# add only a dummy widget, since widgets are created on demand
self.baseWidget = QtGui.QWidget()
else:
# create the draft Toolbar
@ -250,6 +251,12 @@ class DraftToolBar:
if hide: chk.hide()
layout.addWidget(chk)
return chk
def _combo (self,name,layout,hide=True):
cb = QtGui.QComboBox(self.baseWidget)
cb.setObjectName(name)
if hide: cb.hide()
layout.addWidget(cb)
def setupToolBar(self,task=False):
"sets the draft toolbar up"
@ -311,6 +318,21 @@ class DraftToolBar:
self.resetPlaneButton = self._pushbutton("none", self.layout)
self.isCopy = self._checkbox("isCopy",self.layout,checked=False)
# options buttons for other workbenches
op1 = QtGui.QHBoxLayout()
self.layout.addLayout(op1)
self.labelop1 = self._label("labelop1", op1)
self.valueop1 = self._lineedit("valueop1", op1)
op2 = QtGui.QHBoxLayout()
self.layout.addLayout(op2)
self.labelop2 = self._label("labelop2", op2)
self.valueop2 = self._lineedit("valueop2", op2)
op3 = QtGui.QHBoxLayout()
self.layout.addLayout(op3)
self.labelop3 = self._label("labelop3", op3)
self.valueop3 = self._combo("valueop3", op3)
# spacer
if not self.taskmode:
spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding,
@ -463,7 +485,7 @@ class DraftToolBar:
# Interface modes
#---------------------------------------------------------------------------
def taskUi(self,title,extradlg=None):
def taskUi(self,title,):
if self.taskmode:
self.isTaskOn = True
todo.delay(FreeCADGui.Control.closeDialog,None)
@ -472,7 +494,7 @@ class DraftToolBar:
self.layout = QtGui.QVBoxLayout(self.baseWidget)
self.setupToolBar(task=True)
self.retranslateUi(self.baseWidget)
self.panel = DraftTaskPanel(self.baseWidget,extradlg)
self.panel = DraftTaskPanel(self.baseWidget)
todo.delay(FreeCADGui.Control.showDialog,self.panel)
else:
self.setTitle(title)
@ -510,9 +532,10 @@ class DraftToolBar:
self.labelx.setText(translate("draft", "Center X"))
self.continueCmd.show()
def pointUi(self,title=translate("draft","Point"),cancel=None,extradlg=None):
def pointUi(self,title=translate("draft","Point"),cancel=None,extra=None,getcoords=None,rel=False):
if cancel: self.cancel = cancel
self.taskUi(title,extradlg)
if getcoords: self.pointcallback = getcoords
self.taskUi(title)
self.xValue.setEnabled(True)
self.yValue.setEnabled(True)
self.labelx.setText(translate("draft", "X"))
@ -522,9 +545,14 @@ class DraftToolBar:
self.xValue.show()
self.yValue.show()
self.zValue.show()
if rel: self.isRelative.show()
if extra: self.extraUi(extra)
self.xValue.setFocus()
self.xValue.selectAll()
def extraUi(self):
pass
def offsetUi(self):
self.taskUi(translate("draft","Offset"))
self.radiusUi()
@ -537,6 +565,8 @@ class DraftToolBar:
def offUi(self):
todo.delay(FreeCADGui.Control.closeDialog,None)
self.cancel = None
self.sourceCmd = None
self.pointcallback = None
if self.taskmode:
self.isTaskOn = False
self.baseWidget = QtGui.QWidget()
@ -571,7 +601,13 @@ class DraftToolBar:
self.textValue.hide()
self.continueCmd.hide()
self.occOffset.hide()
self.labelop1.hide()
self.valueop1.hide()
self.labelop2.hide()
self.valueop2.hide()
self.labelop3.hide()
self.valueop3.hide()
def trimUi(self,title=translate("draft","Trim")):
self.taskUi(title)
self.radiusUi()
@ -793,7 +829,7 @@ class DraftToolBar:
def validatePoint(self):
"function for checking and sending numbers entered manually"
if self.sourceCmd != None:
if self.sourceCmd or self.pointcallback:
if (self.labelRadius.isVisible()):
try:
rad=float(self.radiusValue.text())
@ -831,7 +867,10 @@ class DraftToolBar:
numx = v.x
numy = v.y
numz = v.z
self.sourceCmd.numericInput(numx,numy,numz)
if self.pointcallback:
self.pointcallback(FreeCAD.Vector(numx,numy,numz),self.isRelative.isChecked())
else:
self.sourceCmd.numericInput(numx,numy,numz)
def finish(self):
"finish button action"

View File

@ -675,23 +675,32 @@ class Snapper:
if movecallback:
movecallback(self.pt)
def getcoords(point,relative=False):
self.pt = point
if relative and last:
self.pt = last.add(point)
accept()
def click(event_cb):
event = event_cb.getEvent()
if event.getButton() == 1:
if event.getState() == coin.SoMouseButtonEvent.DOWN:
self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callbackClick)
self.view.removeEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),self.callbackMove)
obj = FreeCADGui.Snapper.lastSnappedObject
FreeCADGui.Snapper.off()
self.ui.offUi()
if self.trackLine:
self.trackLine.off()
if callback:
if len(inspect.getargspec(callback).args) > 2:
callback(self.pt,obj)
else:
callback(self.pt)
self.pt = None
accept()
def accept():
self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callbackClick)
self.view.removeEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),self.callbackMove)
obj = FreeCADGui.Snapper.lastSnappedObject
FreeCADGui.Snapper.off()
self.ui.offUi()
if self.trackLine:
self.trackLine.off()
if callback:
if len(inspect.getargspec(callback).args) > 2:
callback(self.pt,obj)
else:
callback(self.pt)
self.pt = None
def cancel():
self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callbackClick)
@ -704,7 +713,7 @@ class Snapper:
callback(None)
# adding 2 callback functions
self.ui.pointUi(cancel=cancel,extradlg=extradlg)
self.ui.pointUi(cancel=cancel,getcoords=getcoords,rel=bool(last))
self.callbackClick = self.view.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),click)
self.callbackMove = self.view.addEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),move)