Changed list views to comboboxes in the table

This commit is contained in:
jrheinlaender 2012-10-26 13:47:49 +04:30 committed by wmayer
parent 5c1948d8b6
commit 1eb738fc3f
4 changed files with 52 additions and 45 deletions

View File

@ -20,6 +20,8 @@
# * * # * *
# ******************************************************************************/ # ******************************************************************************/
import FreeCAD # just for debug printing to console...
class SegmentFunctionSegment: class SegmentFunctionSegment:
"One segment of a segment function" "One segment of a segment function"
start = 0 start = 0
@ -143,10 +145,10 @@ class SegmentFunction:
return result return result
def output(self): def output(self):
print self.name, " = ", FreeCAD.Console.PrintMessage(self.name + " = ")
for i in range(len(self.segments)): for i in range(len(self.segments)):
print self.segments[i].asString(), FreeCAD.Console.PrintMessage(self.segments[i].asString())
if i < len(self.segments) - 1: if i < len(self.segments) - 1:
print " + ", FreeCAD.Console.PrintMessage(" + ")
print "" FreeCAD.Console.PrintMessage("\n")

View File

@ -21,7 +21,7 @@
# ******************************************************************************/ # ******************************************************************************/
import os, tempfile import os, tempfile
import FreeCADGui import FreeCAD, FreeCADGui # FreeCAD just required for debug printing to the console...
import WebGui import WebGui
from SegmentFunction import SegmentFunction from SegmentFunction import SegmentFunction
from ShaftFeature import ShaftFeature from ShaftFeature import ShaftFeature
@ -115,7 +115,7 @@ class Shaft:
self.segments[index].loadLocation = loadLocation self.segments[index].loadLocation = loadLocation
else: else:
# TODO: Show warning # TODO: Show warning
print "Load location must be inside segment" FreeCAD.Console.PrintMessage("Load location must be inside segment\n")
#self.feature.updateForces() graphical representation of the forces #self.feature.updateForces() graphical representation of the forces
self.equilibrium() self.equilibrium()
@ -187,7 +187,7 @@ class Shaft:
coefficientsMbz.append(1) coefficientsMbz.append(1)
else: else:
# TODO: Better error message # TODO: Better error message
print "Fixed constraint must be at beginning or end of shaft" FreeCAD.Console.PrintMessage("Fixed constraint must be at beginning or end of shaft\n")
return return
locations["Fy%u" % i] = location locations["Fy%u" % i] = location
@ -203,7 +203,7 @@ class Shaft:
#elif lType == "None": #elif lType == "None":
# # No loads on segment # # No loads on segment
print "Segment: %u, type: %s, load: %f, location: %f" % (i, lType, load, location) FreeCAD.Console.PrintMessage("Segment: %u, type: %s, load: %f, location: %f\n" % (i, lType, load, location))
self.printEquilibrium(variableNames, coefficientsFy) self.printEquilibrium(variableNames, coefficientsFy)
self.printEquilibrium(variableNames, coefficientsMbz) self.printEquilibrium(variableNames, coefficientsMbz)
@ -227,8 +227,8 @@ class Shaft:
else: else:
moments[locations[variableNames[2]]] = solution[1] moments[locations[variableNames[2]]] = solution[1]
print forces FreeCAD.Console.PrintMessage(forces)
print moments FreeCAD.Console.PrintMessage(moments)
self.Qy = SegmentFunction("Qy") self.Qy = SegmentFunction("Qy")
self.Qy.buildFromDict("x", forces) self.Qy.buildFromDict("x", forces)
self.Qy.output() self.Qy.output()
@ -241,12 +241,12 @@ class Shaft:
# Auxiliary method for debugging purposes # Auxiliary method for debugging purposes
for i in range(len(var)): for i in range(len(var)):
if i == 0: if i == 0:
print "%f = " % coeff[i], FreeCAD.Console.PrintMessage("%f = " % coeff[i])
else: else:
print "%f * %s" % (coeff[i], var[i]), FreeCAD.Console.PrintMessage("%f * %s" % (coeff[i], var[i]))
if (i < len(var) - 1) and (i != 0): if (i < len(var) - 1) and (i != 0):
print " + ", FreeCAD.Console.PrintMessage(" + ")
print "" FreeCAD.Console.PrintMessage("\n")
def __del__(self): def __del__(self):
"Remove the temporary directory" "Remove the temporary directory"

