def restore_geometries(self): """Restores the geometries of all the widgets that have had their geometries saved. Activates the widget that is returned by get_default_widget. """ if not gutils.get_potku_setting(BaseTab.SAVE_WINDOW_GEOM_KEY, True): return for key, widget in self.get_saveable_widgets().items(): if widget is not None: geom = gutils.get_potku_setting(key, bytes("", "utf-8")) widget.subwindow.restoreGeometry(geom) active_widget = self.get_default_widget() if active_widget is not None: self.mdiArea.setActiveSubWindow(active_widget.subwindow)
def set_up_side_panel(qwidget, key, side): """Sets up the side panel of a QWidget by either hiding it or showing it and connecting callbacks to change the visibility of the panel. Args: qwidget: QWidget that has a reference to a side panel and a button that shows or hides the panel. key: key used to store the visibility of the panel in QSettings object. side: which side of the QWidget the side panel is ('left' or 'right') """ show_panel = gutils.get_potku_setting(key, True, bool) # Show or hide panel depending on previous settings gutils.change_visibility(qwidget.frame, visibility=show_panel) qwidget.hidePanelButton.clicked.connect( lambda: gutils.change_visibility(qwidget.frame, key=key)) if side == "left": open_arr = ">" close_arr = "<" elif side == "right": open_arr = "<" close_arr = ">" else: raise ValueError(f"Side should either be 'left' or 'right', '{side}' " "given") # Change the arrow icon accordingly gutils.change_arrow(qwidget.hidePanelButton, arrow=close_arr if show_panel else open_arr) qwidget.hidePanelButton.clicked.connect( lambda: gutils.change_arrow(qwidget.hidePanelButton))
def save_geometries(self): """Saves the geometries of all saveable widgets that this tab has. """ if not gutils.get_potku_setting(BaseTab.SAVE_WINDOW_GEOM_KEY, True): return for key, widget in self.get_saveable_widgets().items(): if widget is not None: gutils.set_potku_setting(key, widget.subwindow.saveGeometry())
def __set_values(self): """Set settings values to dialog. """ for button in self.groupBox_3.findChildren(QtWidgets.QPushButton): self.set_btn_color( button, self.settings.get_element_color(button.text())) label_adc = QtWidgets.QLabel("ADC") label_low = QtWidgets.QLabel("Low") label_high = QtWidgets.QLabel("High") self.grid_timing.addWidget(label_adc, 0, 0) self.grid_timing.addWidget(label_low, 1, 0) self.grid_timing.addWidget(label_high, 2, 0) for i in range(3): timing = self.settings.get_import_timing(i) label = QtWidgets.QLabel(f"{i}") spin_low = self.__create_spinbox(timing[0]) spin_high = self.__create_spinbox(timing[1]) self.__added_timings[i] = CoincTiming(i, spin_low, spin_high) self.grid_timing.addWidget(label, 0, i + 1) self.grid_timing.addWidget(spin_low, 1, i + 1) self.grid_timing.addWidget(spin_high, 2, i + 1) self.coinc_count = self.settings.get_import_coinc_count() # self.__set_cross_sections() self.cross_section = self.settings.get_cross_sections() # ToF-E graph settings self.tofe_invert_x = self.settings.get_tofe_invert_x() self.tofe_invert_y = self.settings.get_tofe_invert_y() self.tofe_transposed = self.settings.get_tofe_transposed() # TODO binding for bin mode tofe_bin_mode = self.settings.get_tofe_bin_range_mode() self.radio_tofe_bin_auto.setChecked(tofe_bin_mode == 0) self.radio_tofe_bin_manual.setChecked(tofe_bin_mode == 1) self.tofe_bin_x = self.settings.get_tofe_bin_range_x() self.tofe_bin_y = self.settings.get_tofe_bin_range_y() self.comp_x = self.settings.get_tofe_compression_x() self.comp_y = self.settings.get_tofe_compression_y() self.depth_iters = self.settings.get_num_iterations() self.presim_ions = self.settings.get_min_presim_ions() self.sim_ions = self.settings.get_min_simulation_ions() self.ion_division = self.settings.get_ion_division() self.min_conc_spinbox.setMinimum(GlobalSettings.MIN_CONC_LIMIT) self.min_concentration = self.settings.get_minimum_concentration() self.save_window_geometries = gutils.get_potku_setting( BaseTab.SAVE_WINDOW_GEOM_KEY, True ) self.color_scheme = self.settings.get_tofe_color()
def __plot_efficiency(self): """ Open efficiency plot widget """ self.eff_folder = gutils.get_potku_setting( DetectorSettingsWidget.EFF_FILE_FOLDER_KEY, self.request.default_folder) self.efficiency_files = self.obj.get_efficiency_files() self.efficiency_files_list = [] i = 0 for file in self.efficiency_files: file_name = gf.get_root_dir() / self.eff_folder / str( self.efficiency_files[i]) self.efficiency_files_list.append(file_name) i += 1 EfficiencyDialog(self.efficiency_files_list, self)
def __add_efficiency(self): """Opens a dialog that allows the user to add efficiency files to the Efficiency_files folder of the detector. """ eff_folder = gutils.get_potku_setting( DetectorSettingsWidget.EFF_FILE_FOLDER_KEY, self.request.default_folder) new_eff_files = fdialogs.open_files_dialog( self, eff_folder, "Select efficiency files", "Efficiency File (*.eff)") if not new_eff_files: return used_eff_files = { Detector.get_used_efficiency_file_name(f) for f in self.efficiency_files } for eff_file in new_eff_files: new_eff_file = Path(eff_file) used_eff_file = Detector.get_used_efficiency_file_name(new_eff_file) if used_eff_file not in used_eff_files: try: self.obj.add_efficiency_file(new_eff_file) used_eff_files.add(used_eff_file) except OSError as e: QtWidgets.QMessageBox.critical( self, "Error", f"Failed to add the efficiency file: {e}\n", QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok) else: QtWidgets.QMessageBox.critical( self, "Error", f"There already is an efficiency file for element " f"{used_eff_file.stem}.\n", QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Ok) self.efficiency_files = self.obj.get_efficiency_files() # Store the folder where we previously fetched an eff-file gutils.set_potku_setting( DetectorSettingsWidget.EFF_FILE_FOLDER_KEY, str(new_eff_file.parent))