mirror of
https://gitlab.com/pamhyr/pamhyr2.git
synced 2026-10-30 03:20:41 +01:00
Ensemble: Edit: Add parameters widgets.
This commit is contained in:
1 parent
a2e0f6a517
commit
ff3b5a320c
5 files changed
+136
-14
No files matched your search
@@ -39,6 +39,7 @@ from PyQt5.QtWidgets import (
|
|||||||
QFileDialog, QTableView, QAbstractItemView,
|
QFileDialog, QTableView, QAbstractItemView,
|
||||||
QUndoStack, QShortcut, QAction, QItemDelegate,
|
QUndoStack, QShortcut, QAction, QItemDelegate,
|
||||||
QComboBox, QVBoxLayout, QHeaderView, QTabWidget,
|
QComboBox, QVBoxLayout, QHeaderView, QTabWidget,
|
||||||
|
QGroupBox,
|
||||||
)
|
)
|
||||||
|
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
@@ -60,28 +61,73 @@ class EnsembleEditDialog(PamhyrDialog):
|
|||||||
self._study = study
|
self._study = study
|
||||||
self._ensemble = ensemble
|
self._ensemble = ensemble
|
||||||
|
|
||||||
self._init_default_parameters_widget()
|
|
||||||
self._init_default_values()
|
self._init_default_values()
|
||||||
|
|
||||||
def _init_default_parameters_widget(self):
|
|
||||||
pass
|
|
||||||
|
|
||||||
def _init_default_values(self):
|
def _init_default_values(self):
|
||||||
self.set_line_edit_text("lineEdit_name", self._ensemble.name)
|
self.set_line_edit_text("lineEdit_name", self._ensemble.name)
|
||||||
|
|
||||||
self.combobox_add_items(
|
self.combobox_add_items(
|
||||||
"comboBox_distribution",
|
"comboBox_distribution",
|
||||||
|
[self._trad["not_defined"]] +
|
||||||
list(
|
list(
|
||||||
map(
|
map(
|
||||||
lambda f: f.name,
|
lambda d: d.name,
|
||||||
self._study._ens_distributions.lst
|
self._study._ens_distributions.lst
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
self._params_widget = None
|
||||||
if self._ensemble.distribution is not None:
|
if self._ensemble.distribution is not None:
|
||||||
self.set_combobox_text("comboBox_distribution",
|
self.set_combobox_text("comboBox_distribution",
|
||||||
self._ensemble.distribution.name)
|
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
|
@property
|
||||||
def values(self):
|
def values(self):
|
||||||
return self._values
|
return self._values
|
||||||
@@ -92,3 +138,78 @@ class EnsembleEditDialog(PamhyrDialog):
|
|||||||
|
|
||||||
def reject(self):
|
def reject(self):
|
||||||
self.close()
|
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,7 +93,8 @@ class SetDistributionCommand(QUndoCommand):
|
|||||||
|
|
||||||
def redo(self):
|
def redo(self):
|
||||||
self._ensembles.get(self._index).distribution = self._new
|
self._ensembles.get(self._index).distribution = self._new
|
||||||
self._ensembles.get(self._index).params = self._new.default_values
|
if self._new is not None:
|
||||||
|
self._ensembles.get(self._index).params = self._new.default_values
|
||||||
|
|
||||||
|
|
||||||
class AddCommand(QUndoCommand):
|
class AddCommand(QUndoCommand):
|
||||||
|
|||||||
@@ -66,13 +66,13 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="2" colspan="3">
|
<item row="1" column="2" colspan="3">
|
||||||
<widget class="QGroupBox" name="groupBox">
|
<widget class="QGroupBox" name="groupBox_params">
|
||||||
<property name="title">
|
<property name="title">
|
||||||
<string>Parameters</string>
|
<string>Parameters</string>
|
||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout_2">
|
<layout class="QGridLayout" name="gridLayout_2">
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<layout class="QVBoxLayout" name="verticalLayout_parameters"/>
|
<layout class="QVBoxLayout" name="verticalLayout_params"/>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
|||||||
@@ -17,14 +17,14 @@
|
|||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<layout class="QHBoxLayout" name="horizontalLayout">
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="label">
|
<widget class="QLabel" name="label_0">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Parameter 1</string>
|
<string>Parameter 1</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QDoubleSpinBox" name="doubleSpinBox"/>
|
<widget class="QDoubleSpinBox" name="doubleSpinBox_0"/>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</item>
|
</item>
|
||||||
@@ -15,24 +15,24 @@
|
|||||||
</property>
|
</property>
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
<item row="0" column="0">
|
<item row="0" column="0">
|
||||||
<widget class="QLabel" name="label">
|
<widget class="QLabel" name="label_0">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Parameter 1</string>
|
<string>Parameter 1</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="0" column="1">
|
<item row="0" column="1">
|
||||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_1"/>
|
<widget class="QDoubleSpinBox" name="doubleSpinBox_0"/>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="0">
|
<item row="1" column="0">
|
||||||
<widget class="QLabel" name="label_2">
|
<widget class="QLabel" name="label_1">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Parameter 2</string>
|
<string>Parameter 2</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="1" column="1">
|
<item row="1" column="1">
|
||||||
<widget class="QDoubleSpinBox" name="doubleSpinBox_2"/>
|
<widget class="QDoubleSpinBox" name="doubleSpinBox_1"/>
|
||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
Reference in new issue
Block a user