Example #1
0
    def __init__(self, view, model, context):
        self.view = view
        self.model = model
        self.context = context
        self._selected_data = []
        self._start_x = [self.view.start_time]
        self._end_x = [self.view.end_time]
        self._fit_status = [None]
        self._fit_chi_squared = [0.0]
        self._fit_function = [None]
        self._tf_asymmetry_mode = False
        self._fit_function_cache = [None]
        self._number_of_fits_cached = 0
        self._multi_domain_function = None
        self.manual_selection_made = False
        self.automatically_update_fit_name = True
        self.thread_success = True
        self.update_selected_workspace_guess()
        self.gui_context_observer = GenericObserverWithArgPassing(
            self.handle_gui_changes_made)
        self.selected_group_pair_observer = GenericObserver(
            self.handle_selected_group_pair_changed)
        self.selected_plot_type_observer = GenericObserver(
            self.handle_selected_plot_type_changed)
        self.input_workspace_observer = GenericObserver(
            self.handle_new_data_loaded)
        self.disable_tab_observer = GenericObserver(
            lambda: self.view.setEnabled(False))
        self.enable_tab_observer = GenericObserver(
            lambda: self.view.setEnabled(True))

        self.update_view_from_model_observer = GenericObserverWithArgPassing(
            self.update_view_from_model)
Example #2
0
 def __init__(self, view, model, context, figure_presenter):
     super().__init__(view, model, context, figure_presenter)
     # view set up
     self._data_type = [FREQ_X_LABEL, FIELD_X_LABEL]
     self._sort_by = ["Maxent + Groups/detectors"]
     self.update_view()
     self._view.enable_plot_type_combo()
     self._view.hide_plot_diff()
     self._view.enable_tile_plotting_options()
     self._view.hide_plot_raw()
     self._view.disable_tile_plotting_options()
     self._view.set_is_tiled_plot(True)
     self._view.set_slot_for_selection_changed(self.update_selection)
     # sync view and model
     self._model.set_selection(self.view.get_selection_for_plot)
     # private memeber
     self._maxent_ws_name = None
     # connections
     self.method_changed = GenericObserverWithArgPassing(
         self.change_time_plot)
     self.period_changed = GenericObserverWithArgPassing(self.change_period)
     self.new_data_observer = GenericObserverWithArgPassing(
         self.handle_maxent_data_updated)
     self.reconstructed_data_observer = GenericObserverWithArgPassing(
         self.handle_reconstructed_data_updated)
     self.instrument_observer = GenericObserver(self.clear)
     self.update_freq_units = GenericObservable()
     self.update_x_label_observer = GenericObserver(self._update_pane)
    def __init__(self, view, model, context):
        """
        :param view: A reference to the QWidget object for plotting
        :param model: A reference to a model which contains the plotting logic
        :param context: A reference to the Muon context object
        """
        self._view = view
        self._model = model
        self.context = context
        self.workspace_finder = WorkspaceFinder(self.context)

        self._view.on_rebin_options_changed(
            self.handle_use_raw_workspaces_changed)
        self._view.on_plot_type_changed(self.handle_plot_type_changed)
        self._view.on_tiled_by_type_changed(
            self.handle_tiled_by_changed_on_view)
        self._view.on_plot_tiled_changed(self.handle_plot_tiled_changed)

        self.input_workspace_observer = GenericObserver(
            self.handle_data_updated)
        self.added_group_or_pair_observer = GenericObserverWithArgPassing(
            self.handle_added_or_removed_group_or_pair_to_plot)
        self.fit_observer = GenericObserverWithArgPassing(
            self.handle_fit_completed)
        self.fit_removed_observer = GenericObserverWithArgPassing(
            self.handle_fit_removed)

        self.removed_group_pair_observer = GenericObserver(
            self.handle_removed_group_or_pair_to_plot)
        self.rebin_options_set_observer = GenericObserver(
            self.handle_rebin_options_set)
        self.plot_guess_observer = GenericObserver(
            self.handle_plot_guess_changed)
        self.workspace_deleted_from_ads_observer = GenericObserverWithArgPassing(
            self.handle_workspace_deleted_from_ads)
        self.workspace_replaced_in_ads_observer = GenericObserverWithArgPassing(
            self.handle_workspace_replaced_in_ads)
        self.plot_type_changed_notifier = GenericObservable()

        self.connect_xlim_changed_in_figure_view(
            self.handle_x_axis_limits_changed_in_figure_view)
        self.connect_ylim_changed_in_figure_view(
            self.handle_y_axis_limits_changed_in_figure_view)
        self._view.plot_options.connect_errors_changed(
            self.handle_error_selection_changed)
        self._view.plot_options.connect_x_range_changed(
            self.handle_xlim_changed_in_options_view)
        self._view.plot_options.connect_y_range_changed(
            self.handle_ylim_changed_in_options_view)
        self._view.plot_options.connect_autoscale_changed(
            self.handle_autoscale_requested_in_view)
        self._view.plot_options.connect_plot_selection(
            self.handle_subplot_changed_in_options)

        if self.context._frequency_context:
            for ext in FREQUENCY_EXTENSIONS.keys():
                self._view.addItem(FREQ_PLOT_TYPE + FREQUENCY_EXTENSIONS[ext])
            self._view.addItem(FREQ_PLOT_TYPE + "All")
        self.instrument_observer = GenericObserver(
            self.handle_instrument_changed)
