Example #1
0
    def __init__(self,
                 data_context,
                 ea_group_context=None,
                 muon_gui_context=None,
                 plot_panes_context=None,
                 error_notifier=None,
                 workspace_suffix=' EA'):
        self._window_title = "Elemental Analysis 2"
        self.data_context = data_context
        self._gui_context = muon_gui_context
        self._group_context = ea_group_context
        self._plot_panes_context = plot_panes_context
        self.workspace_suffix = workspace_suffix
        self.ads_observer = MuonContextADSObserver(
            delete_callback=self.remove_workspace,
            clear_callback=self.clear_context,
            replace_callback=self.workspace_replaced,
            delete_group_callback=self.remove_workspace)

        self.update_view_from_model_notifier = GenericObservable()
        self.update_plots_notifier = GenericObservable()
        self.deleted_plots_notifier = GenericObservable()
        self.calculation_started_notifier = GenericObservable()
        self.calculation_finished_notifier = GenericObservable()
        self.error_notifier = error_notifier
Example #2
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 #3
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):
        self._view = view
        self._model = model

        self._view.on_add_group_button_clicked(
            self.handle_add_group_button_clicked)
        self._view.on_remove_group_button_clicked(
            self.handle_remove_group_button_clicked)

        self._view.on_user_changes_group_name(self.validate_group_name)
        self._view.on_user_changes_detector_IDs(self.validate_detector_ids)

        self._view.on_table_data_changed(self.handle_data_change)

        self._view.on_user_changes_min_range_source(
            self.first_good_data_checkbox_changed)

        self._view.on_user_changes_max_range_source(
            self.from_file_checkbox_changed)

        self._view.on_user_changes_group_range_min_text_edit(
            self.handle_group_range_min_updated)

        self._view.on_user_changes_group_range_max_text_edit(
            self.handle_group_range_max_updated)

        self.selected_group_changed_notifier = GenericObservable()

        self._dataChangedNotifier = lambda: 0
Example #5
0
class FittingPlotPresenter(object):
    def __init__(self, parent, model=None, view=None):
        if view is None:
            self.view = FittingPlotView(parent)
        else:
            self.view = view
        if model is None:
            self.model = FittingPlotModel()
        else:
            self.model = model

        self.workspace_added_observer = GenericObserverWithArgPassing(self.add_workspace_to_plot)
        self.workspace_removed_observer = GenericObserverWithArgPassing(self.remove_workspace_from_plot)
        self.all_workspaces_removed_observer = GenericObserver(self.clear_plot)
        self.fit_all_started_observer = GenericObserverWithArgPassing(self.do_fit_all)
        self.fit_all_done_notifier = GenericObservable()

    def add_workspace_to_plot(self, ws):
        axes = self.view.get_axes()
        for ax in axes:
            self.model.add_workspace_to_plot(ws, ax, PLOT_KWARGS)
        self.view.update_figure()

    def remove_workspace_from_plot(self, ws):
        for ax in self.view.get_axes():
            self.model.remove_workspace_from_plot(ws, ax)
            self.view.remove_ws_from_fitbrowser(ws)
        self.view.update_figure()

    def clear_plot(self):
        for ax in self.view.get_axes():
            self.model.remove_all_workspaces_from_plot(ax)
        self.view.clear_figure()
        self.view.update_fitbrowser()

    def do_fit_all(self, ws_list, do_sequential=True):
        fitprop_list = []
        prev_fitprop = self.view.read_fitprop_from_browser()
        for ws in ws_list:
            logger.notice(f'Starting to fit workspace {ws}')
            fitprop = deepcopy(prev_fitprop)
            # update I/O workspace name
            fitprop['properties']['Output'] = ws
            fitprop['properties']['InputWorkspace'] = ws
            # do fit
            fit_output = Fit(**fitprop['properties'])
            # update results
            fitprop['status'] = fit_output.OutputStatus
            funcstr = str(fit_output.Function.fun)
            fitprop['properties']['Function'] = funcstr
            if "success" in fitprop['status'].lower() and do_sequential:
                # update function in prev fitprop to use for next workspace
                prev_fitprop['properties']['Function'] = funcstr
            # update last fit in fit browser and save setup
            self.view.update_browser(fit_output.OutputStatus, funcstr, ws)
            # append a deep copy to output list (will be initial parameters if not successful)
            fitprop_list.append(fitprop)

        logger.notice('Sequential fitting finished.')
        self.fit_all_done_notifier.notify_subscribers(fitprop_list)
    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)
    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 __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)
