def __init__(self, parent=None): super().__init__(parent) self.parent = parent # Create an instance of the GUI self.ui = Ui_config.Ui_configDialog() # Run the .setupUi() method to show the GUI self.ui.setupUi(self) self.ui.buttonBox.accepted.connect(self.saveConf) self.ui.buttonBox.rejected.connect(self.resetConf) self.conf = getConf() if self.conf['update_on_init']: self.ui.cbUpdateInit.setChecked(True) else: self.ui.cbUpdateInit.setChecked(False) self.ui.downFolderEdit.setText(self.conf['download_folder']) for theme in ['default'] + list_themes(): self.ui.themeSelector.addItem(theme) self.ui.themeSelector.setCurrentText(self.conf['theme']) self.ui.themeSelector.currentIndexChanged.connect(self.changeTheme)
def add_menu_theme(self, parent, menu: QMenu): for theme in ['default'] + list_themes(): action = QAction(parent) action.setText(theme.split(".")[0]) action.triggered.connect( self._wrapper(parent, theme, self.extra_colors, self.update_buttons)) menu.addAction(action)
def __init__(self, user, *args, **kwargs): super(MainWindow, self).__init__(*args, **kwargs) self.setGeometry(100, 100, 800, 600) self.setWindowTitle('Biblioteka') self.setWindowIcon(QtGui.QIcon('resources/library_icon.png')) bar = self.menuBar() style = bar.addMenu("Motyw") for item in list_themes(): style.addAction(item.replace('_', ' ').split('.')[0].capitalize()) style.triggered[QAction].connect(self.processtrigger) widget = MainWidget(user) self.setCentralWidget(widget)
import os from qt_material import list_themes themes = list_themes() themes = [t.replace('.xml', '') for t in themes] for theme in themes: os.system(f'python main.py --pyside6 {theme}') os.chdir('screenshots') commands = ( 'convert -delay 100 light_* light.gif', 'convert -delay 100 dark_* dark.gif', # 'rm ../../../docs/source/images/light.gif', # 'rm ../../../docs/source/images/dark.gif', # 'cp light.gif ../../../docs/source/images/light.gif', # 'cp dark.gif ../../../docs/source/images/dark.gif', # 'cp theme.png ../../../docs/source/images/theme.png', ) for command in commands: os.system(command)
def __init__(self): super().__init__() self._dataset: Optional[Dataset] = None self._translator: Optional[QtCore.QTranslator] = None self._client = QGrainClient() self.setWindowTitle("QGrain") self.ssu_setting_dialog = SSUSettings(self) self.emma_setting_dialog = EMMASettings(parent=self, client=self._client) self.udm_setting_dialog = UDMSettings(parent=self, client=self._client) self.parameter_editor = ParameterEditor(self) self.ssu_multicore_analyzer = SSUMulticoreAnalyzer(self) self.tab_widget = QtWidgets.QTabWidget(self) self.tab_widget.setTabPosition(QtWidgets.QTabWidget.West) self.setCentralWidget(self.tab_widget) self.dataset_generator = DatasetGenerator() self.tab_widget.addTab(self.dataset_generator, self.tr("Generator")) self.dataset_viewer = StatisticalAnalyzer() self.tab_widget.addTab(self.dataset_viewer, self.tr("Statistics")) self.pca_analyzer = PCAAnalyzer() self.tab_widget.addTab(self.pca_analyzer, self.tr("PCA")) self.clustering_analyzer = ClusteringAnalyzer() self.tab_widget.addTab(self.clustering_analyzer, self.tr("Clustering")) self.ssu_analyzer = SSUAnalyzer(self.ssu_setting_dialog, self.parameter_editor) self.tab_widget.addTab(self.ssu_analyzer, self.tr("SSU")) self.emma_analyzer = EMMAAnalyzer(self.emma_setting_dialog, self.parameter_editor, client=self._client) self.tab_widget.addTab(self.emma_analyzer, self.tr("EMMA")) self.udm_analyzer = UDMAnalyzer(self.udm_setting_dialog, self.parameter_editor, client=self._client) self.tab_widget.addTab(self.udm_analyzer, self.tr("UDM")) # Open self.open_menu = self.menuBar().addMenu(self.tr("Open")) self.open_dataset_action = self.open_menu.addAction( self.tr("Grain Size Dataset")) self.open_dataset_action.triggered.connect( lambda: self.load_dataset_dialog.show()) self.load_ssu_result_action = self.open_menu.addAction( self.tr("SSU Results")) self.load_ssu_result_action.triggered.connect( self.ssu_analyzer.result_view.load_results) self.load_emma_result_action = self.open_menu.addAction( self.tr("EMMA Result")) self.load_emma_result_action.triggered.connect( self.emma_analyzer.load_result) self.load_udm_result_action = self.open_menu.addAction( self.tr("UDM Result")) self.load_udm_result_action.triggered.connect( self.udm_analyzer.load_result) # Save self.save_menu = self.menuBar().addMenu(self.tr("Save")) self.save_artificial_action = self.save_menu.addAction( self.tr("Artificial Dataset")) self.save_artificial_action.triggered.connect( self.dataset_generator.on_save_clicked) self.save_statistics_action = self.save_menu.addAction( self.tr("Statistical Result")) self.save_statistics_action.triggered.connect( self.on_save_statistics_clicked) self.save_pca_action = self.save_menu.addAction(self.tr("PCA Result")) self.save_pca_action.triggered.connect(self.on_save_pca_clicked) self.save_clustering_action = self.save_menu.addAction( self.tr("Clustering Result")) self.save_clustering_action.triggered.connect( self.clustering_analyzer.save_result) self.save_ssu_result_action = self.save_menu.addAction( self.tr("SSU Results")) self.save_ssu_result_action.triggered.connect( self.ssu_analyzer.result_view.save_results) self.save_emma_result_action = self.save_menu.addAction( self.tr("EMMA Result")) self.save_emma_result_action.triggered.connect( self.emma_analyzer.save_selected_result) self.save_udm_result_action = self.save_menu.addAction( self.tr("UDM Result")) self.save_udm_result_action.triggered.connect( self.udm_analyzer.save_selected_result) # Config self.config_menu = self.menuBar().addMenu(self.tr("Configure")) self.config_ssu_action = self.config_menu.addAction( self.tr("SSU Algorithm")) self.config_ssu_action.triggered.connect(self.ssu_setting_dialog.show) self.config_emma_action = self.config_menu.addAction( self.tr("EMMA Algorithm")) self.config_emma_action.triggered.connect( self.emma_setting_dialog.show) self.config_udm_action = self.config_menu.addAction( self.tr("UDM Algorithm")) self.config_udm_action.triggered.connect(self.udm_setting_dialog.show) # Experimental self.experimental_menu = self.menuBar().addMenu( self.tr("Experimental")) self.ssu_fit_all_action = self.experimental_menu.addAction( self.tr("Perform SSU For All Samples")) self.ssu_fit_all_action.triggered.connect(self.ssu_fit_all_samples) self.convert_udm_to_ssu_action = self.experimental_menu.addAction( self.tr("Convert Selected UDM Result To SSU Results")) self.convert_udm_to_ssu_action.triggered.connect( self.convert_udm_to_ssu) self.save_all_ssu_figures_action = self.experimental_menu.addAction( self.tr("Save Figures For All SSU Results")) self.save_all_ssu_figures_action.triggered.connect( self.save_all_ssu_figure) # Language self.language_menu = self.menuBar().addMenu(self.tr("Language")) self.language_group = QtGui.QActionGroup(self.language_menu) self.language_group.setExclusive(True) self.language_actions: List[QtGui.QAction] = [] for key, name in self.supported_languages: action = self.language_group.addAction(name) action.setCheckable(True) action.triggered.connect(lambda checked=False, language=key: self. switch_language(language)) self.language_menu.addAction(action) self.language_actions.append(action) self.language_actions[0].setChecked(True) # Theme self.theme_menu = self.menuBar().addMenu(self.tr("Theme")) self.theme_group = QtGui.QActionGroup(self.theme_menu) self.theme_group.setExclusive(True) self.theme_actions = [] self.default_theme_action = self.theme_group.addAction( self.tr("Default")) self.default_theme_action.setCheckable(True) self.default_theme_action.setChecked(True) self.default_theme_action.triggered.connect(lambda: apply_stylesheet( app, theme=os.path.join(QGRAIN_ROOT_PATH, "assets", "default_theme.xml" ), invert_secondary=True, extra=EXTRA)) self.theme_menu.addAction(self.default_theme_action) self.theme_actions.append(self.default_theme_action) self.light_theme_menu = self.theme_menu.addMenu(self.tr("Light Theme")) self.dark_theme_menu = self.theme_menu.addMenu(self.tr("Dark Theme")) for theme in list_themes(): theme_name = string.capwords(" ".join(theme[:-4].split("_")[1:])) action = self.theme_group.addAction(theme_name) action.setCheckable(True) app = QtCore.QCoreApplication.instance() invert = theme.startswith("light") action.triggered.connect( lambda checked=False, t=theme, i=invert: apply_stylesheet( app, theme=t, invert_secondary=i, extra=EXTRA)) self.theme_actions.append(action) if invert: self.light_theme_menu.addAction(action) else: self.dark_theme_menu.addAction(action) # Log self.log_action = QtGui.QAction(self.tr("Log")) self.log_action.triggered.connect(lambda: self.log_dialog.show()) self.menuBar().addAction(self.log_action) # About self.about_action = QtGui.QAction(self.tr("About")) self.about_action.triggered.connect(lambda: self.about_dialog.show()) self.menuBar().addAction(self.about_action) # Connect signals self.ssu_multicore_analyzer.result_finished.connect( self.ssu_analyzer.result_view.add_result) self.load_dataset_dialog = DatasetLoader(self) self.load_dataset_dialog.dataset_loaded.connect(self.on_dataset_loaded) self.load_dataset_dialog.dataset_loaded.connect( self.dataset_viewer.on_dataset_loaded) self.load_dataset_dialog.dataset_loaded.connect( self.pca_analyzer.on_dataset_loaded) self.load_dataset_dialog.dataset_loaded.connect( self.clustering_analyzer.on_dataset_loaded) self.load_dataset_dialog.dataset_loaded.connect( self.ssu_analyzer.on_dataset_loaded) self.load_dataset_dialog.dataset_loaded.connect( self.emma_analyzer.on_dataset_loaded) self.load_dataset_dialog.dataset_loaded.connect( self.udm_analyzer.on_dataset_loaded) self.log_dialog = RuntimeLog(self) self.about_dialog = About(self) self.file_dialog = QtWidgets.QFileDialog(parent=self) self.normal_msg = QtWidgets.QMessageBox(self) self.close_msg = QtWidgets.QMessageBox(self) self.close_msg.setWindowTitle(self.tr("Warning")) self.close_msg.setText( self. tr("Closing this window will terminate all running tasks, are you sure to close it?" )) self.close_msg.setStandardButtons(QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No) self.close_msg.setDefaultButton(QtWidgets.QMessageBox.No)
def theme(self) -> str: for i, theme_action in enumerate(self.theme_actions): if theme_action.isChecked(): theme = list_themes()[i] return theme