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
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)
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
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)
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)
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)
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()
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 __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()
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()
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()
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()
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)
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
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)
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))