Example #4
0
    def __init__(self, view, model):
        self._view = view
        self._model = model

        self.load_run_widget = None
        self.load_file_widget = None

        self.view.on_subwidget_loading_started(self.disable_loading)
        self.view.on_subwidget_loading_finished(self.enable_loading)

        self.view.on_file_widget_data_changed(
            self.handle_file_widget_data_changed)
        self.view.on_run_widget_data_changed(
            self.handle_run_widget_data_changed)

        self.view.on_clear_button_clicked(self.clear_data_and_view)

        self._view.on_multiple_load_type_changed(
            self.handle_multiple_runs_option_changed)
        self._use_threading = True

        self.loadNotifier = Observable()

        self.disable_observer = GenericObserver(self.disable_loading)
        self.enable_observer = GenericObserver(self.enable_loading)

        self.update_view_from_model_observer = GenericObserver(self.update_view_from_model)
Example #5
0
    def __init__(self, context, fft_widget, maxent_widget, parent=None):
        super(TransformWidget, self).__init__(parent)
        self._fft = fft_widget(load=context, parent=self)
        self._maxent = maxent_widget(context=context, parent=self)
        self._selector = TransformSelectionWidget(parent=self)
        self.load_observer = LoadObserver(self)
        self.context = context
        self.instrumentObserver = instrumentObserver(self)
        self.GroupPairObserver = GenericObserver(self.handle_new_group_pair)
        self.enable_observer = EnableObserver(self)
        self.disable_observer = DisableObserver(self)
        self.phase_quad_observer = PhaseQuadObserver(self)

        groupedViews = self.getViews()

        self._view = TransformView(self._selector.widget, groupedViews, parent)

        self._selector.setSelectionConnection(self.updateDisplay)
        self.updateDisplay('FFT')
        self.update_view_from_model_observer = GenericObserver(
            self.update_view_from_model)
        self.disable_view()
        # to make it compatable with the old GUI
        try:
            self.context.update_view_from_model_notifier.add_subscriber(
                self.update_view_from_model_observer)
        except:
            pass
    def __init__(self,
                 view,
                 model,
                 grouping_table_widget=None,
                 pairing_table_widget=None,
                 diff_table=None,
                 parent=None):
        self._view = view
        self._model = model

        self.grouping_table_widget = grouping_table_widget
        self.pairing_table_widget = pairing_table_widget
        self.diff_table = diff_table
        self.period_info_widget = MuonPeriodInfo()

        self._view.set_description_text('')
        self._view.on_add_pair_requested(self.add_pair_from_grouping_table)
        self._view.on_clear_grouping_button_clicked(self.on_clear_requested)
        self._view.on_load_grouping_button_clicked(
            self.handle_load_grouping_from_file)
        self._view.on_save_grouping_button_clicked(
            self.handle_save_grouping_file)
        self._view.on_default_grouping_button_clicked(
            self.handle_default_grouping_button_clicked)
        self._view.on_period_information_button_clicked(
            self.handle_period_information_button_clicked)

        # monitors for loaded data changing
        self.loadObserver = GroupingTabPresenter.LoadObserver(self)
        self.instrumentObserver = GroupingTabPresenter.InstrumentObserver(self)

        # notifiers
        self.groupingNotifier = GroupingTabPresenter.GroupingNotifier(self)
        self.grouping_table_widget.on_data_changed(self.group_table_changed)
        self.diff_table.on_data_changed(self.diff_table_changed)
        self.pairing_table_widget.on_data_changed(self.pair_table_changed)
        self.enable_editing_notifier = GroupingTabPresenter.EnableEditingNotifier(
            self)
        self.disable_editing_notifier = GroupingTabPresenter.DisableEditingNotifier(
            self)
        self.counts_calculation_finished_notifier = GenericObservable()

        self.guessAlphaObserver = GroupingTabPresenter.GuessAlphaObserver(self)
        self.pairing_table_widget.guessAlphaNotifier.add_subscriber(
            self.guessAlphaObserver)
        self.message_observer = GroupingTabPresenter.MessageObserver(self)
        self.gui_variables_observer = GroupingTabPresenter.GuiVariablesChangedObserver(
            self)
        self.enable_observer = GroupingTabPresenter.EnableObserver(self)
        self.disable_observer = GroupingTabPresenter.DisableObserver(self)

        self.disable_tab_observer = GenericObserver(
            self.disable_editing_without_notifying_subscribers)
        self.enable_tab_observer = GenericObserver(
            self.enable_editing_without_notifying_subscribers)

        self.update_view_from_model_observer = GenericObserver(
            self.update_view_from_model)
    def _setup_autoscale_observer(self):
        self.uncheck_autoscale_observer = GenericObserver(self.uncheck_autoscale)
        self._view.add_uncheck_autoscale_subscriber(self.uncheck_autoscale_observer)

        self.enable_autoscale_observer = GenericObserver(self.enable_autoscale)
        self._view.add_enable_autoscale_subscriber(self.enable_autoscale_observer)

        self.disable_autoscale_observer = GenericObserver(self.disable_autoscale)
        self._view.add_disable_autoscale_subscriber(self.disable_autoscale_observer)