View File

@ -74,7 +74,7 @@ class WizardShaft:
#self.shaft.htmlWindow = htmlWindow #self.shaft.htmlWindow = htmlWindow
def updateEdge(self, column, start): def updateEdge(self, column, start):
print "Not implemented yet - waiting for robust references..." App.Console.PrintMessage("Not implemented yet - waiting for robust references...")
return return
if self.sketchClosed is not True: if self.sketchClosed is not True:
return return
@ -116,3 +116,6 @@ class WizardShaftGui:
return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip} return {'Pixmap' : IconPath, 'MenuText': MenuText, 'ToolTip': ToolTip}
FreeCADGui.addCommand('PartDesign_WizardShaft', WizardShaftGui()) FreeCADGui.addCommand('PartDesign_WizardShaft', WizardShaftGui())
#Note: Start wizard in Python Console with
# Gui.runCommand('PartDesign_WizardShaft')

View File

@ -21,6 +21,7 @@
# ******************************************************************************/ # ******************************************************************************/
from PyQt4 import QtCore, QtGui from PyQt4 import QtCore, QtGui
import FreeCAD # Just for debug printing...
class WizardShaftTable: class WizardShaftTable:
"The table widget that contains all the data of the shaft" "The table widget that contains all the data of the shaft"
@ -132,15 +133,15 @@ class WizardShaftTable:
widget.valueChanged.connect(self.slotValueChanged) widget.valueChanged.connect(self.slotValueChanged)
widget.editingFinished.connect(self.slotEditingFinished) widget.editingFinished.connect(self.slotEditingFinished)
# Load type # Load type
widget = QtGui.QListWidget(self.widget) widget = QtGui.QComboBox(self.widget)
widget.insertItem(0, QtGui.QListWidgetItem("None", widget)) widget.insertItem(0, "None")
widget.insertItem(1, QtGui.QListWidgetItem("Fixed", widget)) widget.insertItem(1, "Fixed")
widget.insertItem(2, QtGui.QListWidgetItem("Static", widget)) widget.insertItem(2, "Static")
widget.insertItem(3, QtGui.QListWidgetItem("Bearing", widget)) widget.insertItem(3, "Bearing")
widget.insertItem(4, QtGui.QListWidgetItem("Pulley", widget)) widget.insertItem(4, "Pulley")
self.widget.setCellWidget(self.rowDict["LoadType"], index, widget) self.widget.setCellWidget(self.rowDict["LoadType"], index, widget)
widget.setCurrentRow(0) widget.setCurrentIndex(0)
widget.currentItemChanged.connect(self.slotLoadType) self.widget.connect(widget, QtCore.SIGNAL("currentIndexChanged(const QString&)"), self.slotLoadType)
# Load size # Load size
widget = QtGui.QDoubleSpinBox(self.widget) widget = QtGui.QDoubleSpinBox(self.widget)
widget.setMinimum(-1E9) widget.setMinimum(-1E9)
@ -158,13 +159,13 @@ class WizardShaftTable:
widget.valueChanged.connect(self.slotValueChanged) widget.valueChanged.connect(self.slotValueChanged)
widget.editingFinished.connect(self.slotEditingFinished) widget.editingFinished.connect(self.slotEditingFinished)
# Start edge type # Start edge type
widget = QtGui.QListWidget(self.widget) widget = QtGui.QComboBox(self.widget)
widget.insertItem(0, QtGui.QListWidgetItem("None", widget)) widget.insertItem(0, "None",)
widget.insertItem(1, QtGui.QListWidgetItem("Chamfer", widget)) widget.insertItem(1, "Chamfer")
widget.insertItem(2, QtGui.QListWidgetItem("Fillet", widget)) widget.insertItem(2, "Fillet")
self.widget.setCellWidget(self.rowDict["StartEdgeType"],index, widget) self.widget.setCellWidget(self.rowDict["StartEdgeType"],index, widget)
widget.setCurrentRow(0) widget.setCurrentIndex(0)
widget.currentItemChanged.connect(self.slotStartEdgeType) self.widget.connect(widget, QtCore.SIGNAL("currentIndexChanged(const QString&)"), self.slotLoadType)
# Start edge size # Start edge size
widget = QtGui.QDoubleSpinBox(self.widget) widget = QtGui.QDoubleSpinBox(self.widget)
widget.setMinimum(0) widget.setMinimum(0)
@ -174,13 +175,13 @@ class WizardShaftTable:
widget.valueChanged.connect(self.slotValueChanged) widget.valueChanged.connect(self.slotValueChanged)
widget.editingFinished.connect(self.slotEditingFinished) widget.editingFinished.connect(self.slotEditingFinished)
# End edge type # End edge type
widget = QtGui.QListWidget(self.widget) widget = QtGui.QComboBox(self.widget)
widget.insertItem(0, QtGui.QListWidgetItem("None", widget)) widget.insertItem(0, "None",)
widget.insertItem(1, QtGui.QListWidgetItem("Chamfer", widget)) widget.insertItem(1, "Chamfer")
widget.insertItem(2, QtGui.QListWidgetItem("Fillet", widget)) widget.insertItem(2, "Fillet")
self.widget.setCellWidget(self.rowDict["EndEdgeType"],index, widget) self.widget.setCellWidget(self.rowDict["EndEdgeType"],index, widget)
widget.setCurrentRow(0) widget.setCurrentIndex(0)
widget.currentItemChanged.connect(self.slotEndEdgeType) self.widget.connect(widget, QtCore.SIGNAL("currentIndexChanged(const QString&)"), self.slotLoadType)
# End edge size # End edge size
widget = QtGui.QDoubleSpinBox(self.widget) widget = QtGui.QDoubleSpinBox(self.widget)
widget.setMinimum(0) widget.setMinimum(0)
@ -231,11 +232,12 @@ class WizardShaftTable:
def getDiameter(self, column): def getDiameter(self, column):
return self.getDoubleValue("Diameter", column) return self.getDoubleValue("Diameter", column)
def slotLoadType(self, new, old): @QtCore.pyqtSlot('QString')
if new.text() != "Fixed": def slotLoadType(self, text):
if text != "Fixed":
if (self.getLoadSize is None) or (self.getLoadLocation is None): if (self.getLoadSize is None) or (self.getLoadLocation is None):
return return
self.shaft.updateLoad(self.getFocusedColumn(), loadType = new.text()) self.shaft.updateLoad(self.getFocusedColumn(), loadType = text)
def setLoadType(self, column, t): def setLoadType(self, column, t):
self.setListValue("LoadType", column, t) self.setListValue("LoadType", column, t)
@ -305,13 +307,13 @@ class WizardShaftTable:
def setListValue(self, row, column, v): def setListValue(self, row, column, v):
widget = self.widget.cellWidget(self.rowDict[row], column) widget = self.widget.cellWidget(self.rowDict[row], column)
widget.blockSignals(True) widget.blockSignals(True)
widget.setCurrentItem(widget.findItems(v, QtCore.Qt.MatchExactly)[0]) widget.setCurrentIndex(widget.findText(v, QtCore.Qt.MatchExactly))
widget.blockSignals(False) widget.blockSignals(False)
def getListValue(self, row, column): def getListValue(self, row, column):
widget = self.widget.cellWidget(self.rowDict[row], column) widget = self.widget.cellWidget(self.rowDict[row], column)
if widget is not None: if widget is not None:
return widget.currentItem().text().toAscii()[0].upper() return widget.currentText().toAscii()[0].upper()
else: else:
return None return None