Fixed numeric input in Arch Walls coordinates
This commit is contained in:
parent
8d01d70038
commit
26602b2aa3
|
@ -98,7 +98,7 @@ class _CommandWall:
|
||||||
import DraftTrackers
|
import DraftTrackers
|
||||||
self.points = []
|
self.points = []
|
||||||
self.tracker = DraftTrackers.boxTracker()
|
self.tracker = DraftTrackers.boxTracker()
|
||||||
FreeCADGui.Snapper.getPoint(callback=self.getPoint,extradlg=TaskArchWall())
|
FreeCADGui.Snapper.getPoint(callback=self.getPoint)
|
||||||
|
|
||||||
def getPoint(self,point,obj):
|
def getPoint(self,point,obj):
|
||||||
"this function is called by the snapper when it has a 3D point"
|
"this function is called by the snapper when it has a 3D point"
|
||||||
|
|
|
@ -136,7 +136,7 @@ class DraftLineEdit(QtGui.QLineEdit):
|
||||||
QtGui.QLineEdit.keyPressEvent(self, event)
|
QtGui.QLineEdit.keyPressEvent(self, event)
|
||||||
|
|
||||||
class DraftTaskPanel:
|
class DraftTaskPanel:
|
||||||
def __init__(self,widget,extradlg=None):
|
def __init__(self,widget):
|
||||||
self.form = widget
|
self.form = widget
|
||||||
def getStandardButtons(self):
|
def getStandardButtons(self):
|
||||||
return int(QtGui.QDialogButtonBox.Cancel)
|
return int(QtGui.QDialogButtonBox.Cancel)
|
||||||
|
@ -155,6 +155,7 @@ class DraftToolBar:
|
||||||
self.tray = None
|
self.tray = None
|
||||||
self.sourceCmd = None
|
self.sourceCmd = None
|
||||||
self.cancel = None
|
self.cancel = None
|
||||||
|
self.pointcallback = None
|
||||||
self.taskmode = Draft.getParam("UiMode")
|
self.taskmode = Draft.getParam("UiMode")
|
||||||
self.paramcolor = Draft.getParam("color")>>8
|
self.paramcolor = Draft.getParam("color")>>8
|
||||||
self.color = QtGui.QColor(self.paramcolor)
|
self.color = QtGui.QColor(self.paramcolor)
|
||||||
|
@ -171,7 +172,7 @@ class DraftToolBar:
|
||||||
self.fillmode = Draft.getParam("fillmode")
|
self.fillmode = Draft.getParam("fillmode")
|
||||||
|
|
||||||
if self.taskmode:
|
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()
|
self.baseWidget = QtGui.QWidget()
|
||||||
else:
|
else:
|
||||||
# create the draft Toolbar
|
# create the draft Toolbar
|
||||||
|
@ -250,6 +251,12 @@ class DraftToolBar:
|
||||||
if hide: chk.hide()
|
if hide: chk.hide()
|
||||||
layout.addWidget(chk)
|
layout.addWidget(chk)
|
||||||
return 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):
|
def setupToolBar(self,task=False):
|
||||||
"sets the draft toolbar up"
|
"sets the draft toolbar up"
|
||||||
|
@ -311,6 +318,21 @@ class DraftToolBar:
|
||||||
self.resetPlaneButton = self._pushbutton("none", self.layout)
|
self.resetPlaneButton = self._pushbutton("none", self.layout)
|
||||||
self.isCopy = self._checkbox("isCopy",self.layout,checked=False)
|
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
|
# spacer
|
||||||
if not self.taskmode:
|
if not self.taskmode:
|
||||||
spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding,
|
spacerItem = QtGui.QSpacerItem(40, 20, QtGui.QSizePolicy.Expanding,
|
||||||
|
@ -463,7 +485,7 @@ class DraftToolBar:
|
||||||
# Interface modes
|
# Interface modes
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
|
|
||||||
def taskUi(self,title,extradlg=None):
|
def taskUi(self,title,):
|
||||||
if self.taskmode:
|
if self.taskmode:
|
||||||
self.isTaskOn = True
|
self.isTaskOn = True
|
||||||
todo.delay(FreeCADGui.Control.closeDialog,None)
|
todo.delay(FreeCADGui.Control.closeDialog,None)
|
||||||
|
@ -472,7 +494,7 @@ class DraftToolBar:
|
||||||
self.layout = QtGui.QVBoxLayout(self.baseWidget)
|
self.layout = QtGui.QVBoxLayout(self.baseWidget)
|
||||||
self.setupToolBar(task=True)
|
self.setupToolBar(task=True)
|
||||||
self.retranslateUi(self.baseWidget)
|
self.retranslateUi(self.baseWidget)
|
||||||
self.panel = DraftTaskPanel(self.baseWidget,extradlg)
|
self.panel = DraftTaskPanel(self.baseWidget)
|
||||||
todo.delay(FreeCADGui.Control.showDialog,self.panel)
|
todo.delay(FreeCADGui.Control.showDialog,self.panel)
|
||||||
else:
|
else:
|
||||||
self.setTitle(title)
|
self.setTitle(title)
|
||||||
|
@ -510,9 +532,10 @@ class DraftToolBar:
|
||||||
self.labelx.setText(translate("draft", "Center X"))
|
self.labelx.setText(translate("draft", "Center X"))
|
||||||
self.continueCmd.show()
|
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
|
if cancel: self.cancel = cancel
|
||||||
self.taskUi(title,extradlg)
|
if getcoords: self.pointcallback = getcoords
|
||||||
|
self.taskUi(title)
|
||||||
self.xValue.setEnabled(True)
|
self.xValue.setEnabled(True)
|
||||||
self.yValue.setEnabled(True)
|
self.yValue.setEnabled(True)
|
||||||
self.labelx.setText(translate("draft", "X"))
|
self.labelx.setText(translate("draft", "X"))
|
||||||
|
@ -522,9 +545,14 @@ class DraftToolBar:
|
||||||
self.xValue.show()
|
self.xValue.show()
|
||||||
self.yValue.show()
|
self.yValue.show()
|
||||||
self.zValue.show()
|
self.zValue.show()
|
||||||
|
if rel: self.isRelative.show()
|
||||||
|
if extra: self.extraUi(extra)
|
||||||
self.xValue.setFocus()
|
self.xValue.setFocus()
|
||||||
self.xValue.selectAll()
|
self.xValue.selectAll()
|
||||||
|
|
||||||
|
def extraUi(self):
|
||||||
|
pass
|
||||||
|
|
||||||
def offsetUi(self):
|
def offsetUi(self):
|
||||||
self.taskUi(translate("draft","Offset"))
|
self.taskUi(translate("draft","Offset"))
|
||||||
self.radiusUi()
|
self.radiusUi()
|
||||||
|
@ -537,6 +565,8 @@ class DraftToolBar:
|
||||||
def offUi(self):
|
def offUi(self):
|
||||||
todo.delay(FreeCADGui.Control.closeDialog,None)
|
todo.delay(FreeCADGui.Control.closeDialog,None)
|
||||||
self.cancel = None
|
self.cancel = None
|
||||||
|
self.sourceCmd = None
|
||||||
|
self.pointcallback = None
|
||||||
if self.taskmode:
|
if self.taskmode:
|
||||||
self.isTaskOn = False
|
self.isTaskOn = False
|
||||||
self.baseWidget = QtGui.QWidget()
|
self.baseWidget = QtGui.QWidget()
|
||||||
|
@ -571,7 +601,13 @@ class DraftToolBar:
|
||||||
self.textValue.hide()
|
self.textValue.hide()
|
||||||
self.continueCmd.hide()
|
self.continueCmd.hide()
|
||||||
self.occOffset.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")):
|
def trimUi(self,title=translate("draft","Trim")):
|
||||||
self.taskUi(title)
|
self.taskUi(title)
|
||||||
self.radiusUi()
|
self.radiusUi()
|
||||||
|
@ -793,7 +829,7 @@ class DraftToolBar:
|
||||||
|
|
||||||
def validatePoint(self):
|
def validatePoint(self):
|
||||||
"function for checking and sending numbers entered manually"
|
"function for checking and sending numbers entered manually"
|
||||||
if self.sourceCmd != None:
|
if self.sourceCmd or self.pointcallback:
|
||||||
if (self.labelRadius.isVisible()):
|
if (self.labelRadius.isVisible()):
|
||||||
try:
|
try:
|
||||||
rad=float(self.radiusValue.text())
|
rad=float(self.radiusValue.text())
|
||||||
|
@ -831,7 +867,10 @@ class DraftToolBar:
|
||||||
numx = v.x
|
numx = v.x
|
||||||
numy = v.y
|
numy = v.y
|
||||||
numz = v.z
|
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):
|
def finish(self):
|
||||||
"finish button action"
|
"finish button action"
|
||||||
|
|
|
@ -675,23 +675,32 @@ class Snapper:
|
||||||
if movecallback:
|
if movecallback:
|
||||||
movecallback(self.pt)
|
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):
|
def click(event_cb):
|
||||||
event = event_cb.getEvent()
|
event = event_cb.getEvent()
|
||||||
if event.getButton() == 1:
|
if event.getButton() == 1:
|
||||||
if event.getState() == coin.SoMouseButtonEvent.DOWN:
|
if event.getState() == coin.SoMouseButtonEvent.DOWN:
|
||||||
self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callbackClick)
|
accept()
|
||||||
self.view.removeEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),self.callbackMove)
|
|
||||||
obj = FreeCADGui.Snapper.lastSnappedObject
|
def accept():
|
||||||
FreeCADGui.Snapper.off()
|
self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callbackClick)
|
||||||
self.ui.offUi()
|
self.view.removeEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),self.callbackMove)
|
||||||
if self.trackLine:
|
obj = FreeCADGui.Snapper.lastSnappedObject
|
||||||
self.trackLine.off()
|
FreeCADGui.Snapper.off()
|
||||||
if callback:
|
self.ui.offUi()
|
||||||
if len(inspect.getargspec(callback).args) > 2:
|
if self.trackLine:
|
||||||
callback(self.pt,obj)
|
self.trackLine.off()
|
||||||
else:
|
if callback:
|
||||||
callback(self.pt)
|
if len(inspect.getargspec(callback).args) > 2:
|
||||||
self.pt = None
|
callback(self.pt,obj)
|
||||||
|
else:
|
||||||
|
callback(self.pt)
|
||||||
|
self.pt = None
|
||||||
|
|
||||||
def cancel():
|
def cancel():
|
||||||
self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callbackClick)
|
self.view.removeEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),self.callbackClick)
|
||||||
|
@ -704,7 +713,7 @@ class Snapper:
|
||||||
callback(None)
|
callback(None)
|
||||||
|
|
||||||
# adding 2 callback functions
|
# 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.callbackClick = self.view.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),click)
|
||||||
self.callbackMove = self.view.addEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),move)
|
self.callbackMove = self.view.addEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),move)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user