def addInitializeFromScratchTab(self): self.addTab("Initialize from scratch") case_model = CaseSelectorModel() case_selector = ComboChoice(case_model, "Target case", "init/current_case_selection") self.addRow(case_selector) row_group = RowGroup() parameter_model = InitializationParametersModel() parameter_check_list = CheckList(parameter_model, "Parameters", "init/select_parameters") parameter_check_list.setMaximumWidth(300) row_group.addWidget(parameter_check_list) member_model = InitializationMembersModel() member_check_list = CheckList(member_model, "Members", "init/select_members") member_check_list.setMaximumWidth(150) row_group.addWidget(member_check_list) self.addRow(row_group) self.addSpace(10) initialize_from_scratch = InitializeFromScratchModel() self.addRow( Button(initialize_from_scratch, help_link="init/initialize_from_scratch")) self.addSpace(10)
def addInitializeFromExistingTab(self): self.addTab("Initialize from existing") case_model = CaseSelectorModel() target_case_selector = ComboChoice(case_model, "Target case", "init/current_case_selection") self.addRow(target_case_selector) initialized_cases = ComboChoice(InitializedCaseSelectorModel(), "Source case", "init/source_case") self.addRow(initialized_cases) #self.addRow("State", "Analyzed/Forecast") timestep_group = RowGroup("Timestep") history_length = HistoryLengthModel() history_length_spinner = IntegerSpinner(history_length, "Timestep", "config/init/history_length") timestep_group.addWidget(history_length_spinner) initial = QToolButton() initial.setText("Initial") initial.clicked.connect(history_length.setToMin) timestep_group.addWidget(initial) end_of_time = QToolButton() end_of_time.setText("End of time") end_of_time.clicked.connect(history_length.setToMax) timestep_group.addWidget(end_of_time) timestep_group.addGroupStretch() self.addRow(timestep_group) self.addSpace(10) row_group = RowGroup() parameter_model = InitializationParametersModel() parameter_check_list = CheckList(parameter_model, "Parameters", "init/select_parameters") parameter_check_list.setMaximumWidth(300) row_group.addWidget(parameter_check_list) member_model = InitializationMembersModel() member_check_list = CheckList(member_model, "Members", "init/select_members") member_check_list.setMaximumWidth(150) row_group.addWidget(member_check_list) self.addRow(row_group) self.addSpace(10) initialize_from_existing = InitializeFromExistingCaseModel() self.addRow( Button(initialize_from_existing, help_link="init/initialize_from_existing")) self.addSpace(10)
def __init__(self): RowPanel.__init__(self, "Simulation") self.addLabeledSeparator("Simulation settings") case_model = CaseSelectorModel() case_selector = ComboChoice(case_model, "Current case", "init/current_case_selection") self.addRow(case_selector) # Give a warning if the case is not initialized! IsCaseInitializedModel().observable().attach(IsCaseInitializedModel.TEXT_VALUE_CHANGED_EVENT, self.updateSimulationStatus) runpath_model = RunPathModel() self.addRow(PathFormatChooser(runpath_model, "Runpath", "config/simulation/runpath")) ensemble_size_model = EnsembleSizeModel() self.addRow(IntegerSpinner(ensemble_size_model, "Number of realizations", "config/ensemble/num_realizations")) simulation_mode_model = SimulationModeModel() self.addRow(ComboChoice(simulation_mode_model, "Simulation mode", "run/simulation_mode")) self.addSpace(10) self.run = FunctionButtonModel("Run", self.runSimulation) self.run.setEnabled(SimulationModeModel().getCurrentChoice().buttonIsEnabled()) self.run_button = Button(self.run, label="Start simulation", help_link="run/run") self.run_button.addStretch() self.config_and_run = FunctionButtonModel("Configure and Run", self.configureAndRunSimulation) self.config_and_run.setEnabled(SimulationModeModel().getCurrentChoice().buttonIsEnabled()) self.run_button.addOption(self.config_and_run) self.run_button.addOption(OneMoreIteration()) self.addRow(self.run_button) self.addSpace(10) self.warning_panel = WarningPanel() self.addRow(self.warning_panel) simulation_mode_model.observable().attach(SimulationModeModel.CURRENT_CHOICE_CHANGED_EVENT, self.toggleSimulationMode) self.updateSimulationStatus()
class SimulationPanel(RowPanel): def __init__(self): RowPanel.__init__(self, "Simulation") self.addLabeledSeparator("Simulation settings") case_model = CaseSelectorModel() case_selector = ComboChoice(case_model, "Current case", "init/current_case_selection") self.addRow(case_selector) # Give a warning if the case is not initialized! IsCaseInitializedModel().observable().attach(IsCaseInitializedModel.TEXT_VALUE_CHANGED_EVENT, self.updateSimulationStatus) runpath_model = RunPathModel() self.addRow(PathFormatChooser(runpath_model, "Runpath", "config/simulation/runpath")) ensemble_size_model = EnsembleSizeModel() self.addRow(IntegerSpinner(ensemble_size_model, "Number of realizations", "config/ensemble/num_realizations")) simulation_mode_model = SimulationModeModel() self.addRow(ComboChoice(simulation_mode_model, "Simulation mode", "run/simulation_mode")) self.addSpace(10) self.run = FunctionButtonModel("Run", self.runSimulation) self.run.setEnabled(SimulationModeModel().getCurrentChoice().buttonIsEnabled()) self.run_button = Button(self.run, label="Start simulation", help_link="run/run") self.run_button.addStretch() self.config_and_run = FunctionButtonModel("Configure and Run", self.configureAndRunSimulation) self.config_and_run.setEnabled(SimulationModeModel().getCurrentChoice().buttonIsEnabled()) self.run_button.addOption(self.config_and_run) self.run_button.addOption(OneMoreIteration()) self.addRow(self.run_button) self.addSpace(10) self.warning_panel = WarningPanel() self.addRow(self.warning_panel) simulation_mode_model.observable().attach(SimulationModeModel.CURRENT_CHOICE_CHANGED_EVENT, self.toggleSimulationMode) self.updateSimulationStatus() def updateSimulationStatus(self): MessageCenter().setWarning(IsCaseInitializedModel.__name__, IsCaseInitializedModel().getText()) #todo move this binding to the model? def runSimulation(self): simulation_model = SimulationModeModel().getCurrentChoice() simulation_runner = SimulationRunner(simulation_model) dialog = RunDialog(simulation_runner) simulation_runner.start() dialog.exec_() self.updateSimulationStatus() def configureAndRunSimulation(self): simulation_model = SimulationModeModel().getCurrentChoice() print("Configure!!!") simulation_model.buttonTriggered() def toggleSimulationMode(self): model = SimulationModeModel().getCurrentChoice() self.run.setEnabled(model.buttonIsEnabled()) self.config_and_run.setEnabled(model.buttonIsEnabled())