Example #8
0
    def __init__(self, view, model):
        super(ResultsTabPresenter, self).__init__()
        self.view = view
        self.model = model
        self.new_fit_performed_observer = GenericObserver(
            self.on_new_fit_performed)

        self.update_view_from_model_observer = GenericObserver(self.update_view_from_model)

        self._init_view()
 def _setup_gui_observers(self):
     """"Setup GUI observers, e.g fit observers"""
     self.workspace_deleted_from_ads_observer = GenericObserverWithArgPassing(self.handle_workspace_deleted_from_ads)
     self.workspace_replaced_in_ads_observer = GenericObserverWithArgPassing(self.handle_workspace_replaced_in_ads)
     self.added_group_or_pair_observer = GenericObserverWithArgPassing(
         self.handle_added_or_removed_group_or_pair_to_plot)
     self.instrument_observer = GenericObserver(self.handle_instrument_changed)
     self.plot_selected_fit_observer = GenericObserverWithArgPassing(self.handle_plot_selected_fits)
     self.plot_guess_observer = GenericObserver(self.handle_plot_guess_changed)
     self.rebin_options_set_observer = GenericObserver(self.handle_rebin_options_changed)
     self.plot_type_changed_notifier = GenericObservable()
    def __init__(self, view, model, context):
        self.view = view
        self.model = model
        self.context = context
        self._selected_data = []
        self._start_x = [self.view.start_time]
        self._end_x = [self.view.end_time]
        self._grppair_index = {}
        self._fit_status = [None]
        self._fit_chi_squared = [0.0]
        self._fit_function = [None]
        self._tf_asymmetry_mode = False
        self._fit_function_cache = [None]
        self._plot_type = None
        self._number_of_fits_cached = 0
        self._multi_domain_function = None
        self.manual_selection_made = False
        self.automatically_update_fit_name = True
        self.thread_success = True
        self.fitting_calculation_model = None
        self.update_selected_workspace_list_for_fit()
        self.fit_function_changed_notifier = GenericObservable()
        self.fit_parameter_changed_notifier = GenericObservable()
        self.fit_type_changed_notifier = GenericObservable()
        self.selected_single_fit_notifier = GenericObservable()

        self.gui_context_observer = GenericObserverWithArgPassing(
            self.handle_gui_changes_made)
        self.selected_group_pair_observer = GenericObserver(
            self.handle_selected_group_pair_changed)
        self.selected_plot_type_observer = GenericObserverWithArgPassing(
            self.handle_selected_plot_type_changed)
        self.input_workspace_observer = GenericObserver(
            self.handle_new_data_loaded)

        self.disable_tab_observer = GenericObserver(self.disable_view)
        self.enable_tab_observer = GenericObserver(self.enable_view)
        self.instrument_changed_observer = GenericObserver(
            self.instrument_changed)

        self.update_view_from_model_observer = GenericObserverWithArgPassing(
            self.update_view_from_model)

        self.initialise_model_options()
        self.double_pulse_observer = GenericObserverWithArgPassing(
            self.handle_double_pulse_set)
        self.model.context.gui_context.add_non_calc_subscriber(
            self.double_pulse_observer)

        self.view.setEnabled(False)

        self.enable_editing_notifier = GenericObservable()
        self.disable_editing_notifier = GenericObservable()
 def _setup_view_connections(self):
     # tile plots
     self._view.on_tiled_by_type_changed(self.handle_tiled_by_type_changed)
     self._view.on_plot_tiled_checkbox_changed(
         self.handle_plot_tiled_state_changed)
     # external plot
     self._view.on_external_plot_pressed(
         self.handle_external_plot_requested)
     self._view.on_plot_type_changed(self.handle_data_type_changed)
     # rebin
     self.rebin_options_set_observer = GenericObserver(
         self.handle_rebin_options_changed)
     # data changed
     self.data_changed_observer = GenericObserver(self.handle_data_updated)
    def __init__(self, view, model, grouping_table_widget=None):
        self._view = view
        self._model = model

        self.grouping_table_widget = grouping_table_widget

        self._view.set_description_text(self.text_for_description())

        # monitors for loaded data changing
        self.loadObserver = GenericObserver(self.handle_new_data_loaded)
        self.instrumentObserver = GenericObserver(self.on_clear_requested)

        # notifiers
        self.groupingNotifier = GenericObservable()
        self.enable_editing_notifier = GenericObservable()
        self.disable_editing_notifier = GenericObservable()
        self.calculation_finished_notifier = GenericObservable()

        self.message_observer = GenericObserverWithArgPassing(
            self._view.display_warning_box)
        self.gui_variables_observer = GenericObserver(
            self.handle_update_all_clicked)
        self.enable_observer = GenericObserver(self.enable_editing)
        self.disable_observer = GenericObserver(self.disable_editing)

        self.disable_tab_observer = GenericObserver(
            self.disable_editing_without_notifying_subscribers)
        self.enable_tab_observer = GenericObserver(
            self.enable_editing_without_notifying_subscribers)

        self.update_view_from_model_observer = GenericObserver(
            self.update_view_from_model)
