Example #1
0
    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)
Example #2
0
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))
Example #3
0
 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())
Example #4
0
    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()
Example #5
0
 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))