Implemented GZ tool variables saving and loading
This commit is contained in:
parent
cf76a92996
commit
c99f4921ca
|
@ -37,10 +37,12 @@ class TaskPanel:
|
||||||
self.ui = Paths.modulePath() + "/shipGZ/TaskPanel.ui"
|
self.ui = Paths.modulePath() + "/shipGZ/TaskPanel.ui"
|
||||||
|
|
||||||
def accept(self):
|
def accept(self):
|
||||||
|
if self.lc is None:
|
||||||
|
return False
|
||||||
|
self.save()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def reject(self):
|
def reject(self):
|
||||||
self.preview.clean()
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def clicked(self, index):
|
def clicked(self, index):
|
||||||
|
@ -69,7 +71,7 @@ class TaskPanel:
|
||||||
form = mw.findChild(QtGui.QWidget, "TaskPanel")
|
form = mw.findChild(QtGui.QWidget, "TaskPanel")
|
||||||
|
|
||||||
form.angle = self.widget(QtGui.QLineEdit, "Angle")
|
form.angle = self.widget(QtGui.QLineEdit, "Angle")
|
||||||
form.n_points = self.widget(QtGui.QSpinBox, "NPoints")
|
form.n_points = self.widget(QtGui.QSpinBox, "NumPoints")
|
||||||
form.var_draft = self.widget(QtGui.QCheckBox, "VariableDraft")
|
form.var_draft = self.widget(QtGui.QCheckBox, "VariableDraft")
|
||||||
form.var_trim = self.widget(QtGui.QCheckBox, "VariableTrim")
|
form.var_trim = self.widget(QtGui.QCheckBox, "VariableTrim")
|
||||||
self.form = form
|
self.form = form
|
||||||
|
@ -98,6 +100,108 @@ class TaskPanel:
|
||||||
def initValues(self):
|
def initValues(self):
|
||||||
""" Set initial values for fields
|
""" Set initial values for fields
|
||||||
"""
|
"""
|
||||||
|
# Look for selected loading conditions (Spreadsheets)
|
||||||
|
self.lc = None
|
||||||
|
selObjs = Gui.Selection.getSelection()
|
||||||
|
if not selObjs:
|
||||||
|
msg = QtGui.QApplication.translate(
|
||||||
|
"ship_console",
|
||||||
|
"A loading condition instance must be selected before using"
|
||||||
|
" this tool (no objects selected)",
|
||||||
|
None,
|
||||||
|
QtGui.QApplication.UnicodeUTF8)
|
||||||
|
App.Console.PrintError(msg + '\n')
|
||||||
|
return True
|
||||||
|
for i in range(len(selObjs)):
|
||||||
|
obj = selObjs[i]
|
||||||
|
try:
|
||||||
|
if obj.TypeId != 'Spreadsheet::Sheet':
|
||||||
|
continue
|
||||||
|
except ValueError:
|
||||||
|
continue
|
||||||
|
# Check if it is a Loading condition:
|
||||||
|
# B1 cell must be a ship
|
||||||
|
# B2 cell must be the loading condition itself
|
||||||
|
doc = App.ActiveDocument
|
||||||
|
try:
|
||||||
|
if obj not in doc.getObjectsByLabel(obj.get('B2')):
|
||||||
|
continue
|
||||||
|
ships = doc.getObjectsByLabel(obj.get('B1'))
|
||||||
|
ship = None
|
||||||
|
for s in ships:
|
||||||
|
if s is None or not s.PropertiesList.index("IsShip"):
|
||||||
|
continue
|
||||||
|
ship = s
|
||||||
|
break
|
||||||
|
if ship is None:
|
||||||
|
continue
|
||||||
|
except ValueError:
|
||||||
|
continue
|
||||||
|
# Let's see if several loading conditions have been selected (and
|
||||||
|
# prompt a warning)
|
||||||
|
if self.lc:
|
||||||
|
msg = QtGui.QApplication.translate(
|
||||||
|
"ship_console",
|
||||||
|
"More than one loading condition have been selected (the"
|
||||||
|
" extra loading conditions will be ignored)",
|
||||||
|
None,
|
||||||
|
QtGui.QApplication.UnicodeUTF8)
|
||||||
|
App.Console.PrintWarning(msg + '\n')
|
||||||
|
break
|
||||||
|
self.lc = obj
|
||||||
|
self.ship = ship
|
||||||
|
if not self.lc:
|
||||||
|
msg = QtGui.QApplication.translate(
|
||||||
|
"ship_console",
|
||||||
|
"A loading condition instance must be selected before using"
|
||||||
|
" this tool (no valid loading condition found at the selected"
|
||||||
|
" objects)",
|
||||||
|
None,
|
||||||
|
QtGui.QApplication.UnicodeUTF8)
|
||||||
|
App.Console.PrintError(msg + '\n')
|
||||||
|
return True
|
||||||
|
|
||||||
|
# We have a valid loading condition, let's set the initial field values
|
||||||
|
angle_format = USys.getAngleFormat()
|
||||||
|
mw = self.getMainWindow()
|
||||||
|
form = mw.findChild(QtGui.QWidget, "TaskPanel")
|
||||||
|
form.angle = self.widget(QtGui.QLineEdit, "Angle")
|
||||||
|
form.n_points = self.widget(QtGui.QSpinBox, "NumPoints")
|
||||||
|
form.var_draft = self.widget(QtGui.QCheckBox, "VariableDraft")
|
||||||
|
form.var_trim = self.widget(QtGui.QCheckBox, "VariableTrim")
|
||||||
|
form.angle.setText(Locale.toString(angle_format.format(90.0)))
|
||||||
|
# Try to use saved values
|
||||||
|
props = self.ship.PropertiesList
|
||||||
|
try:
|
||||||
|
props.index("GZAngle")
|
||||||
|
form.angle.setText(Locale.toString(angle_format.format(
|
||||||
|
self.ship.GZAngle.getValueAs(
|
||||||
|
USys.getAngleUnits()).Value)))
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
props.index("GZNumPoints")
|
||||||
|
form.n_points.setValue(self.ship.GZNumPoints)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
props.index("GZVariableDraft")
|
||||||
|
if self.ship.GZVariableDraft:
|
||||||
|
form.var_draft.setCheckState(QtCore.Qt.Checked)
|
||||||
|
else:
|
||||||
|
form.var_draft.setCheckState(QtCore.Qt.Unchecked)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
props.index("GZVariableTrim")
|
||||||
|
if self.ship.GZVariableTrim:
|
||||||
|
form.var_trim.setCheckState(QtCore.Qt.Checked)
|
||||||
|
else:
|
||||||
|
form.var_trim.setCheckState(QtCore.Qt.Unchecked)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def retranslateUi(self):
|
def retranslateUi(self):
|
||||||
|
@ -112,10 +216,10 @@ class TaskPanel:
|
||||||
self.widget(QtGui.QLabel, "AngleLabel").setText(
|
self.widget(QtGui.QLabel, "AngleLabel").setText(
|
||||||
QtGui.QApplication.translate(
|
QtGui.QApplication.translate(
|
||||||
"ship_gz",
|
"ship_gz",
|
||||||
"Angle",
|
"Maximum angle",
|
||||||
None,
|
None,
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
QtGui.QApplication.UnicodeUTF8))
|
||||||
self.widget(QtGui.QLabel, "NPointsLabel").setText(
|
self.widget(QtGui.QLabel, "NumPointsLabel").setText(
|
||||||
QtGui.QApplication.translate(
|
QtGui.QApplication.translate(
|
||||||
"ship_gz",
|
"ship_gz",
|
||||||
"Number of points",
|
"Number of points",
|
||||||
|
@ -127,7 +231,7 @@ class TaskPanel:
|
||||||
"Variable draft",
|
"Variable draft",
|
||||||
None,
|
None,
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
QtGui.QApplication.UnicodeUTF8))
|
||||||
self.widget(QtGui.QCheckBox, "VariableDraft").setTooltip(
|
self.widget(QtGui.QCheckBox, "VariableDraft").setToolTip(
|
||||||
QtGui.QApplication.translate(
|
QtGui.QApplication.translate(
|
||||||
"ship_gz",
|
"ship_gz",
|
||||||
"The ship will be moved to the equilibrium draft for each" + \
|
"The ship will be moved to the equilibrium draft for each" + \
|
||||||
|
@ -141,7 +245,7 @@ class TaskPanel:
|
||||||
"Variable trim",
|
"Variable trim",
|
||||||
None,
|
None,
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
QtGui.QApplication.UnicodeUTF8))
|
||||||
self.widget(QtGui.QCheckBox, "VariableTrim").setTooltip(
|
self.widget(QtGui.QCheckBox, "VariableTrim").setToolTip(
|
||||||
QtGui.QApplication.translate(
|
QtGui.QApplication.translate(
|
||||||
"ship_gz",
|
"ship_gz",
|
||||||
"The ship will be rotated to the equilibrium trim angle for" + \
|
"The ship will be rotated to the equilibrium trim angle for" + \
|
||||||
|
@ -150,7 +254,86 @@ class TaskPanel:
|
||||||
None,
|
None,
|
||||||
QtGui.QApplication.UnicodeUTF8))
|
QtGui.QApplication.UnicodeUTF8))
|
||||||
|
|
||||||
|
def save(self):
|
||||||
|
""" Saves the data into ship instance. """
|
||||||
|
mw = self.getMainWindow()
|
||||||
|
form = mw.findChild(QtGui.QWidget, "TaskPanel")
|
||||||
|
form.angle = self.widget(QtGui.QLineEdit, "Angle")
|
||||||
|
form.n_points = self.widget(QtGui.QSpinBox, "NumPoints")
|
||||||
|
form.var_draft = self.widget(QtGui.QCheckBox, "VariableDraft")
|
||||||
|
form.var_trim = self.widget(QtGui.QCheckBox, "VariableTrim")
|
||||||
|
|
||||||
|
angle = Units.Quantity(Locale.fromString(
|
||||||
|
form.angle.text())).getValueAs('deg').Value
|
||||||
|
n_points = form.n_points.value()
|
||||||
|
var_draft = form.var_draft.isChecked()
|
||||||
|
var_trim = form.var_trim.isChecked()
|
||||||
|
|
||||||
|
props = self.ship.PropertiesList
|
||||||
|
try:
|
||||||
|
props.index("GZAngle")
|
||||||
|
except ValueError:
|
||||||
|
try:
|
||||||
|
tooltip = str(QtGui.QApplication.translate(
|
||||||
|
"ship_gz",
|
||||||
|
"GZ curve tool angle selected [deg]",
|
||||||
|
None,
|
||||||
|
QtGui.QApplication.UnicodeUTF8))
|
||||||
|
except:
|
||||||
|
tooltip = "GZ curve tool angle selected [deg]"
|
||||||
|
self.ship.addProperty("App::PropertyAngle",
|
||||||
|
"GZAngle",
|
||||||
|
"Ship",
|
||||||
|
tooltip)
|
||||||
|
self.ship.GZAngle = '{} deg'.format(angle)
|
||||||
|
try:
|
||||||
|
props.index("GZNumPoints")
|
||||||
|
except ValueError:
|
||||||
|
try:
|
||||||
|
tooltip = str(QtGui.QApplication.translate(
|
||||||
|
"ship_areas",
|
||||||
|
"GZ curve tool number of points selected",
|
||||||
|
None,
|
||||||
|
QtGui.QApplication.UnicodeUTF8))
|
||||||
|
except:
|
||||||
|
tooltip = "GZ curve tool number of points selected"
|
||||||
|
self.ship.addProperty("App::PropertyInteger",
|
||||||
|
"GZNumPoints",
|
||||||
|
"Ship",
|
||||||
|
tooltip)
|
||||||
|
self.ship.GZNumPoints = n_points
|
||||||
|
try:
|
||||||
|
props.index("GZVariableDraft")
|
||||||
|
except ValueError:
|
||||||
|
try:
|
||||||
|
tooltip = str(QtGui.QApplication.translate(
|
||||||
|
"ship_areas",
|
||||||
|
"GZ curve tool variable draft selection",
|
||||||
|
None,
|
||||||
|
QtGui.QApplication.UnicodeUTF8))
|
||||||
|
except:
|
||||||
|
tooltip = "GZ curve tool variable draft selection"
|
||||||
|
self.ship.addProperty("App::PropertyBool",
|
||||||
|
"GZVariableDraft",
|
||||||
|
"Ship",
|
||||||
|
tooltip)
|
||||||
|
self.ship.GZVariableDraft = var_draft
|
||||||
|
try:
|
||||||
|
props.index("GZVariableTrim")
|
||||||
|
except ValueError:
|
||||||
|
try:
|
||||||
|
tooltip = str(QtGui.QApplication.translate(
|
||||||
|
"ship_areas",
|
||||||
|
"GZ curve tool variable trim angle selection",
|
||||||
|
None,
|
||||||
|
QtGui.QApplication.UnicodeUTF8))
|
||||||
|
except:
|
||||||
|
tooltip = "GZ curve tool variable trim angle selection"
|
||||||
|
self.ship.addProperty("App::PropertyBool",
|
||||||
|
"GZVariableTrim",
|
||||||
|
"Ship",
|
||||||
|
tooltip)
|
||||||
|
self.ship.GZVariableTrim = var_trim
|
||||||
|
|
||||||
def createTask():
|
def createTask():
|
||||||
panel = TaskPanel()
|
panel = TaskPanel()
|
||||||
|
|
|
@ -24,7 +24,14 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="QSpinBox" name="NumPoints"/>
|
<widget class="QSpinBox" name="NumPoints">
|
||||||
|
<property name="minimum">
|
||||||
|
<number>2</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>11</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="2" column="0" colspan="2">
|
<item row="2" column="0" colspan="2">
|
||||||
<widget class="QCheckBox" name="VariableDraft">
|
<widget class="QCheckBox" name="VariableDraft">
|
||||||
|
|
Loading…
Reference in New Issue
Block a user