Example #13
0
    def __init__(self, view, model):
        super(ResultsTabPresenter, self).__init__()
        self.view = view
        self.model = model
        self.new_fit_performed_observer = GenericObserver(
            self.on_new_fit_performed)

        self.update_view_from_model_observer = GenericObserver(
            self.update_view_from_model)

        self._init_view()

        self.disable_tab_observer = GenericObserver(
            lambda: self.view.setEnabled(False))
        self.enable_tab_observer = GenericObserver(
            lambda: self.view.setEnabled(True))
Example #14
0
    def __init__(self, view: ModelFittingView, model: ModelFittingModel):
        """Initialize the ModelFittingPresenter. Sets up the slots and event observers."""
        super(ModelFittingPresenter, self).__init__(view, model)

        self.parameter_combination_thread_success = True

        self.update_override_tick_labels_notifier = GenericObservable()
        self.update_plot_x_range_notifier = GenericObservable()

        self.results_table_created_observer = GenericObserverWithArgPassing(
            self.handle_new_results_table_created)

        self.instrument_changed_notifier = GenericObserver(
            self.handle_instrument_changed)

        self.view.set_slot_for_results_table_changed(
            self.handle_results_table_changed)
        self.view.set_slot_for_selected_x_changed(
            self.handle_selected_x_changed)
        self.view.set_slot_for_selected_y_changed(
            self.handle_selected_y_changed)

        self.clear_observer = GenericObserverWithArgPassing(self.clear)
        self.remove_observer = GenericObserverWithArgPassing(self.remove)
        self.replace_observer = GenericObserverWithArgPassing(self.replaced)