Example #9
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()
        self.disable_tab_observer = GenericObserver(
            lambda: self.view.setEnabled(False))
        self.enable_tab_observer = GenericObserver(
            lambda: self.view.setEnabled(True))
 def __init__(self, canvas, toolbar_manager, parent=None):
     super(EngDiffFitPropertyBrowser, self).__init__(canvas, toolbar_manager, parent)
     # overwrite default peak with that in settings (gets init when UI opened)
     default_peak = get_setting(output_settings.INTERFACES_SETTINGS_GROUP, output_settings.ENGINEERING_PREFIX,
                                "default_peak")
     self.setDefaultPeakType(default_peak)
     self.fit_notifier = GenericObservable()
     self.fit_enabled_notifier = GenericObservable()
    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 __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 _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, 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)
Example #15
0
 def __init__(self, view, alg, load):
     self.view = view
     self.alg = alg
     self.load = load
     self.thread = None
     # set data
     self.getWorkspaceNames()
     # connect
     self.view.tableClickSignal.connect(self.tableClicked)
     self.view.buttonSignal.connect(self.handleButton)
     self.calculation_finished_notifier = GenericObservable()
     self.view.setup_raw_checkbox_changed(self.handle_use_raw_data_changed)
    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()
    def __init__(self, view, model):
        self._view = view
        self._model = model

        self._view.on_grouppair_selection_changed(self.handle_grouppair_selector_changed)

        self._view.on_alpha_changed(self.handle_user_changes_alpha)

        self._view.on_summed_periods_changed(self.handle_periods_changed)
        self._view.on_subtracted_periods_changed(self.handle_periods_changed)

        self.pairAlphaNotifier = HomeGroupingWidgetPresenter.PairAlphaNotifier(self)
        self.selected_group_pair_changed_notifier = GenericObservable()
    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 #19
0
    def __init__(self, view: GeneralFittingView, model: GeneralFittingModel):
        """Initialize the GeneralFittingPresenter. Sets up the slots and event observers."""
        super(GeneralFittingPresenter, self).__init__(view, model)

        self.fitting_mode_changed_notifier = GenericObservable()
        self.simultaneous_fit_by_specifier_changed = GenericObservable()

        self.model.context.gui_context.add_non_calc_subscriber(self.double_pulse_observer)

        self.view.set_slot_for_fitting_mode_changed(self.handle_fitting_mode_changed)
        self.view.set_slot_for_simultaneous_fit_by_changed(self.handle_simultaneous_fit_by_changed)
        self.view.set_slot_for_simultaneous_fit_by_specifier_changed(self.handle_simultaneous_fit_by_specifier_changed)

        self.update_and_reset_all_data()
Example #20
0
    def __init__(self, parent, model=None, view=None):
        if view is None:
            self.view = FittingPlotView(parent)
        else:
            self.view = view
        if model is None:
            self.model = FittingPlotModel()
        else:
            self.model = model

        self.workspace_added_observer = GenericObserverWithArgPassing(self.add_workspace_to_plot)
        self.workspace_removed_observer = GenericObserverWithArgPassing(self.remove_workspace_from_plot)
        self.all_workspaces_removed_observer = GenericObserver(self.clear_plot)
        self.fit_all_started_observer = GenericObserverWithArgPassing(self.do_fit_all)
        self.fit_all_done_notifier = GenericObservable()
Example #21
0
    def __init__(self):
        self.calibration_presenter = None
        self.focus_presenter = None
        self.fitting_presenter = None
        self.settings_presenter = None

        self.doc_folder = "diffraction"
        self.doc = "Engineering Diffraction"

        # Setup observers
        self.calibration_observer = CalibrationObserver(self)

        # Setup observables
        self.statusbar_observable = GenericObservable()
        self.savedir_observable = GenericObservable()
Example #22
0
    def __init__(self, match_table, parent=None):
        super(EAAutoTabView, self).__init__(parent)

        self.find_peaks_workspaces = {}
        self.show_matches_options = {}
        self.show_peaks_options = {}
        self.match_table = match_table
        self.find_peaks_notifier = GenericObservable()
        self.show_peaks_table_notifier = GenericObservable()
        self.show_matches_table_notifier = GenericObservable()
        self.clear_matches_table_notifier = GenericObservable()

        self.setup_interface_layout()
        self.setup_horizontal_layouts()
        self.setup_buttons()
        self.setup_intial_parameters()
