Пример #1
0
    def populate_recent_files_menu(self, recents):
        """Populate the open recent files menu.

        Populate the recent files with a list of recent file names.

        Args:
            recents (list): A list of recent file names.
        """
        if self._recent_files_actions:
            for action in self._recent_files_actions:
                self.ui.menuOpen_Recent.removeAction(action)
        if recents:
            actions = [QtGui.QAction(f) for f in recents]
            self.ui.menuOpen_Recent.insertActions(
                self.ui._recent_files_separator, actions
            )
            for action in actions:
                action.triggered.connect(
                    partial(self.open_recent_project_action, action.text())
                )
            self.ui.actionClear_Menu.setEnabled(True)
            self._recent_files_actions = actions
Пример #2
0
    def __init__(self, game_connection: GameConnection, options: Options):
        super().__init__()
        self.setupUi(self)
        self.game_connection = game_connection
        self.options = options
        common_qt_lib.set_default_window_icon(self)

        with get_data_path().joinpath(f"gui_assets/tracker/trackers.json"
                                      ).open("r") as trackers_file:
            self.trackers = json.load(trackers_file)["trackers"]

        self._action_to_name = {}
        theme_group = QtGui.QActionGroup(self)
        for name in self.trackers.keys():
            action = QtGui.QAction(self.menu_tracker)
            action.setText(name)
            action.setCheckable(True)
            action.setChecked(name == options.selected_tracker)
            action.triggered.connect(self._on_action_select_tracker)
            self.menu_tracker.addAction(action)
            self._action_to_name[action] = name
            theme_group.addAction(action)

        self._tracker_elements: List[Element] = []
        self.create_tracker()

        self.game_connection_setup = GameConnectionSetup(
            self, self.connection_status_label, self.game_connection, options)
        self.game_connection_setup.create_backend_entries(self.menu_backend)
        self.game_connection_setup.create_upload_nintendont_action(
            self.menu_options)
        self.game_connection_setup.refresh_backend()

        self.action_force_update.triggered.connect(self.on_force_update_button)

        self._update_timer = QtCore.QTimer(self)
        self._update_timer.setInterval(100)
        self._update_timer.timeout.connect(self._on_timer_update)
        self._update_timer.setSingleShot(True)
Пример #3
0
    def _generate_menu_bar(self):
        self.menu_bar = factories.atomic_widget_factory(component='menu-bar',
                                                        title=None)
        self.menus = []

        for j, menu in enumerate(definitions.MENUBAR_WIDGET):
            self.menus.append(self.menu_bar.addMenu(menu))
            for i, action in enumerate(definitions.MENUBAR_WIDGET[menu]):
                q_action = QtGui.QAction(action['name'], self)
                q_action.setShortcut(action['shortcut'])
                if menu == 'Functions':
                    q_action.triggered.connect(
                        (lambda i: lambda: self._show_widget(i))(i))
                elif menu == 'Account':
                    pass
                elif menu == 'View':
                    if action['name'] == 'Function Menu':
                        q_action.triggered.connect(
                            lambda: self.function_menu.setVisible(
                                (not self.function_menu.isVisible())))
                    elif action['name'] == 'Splash Menu':
                        q_action.triggered.connect(self._clear)

                self.menus[j].addAction(q_action)
Пример #4
0
    def createTools(self):
        """create the toolbar and populate it automatically
         from  method toolData
        """
        # create a toolbar
        self.toolbar = QtWidgets.QToolBar('Toolbar')
        self.parent.addToolBar(self.toolbar)

        for tip, icon, handler in self.getToolbarData():
            if len(tip) == 0:
                self.toolbar.addSeparator()
                continue
            icon = QtGui.QIcon(os.path.join(ICONS_L, icon))

            # guislot converts to:
            # self.parent.slots.slotMethod()
            guislot = getattr(self.parent.slots, handler)

            action = QtGui.QAction(icon, tip, parent=self.parent)
            # action.setIcon(icon)
            # action.setToolTip(tip)
            action.triggered.connect(guislot)

            self.toolbar.addAction(action)
Пример #5
0
    def __init__(self):
        super().__init__()
        self.table = QtWidgets.QTableWidget(self)
        self._double_spinbox_delegate = DoubleSpinBoxDelegate()
        self._spinbox_delegate = SpinBoxDelegate()
        self._checkbox_delegate = CheckBoxDelegate()
        self.set_central_widget(self.table)

        self._setup_table()

        self.change_action = QtGui.QAction(self)
        self.save_action = QtGui.QAction(self)
        self.copy_action = QtGui.QAction(self)
        self.new_route_action = QtGui.QAction(self)
        self.settings_action = QtGui.QAction(self)
        self.about_action = QtGui.QAction(self)

        self.context_menu_policy = QtCore.Qt.ContextMenuPolicy.CustomContextMenu
        self.table.context_menu_policy = QtCore.Qt.ContextMenuPolicy.CustomContextMenu
        self.customContextMenuRequested.connect(self._main_context)
        self.table.customContextMenuRequested.connect(self._table_context)