Example #15
0
    def __init__(self, view, context):
        self.view = view
        self.context = context
        self.thread = None
        self._optional_output_names = {}
        # set data
        self.getWorkspaceNames()
        self.view.set_methods([USEGROUPS, USEDETECTORS])
        # connect
        self.view.maxEntButtonSignal.connect(self.handleMaxEntButton)
        self.view.method_changed_slot(self.update_phase_table_options)
        self.view.method_changed_slot(self.notify_method_changed)
        self.view.period_changed_slot(self.notify_period_changed)
        self.view.cancelSignal.connect(self.cancel)
        self.view.run_changed_slot(self._load_periods)

        self.phase_table_observer = GenericObserver(
            self.update_phase_table_options)
        self.calculation_finished_notifier = GenericObservable()
        self.calculation_started_notifier = GenericObservable()
        self.new_phase_table = GenericObservable()
        self.update_phase_table_options()
        self.method_changed = Observable()
        self.period_changed = Observable()
        self.new_reconstructed_data = Observable()
    def __init__(self,
                 view,
                 model,
                 context,
                 figure_presenter,
                 external_plotting_view=None,
                 external_plotting_model=None):

        self._name = model.name
        self._data_type = [""]
        self._sort_by = [""]
        self._view = view
        self._model = model
        self.context = context
        self._figure_presenter = figure_presenter
        self._x_data_range = context.plot_panes_context[
            self._name].default_xlims
        self._external_plotting_view = external_plotting_view if external_plotting_view else ExternalPlottingView(
        )
        self._external_plotting_model = external_plotting_model if external_plotting_model else ExternalPlottingModel(
        )
        self.add_or_remove_plot_observer = GenericObserverWithArgPassing(
            self.handle_added_or_removed_plot)
        self._view.on_rebin_options_changed(
            self.handle_use_raw_workspaces_changed)
        self.workspace_replaced_in_ads_observer = GenericObserverWithArgPassing(
            self.handle_workspace_replaced_in_ads)
        self.workspace_deleted_from_ads_observer = GenericObserverWithArgPassing(
            self.handle_workspace_deleted_from_ads)
        self.clear_plot_observer = GenericObserver(self.create_empty_plot)

        self._setup_view_connections()
    def setup_observers(self):
        self.find_peaks_observer = GenericObserver(self.run_find_peak_algorithms)
        self.show_peaks_table_observer = GenericObserver(
            lambda: self.show_table(self.view.show_peaks_table_combobox.currentText()))
        self.show_matches_table_observer = GenericObserver(
            lambda: self.show_table(self.view.show_matches_table_combobox.currentText()))
        self.clear_matches_table_observer = GenericObserver(self.clear_match_table)
        self.update_match_table_observer = GenericObserver(self.update_match_table)
        self.update_view_observer = GenericObserver(self.update_view)

        self.enable_tab_observer = GenericObserver(self.enable_tab)
        self.disable_tab_observer = GenericObserver(self.disable_tab)
        self.group_change_observer = GenericObserver(self.update_view)
Example #18
0
    def __init__(self, parent: QWidget = None):
        """Initialize the BasicFittingView and create the FitControlsView and a FitFunctionOptionsView."""
        super(BasicFittingView, self).__init__(parent)
        self.setupUi(self)

        self.fit_controls = FitControlsView(self)
        self.workspace_selector = CyclicDataSelectorView(self)
        self.fit_function_options = FitFunctionOptionsView(self)

        self.fit_controls_layout.addWidget(self.fit_controls)
        self.workspace_selector_layout.addWidget(self.workspace_selector)
        self.fit_function_options_layout.addWidget(self.fit_function_options)

        self.disable_tab_observer = GenericObserver(self.disable_view)
        self.enable_tab_observer = GenericObserver(self.enable_view)

        self.disable_view()
