From fd802bad80723dd9524a0b366202679fc9f09e28 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Mon, 30 Nov 2015 15:40:52 -0200 Subject: [PATCH] Arch: Allow to draw walls by entering length, width and height on the GUI - fixes #2000 --- src/Mod/Arch/ArchWall.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/Mod/Arch/ArchWall.py b/src/Mod/Arch/ArchWall.py index 89baa90094c4..b8474d75d1a8 100644 --- a/src/Mod/Arch/ArchWall.py +++ b/src/Mod/Arch/ArchWall.py @@ -161,6 +161,7 @@ def IsActive(self): def Activated(self): self.Align = "Center" self.Length = None + self.lengthValue = 0 self.continueCmd = False p = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch") self.Width = p.GetFloat("WallWidth",200) @@ -322,11 +323,20 @@ def taskbox(self): grid.addWidget(label4,4,0,1,1) grid.addWidget(value4,4,1,1,1) + QtCore.QObject.connect(self.Length,QtCore.SIGNAL("valueChanged(double)"),self.setLength) QtCore.QObject.connect(value1,QtCore.SIGNAL("valueChanged(double)"),self.setWidth) QtCore.QObject.connect(value2,QtCore.SIGNAL("valueChanged(double)"),self.setHeight) QtCore.QObject.connect(value3,QtCore.SIGNAL("currentIndexChanged(int)"),self.setAlign) QtCore.QObject.connect(value4,QtCore.SIGNAL("stateChanged(int)"),self.setContinue) + QtCore.QObject.connect(self.Length,QtCore.SIGNAL("returnPressed()"),value1.setFocus) + QtCore.QObject.connect(self.Length,QtCore.SIGNAL("returnPressed()"),value1.selectAll) + QtCore.QObject.connect(value1,QtCore.SIGNAL("returnPressed()"),value2.setFocus) + QtCore.QObject.connect(value1,QtCore.SIGNAL("returnPressed()"),value2.selectAll) + QtCore.QObject.connect(value2,QtCore.SIGNAL("returnPressed()"),self.createFromGUI) return w + + def setLength(self,d): + self.lengthValue = d def setWidth(self,d): self.Width = d @@ -343,7 +353,15 @@ def setContinue(self,i): self.continueCmd = bool(i) if hasattr(FreeCADGui,"draftToolBar"): FreeCADGui.draftToolBar.continueMode = bool(i) - + + def createFromGUI(self): + FreeCAD.ActiveDocument.openTransaction(translate("Arch","Create Wall")) + FreeCADGui.addModule("Arch") + FreeCADGui.doCommand('Arch.makeWall(length='+str(self.lengthValue)+',width='+str(self.Width)+',height='+str(self.Height)+',align="'+str(self.Align)+'")') + FreeCAD.ActiveDocument.commitTransaction() + FreeCAD.ActiveDocument.recompute() + if hasattr(FreeCADGui,"draftToolBar"): + FreeCADGui.draftToolBar.escape() class _CommandMergeWalls: "the Arch Merge Walls command definition"