mirror of
https://gitlab.com/pamhyr/pamhyr2.git
synced 2026-10-29 19:10:42 +01:00
Ensemble: Edit: Add parameters widgets.
This commit is contained in:
1 parent
a2e0f6a517
commit
ff3b5a320c
5 files changed
+135
-13
No files matched your search
@@ -39,6 +39,7 @@ from PyQt5.QtWidgets import (
|
||||
QFileDialog, QTableView, QAbstractItemView,
|
||||
QUndoStack, QShortcut, QAction, QItemDelegate,
|
||||
QComboBox, QVBoxLayout, QHeaderView, QTabWidget,
|
||||
QGroupBox,
|
||||
)
|
||||
|
||||
logger = logging.getLogger()
|
||||
@@ -60,28 +61,73 @@ class EnsembleEditDialog(PamhyrDialog):
|
||||
self._study = study
|
||||
self._ensemble = ensemble
|
||||
|
||||
self._init_default_parameters_widget()
|
||||
self._init_default_values()
|
||||
|
||||
def _init_default_parameters_widget(self):
|
||||
pass
|
||||
|
||||
def _init_default_values(self):
|
||||
self.set_line_edit_text("lineEdit_name", self._ensemble.name)
|
||||
|
||||
self.combobox_add_items(
|
||||
"comboBox_distribution",
|
||||
[self._trad["not_defined"]] +
|
||||
list(
|
||||
map(
|
||||
lambda f: f.name,
|
||||
lambda d: d.name,
|
||||
self._study._ens_distributions.lst
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
self._params_widget = None
|
||||
if self._ensemble.distribution is not None:
|
||||
self.set_combobox_text("comboBox_distribution",
|
||||
self._ensemble.distribution.name)
|
||||
|
||||
self._set_widget(self._ensemble.distribution)
|
||||
|
||||
self.find(QComboBox, "comboBox_distribution")\
|
||||
.currentTextChanged.connect(self.update_distribution)
|
||||
|
||||
def update_distribution(self, txt):
|
||||
# txt = self.get_combobox_text("comboBox_distribution")
|
||||
distribution = next(
|
||||
filter(
|
||||
lambda d: d.name == txt,
|
||||
self._study._ens_distributions.lst
|
||||
),
|
||||
None
|
||||
)
|
||||
|
||||
self._set_widget(distribution)
|
||||
|
||||
def _set_widget(self, distribution):
|
||||
box = self.find(QGroupBox, "groupBox_params")
|
||||
vbox = self.find(QVBoxLayout, "verticalLayout_params")
|
||||
|
||||
if self._params_widget is not None:
|
||||
vbox.removeWidget(self._params_widget)
|
||||
self._params_widget.setParent(None)
|
||||
|
||||
if distribution is None:
|
||||
return
|
||||
|
||||
size = len(distribution._labels)
|
||||
if size == 1:
|
||||
self._params_widget = Ensemble1ParamsWidget(
|
||||
ensemble=self._ensemble,
|
||||
distribution=distribution,
|
||||
trad=self._trad, parent=box,
|
||||
)
|
||||
vbox.addWidget(self._params_widget)
|
||||
elif size == 2:
|
||||
self._params_widget = Ensemble2ParamsWidget(
|
||||
ensemble=self._ensemble,
|
||||
distribution=distribution,
|
||||
trad=self._trad, parent=box,
|
||||
)
|
||||
vbox.addWidget(self._params_widget)
|
||||
else:
|
||||
self._params_widget = None
|
||||
|
||||
@property
|
||||
def values(self):
|
||||
return self._values
|
||||
@@ -92,3 +138,78 @@ class EnsembleEditDialog(PamhyrDialog):
|
||||
|
||||
def reject(self):
|
||||
self.close()
|
||||
|
||||
|
||||
class Ensemble1ParamsWidget(PamhyrWidget):
|
||||
_pamhyr_ui = "Ensemble1ParamsWidget"
|
||||
_pamhyr_name = "Parameters"
|
||||
|
||||
def __init__(self, ensemble=None,
|
||||
distribution=None,
|
||||
trad=None, parent=None):
|
||||
super(Ensemble1ParamsWidget, self).__init__(
|
||||
parent=parent
|
||||
)
|
||||
self._trad = trad
|
||||
|
||||
self._ensemble = ensemble
|
||||
self._distribution = distribution
|
||||
self._labels = distribution.labels
|
||||
|
||||
self._init_default_labels()
|
||||
self._init_default_values()
|
||||
|
||||
def _init_default_labels(self):
|
||||
self.set_label_text("label_0", self._trad[self._labels[0]])
|
||||
|
||||
def _init_default_values(self):
|
||||
self._values = self._ensemble.params
|
||||
if len(self._values) > 0:
|
||||
self.set_double_spin_box("doubleSpinBox_0", self._values[0])
|
||||
|
||||
@property
|
||||
def values(self):
|
||||
self._values = [
|
||||
self.get_double_spin_box("doubleSpinBox_0"),
|
||||
]
|
||||
|
||||
return self._values
|
||||
|
||||
|
||||
class Ensemble2ParamsWidget(PamhyrWidget):
|
||||
_pamhyr_ui = "Ensemble2ParamsWidget"
|
||||
_pamhyr_name = "Parameters"
|
||||
|
||||
def __init__(self, ensemble=None,
|
||||
distribution=None,
|
||||
trad=None, parent=None):
|
||||
super(Ensemble2ParamsWidget, self).__init__(
|
||||
parent=parent
|
||||
)
|
||||
self._trad = trad
|
||||
|
||||
self._ensemble = ensemble
|
||||
self._distribution = distribution
|
||||
self._labels = distribution.labels
|
||||
|
||||
self._init_default_labels()
|
||||
self._init_default_values()
|
||||
|
||||
def _init_default_labels(self):
|
||||
self.set_label_text("label_0", self._trad[self._labels[0]])
|
||||
self.set_label_text("label_1", self._trad[self._labels[1]])
|
||||
|
||||
def _init_default_values(self):
|
||||
self._values = self._ensemble.params
|
||||
if len(self._values) > 0:
|
||||
self.set_double_spin_box("doubleSpinBox_0", self._values[0])
|
||||
self.set_double_spin_box("doubleSpinBox_1", self._values[1])
|
||||
|
||||
@property
|
||||
def values(self):
|
||||
self._values = [
|
||||
self.get_double_spin_box("doubleSpinBox_0"),
|
||||
self.get_double_spin_box("doubleSpinBox_1")
|
||||
]
|
||||
|
||||
return self._values
|
||||
@@ -93,6 +93,7 @@ class SetDistributionCommand(QUndoCommand):
|
||||
|
||||
def redo(self):
|
||||
self._ensembles.get(self._index).distribution = self._new
|
||||
if self._new is not None:
|
||||
self._ensembles.get(self._index).params = self._new.default_values
|
||||
|
||||
|
||||
|
||||
@@ -66,13 +66,13 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2" colspan="3">
|
||||
<widget class="QGroupBox" name="groupBox">
|
||||
<widget class="QGroupBox" name="groupBox_params">
|
||||
<property name="title">
|
||||
<string>Parameters</string>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_2">
|
||||
<item row="0" column="0">
|
||||
<layout class="QVBoxLayout" name="verticalLayout_parameters"/>
|
||||
<layout class="QVBoxLayout" name="verticalLayout_params"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
|
||||
@@ -17,14 +17,14 @@
|
||||
<item row="0" column="0">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="label">
|
||||
<widget class="QLabel" name="label_0">
|
||||
<property name="text">
|
||||
<string>Parameter 1</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBox"/>
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_0"/>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
@@ -15,24 +15,24 @@
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label">
|
||||
<widget class="QLabel" name="label_0">
|
||||
<property name="text">
|
||||
<string>Parameter 1</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_1"/>
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_0"/>
|
||||
</item>
|
||||
<item row="1" column="0">
|
||||
<widget class="QLabel" name="label_2">
|
||||
<widget class="QLabel" name="label_1">
|
||||
<property name="text">
|
||||
<string>Parameter 2</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_2"/>
|
||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_1"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
Reference in new issue
Block a user