Added additional TaskBox to Arch Wall tool

Additional parameters such as height and width
can now be set during wall drawing
This commit is contained in:
Yorik van Havre
2012-02-04 16:25:43 -02:00
parent 7b88ef317e
commit bce32cc2ef
4 changed files with 122 additions and 51 deletions

View File

@@ -136,8 +136,14 @@ class DraftLineEdit(QtGui.QLineEdit):
QtGui.QLineEdit.keyPressEvent(self, event)
class DraftTaskPanel:
def __init__(self,widget):
self.form = widget
def __init__(self,widget,extra=None):
if extra:
if isinstance(extra,list):
self.form = [widget] + extra
else:
self.form = [widget,extra]
else:
self.form = widget
def getStandardButtons(self):
return int(QtGui.QDialogButtonBox.Cancel)
def accept(self):
@@ -318,21 +324,6 @@ 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,
@@ -485,19 +476,17 @@ class DraftToolBar:
# Interface modes
#---------------------------------------------------------------------------
def taskUi(self,title,):
def taskUi(self,title,extra=None):
if self.taskmode:
self.isTaskOn = True
todo.delay(FreeCADGui.Control.closeDialog,None)
self.baseWidget = QtGui.QWidget()
self.setTitle(title)
self.layout = QtGui.QVBoxLayout(self.baseWidget)
self.setupToolBar(task=True)
self.retranslateUi(self.baseWidget)
self.panel = DraftTaskPanel(self.baseWidget)
self.panel = DraftTaskPanel(self.baseWidget,extra)
todo.delay(FreeCADGui.Control.showDialog,self.panel)
else:
self.setTitle(title)
self.setTitle(title)
def selectPlaneUi(self):
self.taskUi(translate("draft", "Select Plane"))
@@ -535,7 +524,7 @@ class DraftToolBar:
def pointUi(self,title=translate("draft","Point"),cancel=None,extra=None,getcoords=None,rel=False):
if cancel: self.cancel = cancel
if getcoords: self.pointcallback = getcoords
self.taskUi(title)
self.taskUi(title,extra)
self.xValue.setEnabled(True)
self.yValue.setEnabled(True)
self.labelx.setText(translate("draft", "X"))
@@ -546,7 +535,6 @@ class DraftToolBar:
self.yValue.show()
self.zValue.show()
if rel: self.isRelative.show()
if extra: self.extraUi(extra)
self.xValue.setFocus()
self.xValue.selectAll()
@@ -601,12 +589,6 @@ 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)

View File

@@ -648,7 +648,7 @@ class Snapper:
FreeCADGui.Snapper.getPoint(callback=cb)
If the callback function accepts more than one argument, it will also receive
the last snapped object.Finally, a task dialog can be passed as extradlg."""
the last snapped object. Finally, a pyqt dialog can be passed as extra taskbox."""
import inspect
@@ -713,8 +713,8 @@ class Snapper:
if callback:
callback(None)
# adding 2 callback functions
self.ui.pointUi(cancel=cancel,getcoords=getcoords,rel=bool(last))
# adding callback functions
self.ui.pointUi(cancel=cancel,getcoords=getcoords,extra=extradlg,rel=bool(last))
self.callbackClick = self.view.addEventCallbackPivy(coin.SoMouseButtonEvent.getClassTypeId(),click)
self.callbackMove = self.view.addEventCallbackPivy(coin.SoLocation2Event.getClassTypeId(),move)

View File

@@ -680,7 +680,7 @@ class boxTracker(Tracker):
else:
return self.cube.width.getValue()
def heigth(self,h=None):
def height(self,h=None):
if h:
self.cube.depth.setValue(h)
self.update()