Example #19
0
    def __init__(self, view, model, context):
        self.view = view
        self.model = model
        self.context = context

        self.fit_function = None
        self.selected_rows = []
        self.calculation_thread = None
        self.fitting_calculation_model = None

        # Observers
        self.selected_workspaces_observer = GenericObserver(self.handle_selected_workspaces_changed)
        self.fit_type_changed_observer = GenericObserver(self.handle_selected_workspaces_changed)
        self.fit_function_updated_observer = GenericObserver(self.handle_fit_function_updated)
        self.fit_parameter_updated_observer = GenericObserver(self.handle_fit_function_parameter_changed)
        self.fit_parameter_changed_in_view = GenericObserverWithArgPassing(self.handle_updated_fit_parameter_in_table)
        self.selected_sequential_fit_notifier = GenericObservable()
    def __init__(self, view, context):
        self.view = view
        self.context = context
        self.current_alg = None
        self._phasequad_obj = None
        self._new_table_name = ""

        self.group_change_observer = GenericObserver(
            self.update_current_groups_list)
        self.run_change_observer = GenericObserver(
            self.update_current_run_list)
        self.instrument_changed_observer = GenericObserver(
            self.update_current_phase_tables)

        self.phase_table_calculation_complete_notifier = Observable()
        self.phase_table_observer = GenericObserver(
            self.update_current_phase_tables)
        self.phasequad_calculation_complete_notifier = Observable()
        self.enable_editing_notifier = Observable()
        self.disable_editing_notifier = Observable()

        self.disable_tab_observer = GenericObserver(self.view.disable_widget)
        self.enable_tab_observer = GenericObserver(self.view.enable_widget)
        self.selected_phasequad_changed_notifier = GenericObservable()
        self.calculation_finished_notifier = GenericObservable()

        self.update_view_from_model_observer = GenericObserver(
            self.update_view_from_model)
        self.update_current_phase_tables()

        self.view.on_first_good_data_changed(
            self.handle_first_good_data_changed)
        self.view.on_last_good_data_changed(self.handle_last_good_data_changed)
        self.view.on_phasequad_table_data_changed(
            self.handle_phasequad_table_data_changed)
    def __init__(self, view, model, context):
        """
        :param view: A reference to the QWidget object for plotting
        :param model: A refence to a model which contains the plotting logic
        :param context: A reference to the Muon context object
        """
        self._view = view
        self._model = model
        self.context = context
        self._view.on_plot_button_clicked(self.handle_data_updated)
        self._view.on_rebin_options_changed(self.handle_use_raw_workspaces_changed)
        self._view.on_plot_type_changed(self.handle_plot_type_changed)

        self.input_workspace_observer = GenericObserver(self.handle_data_updated)
        self.fit_observer = GenericObserver(self.handle_fit_completed)
        self.group_pair_observer = GenericObserver(self.handle_group_pair_to_plot_changed)
        self.plot_type_observer = GenericObserver(self.handle_group_pair_to_plot_changed)
        self.rebin_options_set_observer = GenericObserver(self.handle_rebin_options_set)
        self.plot_guess_observer = GenericObserver(self.handle_plot_guess_changed)
        self.plot_type_changed_notifier = GenericObservable()

        self._force_redraw = False
        if self.context._frequency_context:
            for ext in FREQUENCY_EXTENSIONS.keys():
                self._view.addItem(FREQ_PLOT_TYPE+FREQUENCY_EXTENSIONS[ext])
            self._view.addItem(FREQ_PLOT_TYPE+"All")
        self.instrument_observer = GenericObserver(self.handle_instrument_changed)
        self.keep = False
 def _setup_quick_edit_widget(self):
     self._options_presenter.connect_errors_changed(self.handle_error_selection_changed)
     self._options_presenter.connect_x_range_changed(self._handle_xlim_changed_in_quick_edit_options)
     self._options_presenter.connect_y_range_changed(self._handle_ylim_changed_in_quick_edit_options)
     self._options_presenter.connect_autoscale_changed(self._handle_autoscale_y_axes)
     self._options_presenter.connect_plot_selection(self._handle_subplot_changed_in_quick_edit_widget)
     self.range_changed_observer = GenericObserver(self.update_range)
     self._view.add_range_changed_subscriber(self.range_changed_observer)
     self.set_quickedit_from_context()
    def __init__(self, view, model, context, fitting_context, figure_presenter):
        """
        Initializes the PlotFitPanePresenter. The fitting_context is a FittingContext that corresponds to this specific
        fit pane. For instance it is a ModelFittingContext for the Model Fitting pane, and is a TFAsymmetryFittingContext
        for the tf asymmetry Fitting pane.
        """
        super().__init__(view, model, context, figure_presenter)
        self._fitting_context = fitting_context
        self._data_type = ["Asymmetry"]
        self._sort_by = ["Group/Pair", "Run"]
        self.update_view()
        self._current_fit_info = None
        self._view.enable_tile_plotting_options()
        self._view.on_plot_diff_checkbox_changed(self.plot_diff_changed)

        self.plot_selected_fit_observer = GenericObserverWithArgPassing(self.handle_plot_selected_fits)
        self.remove_plot_guess_observer = GenericObserver(self.handle_remove_plot_guess)
        self.update_plot_guess_observer = GenericObserver(self.handle_update_plot_guess)
    def __init__(self,
                 view,
                 model,
                 grouping_table_widget=None,
                 pairing_table_widget=None):
        self._view = view
        self._model = model

        self.grouping_table_widget = grouping_table_widget
        self.pairing_table_widget = pairing_table_widget

        # Synchronize the two tables
        self._view.on_grouping_table_changed(
            self.pairing_table_widget.update_view_from_model)
        self._view.on_pairing_table_changed(
            self.grouping_table_widget.update_view_from_model)

        self._view.set_description_text(self.text_for_description())
        self._view.on_add_pair_requested(self.add_pair_from_grouping_table)
        self._view.on_clear_grouping_button_clicked(self.on_clear_requested)
        self._view.on_load_grouping_button_clicked(
            self.handle_load_grouping_from_file)
        self._view.on_save_grouping_button_clicked(
            self.handle_save_grouping_file)
        self._view.on_default_grouping_button_clicked(
            self.handle_default_grouping_button_clicked)

        # multi period
        self._view.on_summed_periods_changed(self.handle_periods_changed)
        self._view.on_subtracted_periods_changed(self.handle_periods_changed)

        # monitors for loaded data changing
        self.loadObserver = GroupingTabPresenter.LoadObserver(self)
        self.instrumentObserver = GroupingTabPresenter.InstrumentObserver(self)

        # notifiers
        self.groupingNotifier = GroupingTabPresenter.GroupingNotifier(self)
        self.grouping_table_widget.on_data_changed(self.group_table_changed)
        self.pairing_table_widget.on_data_changed(self.pair_table_changed)
        self.enable_editing_notifier = GroupingTabPresenter.EnableEditingNotifier(
            self)
        self.disable_editing_notifier = GroupingTabPresenter.DisableEditingNotifier(
            self)
        self.calculation_finished_notifier = GenericObservable()

        self.guessAlphaObserver = GroupingTabPresenter.GuessAlphaObserver(self)
        self.pairing_table_widget.guessAlphaNotifier.add_subscriber(
            self.guessAlphaObserver)
        self.message_observer = GroupingTabPresenter.MessageObserver(self)
        self.gui_variables_observer = GroupingTabPresenter.GuiVariablesChangedObserver(
            self)
        self.enable_observer = GroupingTabPresenter.EnableObserver(self)
        self.disable_observer = GroupingTabPresenter.DisableObserver(self)

        self.update_view_from_model_observer = GenericObserver(
            self.update_view_from_model)
 def __init__(self, view, model, context, fitting_context, figure_presenter):
     super().__init__(view, model, context, fitting_context, figure_presenter)
     self._data_type = [FREQ, FIELD]
     self.context.frequency_context.x_label = FREQ
     self._sort_by = [""]
     self.update_view()
     self._view.hide_plot_raw()
     self._view.hide_tiled_by()
     self.update_freq_units = GenericObservable()
     self.update_maxent_plot = GenericObservable()
     self.update_fit_pane_observer = GenericObserver(self._update_fit_pane)
    def __init__(self, parent=None):
        super(EAGroupingTableView, self).__init__(parent)

        self.grouping_table = QtWidgets.QTableWidget(self)
        self.set_up_table()
        self.setup_interface_layout()
        self.grouping_table.cellChanged.connect(self.on_cell_changed)

        self._validate_group_name_entry = lambda text: True
        self._on_table_data_changed = lambda: 0

        # whether the table is updating and therefore we shouldn't respond to signals
        self._updating = False
        # whether the interface should be disabled
        self._disabled = False

        self.change_once = False

        self.disable_table_observer = GenericObserver(self.disable_editing)
        self.enable_table_observer = GenericObserver(self.enable_editing)