Example #23
0
    def __init__(self, view, model):
        self._view = view
        self._model = model

        self._view.on_remove_group_button_clicked(
            self.handle_remove_group_button_clicked)

        self._view.on_user_changes_group_name(self.validate_group_name)

        self._view.on_table_data_changed(self.handle_data_change)

        self.selected_group_changed_notifier = GenericObservable()

        self._dataChangedNotifier = lambda: 0

        self.rebin_notifier = GenericObservable()

        self.data_changed_notifier = GenericObservable()
Example #24
0
    def __init__(self, view, model, group_or_pair):
        self._view = view
        self._model = model
        self._group_or_pair = group_or_pair
        self._view.on_add_diff_button_clicked(self.handle_add_diff_button_checked_state)
        self._view.on_remove_diff_button_clicked(self.handle_remove_diff_button_clicked)

        self._view.on_user_changes_diff_name(self.validate_diff_name)
        self._view.on_table_data_changed(self.handle_data_change)

        self.selected_diff_changed_notifier = GenericObservable()

        self._dataChangedNotifier = lambda: 0

        if group_or_pair == 'pair':
            self._view.set_table_headers_pairs()
        else:
            self._view.set_table_headers_groups()
    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))

        self.results_table_created_notifier = GenericObservable()
Example #26
0
 def __init__(self, context):
     self.context = context
     self.table_entries = Queue()
     self.warnings = Queue()
     self.update_match_table_notifier = GenericObservable()
     self.update_view_notifier = GenericObservable()
     self.calculation_started_notifier = GenericObservable()
     self.calculation_finished_notifier = GenericObservable()
     self.current_peak_table_info = {
         "workspace": None,
         "number_of_peaks": None
     }
    def __init__(self, view, model):
        self._view = view
        self._model = model

        self._view.on_add_pair_button_clicked(self.handle_add_pair_button_checked_state)
        self._view.on_remove_pair_button_clicked(self.handle_remove_pair_button_clicked)

        self._view.on_user_changes_pair_name(self.validate_pair_name)
        self._view.on_user_changes_alpha(self.validate_alpha)
        self._view.on_guess_alpha_clicked(self.handle_guess_alpha_clicked)
        self._view.on_table_data_changed(self.handle_data_change)

        self.selected_pair_changed_notifier = GenericObservable()

        self._dataChangedNotifier = lambda: 0
        self._on_alpha_clicked = lambda: 0
        self._on_guess_alpha_requested = lambda pair_name, group1, group2: 0

        # notify if Guess Alpha clicked for any table entries
        self.guessAlphaNotifier = PairingTablePresenter.GuessAlphaNotifier(self)
Example #28
0
    def __init__(self,
                 check_group_contains_valid_detectors=lambda x: True,
                 error_notifier=None):
        self._groups = []
        self._runs_in_groups = []
        self._selected = ''
        self._selected_type = ''
        self._selected_groups = []

        self.message_notifier = GenericObservable()
        self.error_notifier = error_notifier
        self._check_group_contains_valid_detectors = check_group_contains_valid_detectors
Example #29
0
    def test_that_enable_observer_calls_on_view_when_triggered(self):
        presenter = ResultsTabPresenter(self.mock_view, self.mock_model)
        enable_notifier = GenericObservable()
        enable_notifier.add_subscriber(presenter.enable_tab_observer)

        enable_notifier._notify_subscribers_impl(arg=None)
        self.mock_view.setEnabled.assert_called_once_with(True)
Example #30
0
    def __init__(self, figure_canvas, parent=None):

        super().__init__(figure_canvas, parent)

        self.is_major_grid_on = False
        self.is_minor_grid_on = False
        self.uncheck_autoscale_notifier = GenericObservable()
        self.enable_autoscale_notifier = GenericObservable()
        self.disable_autoscale_notifier = GenericObservable()
        self.range_changed_notifier = GenericObservable()

        # Adjust icon size or they are too small in PyQt5 by default
        dpi_ratio = QtWidgets.QApplication.instance().desktop().physicalDpiX() / 100
        self.setIconSize(QtCore.QSize(24 * dpi_ratio, 24 * dpi_ratio))