Пример #6
0
    def initUI(self):
        exitIcon = "resources/icons/exit22.png"
        newIcon = "resources/icons/document2.png"
        saveIcon = "resources/icons/document-save.png"
        openIcon = "resources/icons/document-open.png"
        exportIcon = "resources/icons/document-print.png"
        exportHtmlIcon = "resources/icons/goto.png"
        appIcon = "resources/icons/krita.png"

        self.initGrid()

        exitAction = QtGui.QAction(QIcon(exitIcon), 'Exit', self)
        exitAction.setShortcut('Ctrl+Q')
        exitAction.setStatusTip('Exit application')
        exitAction.triggered.connect(self.close)

        newAction = QtGui.QAction(QIcon(newIcon), 'New', self)
        newAction.setShortcut('Ctrl+N')
        newAction.setStatusTip('New Beat Sheet')
        newAction.triggered.connect(self.new)

        saveAction = QtGui.QAction(QIcon(saveIcon), 'Save', self)
        saveAction.setShortcut('Ctrl+S')
        saveAction.setStatusTip('Save Beat Sheet')
        saveAction.triggered.connect(self.save)

        openAction = QtGui.QAction(QIcon(openIcon), 'Open', self)
        openAction.setShortcut('Ctrl+S')
        openAction.setStatusTip('Open Beat Sheet')
        openAction.triggered.connect(self.open)

        exportAction = QtGui.QAction(QIcon(exportIcon), 'Export', self)
        exportAction.setShortcut('Ctrl+E')
        exportAction.setStatusTip('Export Beat Sheet')
        exportAction.triggered.connect(self.export)

        exportHtmlAction = QtGui.QAction(QIcon(exportHtmlIcon), 'Export HTML',
                                         self)
        exportHtmlAction.setShortcut('Ctrl+H')
        exportHtmlAction.setStatusTip('Export Beat Sheet (HTML)')
        exportHtmlAction.triggered.connect(self.exportHtml)

        exportOdtAction = QtGui.QAction(QIcon(exportHtmlIcon), 'Export ODT',
                                        self)
        exportOdtAction.setShortcut('Ctrl+T')
        exportOdtAction.setStatusTip('Export Beat Sheet (ODT)')
        exportOdtAction.triggered.connect(self.exportOdt)

        self.statusBar()

        menubar = self.menuBar()
        fileMenu = menubar.addMenu('&File')
        fileMenu.addAction(exitAction)

        toolbar = self.addToolBar('BeatSheet')
        toolbar.addAction(exitAction)

        fileMenu = menubar.addMenu('&Export')
        fileMenu.addAction(exportAction)
        fileMenu.addAction(exportHtmlAction)
        fileMenu.addAction(exportOdtAction)

        toolbar.addAction(newAction)
        toolbar.addAction(saveAction)
        toolbar.addAction(openAction)
        toolbar.addAction(exportAction)
        toolbar.addAction(exportHtmlAction)
        toolbar.addAction(exportOdtAction)

        self.setWindowTitle('Save the Cat Beat Sheet')

        MainAppIcon = QIcon(appIcon)
        self.setWindowIcon(MainAppIcon)
        self.setGeometry(0, 0, 1920, 1080)

        self.showMaximized()

        self.show()
Пример #7
0
    def setup_menu(self):
        self.file_menu = self.w.menuBar().addMenu("&File")
        self.file_menu_actions = []

        newAct = qtg.QAction('&New')
        newAct.setShortcut(qtg.QKeySequence.New)
        newAct.setStatusTip('Create a new Design')
        newAct.triggered.connect(self.clearWindow)
        self.file_menu.addAction(newAct)
        self.file_menu_actions.append(newAct)

        openAct = qtg.QAction('&Open')
        openAct.setShortcut(qtg.QKeySequence.Open)
        openAct.setStatusTip('Open an existing Design Plan')
        openAct.triggered.connect(self.open_plan)
        self.file_menu.addAction(openAct)
        self.file_menu_actions.append(openAct)

        saveAct = qtg.QAction('&Save Plan')
        saveAct.setShortcut(qtg.QKeySequence.Save)
        saveAct.setStatusTip('Save the Design Plan')
        saveAct.triggered.connect(lambda: self.save_plan(False))
        self.file_menu.addAction(saveAct)
        self.file_menu_actions.append(saveAct)

        saveAsAct = qtg.QAction('Save Plan &As')
        saveAsAct.setShortcut(qtg.QKeySequence.SaveAs)
        saveAsAct.setStatusTip('Save the Design Plan As')
        saveAsAct.triggered.connect(lambda: self.save_plan(True))
        self.file_menu.addAction(saveAsAct)
        self.file_menu_actions.append(saveAsAct)

        svgAct = qtg.QAction('&Export Image')
        svgAct.setShortcut(qtg.QKeySequence(qtc.Qt.CTRL | qtc.Qt.Key_E))
        svgAct.setStatusTip('Save the implementation Image')
        svgAct.triggered.connect(self.saveSvg)
        self.file_menu.addAction(svgAct)
        self.file_menu_actions.append(svgAct)

        quitAct = qtg.QAction('&Quit')
        quitAct.setShortcut(qtg.QKeySequence(qtc.Qt.CTRL | qtc.Qt.Key_Q))
        quitAct.setStatusTip('Quit the application')
        quitAct.triggered.connect(self.quit)  # TODO prompt for save
        self.file_menu.addAction(quitAct)
        self.file_menu_actions.append(quitAct)

        self.edit_menu = self.w.menuBar().addMenu("&Edit")
        self.edit_menu_actions = []

        recipeAct = qtg.QAction('Enabled &Recipes')
        recipeAct.setStatusTip('Edit the Enabled Recipes')
        recipeAct.triggered.connect(self.recipe_window.show)
        self.edit_menu.addAction(recipeAct)
        self.edit_menu_actions.append(recipeAct)

        self.distAct = qtg.QAction('&Distribute Machines')
        self.distAct.setStatusTip(
            'Show a recipe quantity distributed across an integer number of machines'
        )
        self.distAct.setCheckable(True)
        self.distAct.triggered.connect(self.go_fn)
        self.edit_menu.addAction(self.distAct)
        self.edit_menu_actions.append(self.distAct)

        excessAct = qtg.QAction('Remove &Excess')
        excessAct.setStatusTip('Remove excess Inputs from Plan')
        excessAct.triggered.connect(self.remove_excess_inputs)
        self.edit_menu.addAction(excessAct)
        self.edit_menu_actions.append(excessAct)