Example #27
0
    def __init__(self, view, model):
        super(ResultsTabPresenter, self).__init__()
        self.view = view
        self.model = model

        self.new_fit_performed_observer = GenericObserverWithArgPassing(
            self.on_new_fit_performed)

        self.update_view_from_model_observer = GenericObserver(
            self.update_view_from_model)

        self._init_view()

        self.disable_tab_observer = GenericObserver(
            lambda: self.view.setEnabled(False))
        self.enable_tab_observer = GenericObserver(
            lambda: self.view.setEnabled(True))

        self.results_table_created_notifier = GenericObservable()
        self.view.set_output_results_button_no_warning()
Example #28
0
    def __init__(self, parent: QWidget = None):
        """Initializes the CorrectionsView."""
        super(CorrectionsView, self).__init__(parent)
        self.setupUi(self)
        self.parent = parent

        self.run_selector = CyclicDataSelectorView(self)
        self.run_selector.set_data_combo_box_label("Runs :")
        self.run_selector.set_data_combo_box_label_width(50)
        self.corrections_layout.addWidget(self.run_selector, 1)

        self.dead_time_corrections_view = DeadTimeCorrectionsView(self)
        self.corrections_layout.addWidget(self.dead_time_corrections_view, 1)

        self.background_corrections_view = BackgroundCorrectionsView(self)
        self.corrections_layout.addWidget(self.background_corrections_view, 10)

        self.disable_tab_observer = GenericObserver(self.disable_view)
        self.enable_tab_observer = GenericObserver(self.enable_view)

        self.disable_view()
