Skip to content

Commit c3f2c1a

Browse files
committed
Added button for simulated experiments
1 parent daf8bba commit c3f2c1a

File tree

3 files changed

+65
-24
lines changed

3 files changed

+65
-24
lines changed

src/ert/gui/main_window.py

+63-10
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
from __future__ import annotations
22

3+
import datetime
34
import functools
45
import webbrowser
56
from typing import TYPE_CHECKING, Dict, Optional
67

7-
from qtpy.QtCore import QSize, Qt, Signal
8+
from qtpy.QtCore import QSize, Qt, Signal, Slot
89
from qtpy.QtGui import QCloseEvent, QCursor, QIcon
910
from qtpy.QtWidgets import (
1011
QAction,
@@ -22,6 +23,7 @@
2223
from ert.gui.ertnotifier import ErtNotifier
2324
from ert.gui.find_ert_info import find_ert_info
2425
from ert.gui.simulation import ExperimentPanel
26+
from ert.gui.simulation.run_dialog import RunDialog
2527
from ert.gui.tools.event_viewer import EventViewerTool, GUILogHandler
2628
from ert.gui.tools.export import ExportTool
2729
from ert.gui.tools.load_results import LoadResultsTool
@@ -80,8 +82,8 @@ def __init__(
8082
self.log_handler = log_handler
8183

8284
self.setWindowTitle(f"ERT - {config_file} - {find_ert_info()}")
85+
self.dialog_panels = []
8386
self.central_panels = []
84-
self.central_panels_index = 0
8587

8688
self.plugin_manager = plugin_manager
8789
self.central_widget = QFrame(self)
@@ -105,8 +107,16 @@ def __init__(
105107
self.notifier,
106108
self.ert_config.model_config.num_realizations,
107109
)
110+
108111
self._create_sidebar_button(self._manage_experiments_tool)
109112

113+
self.results_button = self._create_sidebar_button()
114+
self.results_button.setIcon(QIcon("img:in_progress.svg"))
115+
self.results_button.setToolTip("Show Results")
116+
self.results_button.setEnabled(False)
117+
menu = QMenu()
118+
self.results_button.setMenu(menu)
119+
110120
self.vbox_layout.addStretch()
111121
self.central_layout.addWidget(self.side_frame)
112122

@@ -117,6 +127,43 @@ def __init__(
117127
self.__add_tools_menu()
118128
self.__add_help_menu()
119129

130+
@Slot(object)
131+
def slot_add_widget(self, run_dialog: RunDialog):
132+
print("hello!")
133+
for widget in self.central_panels:
134+
widget.setVisible(False)
135+
136+
self.dialog_panels.append(run_dialog)
137+
138+
run_dialog.setParent(self)
139+
self.central_layout.addWidget(run_dialog)
140+
self.results_button.setEnabled(True)
141+
date_time = datetime.datetime.utcnow().strftime("%Y-%d-%m %H:%M:%S")
142+
act = self.results_button.menu().addAction(date_time)
143+
act.setProperty("index", len(self.dialog_panels) - 1)
144+
act.triggered.connect(self.select_dialog_panel)
145+
146+
def select_dialog_panel(self):
147+
actor = self.sender()
148+
index = int(actor.property("index"))
149+
150+
for w in self.central_panels:
151+
w.hide()
152+
153+
for i in range(len(self.dialog_panels)):
154+
should_be_visible = i == index
155+
self.dialog_panels[i].setVisible(should_be_visible)
156+
157+
def select_widget(self) -> None:
158+
index = 0
159+
160+
for w in self.dialog_panels:
161+
w.hide()
162+
163+
for i in range(len(self.central_panels)):
164+
should_be_visible = i == index
165+
self.central_panels[i].setVisible(should_be_visible)
166+
120167
def post_init(self):
121168
experiment_panel = ExperimentPanel(
122169
self.ert_config,
@@ -127,6 +174,8 @@ def post_init(self):
127174
self.central_layout.addWidget(experiment_panel)
128175
self.central_panels.append(experiment_panel)
129176

177+
experiment_panel.experiment_started.connect(self.slot_add_widget)
178+
130179
plugin_handler = PluginHandler(
131180
self.notifier,
132181
[wfj for wfj in self.ert_config.workflow_jobs.values() if wfj.is_plugin()],
@@ -150,23 +199,27 @@ def _create_sidebar_button(self, tool: Optional[Tool] = None) -> QPushButton:
150199
button.setToolTip(tool.getName())
151200
button.clicked.connect(tool.trigger)
152201
self.vbox_layout.addWidget(button)
153-
button.setProperty("INDEX", self.central_panels_index)
154-
self.central_panels_index += 1
202+
button.setProperty("index", len(self.central_panels) - 1)
155203
return button
156204

157205
def add_experiment_button(self) -> None:
158206
button = self._create_sidebar_button()
159207
button.setIcon(QIcon("img:play_circle_outlined.svg"))
160208
button.setToolTip("Start Simulation")
161-
button.clicked.connect(self.toggle_visibility)
209+
button.clicked.connect(self.select_widget)
162210

163211
menu = QMenu()
164-
menu.addAction("Single Test Run")
165-
menu.addAction("Ensemble Experiment")
166-
menu.addAction("Manual Update")
167-
menu.addAction("ES MDA")
168-
menu.addAction("Ensemble Smoother")
169212
menu.setStyleSheet(MENU_ITEM_STYLE_SHEET)
213+
214+
for sim_mode in [
215+
"Single test run",
216+
"Ensemble Experiment",
217+
"Manual Update",
218+
"ES MDA",
219+
"Ensemble Smoother",
220+
]:
221+
act = menu.addAction(sim_mode)
222+
act.triggered.connect(self.select_widget)
170223
button.setMenu(menu)
171224

172225
def toggle_visibility(self) -> None:

src/ert/gui/simulation/experiment_panel.py

+2-10
Original file line numberDiff line numberDiff line change
@@ -211,9 +211,6 @@ def getExperimentName(self) -> str:
211211
"""Get the experiment name as provided by the user. Defaults to run mode if not set."""
212212
return self.get_experiment_arguments().experiment_name
213213

214-
# def set_main_frame(self, main_frame: ErtMainWindow) -> None:
215-
# self._main_frame = main_frame
216-
217214
def run_experiment(self) -> None:
218215
args = self.get_experiment_arguments()
219216
QApplication.setOverrideCursor(Qt.CursorShape.WaitCursor)
@@ -301,13 +298,8 @@ def run_experiment(self) -> None:
301298
self.experiment_started.emit(dialog)
302299
dialog.produce_clipboard_debug_info.connect(self.populate_clipboard_debug_info)
303300
dialog.run_experiment()
304-
305-
# if self._main_frame:
306-
# dialog.setParent(self._main_frame)
307-
# self._main_frame.setWidget(dialog)
308-
309-
dialog.show()
310-
self.hide()
301+
# dialog.show()
302+
# self.hide()
311303

312304
def exit_handler() -> None:
313305
self.run_button.setText(EXPERIMENT_READY_TO_RUN_BUTTON_MESSAGE)

src/ert/gui/tools/manage_experiments/manage_experiments_tool.py

-4
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
from typing import TYPE_CHECKING, Optional
44

5-
from qtpy.QtCore import Qt
65
from qtpy.QtGui import QIcon
76

87
from ert.gui.tools import Tool
@@ -26,8 +25,5 @@ def trigger(self) -> None:
2625
self._manage_experiments_panel = ManageExperimentsPanel(
2726
self.ert_config, self.notifier, self.ensemble_size
2827
)
29-
self._manage_experiments_panel.setWindowModality(
30-
Qt.WindowModality.ApplicationModal
31-
)
3228

3329
self._manage_experiments_panel.show()

0 commit comments

Comments
 (0)