Пример #8
0
    def __init__(self, main_page):
        self.__main_page = main_page
        self.patient_dict_container = PatientDictContainer()
        self.is_four_view = False
        self.has_image_registration_single = False
        self.has_image_registration_four = False

        ##############################
        # Init all actions and icons #
        ##############################

        # Open patient
        self.icon_open = QtGui.QIcon()
        self.icon_open.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/open_patient_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_open = QtGui.QAction()
        self.action_open.setIcon(self.icon_open)
        self.action_open.setText("Open new patient")
        self.action_open.setIconVisibleInMenu(True)

        # Save RTSTRUCT changes action
        self.icon_save_structure = QtGui.QIcon()
        self.icon_save_structure.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/save_all_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_save_structure = QtGui.QAction()
        self.action_save_structure.setIcon(self.icon_save_structure)
        self.action_save_structure.setText("Save RTSTRUCT changes")
        self.action_save_structure.setIconVisibleInMenu(True)
        self.action_save_structure.triggered.connect(self.save_struct_handler)

        # Save as Anonymous Action
        self.icon_save_as_anonymous = QtGui.QIcon()
        self.icon_save_as_anonymous.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/anonlock_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_save_as_anonymous = QtGui.QAction()
        self.action_save_as_anonymous.setIcon(self.icon_save_as_anonymous)
        self.action_save_as_anonymous.setText("Save as Anonymous")
        self.action_save_as_anonymous.triggered.connect(
            self.anonymization_handler)

        # Exit action
        self.action_exit = QtGui.QAction()
        self.action_exit.setText("Exit")
        self.action_exit.triggered.connect(self.action_exit_handler)

        # Zoom Out Action
        self.icon_zoom_out = QtGui.QIcon()
        self.icon_zoom_out.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/zoom_out_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_zoom_out = QtGui.QAction()
        self.action_zoom_out.setIcon(self.icon_zoom_out)
        self.action_zoom_out.setIconVisibleInMenu(True)
        self.action_zoom_out.setText("Zoom Out")
        self.action_zoom_out.triggered.connect(self.zoom_out_handler)

        # Zoom In Action
        self.icon_zoom_in = QtGui.QIcon()
        self.icon_zoom_in.addPixmap(
            QtGui.QPixmap(
                resource_path("res/images/btn-icons/zoom_in_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_zoom_in = QtGui.QAction()
        self.action_zoom_in.setIcon(self.icon_zoom_in)
        self.action_zoom_in.setIconVisibleInMenu(True)
        self.action_zoom_in.setText("Zoom In")
        self.action_zoom_in.triggered.connect(self.zoom_in_handler)

        # Transect Action
        self.icon_transect = QtGui.QIcon()
        self.icon_transect.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/transect_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_transect = QtGui.QAction()
        self.action_transect.setIcon(self.icon_transect)
        self.action_transect.setIconVisibleInMenu(True)
        self.action_transect.setText("Transect")
        self.action_transect.triggered.connect(self.transect_handler)

        # Add-On Options Action
        self.icon_add_ons = QtGui.QIcon()
        self.icon_add_ons.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/management_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_add_ons = QtGui.QAction()
        self.action_add_ons.setIcon(self.icon_add_ons)
        self.action_add_ons.setIconVisibleInMenu(True)
        self.action_add_ons.setText("Add-On Options")
        self.action_add_ons.triggered.connect(self.add_on_options_handler)

        # Switch to Single View Action
        self.icon_one_view = QtGui.QIcon()
        self.icon_one_view.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/axial_view_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_one_view = QtGui.QAction()
        self.action_one_view.setIcon(self.icon_one_view)
        self.action_one_view.setIconVisibleInMenu(True)
        self.action_one_view.setText("One View")
        self.action_one_view.triggered.connect(self.one_view_handler)

        # Switch to 4 Views Action
        self.icon_four_views = QtGui.QIcon()
        self.icon_four_views.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/four_views_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_four_views = QtGui.QAction()
        self.action_four_views.setIcon(self.icon_four_views)
        self.action_four_views.setIconVisibleInMenu(True)
        self.action_four_views.setText("Four Views")
        self.action_four_views.triggered.connect(self.four_views_handler)

        # Show cut lines
        self.icon_cut_lines = QtGui.QIcon()
        self.icon_cut_lines.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/cut_line_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_show_cut_lines = QtGui.QAction()
        self.action_show_cut_lines.setIcon(self.icon_cut_lines)
        self.action_show_cut_lines.setIconVisibleInMenu(True)
        self.action_show_cut_lines.setText("Show Cut Lines")
        self.action_show_cut_lines.triggered.connect(self.cut_lines_handler)

        # Export Pyradiomics Action
        self.action_pyradiomics_export = QtGui.QAction()
        self.action_pyradiomics_export.setText("Export Pyradiomics")
        self.action_pyradiomics_export.triggered.connect(
            self.pyradiomics_export_handler)

        # Export DVH Action
        self.action_dvh_export = QtGui.QAction()
        self.action_dvh_export.setText("Export DVH")
        self.action_dvh_export.triggered.connect(self.export_dvh_handler)

        # Create Windowing menu
        self.icon_windowing = QtGui.QIcon()
        self.icon_windowing.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/windowing_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.menu_windowing = QtWidgets.QMenu()
        self.init_windowing_menu()

        self.windowing_window = Windowing(self)
        self.windowing_window.done_signal.connect(self.update_views)

        # Create Export menu
        self.icon_export = QtGui.QIcon()
        self.icon_export.addPixmap(
            QtGui.QPixmap(
                resource_path("res/images/btn-icons/export_purple_icon.png")),
            QtGui.QIcon.Normal,
            QtGui.QIcon.On,
        )
        self.menu_export = QtWidgets.QMenu()
        self.menu_export.setTitle("Export")
        self.menu_export.addAction(self.action_pyradiomics_export)
        self.menu_export.addAction(self.action_dvh_export)

        # Image Fusion Action
        self.icon_image_fusion = QtGui.QIcon()
        self.icon_image_fusion.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/image_fusion_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_image_fusion = QtGui.QAction()
        self.action_image_fusion.setIcon(self.icon_image_fusion)
        self.action_image_fusion.setIconVisibleInMenu(True)
        self.action_image_fusion.setText("Image Fusion")
Пример #9
0
 def _add_title(self, menu, text: str, action_parent=None):
     action = QtGui.QAction(text, action_parent or menu)
     action.setEnabled(False)
     action.setFont(self.title_font)
     menu.addAction(action)
Пример #10
0
    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)
Пример #11
0
    def createActions(self):
        self.newAct = QtGui.QAction(QtGui.QIcon(':/images/new.png'),
                                    "&New",
                                    self,
                                    shortcut=QtGui.QKeySequence.New,
                                    statusTip="Create a new file",
                                    triggered=self.newFile)

        self.openAct = QtGui.QAction(QtGui.QIcon(':/images/open.png'),
                                     "&Open...",
                                     self,
                                     shortcut=QtGui.QKeySequence.Open,
                                     statusTip="Open an existing file",
                                     triggered=self.open)

        self.saveAct = QtGui.QAction(QtGui.QIcon(':/images/save.png'),
                                     "&Save",
                                     self,
                                     shortcut=QtGui.QKeySequence.Save,
                                     statusTip="Save the document to disk",
                                     triggered=self.save)

        self.saveAsAct = QtGui.QAction(
            "Save &As...",
            self,
            shortcut=QtGui.QKeySequence.SaveAs,
            statusTip="Save the document under a new name",
            triggered=self.saveAs)

        self.exitAct = QtGui.QAction("E&xit",
                                     self,
                                     shortcut="Ctrl+Q",
                                     statusTip="Exit the application",
                                     triggered=self.close)

        self.cutAct = QtGui.QAction(
            QtGui.QIcon(':/images/cut.png'),
            "Cu&t",
            self,
            shortcut=QtGui.QKeySequence.Cut,
            statusTip="Cut the current selection's contents to the clipboard",
            triggered=self.textEdit.cut)

        self.copyAct = QtGui.QAction(
            QtGui.QIcon(':/images/copy.png'),
            "&Copy",
            self,
            shortcut=QtGui.QKeySequence.Copy,
            statusTip="Copy the current selection's contents to the clipboard",
            triggered=self.textEdit.copy)

        self.pasteAct = QtGui.QAction(
            QtGui.QIcon(':/images/paste.png'),
            "&Paste",
            self,
            shortcut=QtGui.QKeySequence.Paste,
            statusTip=
            "Paste the clipboard's contents into the current selection",
            triggered=self.textEdit.paste)

        self.aboutAct = QtGui.QAction(
            "&About",
            self,
            statusTip="Show the application's About box",
            triggered=self.about)

        self.aboutQtAct = QtGui.QAction(
            "About &Qt",
            self,
            statusTip="Show the Qt library's About box",
            triggered=qApp.aboutQt)

        self.cutAct.setEnabled(False)
        self.copyAct.setEnabled(False)
        self.textEdit.copyAvailable.connect(self.cutAct.setEnabled)
        self.textEdit.copyAvailable.connect(self.copyAct.setEnabled)
Пример #12
0
    def contextMenuEvent(self, event: QtGui.QContextMenuEvent) -> None:
        local_pos = QPointF(self.mapFromGlobal(event.globalPos()))
        local_pos -= self.get_area_canvas_offset()
        self._next_node_location = self.qt_local_to_game_loc(local_pos)

        menu = QtWidgets.QMenu(self)
        if self.state is None:
            menu.addAction(self._show_all_connections_action)
        if self.edit_mode:
            menu.addAction(self._create_node_action)
            menu.addAction(self._move_node_action)
            self._move_node_action.setEnabled(
                self.highlighted_node is not None)
            if self.highlighted_node is not None:
                self._move_node_action.setText(
                    f"Move {self.highlighted_node.name} here")

        # Areas Menu
        menu.addSeparator()
        areas_at_mouse = self._other_areas_at_position(local_pos)

        for area in areas_at_mouse:
            sub_menu = QtWidgets.QMenu(f"Area: {area.name}", self)
            sub_menu.addAction("View area").triggered.connect(
                functools.partial(self.SelectAreaRequest.emit, area))
            if self.edit_mode:
                sub_menu.addAction(
                    "Create dock here to this area").triggered.connect(
                        functools.partial(self.CreateDockRequest.emit,
                                          self._next_node_location, area))
            menu.addMenu(sub_menu)

        if not areas_at_mouse:
            sub_menu = QtGui.QAction("No areas here", self)
            sub_menu.setEnabled(False)
            menu.addAction(sub_menu)

        # Nodes Menu
        menu.addSeparator()
        nodes_at_mouse = self._nodes_at_position(local_pos)
        if self.highlighted_node in nodes_at_mouse:
            nodes_at_mouse.remove(self.highlighted_node)

        for node in nodes_at_mouse:
            if len(nodes_at_mouse) == 1:
                menu.addAction(node.name).setEnabled(False)
                sub_menu = menu
            else:
                sub_menu = QtWidgets.QMenu(node.name, self)

            sub_menu.addAction("Highlight this").triggered.connect(
                functools.partial(self.SelectNodeRequest.emit, node))
            view_connections = sub_menu.addAction("View connections to this")
            view_connections.setEnabled(
                (self.edit_mode and self.highlighted_node != node) or
                (node in self.area.connections.get(self.highlighted_node, {})))
            view_connections.triggered.connect(
                functools.partial(self.SelectConnectionsRequest.emit, node))

            if self.edit_mode:
                sub_menu.addSeparator()
                sub_menu.addAction(
                    "Replace connection with Trivial").triggered.connect(
                        functools.partial(
                            self.ReplaceConnectionsRequest.emit,
                            node,
                            Requirement.trivial(),
                        ))
                sub_menu.addAction("Remove connection").triggered.connect(
                    functools.partial(
                        self.ReplaceConnectionsRequest.emit,
                        node,
                        Requirement.impossible(),
                    ))
                if areas_at_mouse:
                    move_menu = QtWidgets.QMenu("Move to...", self)
                    for area in areas_at_mouse:
                        move_menu.addAction(area.name).triggered.connect(
                            functools.partial(
                                self.MoveNodeToAreaRequest.emit,
                                node,
                                area,
                            ))
                    sub_menu.addMenu(move_menu)

            if sub_menu != menu:
                menu.addMenu(sub_menu)

        if not nodes_at_mouse:
            sub_menu = QtGui.QAction("No other nodes here", self)
            sub_menu.setEnabled(False)
            menu.addAction(sub_menu)

        # Done

        menu.exec_(event.globalPos())
Пример #13
0
    def onTrayIconActivated(self, reason):
        print("onTrayIconActivated:", reason)
        if reason == QSystemTrayIcon.Trigger:
            print("JAWOLLO")
        elif reason == QSystemTrayIcon.DoubleClick:

            print("Tray icon double clicked")


# Creating the options
menu = QtWidgets.QMenu()

# FAlls es keine Daten gibt ... dann zeig nix an ;)
try:
    option1 = QtGui.QAction(QtGui.QIcon(':/images/icon.png'),
                            naechste_stunde(data)['Fach'])
    option2 = QtGui.QAction(naechste_stunde(data)['Uhrzeit'], )
    #option2.triggered.connect(print("test"))

except:
    option1 = QtGui.QAction(QtGui.QIcon(':/images/icon.png'), "")
    option2 = QtGui.QAction("", )
    #option2.setText("JAWOLLO")

menu.addAction(option1)
menu.addAction(option2)
#menu.addAction("test", notifcation)

edit = menu.addMenu("Stundenplan")
tag_1 = edit.addMenu("Montag")
tag_2 = edit.addMenu("Dienstag")
Пример #14
0
    def __init__(self, options: Options, preset_manager: PresetManager,
                 network_client, preview: bool):
        super().__init__()
        self.setupUi(self)
        self.setWindowTitle("Randovania {}".format(VERSION))
        self._is_preview_mode = preview
        self.setAcceptDrops(True)
        common_qt_lib.set_default_window_icon(self)

        self.setup_about_text()
        self.setup_welcome_text()
        self.browse_racetime_label.setText(
            self.browse_racetime_label.text().replace("color:#0000ff;", ""))

        self._preset_manager = preset_manager
        self.network_client = network_client

        if preview:
            debug.set_level(2)

        if randovania.is_frozen():
            self.menu_bar.removeAction(self.menu_edit.menuAction())

        # Signals
        self.options_changed_signal.connect(self.on_options_changed)
        self.GameDetailsSignal.connect(self._open_game_details)
        self.InitPostShowSignal.connect(self.initialize_post_show)

        self.intro_play_now_button.clicked.connect(
            lambda: self.main_tab_widget.setCurrentWidget(self.tab_play))
        self.open_faq_button.clicked.connect(self._open_faq)
        self.open_database_viewer_button.clicked.connect(
            partial(self._open_data_visualizer_for_game,
                    RandovaniaGame.METROID_PRIME_ECHOES))

        self.import_permalink_button.clicked.connect(self._import_permalink)
        self.import_game_file_button.clicked.connect(self._import_spoiler_log)
        self.browse_racetime_button.clicked.connect(self._browse_racetime)
        self.create_new_seed_button.clicked.connect(
            lambda: self.main_tab_widget.setCurrentWidget(self.tab_create_seed
                                                          ))

        # Menu Bar
        self.game_menus = []
        self.menu_action_edits = []

        for game in RandovaniaGame.sorted_all_games():
            # Sub-Menu in Open Menu
            game_menu = QtWidgets.QMenu(self.menu_open)
            game_menu.setTitle(_t(game.long_name))
            game_menu.game = game

            if game.data.development_state.can_view(False):
                self.menu_open.addAction(game_menu.menuAction())
            self.game_menus.append(game_menu)

            game_trick_details_menu = QtWidgets.QMenu(game_menu)
            game_trick_details_menu.setTitle(_t("Trick Details"))
            self._setup_trick_difficulties_menu_on_show(
                game_trick_details_menu, game)

            game_data_visualizer_action = QtGui.QAction(game_menu)
            game_data_visualizer_action.setText(_t("Data Visualizer"))
            game_data_visualizer_action.triggered.connect(
                partial(self._open_data_visualizer_for_game, game))

            game_menu.addAction(game_trick_details_menu.menuAction())
            game_menu.addAction(game_data_visualizer_action)

            # Data Editor
            action = QtGui.QAction(self)
            action.setText(_t(game.long_name))
            self.menu_internal.addAction(action)
            action.triggered.connect(
                partial(self._open_data_editor_for_game, game))
            self.menu_action_edits.append(action)

        self.menu_action_edit_existing_database.triggered.connect(
            self._open_data_editor_prompt)
        self.menu_action_validate_seed_after.triggered.connect(
            self._on_validate_seed_change)
        self.menu_action_timeout_generation_after_a_time_limit.triggered.connect(
            self._on_generate_time_limit_change)
        self.menu_action_dark_mode.triggered.connect(
            self._on_menu_action_dark_mode)
        self.menu_action_experimental_games.triggered.connect(
            self._on_menu_action_experimental_games)
        self.menu_action_open_auto_tracker.triggered.connect(
            self._open_auto_tracker)
        self.menu_action_previously_generated_games.triggered.connect(
            self._on_menu_action_previously_generated_games)
        self.menu_action_log_files_directory.triggered.connect(
            self._on_menu_action_log_files_directory)
        self.menu_action_layout_editor.triggered.connect(
            self._on_menu_action_layout_editor)

        # Setting this event only now, so all options changed trigger only once
        options.on_options_changed = self.options_changed_signal.emit
        self._options = options

        self.main_tab_widget.setCurrentIndex(0)
Пример #15
0
    def __init__(self, main_page):
        self.__main_page = main_page
        self.patient_dict_container = PatientDictContainer()

        ##############################
        # Init all actions and icons #
        ##############################

        # Open patient
        self.icon_open = QtGui.QIcon()
        self.icon_open.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/open_patient_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_open = QtGui.QAction()
        self.action_open.setIcon(self.icon_open)
        self.action_open.setText("Open new patient")
        self.action_open.setIconVisibleInMenu(True)

        # Save RTSTRUCT changes action
        self.icon_save_structure = QtGui.QIcon()
        self.icon_save_structure.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/save_all_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_save_structure = QtGui.QAction()
        self.action_save_structure.setIcon(self.icon_save_structure)
        self.action_save_structure.setText("Save RTSTRUCT changes")
        self.action_save_structure.setIconVisibleInMenu(True)
        self.action_save_structure.triggered.connect(self.save_struct_handler)

        # Save as Anonymous Action
        self.icon_save_as_anonymous = QtGui.QIcon()
        self.icon_save_as_anonymous.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/anonlock_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_save_as_anonymous = QtGui.QAction()
        self.action_save_as_anonymous.setIcon(self.icon_save_as_anonymous)
        self.action_save_as_anonymous.setText("Save as Anonymous")
        self.action_save_as_anonymous.triggered.connect(
            self.anonymization_handler)

        # Exit action
        self.action_exit = QtGui.QAction()
        self.action_exit.setText("Exit")
        self.action_exit.triggered.connect(self.action_exit_handler)

        # Zoom Out Action
        self.icon_zoom_out = QtGui.QIcon()
        self.icon_zoom_out.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/zoom_out_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_zoom_out = QtGui.QAction()
        self.action_zoom_out.setIcon(self.icon_zoom_out)
        self.action_zoom_out.setIconVisibleInMenu(True)
        self.action_zoom_out.setText("Zoom Out")
        self.action_zoom_out.triggered.connect(self.__main_page.zoom_out)

        # Zoom In Action
        self.icon_zoom_in = QtGui.QIcon()
        self.icon_zoom_in.addPixmap(
            QtGui.QPixmap(
                resource_path("res/images/btn-icons/zoom_in_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_zoom_in = QtGui.QAction()
        self.action_zoom_in.setIcon(self.icon_zoom_in)
        self.action_zoom_in.setIconVisibleInMenu(True)
        self.action_zoom_in.setText("Zoom In")
        self.action_zoom_in.triggered.connect(self.__main_page.zoom_in)

        # Transect Action
        self.icon_transect = QtGui.QIcon()
        self.icon_transect.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/transect_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_transect = QtGui.QAction()
        self.action_transect.setIcon(self.icon_transect)
        self.action_transect.setIconVisibleInMenu(True)
        self.action_transect.setText("Transect")
        self.action_transect.triggered.connect(self.transect_handler)

        # Add-On Options Action
        self.icon_add_ons = QtGui.QIcon()
        self.icon_add_ons.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/management_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.action_add_ons = QtGui.QAction()
        self.action_add_ons.setIcon(self.icon_add_ons)
        self.action_add_ons.setIconVisibleInMenu(True)
        self.action_add_ons.setText("Add-On Options")
        self.action_add_ons.triggered.connect(self.add_on_options_handler)

        # Export Clinical Data Action
        self.action_clinical_data_export = QtGui.QAction()
        self.action_clinical_data_export.setText("Export Clinical Data")
        # TODO self.action_clinical_data_export.triggered.connect(clinical data check)

        # Export Pyradiomics Action
        self.action_pyradiomics_export = QtGui.QAction()
        self.action_pyradiomics_export.setText("Export Pyradiomics")
        self.action_pyradiomics_export.triggered.connect(
            self.pyradiomics_export_handler)

        # Export DVH Action
        self.action_dvh_export = QtGui.QAction()
        self.action_dvh_export.setText("Export DVH")
        self.action_dvh_export.triggered.connect(self.export_dvh_handler)

        # Create Windowing menu
        self.icon_windowing = QtGui.QIcon()
        self.icon_windowing.addPixmap(
            QtGui.QPixmap(
                resource_path(
                    "res/images/btn-icons/windowing_purple_icon.png")),
            QtGui.QIcon.Normal, QtGui.QIcon.On)
        self.menu_windowing = QtWidgets.QMenu()
        self.init_windowing_menu()

        # Create Export menu
        self.icon_export = QtGui.QIcon()
        self.icon_export.addPixmap(
            QtGui.QPixmap(
                resource_path("res/images/btn-icons/export_purple_icon.png")),
            QtGui.QIcon.Normal,
            QtGui.QIcon.On,
        )
        self.menu_export = QtWidgets.QMenu()
        self.menu_export.setTitle("Export")
        self.menu_export.addAction(self.action_clinical_data_export)
        self.menu_export.addAction(self.action_pyradiomics_export)
        self.menu_export.addAction(self.action_dvh_export)
Пример #16
0
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self, flags=QtCore.Qt.WindowType.Window)

        # Fix icon issues on windows systems
        if sys.platform == 'win32':
            # Explicitly set app-id as suggested by https://stackoverflow.com/a/1552105
            appid = u'vxpy.application.0.0.1'  # arbitrary string
            ctypes.windll.shell32.SetCurrentProcessExplicitAppUserModelID(appid)

        # Set offsets
        row2_yoffset = 0
        row2_xoffset = 0
        side_window_borders = 5
        x_spacing = 5

        # Set icon
        iconpath = os.path.join(str(vxpy.__path__[0]), 'vxpy_icon.svg')
        self.setWindowIcon(QtGui.QIcon(iconpath))

        self.subwindows = []

        # Set up main window
        self.setWindowTitle('vxPy - vision experiments in Python')

        # Setup central widget
        self.setCentralWidget(QtWidgets.QWidget(parent=self, f=QtCore.Qt.WindowType.Widget))
        self.centralWidget().setLayout(QtWidgets.QHBoxLayout())

        # Control widgets
        self.control_wdgt = QtWidgets.QWidget()
        self.control_wdgt.setLayout(QtWidgets.QHBoxLayout())
        self.centralWidget().layout().addWidget(self.control_wdgt)

        # Main monitoring widget
        self.monitoring_wdgt = QtWidgets.QWidget()
        self.monitoring_wdgt.setLayout(QtWidgets.QVBoxLayout())
        self.centralWidget().layout().addWidget(self.monitoring_wdgt)

        # Process monitor
        self.process_monitor = core_widgets.ProcessMonitorWidget(self)
        self.process_monitor.create_hooks()
        self.monitoring_wdgt.layout().addWidget(self.process_monitor)

        # Recordings
        self.recordings = core_widgets.RecordingWidget(self)
        self.recordings.create_hooks()
        self.control_wdgt.layout().addWidget(self.recordings)

        # Protocols}
        self.protocols = core_widgets.Protocols(self)
        self.protocols.create_hooks()
        self.control_wdgt.layout().addWidget(self.protocols)

        # Logger
        self.log_display = core_widgets.LoggingWidget(self)
        self.monitoring_wdgt.layout().addWidget(self.log_display)

        # Set geometry
        self.setMinimumHeight(500)
        screen = vxipc.Process.app.screens()[config.CONF_GUI_SCREEN]

        self.screenGeo = screen.geometry()
        width, height = self.screenGeo.width(), self.screenGeo.height()
        xpos, ypos = self.screenGeo.x(), self.screenGeo.y()
        self.move(xpos, ypos)
        self.resize(width-side_window_borders, height // 2 if height <= 1080 else 540)

        # Optional sub windows
        titlebar_height = 40
        bottom_height_offset = 80
        # if sys.platform == 'win32':
        #     titlebar_height = 40
        #     bottom_height_offset = 120
        # else:
        #     titlebar_height = 0
        #     bottom_height_offset = 120
        main_window_height = self.size().height() + titlebar_height
        addon_window_default_dims = (600, 600)

        # Addon widget window if any addons are selected in config
        self.addon_widget_window = None
        if any([config.CONF_DISPLAY_USE, config.CONF_CAMERA_USE, config.CONF_IO_USE]) and bool(config.CONF_GUI_ADDONS):

            # Create windowed tab
            self.addon_widget_window = vxgui.AddonWindow(self)

            for process_name, addons in config.CONF_GUI_ADDONS.items():
                self.addon_widget_window.create_addon_tabs(process_name)

            # Create hooks
            self.addon_widget_window.create_hooks()

            # Place and resize addon widget
            self.addon_widget_window.move(xpos + row2_xoffset,
                                          ypos + main_window_height + row2_yoffset)
            if height - self.size().height() - addon_window_default_dims[1] > bottom_height_offset:
                addon_height = addon_window_default_dims[1]
            else:
                addon_height = height - self.size().height() - bottom_height_offset
            self.addon_widget_window.resize(addon_window_default_dims[0], addon_height)

            # Add subwindow
            self.subwindows.append(self.addon_widget_window)

        # Add Plotter
        self.plotter = core_widgets.PlottingWindow(self)
        self.plotter.setMinimumHeight(300)


        # Place and resize
        addon_win_width = self.addon_widget_window.size().width() if self.addon_widget_window is not None else 0
        self.plotter.move(xpos + row2_xoffset + addon_win_width + x_spacing,
                          ypos + self.size().height() + titlebar_height + row2_yoffset)

        if height - self.size().height() - addon_window_default_dims[1] > bottom_height_offset:
            plotter_height = addon_window_default_dims[1]
        else:
            plotter_height = height - self.size().height() - bottom_height_offset

        self.plotter.resize(width - addon_win_width - x_spacing,
                            plotter_height)

        self.plotter.create_hooks()
        self.subwindows.append(self.plotter)

        # Setup menubar
        self.setMenuBar(QtWidgets.QMenuBar())

        # Windows actions
        self.menu_windows = QtWidgets.QMenu('Windows')
        self.menuBar().addMenu(self.menu_windows)

        self.window_toggles = []
        for subwin in self.subwindows:
            self.window_toggles.append(QtGui.QAction(f'Toggle {subwin.windowTitle()}'))
            self.window_toggles[-1].triggered.connect(subwin.toggle_visibility)
            self.menu_windows.addAction(self.window_toggles[-1])

        # Processes actions
        self.menu_process = QtWidgets.QMenu('Processes')
        self.menuBar().addMenu(self.menu_process)

        # Restart display module
        if config.CONF_DISPLAY_USE:
            self.menu_process.restart_display = QtGui.QAction('Restart display')
            self.menu_process.restart_display.triggered.connect(self.restart_display)
            self.menu_process.addAction(self.menu_process.restart_display)
            self.menu_process.restart_display.setShortcut('Ctrl+Alt+Shift+d')
            self.menu_process.restart_display.setAutoRepeat(False)

        # Restart camera module
        if config.CONF_CAMERA_USE:
            self.menu_process.restart_camera = QtGui.QAction('Restart camera')
            self.menu_process.restart_camera.triggered.connect(self.restart_camera)
            self.menu_process.addAction(self.menu_process.restart_camera)
            self.menu_process.restart_camera.setShortcut('Ctrl+Alt+Shift+c')
            self.menu_process.restart_camera.setAutoRepeat(False)

        # Set theme
        extra = {'density_scale': '-3', }
        apply_stylesheet(vxipc.Process.app, theme='dark_amber.xml', invert_secondary=False, extra=extra)
Пример #17
0
    def menu(self):
        menubar = QMenuBar(self)

        #--------------
        file_menu = menubar.addMenu('File')

        # open_act = QtGui.QAction('Open', self, checkable=True)
        # open_act = QtGui.QAction('Open', self)
        # open_act.triggered.connect(self.open_as_cb)
        file_menu.addAction("New (template)", self.new_model_cb,
                            QtGui.QKeySequence('Ctrl+n'))
        file_menu.addAction("Open", self.open_as_cb,
                            QtGui.QKeySequence('Ctrl+o'))
        file_menu.addAction("Save", self.save_cb, QtGui.QKeySequence('Ctrl+s'))
        # recent_act = QtGui.QAction('Recent', self)
        # save_act = QtGui.QAction('Save', self)
        # save_act.triggered.connect(self.save_cb)
        # saveas_act = QtGui.QAction('Save As my.xml', self)

        # file_menu.setStatusTip('enable/disable Dark mode')
        # new_model_act = QtGui.QAction('', self)
        # file_menu.addAction(new_model_act)
        # new_model_act.triggered.connect(self.new_model_cb)

        #--------------
        samples_menu = file_menu.addMenu("Samples (copy of)")
        biorobots_act = QtGui.QAction('biorobots', self)
        samples_menu.addAction(biorobots_act)
        biorobots_act.triggered.connect(self.biorobots_cb)

        cancer_biorobots_act = QtGui.QAction('cancer biorobots', self)
        samples_menu.addAction(cancer_biorobots_act)
        cancer_biorobots_act.triggered.connect(self.cancer_biorobots_cb)

        hetero_act = QtGui.QAction('heterogeneity', self)
        samples_menu.addAction(hetero_act)
        hetero_act.triggered.connect(self.hetero_cb)

        pred_prey_act = QtGui.QAction('predator-prey-farmer', self)
        samples_menu.addAction(pred_prey_act)
        pred_prey_act.triggered.connect(self.pred_prey_cb)

        virus_mac_act = QtGui.QAction('virus-macrophage', self)
        samples_menu.addAction(virus_mac_act)
        virus_mac_act.triggered.connect(self.virus_mac_cb)

        worm_act = QtGui.QAction('worm', self)
        samples_menu.addAction(worm_act)
        worm_act.triggered.connect(self.worm_cb)

        cancer_immune_act = QtGui.QAction('cancer immune (3D)', self)
        samples_menu.addAction(cancer_immune_act)
        cancer_immune_act.triggered.connect(self.cancer_immune_cb)

        template_act = QtGui.QAction('template', self)
        samples_menu.addAction(template_act)
        template_act.triggered.connect(self.template_cb)

        subcell_act = QtGui.QAction('subcellular', self)
        samples_menu.addAction(subcell_act)
        subcell_act.triggered.connect(self.subcell_cb)

        #--------------
        # file_menu.addAction(open_act)
        # file_menu.addAction(recent_act)
        # file_menu.addAction(save_act)
        # file_menu.addAction(save_act, self.save_act, QtGui.QKeySequence("Ctrl+s"))
        # file_menu.addAction(saveas_act)

        #--------------
        self.models_menu = menubar.addMenu('Models')
        models_menu_act = QtGui.QAction('-----', self)
        self.models_menu.addAction(models_menu_act)
        models_menu_act.triggered.connect(self.select_current_model_cb)
        # self.models_menu.addAction('Load sample', self.select_current_model_cb)

        #--------------
        tools_menu = menubar.addMenu('Tools')
        tools_menu_act = QtGui.QAction('Validate', self)
        tools_menu.addAction(tools_menu_act)
Пример #18
0
 def add_action(name: str, signal: QtCore.Signal) -> None:
     set_unimportant_task = QtGui.QAction(name)
     set_unimportant_task.triggered.connect(lambda: signal.emit(task))
     actions.append(set_unimportant_task)
Пример #19
0
    def __init__(self, *args):
        super().__init__(*args)

        self.config = config.read()

        self.resize(1000, 600)
        self.setWindowTitle(APP_NAME)

        self.about_dialog = None
        self.connection_dialog = None
        self.preferences_dialog = None

        # network
        self.network = Network()
        self.network.statusChanged.connect(self._network_status_changed)
        self.network.messageFromWeechat.connect(self._network_weechat_msg)

        # list of buffers
        self.list_buffers = BufferListWidget()
        self.list_buffers.currentRowChanged.connect(self._buffer_switch)

        # default buffer
        self.buffers = [Buffer()]
        self.stacked_buffers = QtWidgets.QStackedWidget()
        self.stacked_buffers.addWidget(self.buffers[0].widget)

        # splitter with buffers + chat/input
        splitter = QtWidgets.QSplitter()
        splitter.addWidget(self.list_buffers)
        splitter.addWidget(self.stacked_buffers)

        self.setCentralWidget(splitter)

        if self.config.getboolean('look', 'statusbar'):
            self.statusBar().visible = True

        # actions for menu and toolbar
        actions_def = {
            'connect': [
                'network-connect.png',
                'Connect to WeeChat',
                'Ctrl+O',
                self.open_connection_dialog,
            ],
            'disconnect': [
                'network-disconnect.png',
                'Disconnect from WeeChat',
                'Ctrl+D',
                self.network.disconnect_weechat,
            ],
            'debug': [
                'edit-find.png',
                'Open debug console window',
                'Ctrl+B',
                self.network.open_debug_dialog,
            ],
            'preferences': [
                'preferences-other.png',
                'Change preferences',
                'Ctrl+P',
                self.open_preferences_dialog,
            ],
            'about': [
                'help-about.png',
                'About QWeeChat',
                'Ctrl+H',
                self.open_about_dialog,
            ],
            'save connection': [
                'document-save.png',
                'Save connection configuration',
                'Ctrl+S',
                self.save_connection,
            ],
            'quit': [
                'application-exit.png',
                'Quit application',
                'Ctrl+Q',
                self.close,
            ],
        }
        self.actions = {}
        for name, action in list(actions_def.items()):
            self.actions[name] = QtGui.QAction(
                QtGui.QIcon(
                    resource_filename(__name__, 'data/icons/%s' % action[0])),
                name.capitalize(), self)
            self.actions[name].setToolTip(f'{action[1]} ({action[2]})')
            self.actions[name].setShortcut(action[2])
            self.actions[name].triggered.connect(action[3])

        # menu
        self.menu = self.menuBar()
        menu_file = self.menu.addMenu('&File')
        menu_file.addActions([
            self.actions['connect'], self.actions['disconnect'],
            self.actions['preferences'], self.actions['save connection'],
            self.actions['quit']
        ])
        menu_window = self.menu.addMenu('&Window')
        menu_window.addAction(self.actions['debug'])
        menu_help = self.menu.addMenu('&Help')
        menu_help.addAction(self.actions['about'])
        self.network_status = QtWidgets.QLabel()
        self.network_status.setFixedHeight(20)
        self.network_status.setFixedWidth(200)
        self.network_status.setContentsMargins(0, 0, 10, 0)
        self.network_status.setAlignment(QtCore.Qt.AlignRight)
        if hasattr(self.menu, 'setCornerWidget'):
            self.menu.setCornerWidget(self.network_status,
                                      QtCore.Qt.TopRightCorner)
        self.network_status_set(STATUS_DISCONNECTED)

        # toolbar
        toolbar = self.addToolBar('toolBar')
        toolbar.setToolButtonStyle(QtCore.Qt.ToolButtonTextUnderIcon)
        toolbar.addActions([
            self.actions['connect'], self.actions['disconnect'],
            self.actions['debug'], self.actions['preferences'],
            self.actions['about'], self.actions['quit']
        ])

        self.buffers[0].widget.input.setFocus()

        # open debug dialog
        if self.config.getboolean('look', 'debug'):
            self.network.open_debug_dialog()

        # auto-connect to relay
        if self.config.getboolean('relay', 'autoconnect'):
            self.network.connect_weechat(
                hostname=self.config.get('relay', 'hostname', fallback=''),
                port=self.config.get('relay', 'port', fallback=''),
                ssl=self.config.getboolean('relay', 'ssl', fallback=''),
                password=self.config.get('relay', 'password', fallback=''),
                totp=None,
                lines=self.config.get('relay', 'lines', fallback=''),
            )

        self.show()