Example #29
0
    def __init__(self, view, model, context):
        self.view = view
        self.model = model
        self.context = context

        self.fit_function = None
        self.selected_rows = []
        self.calculation_thread = None
        self.fitting_calculation_model = None

        self.view.set_data_type_options(
            self.context.data_type_options_for_sequential())

        self.fit_parameter_changed_notifier = GenericObservable()
        self.sequential_fit_finished_notifier = GenericObservable()

        self.view.set_slot_for_display_data_type_changed(
            self.handle_selected_workspaces_changed)

        # Observers
        self.selected_workspaces_observer = GenericObserver(
            self.handle_selected_workspaces_changed)
        self.fit_type_changed_observer = GenericObserver(
            self.handle_selected_workspaces_changed)
        self.fit_function_updated_observer = GenericObserver(
            self.handle_fit_function_updated)
        self.fit_parameter_updated_observer = GenericObserver(
            self.handle_fit_function_parameter_changed)
        self.fit_parameter_changed_in_view = GenericObserverWithArgPassing(
            self.handle_updated_fit_parameter_in_table)
        self.selected_sequential_fit_notifier = GenericObservable()
        self.disable_tab_observer = GenericObserver(
            lambda: self.view.setEnabled(False))
        self.enable_tab_observer = GenericObserver(
            lambda: self.view.setEnabled(self.model.number_of_datasets > 0))
    def __init__(self, view, load):
        self.view = view
        self.load = load
        self.thread = None
        # set data
        self.getWorkspaceNames()
        # connect
        self.view.maxEntButtonSignal.connect(self.handleMaxEntButton)
        self.view.cancelSignal.connect(self.cancel)

        self.phase_table_observer = GenericObserver(self.update_phase_table_options)
        self.calculation_finished_notifier = GenericObservable()
        self.calculation_started_notifier = GenericObservable()