def __init__(self, measurement, icon_manager, tab, statusbar=None): """Inits TofeHistogramWidget widget. Args: measurement: A measurement class object. icon_manager: An iconmanager class object. tab: A MeasurementTabWidget. """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_histogram_widget.ui", self) self.measurement = measurement self.tab = tab self.statusbar = statusbar self.matplotlib = MatplotlibHistogramWidget(self, measurement, icon_manager, statusbar=statusbar) self.saveCutsButton.clicked.connect(self.matplotlib.save_cuts) self.loadSelectionsButton.clicked.connect( self.matplotlib.load_selections) self.matplotlib.selectionsChanged.connect(self.set_cut_button_enabled) self.matplotlib.saveCuts.connect(self.__save_cuts) self.__set_shortcuts() self.set_cut_button_enabled(measurement.selector.selections) count = len(self.measurement.data) self.setWindowTitle(f"ToF-E Histogram - Event count: {count}")
def __init__(self, target): """ Initialize the dialog. Args: target: Target object. """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_target_info.ui", self) self.target = target self.okPushButton.clicked.connect(self.__accept_settings) self.cancelPushButton.clicked.connect(self.close) self.fields_are_valid = False iv.set_input_field_red(self.nameLineEdit) self.nameLineEdit.textChanged.connect( lambda: iv.check_text(self.nameLineEdit, qwidget=self)) self.nameLineEdit.textEdited.connect( lambda: iv.sanitize_file_name(self.nameLineEdit)) self.nameLineEdit.setEnabled(False) self.name = "" self.nameLineEdit.setText(target.name) self.descriptionLineEdit.setPlainText(target.description) self.description = "" self.isOk = False self.dateLabel.setText(time.strftime("%c %z %Z", time.localtime( target.modification_time))) self.__close = True self.exec_()
def __init__( self, request: Request, tab_id: int, simulation: Simulation, icon_manager: IconManager, statusbar: Optional[QtWidgets.QStatusBar] = None): """ Init simulation tab class. Args: request: Request that has the simulation object. tab_id: An integer representing ID of the tab widget. simulation: A simulation class object. icon_manager: An icon manager class object. statusbar: A QtGui.QMainWindow's QStatusBar. """ super().__init__(simulation, tab_id, icon_manager, statusbar) uic.loadUi(gutils.get_ui_dir() / "ui_simulation_tab.ui", self) self.request = request self.simulation_target = None self.energy_spectrum_widgets = [] self.optimization_result_widget = None df.set_up_side_panel(self, "simu_panel_shown", "right") self.openSettingsButton.clicked.connect(self.__open_settings) self.optimizeButton.clicked.connect(self.__open_optimization_dialog) BaseTab.check_default_settings(self)
def __init__(self, element_simulation, tab): """ Initializes the dialog. Args: element_simulation: An ElementSimulation object. tab: A SimulationTabWidget. """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_specific_settings.ui", self) self.setWindowTitle("Element Settings") self.element_simulation = element_simulation self.tab = tab preset_folder = gutils.get_preset_dir( self.element_simulation.simulation.request.global_settings) self.sim_widget = SimulationSettingsWidget( self.element_simulation, preset_folder=preset_folder) self.tabs.addTab(self.sim_widget, "Element Settings") self.tabs.setEnabled(True) self.tabs.setTabBarAutoHide(True) screen_geometry = QDesktopWidget \ .availableGeometry(QApplication.desktop()) self.resize(int(self.geometry().width() * 1.2), int(screen_geometry.size().height() * 0.8)) self.OKButton.clicked.connect(self.update_settings_and_close) self.applyButton.clicked.connect(self.update_settings) self.cancelButton.clicked.connect(self.close) self.defaultSettingsCheckBox.stateChanged.connect(self.toggle_settings) self.__original_property_values = {} self.use_default_settings = self.element_simulation.use_default_settings
def __init__(self, parent): """Inits ToF-E graph histogram graph settings dialog. Args: parent: MatplotlibHistogramWidget which settings are being changed. """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_tofe_graph_settings.ui", self) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.parent = parent gutils.set_min_max_handlers(self.spin_range_x_min, self.spin_range_x_max) gutils.set_min_max_handlers(self.spin_range_y_min, self.spin_range_y_max) self.parent.show_yourself(self) # Connect and show self.OKButton.clicked.connect(self.accept_settings) self.cancelButton.clicked.connect(self.close) self.radio_range_manual.clicked.connect( lambda: self.toggle_manual(True)) self.radio_range_auto.clicked.connect( lambda: self.toggle_manual(False)) if self.radio_range_auto.isChecked(): self.toggle_manual(False) elif self.radio_range_manual.isChecked(): self.toggle_manual(True) self.exec_()
def __init__(self, dialog, cut, tof_calibration, detector: Detector, bin_width: float, column: int, run: Run): """Initializes widget. Args: dialog: Parent dialog. cut: CutFile class object. tof_calibration: TOFCalibration class object. detector: Detector object bin_width: Float representing histogram's bin width. column: Integer representing which column number is used. run: Run object. """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_tof_curve_fitting_widget.ui", self) # NOTE: One of these should always be there. Could probably use "else" if hasattr(dialog.parent_settings_widget, "request"): self.img_dir = dialog.parent_settings_widget.request.directory elif hasattr(dialog.parent_settings_widget, "measurement") and \ dialog.parent_settings_widget.measurement is not None: self.img_dir = dialog.parent_settings_widget.measurement.directory self.matplotlib = MatplotlibCalibrationCurveFittingWidget( self, detector, tof_calibration, cut, run, bin_width, column, dialog)
def __init__(self, clipboard_ratio): """ Initializes the dialog. Args: clipboard_ratio: Text that is in clipboard. """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_multiply_coordinate_dialog.ui", self) self.ratio_str = clipboard_ratio self.used_multiplier = None locale = QLocale.c() self.multiplierSpinBox.setLocale(locale) try: float(self.ratio_str) self.ratioLabel.setText(self.ratio_str) except ValueError: self.ratioLabel.setText("None") self.ratioLabel.setEnabled(False) self.clipboardButton.setChecked(False) self.clipboardButton.setEnabled(False) self.customButton.setChecked(True) self.multiplierSpinBox.setEnabled(True) self.clipboardButton.clicked.connect(self.switch_to_clipboard_value) self.customButton.clicked.connect(self.switch_to_custom_value) self.okButton.clicked.connect(self.accept_params) self.cancelButton.clicked.connect(self.close) self.exec_()
def __init__(self, request: Request, icon_manager: IconManager, statusbar: QtWidgets.QStatusBar, parent: "Potku"): """Init binary measurement import dialog. """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_import_dialog_binary.ui", self) self.request = request self.__icon_manager = icon_manager self.__statusbar = statusbar self.parent = parent self.__global_settings = self.parent.settings self.imported = False self.files_added = {} # Dictionary of files to be imported. self.button_import.clicked.connect(self.__import_files) self.button_cancel.clicked.connect(self.close) self.button_addimport.clicked.connect(self.__add_file) remove_file = QtWidgets.QAction("Remove selected files", self.treeWidget) remove_file.triggered.connect(self.__remove_selected) self.treeWidget.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu) self.treeWidget.addAction(remove_file) self.exec_()
def __init__(self, element_simulation: ElementSimulation, cut_file_name: str, target: Target, ct: Optional[CancellationToken] = None): """ Initialize the widget. """ # TODO make a common base class for result widgets # TODO change the push button to radio group super().__init__() GUIObserver.__init__(self) uic.loadUi(gutils.get_ui_dir() / "ui_optimization_results_widget.ui", self) self.element_simulation = element_simulation _, run, _ = self.element_simulation.get_mcerd_params() self.setWindowTitle(f"Optimization Results: " f"{element_simulation.get_main_recoil().element}" f" - {cut_file_name} - fluence: {run.fluence:e}") self.recoil_atoms = RecoilAtomOptimizationWidget(self, element_simulation, target, ct=ct) self.pareto_front = RecoilAtomParetoFront(self) self.recoil_atoms.results_accepted.connect(self.results_accepted.emit) self.rb_group_optim.buttonToggled.connect(self.switch_widget)
def __init__(self, settings: GlobalSettings): """Constructor for the program """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_global_settings.ui", self) self.settings = settings self.__added_timings = {} # Placeholder for timings self.setAttribute(QtCore.Qt.WA_DeleteOnClose) gutils.set_min_max_handlers( self.spin_tofe_bin_x_min, self.spin_tofe_bin_x_max ) gutils.set_min_max_handlers( self.spin_tofe_bin_y_min, self.spin_tofe_bin_y_max ) gutils.set_btn_group_data(self.ion_division_radios, IonDivision) gutils.set_btn_group_data(self.cross_section_radios, CrossSection) gutils.fill_combobox(self.combo_tofe_colors, ToFEColorScheme) # Connect UI buttons self.OKButton.clicked.connect(self.__accept_changes) self.cancelButton.clicked.connect(self.close) buttons = self.findChild(QtWidgets.QButtonGroup, "elementButtons") buttons.buttonClicked.connect(self.__change_element_color) self.min_conc_spinbox.setLocale(QtCore.QLocale.c()) if platform.system() == "Darwin": self.gridLayout.setVerticalSpacing(15) self.gridLayout.setHorizontalSpacing(15) self.__set_values()
def __init__(self, tab_id: int, measurement: Measurement, icon_manager: IconManager, statusbar: Optional[QtWidgets.QStatusBar] = None): """Init measurement tab class. Args: tab_id: An integer representing ID of the tabwidget. measurement: A measurement class object. icon_manager: An iconmanager class object. statusbar: A QtGui.QMainWindow's QStatusBar. """ super().__init__(measurement, tab_id, icon_manager, statusbar) uic.loadUi(gutils.get_ui_dir() / "ui_measurement_tab.ui", self) # Various widgets that are shown in the tab. These will be populated # using the load_data method self.histogram = None self.elemental_losses_widget = None self.energy_spectrum_widget = None self.depth_profile_widget = None self.saveCutsButton.clicked.connect(self.measurement_save_cuts) self.analyzeElementLossesButton.clicked.connect( self.open_element_losses) self.energySpectrumButton.clicked.connect(self.open_energy_spectrum) self.createDepthProfileButton.clicked.connect(self.open_depth_profile) self.command_master.clicked.connect(self.__master_issue_commands) self.openSettingsButton.clicked.connect(self.__open_settings) df.set_up_side_panel(self, "mesu_panel_shown", "right") # Enable master button self.toggle_master_button() self.set_icons()
def __init__(self, elements: List[Element], ignored_graph: Set[Element], ignored_ratio: Set[Element]): """Init the dialog. Args: elements: A list of elements in Depth Profile. ignored_graph: A list of elements ignored previously for the graph. ignored_ratio: A list of elements ignored previously for ratio calculation. """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_depth_profile_ignored.ui", self) self._elements = sorted(set(elements)) self.button_ok.clicked.connect(self.accept) self.button_cancel.clicked.connect(self.reject) # Fill the trees gutils.fill_tree(self.tree_elements.invisibleRootItem(), self._elements) gutils.fill_tree(self.tree_ratio.invisibleRootItem(), self._elements) self.included_in_graph = set(elem for elem in self._elements if elem not in ignored_graph) self.included_in_ratio = set(elem for elem in self._elements if elem not in ignored_ratio)
def __init__(self, recoil_atom_distribution): """Inits simulation element selection dialog. """ super().__init__() uic.loadUi( gutils.get_ui_dir() / "ui_recoil_element_selection_dialog.ui", self) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.recoil_atom_distribution = recoil_atom_distribution # TODO just use element, no isotope reference is needed self.element = None self.isotope = None self.color = None self.tmp_element = None self.colormap = self.recoil_atom_distribution.colormap # Setup connections self.element_button.clicked.connect(self.__change_element) self.isotope_radio.toggled.connect(self.__toggle_isotope) self.OKButton.clicked.connect(self.__accept_settings) self.cancelButton.clicked.connect(self.close) self.colorPushButton.clicked.connect(self.__change_color) self.isotopeInfoLabel.setVisible(False) self.isOk = False self.setMinimumWidth(350) if platform.system() == "Darwin": self.isotope_combobox.setFixedHeight(23) self.exec_()
def __init__(self, element_simulation: ElementSimulation, recoil_dist_widget, recoil_name_changed=None, settings_updated=None, ion_division=IonDivision.BOTH, min_presim_ions=0, min_sim_ions=0): """ Initializes a SimulationControlsWidget. Args: element_simulation: An ElementSimulation class object. recoil_dist_widget: RecoilAtomDistributionWidget. recoil_name_changed: signal that indicates that a recoil name has changed. ion_division: ion division mode """ super().__init__() GUIObserver.__init__(self) uic.loadUi(gutils.get_ui_dir() / "ui_simulation_controls.ui", self) self.element_simulation = element_simulation self.element_simulation.subscribe(self) self.recoil_dist_widget = recoil_dist_widget self.progress_bars = {} self.recoil_name = \ self.element_simulation.get_main_recoil().get_full_name() self.show_status(self.element_simulation.get_current_status()) self.finished_processes = 0, self.process_count self.run_button.clicked.connect(self.start_simulation) self.run_button.setIcon(icons.get_reinhardt_icon("player_play.svg")) self.stop_button.clicked.connect(self.stop_simulation) self.stop_button.setIcon(icons.get_reinhardt_icon("player_stop.svg")) self.enable_buttons() self.mcerd_error_lbl.hide() self.ion_settings_label.hide() self.__unsub = None self._ion_division = ion_division self._min_presim_ions = min_presim_ions self._min_sim_ions = min_sim_ions self.show_ion_settings_label() self.processes_spinbox.valueChanged.connect( self.show_ion_settings_label) self._recoil_name_changed = recoil_name_changed if self._recoil_name_changed is not None: self._recoil_name_changed.connect(self._set_name) self._settings_updated = settings_updated if self._settings_updated is not None: self._settings_updated.connect(self.settings_update_handler) self._settings_updated[GlobalSettings].connect( self.settings_update_handler)
def __init__(self, simulation: Simulation, parent): """Initializes an OptimizationDialog that displays various optimization parameters. Args: simulation: a Simulation object parent: a SimulationTabWidget """ super().__init__() self.simulation = simulation self.tab = parent self.current_mode = OptimizationType.RECOIL uic.loadUi(gutils.get_ui_dir() / "ui_optimization_params.ui", self) self.recoil_widget = OptimizationRecoilParameterWidget() self.fluence_widget = OptimizationFluenceParameterWidget() self.load_properties_from_file() locale = QLocale.c() self.histogramTicksDoubleSpinBox.setLocale(locale) self.pushButton_OK.setEnabled(False) self.pushButton_Cancel.clicked.connect(self.close) self.pushButton_OK.clicked.connect(self.start_optimization) self.radios = QtWidgets.QButtonGroup(self) self.radios.buttonToggled[QtWidgets.QAbstractButton, bool].connect( self.choose_optimization_mode) self.parametersLayout.addWidget(self.recoil_widget) self.parametersLayout.addWidget(self.fluence_widget) self.fluence_widget.hide() self.radios.addButton(self.fluenceRadioButton) self.radios.addButton(self.recoilRadioButton) gutils.fill_tree( self.simulationTreeWidget.invisibleRootItem(), simulation.element_simulations, text_func=lambda elem_sim: elem_sim.get_full_name()) self.simulationTreeWidget.itemSelectionChanged.connect( self._enable_ok_button) self.simulationTreeWidget.itemSelectionChanged.connect( self._adjust_x) self.auto_adjust_x_box.clicked.connect(self._adjust_x) self._fill_measurement_widget() self.measurementTreeWidget.itemSelectionChanged.connect( self._enable_ok_button) self.verbose = False self.eff_file_check_box.clicked.connect(self._enable_efficiency_label) # self.optimization_verbose_box.clicked.connect(self._verbose) self._update_efficiency_label() self.exec_()
def __init__(self, tmp_foils, tmp_index, icon_manager): """ Initializes the Foil Dialog. Args: tmp_foils: Foil object list. tmp_index: Index of the Foil object in tmp_foils. icon_manager: Icon manager for TargetCompositionWidget. """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_composition_dialog.ui", self) self.icon_manager = icon_manager self.foils = tmp_foils self.index = tmp_index self.tmp_foil = copy.deepcopy(tmp_foils[tmp_index]) self.foil_type = None self.foil_type_changed = False # Add foil types to combobox. self.typeComboBox.addItem("circular") self.typeComboBox.addItem("rectangular") self.dimension_edits = [] self.first_dimension_edit = QtWidgets.QDoubleSpinBox() self.first_dimension_edit.setMinimum(0.01) self.first_dimension_edit.setMaximumWidth(9999.99) self.first_dimension_edit.setMaximumWidth(70) self.locale = QLocale.c() self.first_dimension_edit.setLocale(self.locale) self.second_dimension_edit = None self.dimension_label = QtWidgets.QLabel("Diameter (mm):") self.transmissionEdit.setLocale(self.locale) self.dimension_edits.append(self.first_dimension_edit) self.dimensionLayout.addWidget(self.dimension_label) self.dimensionLayout.addWidget(self.dimension_edits[0]) self.fields_are_valid = False iv.set_input_field_red(self.nameEdit) self.nameEdit.textChanged.connect( lambda: iv.check_text(self.nameEdit, qwidget=self)) self.nameEdit.textEdited.connect( lambda: iv.sanitize_file_name(self.nameEdit)) self.show_parameters() # This widget adds itself into the matplotlib_layout self.composition = FoilCompositionWidget(self, self.tmp_foil, self.icon_manager) self.typeComboBox.currentIndexChanged.connect(self._change_dimensions) self.cancelButton.clicked.connect(self.close) self.okButton.clicked.connect(self._save_foil_info_and_close) self.__close = True self.exec_()
def __init__(self, recoil_element: RecoilElement, colormap, element_simulation: ElementSimulation): """Inits a recoil info dialog. Args: recoil_element: A RecoilElement object. colormap: Colormap for elements. element_simulation: Element simulation that has the recoil element. """ super().__init__() self.recoil_element = recoil_element self.element_simulation = element_simulation self.tmp_color = QColor(self.recoil_element.color) self.colormap = colormap value = self.recoil_element.reference_density self.scientific_spinbox = ScientificSpinBox(value=value, minimum=0.01, maximum=9.99e23) uic.loadUi(gutils.get_ui_dir() / "ui_recoil_info_dialog.ui", self) self.okPushButton.clicked.connect(self.__accept_settings) self.cancelPushButton.clicked.connect(self.close) self.colorPushButton.clicked.connect(self.__change_color) self.fields_are_valid = True iv.set_input_field_red(self.nameLineEdit) self.nameLineEdit.textChanged.connect( lambda: iv.check_text(self.nameLineEdit, qwidget=self)) self.nameLineEdit.textEdited.connect(self.__validate) self.name = recoil_element.name self.description = recoil_element.description self.formLayout.insertRow( 4, QtWidgets.QLabel(r"Reference density [at./cm<sup>3</sup>]:"), self.scientific_spinbox) self.formLayout.removeRow(self.widget) self.description = recoil_element.description self.isOk = False self.dateLabel.setText( time.strftime( "%c %z %Z", time.localtime(self.recoil_element.modification_time))) title = f"Recoil element: " \ f"{self.recoil_element.element.get_prefix()}" self.infoGroupBox.setTitle(title) self.__set_color_button_color(self.recoil_element.element.symbol) self.exec_()
def __init__(self, parent: BaseTab, measurement: Measurement, global_settings: GlobalSettings, statusbar: Optional[QtWidgets.QStatusBar] = None): """Inits depth profile dialog. Args: parent: a MeasurementTabWidget. measurement: a Measurement object global_settings: a GlobalSettings object statusbar: a QStatusBar object """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_depth_profile_params.ui", self) self.parent = parent self.measurement = measurement self.statusbar = statusbar # Connect buttons self.OKButton.clicked.connect(self._accept_params) self.cancelButton.clicked.connect(self.close) locale = QLocale.c() self.spin_systerr.setLocale(locale) self.sbox_reference_density.setLocale(locale) m_name = self.measurement.name if m_name not in DepthProfileDialog.checked_cuts: DepthProfileDialog.checked_cuts[m_name] = set() gutils.fill_cuts_treewidget(self.measurement, self.treeWidget.invisibleRootItem(), use_elemloss=True) self.used_cuts = DepthProfileDialog.checked_cuts[m_name] gutils.set_btn_group_data(self.group_x_axis_units, DepthProfileUnit) self.x_axis_units = DepthProfileDialog.x_unit if self.x_axis_units == DepthProfileUnit.NM: self._show_reference_density() else: self._hide_reference_density() self.radioButtonNm.clicked.connect(self._show_reference_density) self.radioButtonAtPerCm2.clicked.connect(self._hide_reference_density) self.systematic_error = DepthProfileDialog.systerr self.show_scale_line = DepthProfileDialog.line_scale self.show_zero_line = DepthProfileDialog.line_zero self.cross_sections = global_settings.get_cross_sections() self._show_measurement_settings() self._show_efficiency_files() self.exec_()
def __init__(self): """Initializes the LogHandler widget. """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_log_widget.ui", self) # This is used to ensure that the window can't be closed. self.want_to_close = False self.hideButton.clicked.connect(self.minimize_window) self.on_log_message.connect(self.add_text) self.on_error_message.connect(self.add_error)
def __init__(self, **kwargs): """Initialize the widget. Args: kwargs: property values to be shown in the widget. """ ui_file = gutils.get_ui_dir() / "ui_optimization_fluence_params.ui" self.fluenceDoubleSpinBox = ScientificSpinBox(10e12) super().__init__(ui_file, **kwargs) self.fluence_form_layout.addRow("Upper limit", self.fluenceDoubleSpinBox)
def __init__(self): """Inits the ElementSelection class """ # TODO this could show the elements with same color scheme as defined in # global settings super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_element_selection.ui", self) buttons = self.findChild(QtWidgets.QButtonGroup, "elementButtons") buttons.buttonClicked.connect(self.__set_element) self.pushButton_Cancel.clicked.connect(self.close) self.element = None self.exec_()
def __init__(self, value=0.0, minimum=0.0, maximum=math.inf, decimal_places=17, show_btns=True): """ Initializes the spinbox. Args: value: value of spinbox minimum: minimum allowed value maximum: maximum allowed value decimal_places: maximum number of decimals to show show_btns: Whether buttons that increase or decrease the value are shown. """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_scientific_spinbox_widget.ui", self) self._value = Decimal(str(value)) self.minimum = minimum self.maximum = maximum if decimal_places < 1: self._decimal_places = 1 elif decimal_places > 17: self._decimal_places = 17 else: self._decimal_places = decimal_places self.scientificLineEdit: QtWidgets.QLineEdit self._validator = ScientificValidator( self.minimum, self.maximum, self._decimal_places, self, accepted=lambda: iv.set_input_field_white(self.scientificLineEdit), intermediate=lambda: iv.set_input_field_yellow(self. scientificLineEdit), invalid=lambda: iv.set_input_field_red(self.scientificLineEdit)) self.scientificLineEdit.setValidator(self._validator) self.set_value(self._value) if show_btns: self.upButton.clicked.connect( lambda *_: self._step_adjustment(self._up_step)) self.downButton.clicked.connect( lambda *_: self._step_adjustment(self._down_step)) else: self.upButton.hide() self.downButton.hide()
def __init__(self, element_simulation: ElementSimulation, preset_folder=None): """ Initializes the widget. Args: element_simulation: Element simulation object. """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_request_simulation_settings.ui", self) # By default, disable the widget, so caller has to enable it. Without # this, name and description fields would always be enabled when the # widget loads. self.setEnabled(False) self.element_simulation = element_simulation self.set_spinbox_maximums() gutils.fill_combobox(self.modeComboBox, SimulationMode) gutils.fill_combobox(self.typeOfSimulationComboBox, SimulationType) self.fields_are_valid = False iv.set_input_field_red(self.nameLineEdit) self.nameLineEdit.textChanged.connect( lambda: iv.check_text(self.nameLineEdit, qwidget=self)) self.nameLineEdit.textEdited.connect( lambda: iv.sanitize_file_name(self.nameLineEdit)) self.nameLineEdit.setEnabled(False) locale = QLocale.c() self.minimumScatterAngleDoubleSpinBox.setLocale(locale) self.minimumMainScatterAngleDoubleSpinBox.setLocale(locale) self.minimumEnergyDoubleSpinBox.setLocale(locale) self.__original_property_values = {} self.set_properties( name=self.element_simulation.name, description=self.element_simulation.description, modification_time=self.element_simulation.modification_time, **self.element_simulation.get_settings()) if preset_folder is not None: self.preset_widget = PresetWidget.add_preset_widget( preset_folder / "simulation", "sim", lambda w: self.layout().insertWidget(0, w), save_callback=self.save_properties_to_file, load_callback=self.load_properties_from_file) else: self.preset_widget = None
def __init__(self, element_simulation: ElementSimulation, ct: Optional[CancellationToken] = None): # TODO common base class for optim result widgets super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_optimized_fluence_widget.ui", self) self.element_simulation = element_simulation if self.element_simulation.optimized_fluence: self.show_fluence() self.cancellation_token = ct
def __init__(self, folder: Path, prefix: str, enable_load_btn=False): """Initializes a new PresetWidget. Args: folder: folder where preset files are stored prefix: default prefix for preset files enable_load_btn: whether 'Load preset' file is shown or not. If not, load_file signal is fired when the combobox index changes. """ QWidget.__init__(self) uic.loadUi(gutils.get_ui_dir() / "ui_preset_widget.ui", self) self._folder = folder self._prefix = prefix self.save_btn: QPushButton self.load_btn: QPushButton self.preset_combobox: QComboBox self.save_btn.clicked.connect(self._emit_save_file) self._load_btn_enabled = enable_load_btn self.load_btn.setVisible(self._load_btn_enabled) self.load_btn.setEnabled(self._load_btn_enabled) if self._load_btn_enabled: self.load_btn.clicked.connect( lambda: self._emit_file_to_load(self.preset)) self.status_label.setVisible(False) self.preset_combobox: QComboBox self.preset_combobox.setContextMenuPolicy(Qt.ActionsContextMenu) self.preset_combobox.currentIndexChanged.connect(self._index_changed) self._action_rename = QAction(self.preset_combobox) self._action_rename.setText("Rename") self._action_rename.triggered.connect(self._rename_file) self._action_remove = QAction(self.preset_combobox) self._action_remove.setText("Remove") self._action_remove.triggered.connect(self._remove_file) self.preset_combobox.addAction(self._action_rename) self.preset_combobox.addAction(self._action_remove) self.preset_combobox.installEventFilter(self) self.load_files() self._activate_actions(self.preset)
def __init__(self, **kwargs): """Initialize the widget. Args: kwargs: property values to be shown in the widget. """ ui_file = gutils.get_ui_dir() / "ui_optimization_recoil_params.ui" super().__init__(ui_file, **kwargs) locale = QLocale.c() self.upperXDoubleSpinBox.setLocale(locale) self.lowerXDoubleSpinBox.setLocale(locale) self.upperYDoubleSpinBox.setLocale(locale) self.lowerYDoubleSpinBox.setLocale(locale)
def __init__(self, efficiency_files, parent_widget=None): """Inits widget. Args: parent: A TabWidget. efficiency_files: Paths to .eff files """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_eff_plot.ui", self) self.parent_widget = parent_widget self.efficiency_files = efficiency_files self.matplotlib = MatplotlibEfficiencyWidget(self, self.efficiency_files) self.exec_()
def __init__(self, elements, ignored): """Init the dialog. Args: elements: A list of elements in Depth Profile. ignored: A set of elements ignored previously for ratio calculation. """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_graph_ignored_elements.ui", self) self.__elements = elements self.ignored_elements = set(ignored) self.button_ok.clicked.connect(self.__ok_button) self.button_cancel.clicked.connect(self.close) self.__set_values() self.exec_()
def __init__(self, lim_a, lim_b): """Inits Depth profile numeric limits dialog. Args: lim_a, lim_b: limits to be shown in spinboxes """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_depth_profile_limits.ui", self) self.setAttribute(QtCore.Qt.WA_DeleteOnClose) # Connect and show self.OKButton.clicked.connect(self.accept_limits) self.cancelButton.clicked.connect(self.close) self.spinbox_limit_min.setValue(lim_a) self.spinbox_limit_max.setValue(lim_b) self.limit_min = lim_a self.limit_max = lim_b
def __init__(self, foil): """ Initializes the foil widget. Args: foil: foil object """ super().__init__() uic.loadUi(gutils.get_ui_dir() / "ui_foil_widget.ui", self) locale = QLocale.c() self.distanceDoubleSpinBox.setLocale(locale) self.deleteButton.clicked.connect(self._delete_foil) self.name = foil.name self.distance_from_previous = 0 self.cumulative_distance = foil.distance