Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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()
Ejemplo n.º 4
0
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())