1 # Copyright (C) 2012 EDF
3 # This file is part of SALOME PARAMETRIC module.
5 # SALOME PARAMETRIC module is free software: you can redistribute it and/or modify
6 # it under the terms of the GNU Lesser General Public License as published by
7 # the Free Software Foundation, either version 3 of the License, or
8 # (at your option) any later version.
10 # SALOME PARAMETRIC module is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 # GNU Lesser General Public License for more details.
15 # You should have received a copy of the GNU Lesser General Public License
16 # along with SALOME PARAMETRIC module. If not, see <http://www.gnu.org/licenses/>.
18 from PyQt4 import QtCore, QtGui
22 sgPyQt = SalomePyQt.SalomePyQt()
24 from wizard_ui import Ui_Wizard
25 from selectvars import SelectVarsFrame
26 from definevalues import DefineValuesFrame
27 from execparams import ExecParamsFrame
28 from salome.parametric.study import ParametricVariable, ParametricStudy, ParametricStudyEditor
31 class Wizard(QtGui.QWidget, Ui_Wizard):
33 def __init__(self, parent = None):
34 QtGui.QWidget.__init__(self, parent)
36 self.connect(self.nextButton, QtCore.SIGNAL("clicked()"), self.next_step)
37 self.connect(self.previousButton, QtCore.SIGNAL("clicked()"), self.previous_step)
38 self.connect(self.OKButton, QtCore.SIGNAL("clicked()"), self.validate)
39 self.connect(self.cancelButton, QtCore.SIGNAL("clicked()"), self.close)
41 for i in range(len(self.step_texts)):
42 self.step_labels.append(QtGui.QLabel(self))
43 self.stepLayout.addWidget(self.step_labels[i])
44 self.select_vars_frame = SelectVarsFrame(self)
45 self.define_values_frame = DefineValuesFrame(self)
46 self.exec_params_frame = ExecParamsFrame(self)
47 self.step_frames = [self.select_vars_frame,
48 self.define_values_frame,
49 self.exec_params_frame]
50 for frame in self.step_frames:
51 self.innerFrame.layout().addWidget(frame)
61 def previous_step(self):
66 for i in range(len(self.step_texts)):
68 self.step_labels[i].setText("<b>" + self.tr(self.step_texts[i]) + "</b>")
69 self.step_frames[i].show()
71 self.step_labels[i].setText(self.tr(self.step_texts[i]))
72 self.step_frames[i].hide()
74 self.previousButton.hide()
76 self.previousButton.show()
77 if self.curstep == len(self.step_texts)-1:
78 self.nextButton.hide()
81 self.nextButton.show()
83 if self.step_methods[self.curstep] is not None:
84 self.step_methods[self.curstep](self)
86 def define_values(self):
87 exchange_vars = self.select_vars_frame.getSelectedExchangeVariables()
88 self.define_values_frame.set_variables(exchange_vars.inputVarList)
91 param_study = ParametricStudy()
93 for (name, range_widget) in self.define_values_frame.varwidgets.iteritems():
94 minval = range_widget.fromSpinBox.value()
95 maxval = range_widget.toSpinBox.value()
96 step = range_widget.stepSpinBox.value()
97 var = ParametricVariable(name, minval, maxval, step)
98 param_study.add_input_variable(var)
100 exch_vars = self.select_vars_frame.getSelectedExchangeVariables()
101 for outvar in exch_vars.outputVarList:
102 param_study.add_output_variable(outvar.name)
103 # Execution parameters
104 self.exec_params_frame.gui_to_study(param_study)
106 # Save to Salome study
107 ed = ParametricStudyEditor()
108 if self.entry is not None:
109 ed.set_parametric_study_at_entry(param_study, self.entry)
111 ed.add_parametric_study(param_study)
112 salome.sg.updateObjBrowser(0)
115 def set_study(self, param_study):
116 self.entry = param_study.entry
117 self.select_vars_frame.set_vars_from_param_study(param_study)
118 self.define_values_frame.set_ranges_from_param_study(param_study)
119 self.exec_params_frame.study_to_gui(param_study)
122 QtGui.QWidget.close(self)
123 if self.view_id is not None:
124 sgPyQt.closeView(self.view_id)
126 step_texts = ["Step 1: Parametric Variables",
127 "Step 2: Sample Definition",
128 "Step 3: Execution Parameters"]
130 step_methods = [None,