Exemplo n.º 1
0
    def sync(self) -> None:
        """
        Compare the notes gathered by the various wiki threads with the notes
        currently in our Anki collection and add, edit, and remove notes as needed
        to get Anki in sync with the TiddlyWiki notes.
        """
        self.form.progressBar.setMaximum(0)
        self.form.text.setText("Applying note changes to your collection...")
        userlog = ankisync.sync(self.notes, self.mw.col, self.conf['defaultDeck'])

        self.accept()
        self.mw.reset()
        tooltip(userlog)


def open_dialog() -> None:
    "Launch the sync dialog."
    dialog = ImportDialog(aqt.mw)
    if dialog.start_import():
        dialog.exec_()


if aqt.mw is not None:
    action = QAction(aqt.mw)
    action.setText("Sync from &TiddlyWiki")
    action.setShortcut(QKeySequence("Shift+Y"))
    aqt.mw.form.menuTools.addAction(action)
    action.triggered.connect(open_dialog)
    aqt.mw.addonManager.setConfigAction(__name__, edit_settings)
Exemplo n.º 2
0
    def __init__(self,
                 core_args=None,
                 core_env=None,
                 api_port=None,
                 api_key=None):
        QMainWindow.__init__(self)
        self._logger = logging.getLogger(self.__class__.__name__)

        QCoreApplication.setOrganizationDomain("nl")
        QCoreApplication.setOrganizationName("TUDelft")
        QCoreApplication.setApplicationName("Tribler")

        self.setWindowIcon(QIcon(QPixmap(get_image_path('tribler.png'))))

        self.gui_settings = QSettings('nl.tudelft.tribler')
        api_port = api_port or int(
            get_gui_setting(self.gui_settings, "api_port", DEFAULT_API_PORT))
        api_key = api_key or get_gui_setting(
            self.gui_settings, "api_key",
            hexlify(os.urandom(16)).encode('utf-8'))
        self.gui_settings.setValue("api_key", api_key)

        api_port = get_first_free_port(start=api_port, limit=100)
        request_manager.port, request_manager.key = api_port, api_key

        self.tribler_started = False
        self.tribler_settings = None
        # TODO: move version_id to tribler_common and get core version in the core crash message
        self.tribler_version = version_id
        self.debug_window = None

        self.error_handler = ErrorHandler(self)
        self.core_manager = CoreManager(api_port, api_key, self.error_handler)
        self.pending_requests = {}
        self.pending_uri_requests = []
        self.download_uri = None
        self.dialog = None
        self.create_dialog = None
        self.chosen_dir = None
        self.new_version_dialog = None
        self.start_download_dialog_active = False
        self.selected_torrent_files = []
        self.has_search_results = False
        self.last_search_query = None
        self.last_search_time = None
        self.start_time = time.time()
        self.token_refresh_timer = None
        self.shutdown_timer = None
        self.add_torrent_url_dialog_active = False

        sys.excepthook = self.error_handler.gui_error

        uic.loadUi(get_ui_file_path('mainwindow.ui'), self)
        TriblerRequestManager.window = self
        self.tribler_status_bar.hide()

        self.token_balance_widget.mouseReleaseEvent = self.on_token_balance_click

        def on_state_update(new_state):
            self.loading_text_label.setText(new_state)

        connect(self.core_manager.core_state_update, on_state_update)

        self.magnet_handler = MagnetHandler(self.window)
        QDesktopServices.setUrlHandler("magnet", self.magnet_handler,
                                       "on_open_magnet_link")

        self.debug_pane_shortcut = QShortcut(QKeySequence("Ctrl+d"), self)
        connect(self.debug_pane_shortcut.activated,
                self.clicked_menu_button_debug)
        self.import_torrent_shortcut = QShortcut(QKeySequence("Ctrl+o"), self)
        connect(self.import_torrent_shortcut.activated,
                self.on_add_torrent_browse_file)
        self.add_torrent_url_shortcut = QShortcut(QKeySequence("Ctrl+i"), self)
        connect(self.add_torrent_url_shortcut.activated,
                self.on_add_torrent_from_url)

        connect(self.top_search_bar.clicked, self.clicked_search_bar)

        # Remove the focus rect on OS X
        for widget in self.findChildren(QLineEdit) + self.findChildren(
                QListWidget) + self.findChildren(QTreeWidget):
            widget.setAttribute(Qt.WA_MacShowFocusRect, 0)

        self.menu_buttons = [
            self.left_menu_button_downloads,
            self.left_menu_button_discovered,
            self.left_menu_button_trust_graph,
            self.left_menu_button_popular,
        ]
        hide_xxx = get_gui_setting(self.gui_settings,
                                   "family_filter",
                                   True,
                                   is_bool=True)
        self.search_results_page.initialize_content_page(hide_xxx=hide_xxx)
        self.search_results_page.channel_torrents_filter_input.setHidden(True)

        self.settings_page.initialize_settings_page()
        self.downloads_page.initialize_downloads_page()
        self.loading_page.initialize_loading_page()
        self.discovering_page.initialize_discovering_page()

        self.discovered_page.initialize_content_page(hide_xxx=hide_xxx)

        self.popular_page.initialize_content_page(
            hide_xxx=hide_xxx,
            controller_class=PopularContentTableViewController)

        self.trust_page.initialize_trust_page()
        self.trust_graph_page.initialize_trust_graph()

        self.stackedWidget.setCurrentIndex(PAGE_LOADING)

        # Create the system tray icon
        if QSystemTrayIcon.isSystemTrayAvailable():
            self.tray_icon = QSystemTrayIcon()
            use_monochrome_icon = get_gui_setting(self.gui_settings,
                                                  "use_monochrome_icon",
                                                  False,
                                                  is_bool=True)
            self.update_tray_icon(use_monochrome_icon)

            # Create the tray icon menu
            menu = self.create_add_torrent_menu()
            show_downloads_action = QAction('Show downloads', self)
            connect(show_downloads_action.triggered,
                    self.clicked_menu_button_downloads)
            token_balance_action = QAction('Show token balance', self)
            connect(token_balance_action.triggered,
                    lambda _: self.on_token_balance_click(None))
            quit_action = QAction('Quit Tribler', self)
            connect(quit_action.triggered, self.close_tribler)
            menu.addSeparator()
            menu.addAction(show_downloads_action)
            menu.addAction(token_balance_action)
            menu.addSeparator()
            menu.addAction(quit_action)
            self.tray_icon.setContextMenu(menu)
        else:
            self.tray_icon = None

        self.left_menu_button_debug.setHidden(True)
        self.top_menu_button.setHidden(True)
        self.left_menu.setHidden(True)
        self.token_balance_widget.setHidden(True)
        self.settings_button.setHidden(True)
        self.add_torrent_button.setHidden(True)
        self.top_search_bar.setHidden(True)

        # Set various icons
        self.top_menu_button.setIcon(QIcon(get_image_path('menu.png')))

        self.search_completion_model = QStringListModel()
        completer = QCompleter()
        completer.setModel(self.search_completion_model)
        completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion)
        self.item_delegate = QStyledItemDelegate()
        completer.popup().setItemDelegate(self.item_delegate)
        completer.popup().setStyleSheet("""
        QListView {
            background-color: #404040;
        }

        QListView::item {
            color: #D0D0D0;
            padding-top: 5px;
            padding-bottom: 5px;
        }

        QListView::item:hover {
            background-color: #707070;
        }
        """)
        self.top_search_bar.setCompleter(completer)

        # Toggle debug if developer mode is enabled
        self.window().left_menu_button_debug.setHidden(not get_gui_setting(
            self.gui_settings, "debug", False, is_bool=True))

        # Start Tribler
        self.core_manager.start(core_args=core_args, core_env=core_env)

        connect(self.core_manager.events_manager.torrent_finished,
                self.on_torrent_finished)
        connect(self.core_manager.events_manager.new_version_available,
                self.on_new_version_available)
        connect(self.core_manager.events_manager.tribler_started,
                self.on_tribler_started)
        connect(self.core_manager.events_manager.low_storage_signal,
                self.on_low_storage)
        connect(self.core_manager.events_manager.tribler_shutdown_signal,
                self.on_tribler_shutdown_state_update)
        connect(self.core_manager.events_manager.config_error_signal,
                self.on_config_error_signal)

        # Install signal handler for ctrl+c events
        def sigint_handler(*_):
            self.close_tribler()

        signal.signal(signal.SIGINT, sigint_handler)

        # Resize the window according to the settings
        center = QApplication.desktop().availableGeometry(self).center()
        pos = self.gui_settings.value(
            "pos",
            QPoint(center.x() - self.width() * 0.5,
                   center.y() - self.height() * 0.5))
        size = self.gui_settings.value("size", self.size())

        self.move(pos)
        self.resize(size)

        self.show()

        self.add_to_channel_dialog = AddToChannelDialog(self.window())

        self.add_torrent_menu = self.create_add_torrent_menu()
        self.add_torrent_button.setMenu(self.add_torrent_menu)

        self.channels_menu_list = self.findChild(ChannelsMenuListWidget,
                                                 "channels_menu_list")

        connect(self.channels_menu_list.itemClicked,
                self.open_channel_contents_page)

        # The channels content page is only used to show subscribed channels, so we always show xxx
        # contents in it.
        connect(
            self.core_manager.events_manager.node_info_updated,
            lambda data: self.channels_menu_list.reload_if_necessary([data]),
        )
        connect(self.left_menu_button_new_channel.clicked,
                self.create_new_channel)
Exemplo n.º 3
0
    def createActions(self):
        self.newAct = QAction(QIcon(':/images/new.png'),
                              "&New",
                              self,
                              shortcut=QKeySequence.New,
                              statusTip="Create a new file",
                              triggered=self.newFile)
        self.openFileAct = QAction(QIcon(':/images/open.png'),
                                   "&Open file...",
                                   self,
                                   shortcut=QKeySequence.Open,
                                   statusTip="Open an existing file",
                                   triggered=self.open)
        self.openProjectAct = QAction(QIcon(':/images/openProject.png'),
                                      "&Open project...",
                                      self,
                                      shortcut=QKeySequence("Ctrl+Shift+O"),
                                      statusTip="Open an existing project",
                                      triggered=self.openProject)
        self.openTemplate = QAction(QIcon(':/images/sdt.png'),
                                    "&Open template...",
                                    self,
                                    shortcut=QKeySequence("Alt+Shift+O"),
                                    statusTip="Open an existing template",
                                    triggered=self.openTemplate)
        self.saveAct = QAction(QIcon(':/images/save.png'),
                               "&Save",
                               self,
                               shortcut=QKeySequence.Save,
                               statusTip="Save the document to disk",
                               triggered=self.save)
        self.saveAsAct = QAction(
            "Save &As...",
            self,
            shortcut=QKeySequence.SaveAs,
            statusTip="Save the document under a new name",
            triggered=self.saveAs)
        self.exitAct = QAction(
            "E&xit",
            self,
            shortcut=QKeySequence.Quit,
            statusTip="Exit the application",
            triggered=QApplication.instance().closeAllWindows)

        self.cutAct = QAction(
            QIcon(':/images/cut.png'),
            "Cu&t",
            self,
            shortcut=QKeySequence.Cut,
            statusTip="Cut the current selection's contents to the clipboard",
            triggered=self.cut)
        self.copyAct = QAction(
            QIcon(':/images/copy.png'),
            "&Copy",
            self,
            shortcut=QKeySequence.Copy,
            statusTip="Copy the current selection's contents to the clipboard",
            triggered=self.copy)
        self.pasteAct = QAction(
            QIcon(':/images/paste.png'),
            "&Paste",
            self,
            shortcut=QKeySequence.Paste,
            statusTip=
            "Paste the clipboard's contents into the current selection",
            triggered=self.paste)
        self.findAct = QAction(QIcon(':/images/find.png'),
                               "&Find",
                               self,
                               shortcut=QKeySequence.Find,
                               statusTip="Find text",
                               triggered=self.activateFind)

        self.settingsAct = QAction(QIcon(':/images/settings.png'),
                                   "Open settings",
                                   self,
                                   shortcut=QKeySequence("Ctrl+1"),
                                   statusTip="Open Settings",
                                   triggered=self.activateSettings)

        self.showProjectStructAct = QAction(
            QIcon(':/images/project_structure.png'),
            "Show structure",
            self,
            shortcut=QKeySequence("Alt+1"),
            statusTip="Show project structure",
            triggered=self.showProjectStructure)
        self.showOutputAct = QAction(QIcon(':/images/project_output.png'),
                                     "Show output",
                                     self,
                                     shortcut=QKeySequence("Alt+2"),
                                     statusTip="Show output",
                                     triggered=self.showOutput)
        self.showBookmarks = QAction(QIcon(':/images/project_bookmarks.png'),
                                     "Show bookmarks",
                                     self,
                                     shortcut=QKeySequence("Alt+3"),
                                     statusTip="Show bookmarks",
                                     triggered=self.showBookmarks)
        self.showAsDiagram = QAction(QIcon(':/images/diagram.png'),
                                     "Show as diagram",
                                     self,
                                     shortcut=QKeySequence("Alt+4"),
                                     statusTip="Show document as diagram",
                                     triggered=self.showAsDiagram)

        self.closeAct = QAction("Cl&ose",
                                self,
                                statusTip="Close the active window",
                                triggered=self.mdiArea.closeActiveSubWindow)
        self.closeAllAct = QAction("Close &All",
                                   self,
                                   statusTip="Close all the windows",
                                   triggered=self.mdiArea.closeAllSubWindows)
        self.tileAct = QAction("&Tile",
                               self,
                               statusTip="Tile the windows",
                               triggered=self.mdiArea.tileSubWindows)
        self.cascadeAct = QAction("&Cascade",
                                  self,
                                  statusTip="Cascade the windows",
                                  triggered=self.mdiArea.cascadeSubWindows)
        self.nextAct = QAction("Ne&xt",
                               self,
                               shortcut=QKeySequence.NextChild,
                               statusTip="Move the focus to the next window",
                               triggered=self.mdiArea.activateNextSubWindow)
        self.previousAct = QAction(
            "Pre&vious",
            self,
            shortcut=QKeySequence.PreviousChild,
            statusTip="Move the focus to the previous window",
            triggered=self.mdiArea.activatePreviousSubWindow)

        self.separatorAct = QAction(self)
        self.separatorAct.setSeparator(True)

        self.aboutAct = QAction("&About",
                                self,
                                statusTip="Show the application's About box",
                                triggered=self.about)
        self.aboutQtAct = QAction("About &Qt",
                                  self,
                                  statusTip="Show the Qt library's About box",
                                  triggered=QApplication.instance().aboutQt)
Exemplo n.º 4
0
    def __initActions(self):
        """
        Private method to define the user interface actions.
        """
        self.openUIAct = QAction(
            UI.PixmapCache.getIcon("openUI.png"),
            self.tr('&Open UI Files...'), self)
        self.openUIAct.setStatusTip(self.tr('Open UI files for display'))
        self.openUIAct.setWhatsThis(self.tr(
            """<b>Open UI Files</b>"""
            """<p>This opens some UI files for display.</p>"""
        ))
        self.openUIAct.triggered.connect(self.__openWidget)
        
        self.openQMAct = QAction(
            UI.PixmapCache.getIcon("openQM.png"),
            self.tr('Open &Translation Files...'), self)
        self.openQMAct.setStatusTip(self.tr(
            'Open Translation files for display'))
        self.openQMAct.setWhatsThis(self.tr(
            """<b>Open Translation Files</b>"""
            """<p>This opens some translation files for display.</p>"""
        ))
        self.openQMAct.triggered.connect(self.__openTranslation)
        
        self.reloadAct = QAction(
            UI.PixmapCache.getIcon("reload.png"),
            self.tr('&Reload Translations'), self)
        self.reloadAct.setStatusTip(self.tr(
            'Reload the loaded translations'))
        self.reloadAct.setWhatsThis(self.tr(
            """<b>Reload Translations</b>"""
            """<p>This reloads the translations for the loaded"""
            """ languages.</p>"""
        ))
        self.reloadAct.triggered.connect(self.translations.reload)
        
        self.exitAct = QAction(
            UI.PixmapCache.getIcon("exit.png"), self.tr('&Quit'), self)
        self.exitAct.setShortcut(QKeySequence(
            self.tr("Ctrl+Q", "File|Quit")))
        self.exitAct.setStatusTip(self.tr('Quit the application'))
        self.exitAct.setWhatsThis(self.tr(
            """<b>Quit</b>"""
            """<p>Quit the application.</p>"""
        ))
        self.exitAct.triggered.connect(qApp.closeAllWindows)
        
        self.whatsThisAct = QAction(
            UI.PixmapCache.getIcon("whatsThis.png"),
            self.tr('&What\'s This?'), self)
        self.whatsThisAct.setShortcut(QKeySequence(self.tr("Shift+F1")))
        self.whatsThisAct.setStatusTip(self.tr('Context sensitive help'))
        self.whatsThisAct.setWhatsThis(self.tr(
            """<b>Display context sensitive help</b>"""
            """<p>In What's This? mode, the mouse cursor shows an arrow"""
            """ with a question mark, and you can click on the interface"""
            """ elements to get a short description of what they do and"""
            """ how to use them. In dialogs, this feature can be accessed"""
            """ using the context help button in the titlebar.</p>"""
        ))
        self.whatsThisAct.triggered.connect(self.__whatsThis)

        self.aboutAct = QAction(self.tr('&About'), self)
        self.aboutAct.setStatusTip(self.tr(
            'Display information about this software'))
        self.aboutAct.setWhatsThis(self.tr(
            """<b>About</b>"""
            """<p>Display some information about this software.</p>"""
        ))
        self.aboutAct.triggered.connect(self.__about)
        
        self.aboutQtAct = QAction(self.tr('About &Qt'), self)
        self.aboutQtAct.setStatusTip(
            self.tr('Display information about the Qt toolkit'))
        self.aboutQtAct.setWhatsThis(self.tr(
            """<b>About Qt</b>"""
            """<p>Display some information about the Qt toolkit.</p>"""
        ))
        self.aboutQtAct.triggered.connect(self.__aboutQt)
        
        self.tileAct = QAction(self.tr('&Tile'), self)
        self.tileAct.setStatusTip(self.tr('Tile the windows'))
        self.tileAct.setWhatsThis(self.tr(
            """<b>Tile the windows</b>"""
            """<p>Rearrange and resize the windows so that they are"""
            """ tiled.</p>"""
        ))
        self.tileAct.triggered.connect(self.preview.tileSubWindows)
        
        self.cascadeAct = QAction(self.tr('&Cascade'), self)
        self.cascadeAct.setStatusTip(self.tr('Cascade the windows'))
        self.cascadeAct.setWhatsThis(self.tr(
            """<b>Cascade the windows</b>"""
            """<p>Rearrange and resize the windows so that they are"""
            """ cascaded.</p>"""
        ))
        self.cascadeAct.triggered.connect(self.preview.cascadeSubWindows)
        
        self.closeAct = QAction(
            UI.PixmapCache.getIcon("close.png"), self.tr('&Close'), self)
        self.closeAct.setShortcut(QKeySequence(self.tr(
            "Ctrl+W", "File|Close")))
        self.closeAct.setStatusTip(self.tr('Close the current window'))
        self.closeAct.setWhatsThis(self.tr(
            """<b>Close Window</b>"""
            """<p>Close the current window.</p>"""
        ))
        self.closeAct.triggered.connect(self.preview.closeWidget)
        
        self.closeAllAct = QAction(self.tr('Clos&e All'), self)
        self.closeAllAct.setStatusTip(self.tr('Close all windows'))
        self.closeAllAct.setWhatsThis(self.tr(
            """<b>Close All Windows</b>"""
            """<p>Close all windows.</p>"""
        ))
        self.closeAllAct.triggered.connect(self.preview.closeAllWidgets)
Exemplo n.º 5
0
    def __init__(self, parent=None):
        super(Dialog, self).__init__()

        ## Text widgets
        # AQS list selector and list
        self.files_list = QListWidget()
        self.files_list.setFixedHeight(140)
        # AQS list information
        self.AQSC_info = QTextBrowser()
        self.AQSC_info.setMinimumHeight(80)
        # Stored AQS
        self.AQS_stored = QListWidget()
        self.AQS_stored.setSelectionMode(QAbstractItemView.ExtendedSelection)
        self.AQS_stored.setMinimumHeight(200)
        self.AQS_info = QTextBrowser()
        # AQS pollutants table
        self.table_pl = QTableWidget()
        self.table_pl.setSelectionMode(QAbstractItemView.NoSelection)
        self.table_pl.setEditTriggers(QAbstractItemView.NoEditTriggers)
        fnt = QFont()
        fnt.setPointSize(8)
        self.table_pl.setFont(fnt)
        self.table_pl.setRowCount(len(Pollutant) - 1)
        self.table_pl.setColumnCount(2)
        self.table_pl.setVerticalHeaderLabels(
            [pl.name for pl in Pollutant if pl.name != 'UNSET'])
        self.table_pl.setHorizontalHeaderLabels(['Present', 'Count'])
        self.table_pl.setMinimumHeight(190)
        self.table_pl.horizontalHeader().setSectionResizeMode(
            QHeaderView.Stretch)
        self.table_pl.verticalHeader().setSectionResizeMode(
            QHeaderView.Stretch)

        ## Buttons
        button_browse_folder = QPushButton("Browse...")
        button_browse_folder.setMinimumHeight(60)
        self.button_AQS_plot = QPushButton("Plot/Visualize\n(<spacebar>)")
        self.button_AQS_plot.setDisabled(True)
        shortcut_AQS_plot = QShortcut(QKeySequence(Qt.Key_Space), self)
        self.button_AQS_plot.setMinimumHeight(60)

        ## Layouts
        # Buttons
        buttons_layout = QVBoxLayout()
        buttons_layout.setAlignment(Qt.AlignTop)
        buttons_layout.addWidget(self.button_AQS_plot)
        buttons_layout.addStretch()

        # Main grid
        grid = QGridLayout()
        grid.addWidget(
            QLabel("Serialized AirQualityStationCollection (AQSC) objects:"),
            0, 0)
        grid.addWidget(button_browse_folder, 2, 2)
        grid.addWidget(self.files_list, 2, 0, 1, 2)
        grid.addWidget(QLabel("AQSC information:"), 3, 0)
        grid.addWidget(self.AQSC_info, 4, 0, 1, 2)
        grid.addWidget(QLabel("AQS stored:"), 5, 0)
        grid.addWidget(self.AQS_stored, 6, 0, 3, 1)
        grid.addWidget(self.AQS_info, 6, 1, 1, 1)
        grid.addWidget(self.table_pl, 7, 1, 2, 1)
        grid.addLayout(buttons_layout, 6, 2, 3, 1)

        ## Window properties
        self.setLayout(grid)
        self.setWindowTitle("ITAQA AirQualityStationCollection Explorer")
        self.setGeometry(0, 0, 800, 700)
        self.setMinimumSize(800, 700)
        # Set position depending on the screen geometry
        geometry = QGuiApplication.screens()[0].geometry()
        self.move((geometry.width() - self.width()) / 2,
                  (geometry.height() - self.height()) / 2)

        ## Signals and events
        self.files_list.itemClicked.connect(self.refresh_selected_AQSC_info)
        # TODO: Multiselection support and use itemSelectionChanged always (to support keyboard scroll)
        # self.files_list.itemSelectionChanged.connect(...)
        self.AQS_stored.itemClicked.connect(self.refresh_selected_AQS_info)
        button_browse_folder.clicked.connect(self.browse_folder)
        self.button_AQS_plot.clicked.connect(self.AQS_plot)
        shortcut_AQS_plot.activated.connect(self.AQS_plot)

        # Global data containers
        self.dir_path = ''
        self.AQSC_loaded = None
        self.AQS_selected = None
Exemplo n.º 6
0
def _key_to_string(key):
    """Convert a Qt::Key member to a meaningful name.

    Args:
        key: A Qt::Key member.

    Return:
        A name of the key as a string.
    """
    _assert_plain_key(key)
    special_names_str = {
        # Some keys handled in a weird way by QKeySequence::toString.
        # See https://bugreports.qt.io/browse/QTBUG-40030
        # Most are unlikely to be ever needed, but you never know ;)
        # For dead/combining keys, we return the corresponding non-combining
        # key, as that's easier to add to the config.

        'Super_L': 'Super L',
        'Super_R': 'Super R',
        'Hyper_L': 'Hyper L',
        'Hyper_R': 'Hyper R',
        'Direction_L': 'Direction L',
        'Direction_R': 'Direction R',

        'Shift': 'Shift',
        'Control': 'Control',
        'Meta': 'Meta',
        'Alt': 'Alt',

        'AltGr': 'AltGr',
        'Multi_key': 'Multi key',
        'SingleCandidate': 'Single Candidate',
        'Mode_switch': 'Mode switch',
        'Dead_Grave': '`',
        'Dead_Acute': '´',
        'Dead_Circumflex': '^',
        'Dead_Tilde': '~',
        'Dead_Macron': '¯',
        'Dead_Breve': '˘',
        'Dead_Abovedot': '˙',
        'Dead_Diaeresis': '¨',
        'Dead_Abovering': '˚',
        'Dead_Doubleacute': '˝',
        'Dead_Caron': 'ˇ',
        'Dead_Cedilla': '¸',
        'Dead_Ogonek': '˛',
        'Dead_Iota': 'Iota',
        'Dead_Voiced_Sound': 'Voiced Sound',
        'Dead_Semivoiced_Sound': 'Semivoiced Sound',
        'Dead_Belowdot': 'Belowdot',
        'Dead_Hook': 'Hook',
        'Dead_Horn': 'Horn',

        'Dead_Stroke': '̵',
        'Dead_Abovecomma': '̓',
        'Dead_Abovereversedcomma': '̔',
        'Dead_Doublegrave': '̏',
        'Dead_Belowring': '̥',
        'Dead_Belowmacron': '̱',
        'Dead_Belowcircumflex': '̭',
        'Dead_Belowtilde': '̰',
        'Dead_Belowbreve': '̮',
        'Dead_Belowdiaeresis': '̤',
        'Dead_Invertedbreve': '̑',
        'Dead_Belowcomma': '̦',
        'Dead_Currency': '¤',
        'Dead_a': 'a',
        'Dead_A': 'A',
        'Dead_e': 'e',
        'Dead_E': 'E',
        'Dead_i': 'i',
        'Dead_I': 'I',
        'Dead_o': 'o',
        'Dead_O': 'O',
        'Dead_u': 'u',
        'Dead_U': 'U',
        'Dead_Small_Schwa': 'ə',
        'Dead_Capital_Schwa': 'Ə',
        'Dead_Greek': 'Greek',
        'Dead_Lowline': '̲',
        'Dead_Aboveverticalline': '̍',
        'Dead_Belowverticalline': '\u0329',
        'Dead_Longsolidusoverlay': '̸',

        'Memo': 'Memo',
        'ToDoList': 'To Do List',
        'Calendar': 'Calendar',
        'ContrastAdjust': 'Contrast Adjust',
        'LaunchG': 'Launch (G)',
        'LaunchH': 'Launch (H)',

        'MediaLast': 'Media Last',

        'unknown': 'Unknown',

        # For some keys, we just want a different name
        'Escape': 'Escape',
    }
    # We now build our real special_names dict from the string mapping above.
    # The reason we don't do this directly is that certain Qt versions don't
    # have all the keys, so we want to ignore AttributeErrors.
    special_names = {}
    for k, v in special_names_str.items():
        try:
            special_names[getattr(Qt, 'Key_' + k)] = v
        except AttributeError:
            pass
        special_names[0x0] = 'nil'

    if key in special_names:
        return special_names[key]

    result = QKeySequence(key).toString()
    _check_valid_utf8(result, key)
    return result
Exemplo n.º 7
0
    def __init__(self, parent=None):
        super().__init__()
        self.setupUi(self)
        self.setWindowTitle(APP_NAME)
        self.app = parent
        self.current_profile = BackupProfileModel.select().order_by(
            'id').first()
        self.setWindowFlags(QtCore.Qt.WindowCloseButtonHint
                            | QtCore.Qt.WindowMinimizeButtonHint)

        # Load tab models
        self.repoTab = RepoTab(self.repoTabSlot)
        self.sourceTab = SourceTab(self.sourceTabSlot)
        self.archiveTab = ArchiveTab(self.archiveTabSlot)
        self.scheduleTab = ScheduleTab(self.scheduleTabSlot)
        self.miscTabSlot = MiscTab(self.miscTabSlot)
        self.tabWidget.setCurrentIndex(0)

        self.repoTab.repo_changed.connect(
            self.archiveTab.populate_from_profile)
        self.repoTab.repo_added.connect(self.archiveTab.list_action)
        self.tabWidget.currentChanged.connect(
            self.scheduleTab._draw_next_scheduled_backup)

        self.createStartBtn.clicked.connect(self.app.create_backup_action)
        self.cancelButton.clicked.connect(self.app.backup_cancelled_event.emit)

        QShortcut(QKeySequence("Ctrl+W"),
                  self).activated.connect(self.on_close_window)
        QShortcut(QKeySequence("Ctrl+Q"),
                  self).activated.connect(self.on_close_window)

        self.app.backup_started_event.connect(self.backup_started_event)
        self.app.backup_finished_event.connect(self.backup_finished_event)
        self.app.backup_log_event.connect(self.set_status)
        self.app.backup_cancelled_event.connect(self.backup_cancelled_event)

        # Init profile list
        self.profileSelector.addItem('+ Add New Profile', None)
        self.profileSelector.insertSeparator(2)
        for profile in BackupProfileModel.select():
            self.profileSelector.addItem(profile.name, profile.id)
        self.profileSelector.setCurrentIndex(2)
        self.profileSelector.currentIndexChanged.connect(
            self.profile_select_action)
        self.profileRenameButton.clicked.connect(self.profile_rename_action)
        self.profileDeleteButton.clicked.connect(self.profile_delete_action)

        # OS-specific startup options:
        if sys.platform != 'darwin':
            # Hide Wifi-rule section in schedule tab.
            self.scheduleTab.wifiListLabel.hide()
            self.scheduleTab.wifiListWidget.hide()
            self.scheduleTab.page_2.hide()
            self.scheduleTab.toolBox.removeItem(1)

        # Connect to existing thread.
        if BorgThread.is_running():
            self.createStartBtn.setEnabled(False)
            self.cancelButton.setEnabled(True)
            self.set_status('Backup in progress.', progress_max=0)
Exemplo n.º 8
0
    def setupUi(self, MainWindow):
        self.MainWindow = MainWindow
        self.MainWindow.setObjectName("MainWindow")
        self.MainWindow.resize(958, 669)

        self.curr_screen = 0  # initial screen is 0

        self.font = QtGui.QFont()
        self.font.setFamily("Calibri")
        self.font.setPointSize(12)
        self.centralwidget = QtWidgets.QWidget(self.MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.screen_panel = QtWidgets.QFrame(self.centralwidget)
        self.screen_panel.setGeometry(QtCore.QRect(250, 10, 400, 300))
        self.screen_panel.setAutoFillBackground(False)
        self.screen_panel.setStyleSheet("background-color: rgb(0, 177, 51);")
        self.screen_panel.setFrameShape(QtWidgets.QFrame.Panel)
        self.screen_panel.setFrameShadow(QtWidgets.QFrame.Raised)
        self.screen_panel.setObjectName("screen_panel")
        self.gridLayoutWidget = QtWidgets.QWidget(self.screen_panel)
        self.gridLayoutWidget.setGeometry(QtCore.QRect(0, 0, 401, 301))
        self.gridLayoutWidget.setObjectName("gridLayoutWidget")
        self.gridLayout = QtWidgets.QGridLayout(self.gridLayoutWidget)
        self.gridLayout.setContentsMargins(0, 0, 0, 0)
        self.gridLayout.setObjectName("gridLayout")
        self.change_pin_btn = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.change_pin_btn.setObjectName("change_pin_btn")
        self.change_pin_btn.setStyleSheet(BTN_STYLESHEET)
        self.gridLayout.addWidget(self.change_pin_btn, 1, 2, 1, 1)
        self.withdraw_btn = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.withdraw_btn.setObjectName("withdraw_btn")
        self.withdraw_btn.setStyleSheet(BTN_STYLESHEET)
        self.gridLayout.addWidget(self.withdraw_btn, 0, 0, 1, 1)
        self.deposit_btn = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.deposit_btn.setObjectName("deposit_btn")
        self.deposit_btn.setStyleSheet(BTN_STYLESHEET)
        self.gridLayout.addWidget(self.deposit_btn, 1, 0, 1, 1)
        self.balance_btn = QtWidgets.QPushButton(self.gridLayoutWidget)
        self.balance_btn.setObjectName("balance_btn")
        self.balance_btn.setStyleSheet(BTN_STYLESHEET)
        self.change_pin_btn.clicked.connect(self.create_username_entry_screen)
        self.deposit_btn.clicked.connect(self.create_username_entry_screen)
        self.balance_btn.clicked.connect(self.create_username_entry_screen)
        self.withdraw_btn.clicked.connect(self.create_username_entry_screen)
        self.change_pin_btn.clicked.connect(beep)
        self.deposit_btn.clicked.connect(beep)
        self.balance_btn.clicked.connect(beep)
        self.withdraw_btn.clicked.connect(beep)
        self.gridLayout.addWidget(self.balance_btn, 0, 2, 1, 1)
        spacerItem = QtWidgets.QSpacerItem(100, 10,
                                           QtWidgets.QSizePolicy.Preferred,
                                           QtWidgets.QSizePolicy.Minimum)
        self.gridLayout.addItem(spacerItem, 0, 1, 1, 1)
        self.movie = QtGui.QMovie(
            os.path.dirname(os.path.realpath(__file__)) + '\images\\atm.gif')
        self.movie.setCacheMode(QtGui.QMovie.CacheAll)
        self.movie_lbl = CustomQLabel(self.centralwidget)
        self.movie_lbl.setGeometry(self.screen_panel.geometry())
        self.movie_lbl.setMinimumSize(self.screen_panel.size())
        self.movie_lbl.setMovie(self.movie)
        self.movie_lbl.setSizePolicy(QtWidgets.QSizePolicy.Expanding,
                                     QtWidgets.QSizePolicy.Expanding)
        self.movie_lbl.clicked.connect(self.on_click_gif)
        self.movie.start()
        self.keys_panel = QtWidgets.QFrame(self.centralwidget)
        self.keys_panel.setGeometry(QtCore.QRect(270, 330, 361, 291))
        self.keys_panel.setStyleSheet("background-color: rgb(154, 154, 154);")
        self.keys_panel.setFrameShape(QtWidgets.QFrame.Panel)
        self.keys_panel.setFrameShadow(QtWidgets.QFrame.Raised)
        self.keys_panel.setObjectName("keys_panel")

        self.init_numbtns()
        self.set_num_key_slots()

        self.clear_btn = QtWidgets.QPushButton(self.keys_panel)
        self.clear_btn.setGeometry(QtCore.QRect(280, 10, 61, 61))
        self.clear_btn.setStyleSheet("background-color: rgb(207, 207, 0);")
        self.clear_btn.setObjectName("clear_btn")
        self.clear_btn.clicked.connect(beep)
        self.clear_btn.clicked.connect(self.clear_operation)
        self.ok_btn = QtWidgets.QPushButton(self.keys_panel)
        self.ok_btn.setGeometry(QtCore.QRect(280, 150, 61, 61))
        self.ok_btn.setStyleSheet("background-color: rgb(0, 170, 0);")
        self.ok_btn.setObjectName("ok_btn")
        self.ok_btn.clicked.connect(beep)
        self.ok_btn.clicked.connect(self.okay_pressed)
        self.actionPressOk = QtWidgets.QShortcut(QKeySequence("Return"),
                                                 MainWindow)
        self.actionPressOk.activated.connect(self.okay_pressed)
        self.cancel_btn = QtWidgets.QPushButton(self.keys_panel)
        self.cancel_btn.setGeometry(QtCore.QRect(280, 80, 61, 61))
        self.cancel_btn.setStyleSheet("background-color: rgb(170, 0, 0);")
        self.cancel_btn.setObjectName("cancel_btn")
        self.cancel_btn.clicked.connect(beep)
        self.cancel_btn.clicked.connect(self.cancel_operation)
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 958, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
Exemplo n.º 9
0
    def setUI(self):
        #QApplication.setStyle(QStyleFactory.create('Cleanlooks'))
        self.mainLayout = QVBoxLayout()
        self.mainLayout.setContentsMargins(0, 0, 0, 0)
        self.mainLayout.setSpacing(0)
        self.setStyleSheet(get_css("MainWindow"))

        #top Bar
        self.topBarArea = QFrame()
        self.topBarArea.setSizePolicy(
            QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Preferred))
        self.topBarArea.setMinimumHeight(32)
        self.topBarArea.setMaximumHeight(32)

        self.topBarLayout = QHBoxLayout()
        self.topBarLayout.setSpacing(2)
        self.topBarLayout.setContentsMargins(4, 1, 4, 1)

        self.topBarArea.setLayout(self.topBarLayout)
        self.topBarArea.setStyleSheet(get_css('Bar'))

        #Left Panel
        self.leftPanel = QFrame()
        #self.leftPanel.setMaximumWidth(132)

        self.leftPanel.setStyleSheet(get_css('PanelLeft'))

        self.leftPanelLayout = QVBoxLayout()
        self.leftPanelLayout.setContentsMargins(0, 0, 0, 0)
        self.leftPanel.setLayout(self.leftPanelLayout)

        self.outlinerLayout = QVBoxLayout()
        self.outlinerLayout.setContentsMargins(1, 5, 1, 1)

        self.assetChoiceLayout = QVBoxLayout()
        self.assetChoiceLayout.setContentsMargins(0, 0, 0, 0)

        self.treeWidget = TreeWidget()
        self.treeWidget.itemClicked.connect(self.onClickItem)

        # comboBox asset cbox_asset_choice
        self.cbox_asset_choice = ComboBox()
        self.cbox_asset_choice.setMinimumHeight(28)

        self.cbox_asset_choice.setStyleSheet(get_css("ComboBoxAsset"))

        #self.cbox_asset_choice.setStyleSheet("border-left : none; border-right : none; border-top : none")
        self.cbox_asset_choice.addItem(QIcon(icon_path("ICON_ACTION")),
                                       "Action")
        self.cbox_asset_choice.addItem(QIcon(icon_path("ICON_GROUP")), "Group")
        self.cbox_asset_choice.addItem(QIcon(icon_path("ICON_MATERIAL")),
                                       "Material")

        self.assetChoiceLayout.addWidget(self.cbox_asset_choice)
        self.outlinerLayout.addWidget(self.treeWidget)

        self.leftPanelLayout.addLayout(self.assetChoiceLayout)
        self.leftPanelLayout.addLayout(self.outlinerLayout)

        #Tool Box
        self.toolBoxPanel = QFrame()
        self.toolBoxPanel.setStyleSheet(
            "border : none; background-color : rgb(100,100,100)")
        self.toolBoxLayout = QVBoxLayout()

        self.toolBoxPanel.setLayout(self.toolBoxLayout)

        self.leftPanelLayout.addWidget(self.toolBoxPanel)

        #Middle
        self.middle = QFrame()
        self.middle.setStyleSheet(get_css('2DSpace'))

        self.middleLayout = QVBoxLayout()
        self.middleLayout.setContentsMargins(0, 0, 0, 0)

        self.thumbnailList = ThumbnailList(self.folder)
        self.thumbnailList.itemClicked.connect(self.onClickThumb)
        self.thumbnailList.itemDoubleClicked.connect(self.apply_pose)

        self.middleLayout.addWidget(self.topBarArea)
        self.middleLayout.addWidget(self.thumbnailList)

        self.middle.setLayout(self.middleLayout)

        #Right Panel
        self.rightPanel = QFrame()
        #self.rightPanel.setMaximumWidth(256)
        #self.rightPanel.setMinimumWidth(256)

        self.rightPanel.setStyleSheet(get_css('PanelRight'))

        self.rightLayout = QVBoxLayout()
        self.rightLayout.setContentsMargins(4, 4, 4, 4)

        self.rightPanel.setLayout(self.rightLayout)

        #Splitter
        self.splitter = QSplitter(Qt.Horizontal)
        self.splitter.setStyleSheet(get_css('Splitter'))
        #self.splitter.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)

        ## Dir button
        btn_parent_dir = PushButton(icon=icon_path('ICON_FILE_PARENT'),
                                    size=[22, 22])

        ### add_asset button
        btn_add_asset = PushButton(icon=icon_path('ICON_ZOOMIN'),
                                   size=[22, 22])
        btn_add_asset.clicked.connect(self.exportAnimPanel)

        btn_refresh = PushButton(icon=icon_path('ICON_FILE_FOLDER'),
                                 size=[22, 22])
        btn_refresh.clicked.connect(self.refresh)

        #open folder button
        btn_open_folder = PushButton(icon=icon_path('OPEN_FOLDER'),
                                     size=[22, 22])
        btn_open_folder.clicked.connect(self.open_folder)

        #search bar
        self.search_bar = LineEdit()
        self.search_bar.textChanged.connect(self.filterThumbnail)

        self.topBarLayout.addWidget(btn_parent_dir)
        self.topBarLayout.addWidget(self.search_bar)
        self.topBarLayout.addWidget(btn_refresh)
        self.topBarLayout.addWidget(btn_open_folder)

        # Adding Panel to splitter
        self.splitter.addWidget(self.leftPanel)
        self.splitter.addWidget(self.middle)
        self.splitter.addWidget(self.rightPanel)

        self.splitter.setSizes([132, 512, 256])

        self.splitter.setStretchFactor(0, 0)
        self.splitter.setStretchFactor(1, 1)
        self.splitter.setStretchFactor(2, 0)

        #self.mainLayout.addWidget(self.topBarArea)
        self.mainLayout.addWidget(self.splitter)

        #shortcut
        self.shortcut_zoom_in = QShortcut(QKeySequence("+"), self)
        self.shortcut_zoom_out = QShortcut(QKeySequence("-"), self)

        self.shortcut_zoom_in.activated.connect(self.zoom_in)
        self.shortcut_zoom_out.activated.connect(self.zoom_out)

        self.setLayout(self.mainLayout)
Exemplo n.º 10
0
    def __init__(self, parent=None):
        super().__init__()
        self.setupUi(self)
        self.setWindowTitle('Vorta for Borg Backup')
        self.setAttribute(QtCore.Qt.WA_DeleteOnClose, True)
        self.app = parent
        self.setWindowFlags(QtCore.Qt.WindowCloseButtonHint | QtCore.Qt.WindowMinimizeButtonHint)

        # Select previously used profile, if available
        prev_profile_id = SettingsModel.get(key='previous_profile_id')
        self.current_profile = BackupProfileModel.get_or_none(id=prev_profile_id.str_value)
        if self.current_profile is None:
            self.current_profile = BackupProfileModel.select().order_by('name').first()

        # Load tab models
        self.repoTab = RepoTab(self.repoTabSlot)
        self.sourceTab = SourceTab(self.sourceTabSlot)
        self.archiveTab = ArchiveTab(self.archiveTabSlot)
        self.scheduleTab = ScheduleTab(self.scheduleTabSlot)
        self.miscTab = MiscTab(self.miscTabSlot)
        self.miscTab.set_borg_details(borg_compat.version, borg_compat.path)
        self.tabWidget.setCurrentIndex(0)

        self.repoTab.repo_changed.connect(self.archiveTab.populate_from_profile)
        self.repoTab.repo_added.connect(self.archiveTab.list_action)
        self.tabWidget.currentChanged.connect(self.scheduleTab._draw_next_scheduled_backup)

        self.createStartBtn.clicked.connect(self.app.create_backup_action)
        self.cancelButton.clicked.connect(self.app.backup_cancelled_event.emit)

        QShortcut(QKeySequence("Ctrl+W"), self).activated.connect(self.on_close_window)
        QShortcut(QKeySequence("Ctrl+Q"), self).activated.connect(self.on_close_window)

        self.app.backup_started_event.connect(self.backup_started_event)
        self.app.backup_finished_event.connect(self.backup_finished_event)
        self.app.backup_log_event.connect(self.set_status)
        self.app.backup_cancelled_event.connect(self.backup_cancelled_event)

        # Init profile list
        for profile in BackupProfileModel.select().order_by(BackupProfileModel.name):
            self.profileSelector.addItem(profile.name, profile.id)
        current_profile_index = self.profileSelector.findData(self.current_profile.id)
        self.profileSelector.setCurrentIndex(current_profile_index)
        self.profileSelector.currentIndexChanged.connect(self.profile_select_action)
        self.profileRenameButton.clicked.connect(self.profile_rename_action)
        self.profileDeleteButton.clicked.connect(self.profile_delete_action)
        self.profileAddButton.clicked.connect(self.profile_add_action)

        # OS-specific startup options:
        if sys.platform != 'darwin':
            # Hide Wifi-rule section in schedule tab.
            self.scheduleTab.wifiListLabel.hide()
            self.scheduleTab.wifiListWidget.hide()
            self.scheduleTab.page_2.hide()
            self.scheduleTab.toolBox.removeItem(1)

        # Connect to existing thread.
        if BorgThread.is_running():
            self.createStartBtn.setEnabled(False)
            self.cancelButton.setEnabled(True)
            self.set_status(self.tr('Backup in progress.'), progress_max=0)

        self.set_icons()
Exemplo n.º 11
0
    def _setup_main_menu(self):
        self.menu = self.menuBar()
        dwarf_menu = QMenu('Dwarf', self)
        theme = QMenu('Theme', dwarf_menu)
        theme.addAction('Black')
        theme.addAction('Dark')
        theme.addAction('Light')
        theme.triggered.connect(self._set_theme)
        dwarf_menu.addMenu(theme)
        dwarf_menu.addSeparator()

        if self._is_newer_dwarf:
            dwarf_menu.addAction('Update', self._update_dwarf)
        dwarf_menu.addAction('Close', self.close)
        self.menu.addMenu(dwarf_menu)

        session = self.session_manager.session
        if session is not None:
            session_menu = session.main_menu
            if isinstance(session_menu, list):
                for menu in session_menu:
                    self.menu.addMenu(menu)
            else:
                self.menu.addMenu(session_menu)

        # plugins
        if self.plugin_manager.plugins:
            self.plugin_menu = QMenu('Plugins', self)
            for plugin in self.plugin_manager.plugins:
                plugin_instance = self.plugin_manager.plugins[plugin]
                plugin_sub_menu = self.plugin_menu.addMenu(
                    plugin_instance.name)

                try:
                    actions = plugin_instance.__get_top_menu_actions__()
                    for action in actions:
                        plugin_sub_menu.addAction(action)
                except:
                    pass

                if not plugin_sub_menu.isEmpty():
                    plugin_sub_menu.addSeparator()

                about = plugin_sub_menu.addAction('About')
                about.triggered.connect(
                    lambda x, item=plugin: self._show_plugin_about(item))

            if not self.plugin_menu.isEmpty():
                self.menu.addMenu(self.plugin_menu)

        self.view_menu = QMenu('View', self)
        self.panels_menu = QMenu('Panels', self.view_menu)
        self.panels_menu.addAction('Search',
                                   lambda: self.show_main_tab('search'),
                                   shortcut=QKeySequence(Qt.CTRL + Qt.Key_F3))
        self.panels_menu.addAction('Modules',
                                   lambda: self.show_main_tab('modules'))
        self.panels_menu.addAction('Ranges',
                                   lambda: self.show_main_tab('ranges'))

        self.view_menu.addMenu(self.panels_menu)

        self.debug_view_menu = self.view_menu.addMenu('Debug')

        self.view_menu.addSeparator()

        self.view_menu.addAction('Hide all',
                                 self._hide_all_widgets,
                                 shortcut=QKeySequence(Qt.CTRL + Qt.Key_F1))
        self.view_menu.addAction('Show all',
                                 self._show_all_widgets,
                                 shortcut=QKeySequence(Qt.CTRL + Qt.Key_F2))

        self.view_menu.addSeparator()

        self.menu.addMenu(self.view_menu)

        if self.dwarf_args.debug_script:
            debug_menu = QMenu('Debug', self)
            debug_menu.addAction('Reload core', self._menu_reload_core)
            debug_menu.addAction('Debug dwarf js core',
                                 self._menu_debug_dwarf_js)
            self.menu.addMenu(debug_menu)

        # tools
        _tools = self.prefs.get('tools')
        if _tools:
            tools_menu = QMenu('Tools', self)

            for _tool in _tools:
                if _tool and _tool['name']:
                    if _tool['name'] == 'sep':
                        tools_menu.addSeparator()
                        continue

                    _cmd = _tool['cmd']

                    tools_menu.addAction(_tool['name'])

            if not tools_menu.isEmpty():
                tools_menu.triggered.connect(self._execute_tool)
                self.menu.addMenu(tools_menu)

        about_menu = QMenu('About', self)
        about_menu.addAction('Dwarf on GitHub', self._menu_github)
        about_menu.addAction('Documention', self._menu_documentation)
        about_menu.addAction('Api', self._menu_api)
        about_menu.addAction('Slack', self._menu_slack)
        about_menu.addSeparator()

        about_menu.addAction('Info', self._show_about_dlg)
        self.menu.addMenu(about_menu)
Exemplo n.º 12
0
    def createMapsBox(self):
        """Create box for map manager."""
        self.mapsize = 300

        self.mapsBox = QWidget()

        layout = QGridLayout()

        self.maplist = QListWidget()
        self.maplist.setSortingEnabled(True)
        for sc2map in scctool.settings.maps:
            self.maplist.addItem(QListWidgetItem(sc2map))
        self.maplist.setCurrentItem(self.maplist.item(0))
        self.maplist.currentItemChanged.connect(self.changePreview)
        # self.maplist.setFixedHeight(self.mapsize)
        self.maplist.setMinimumWidth(150)

        layout.addWidget(self.maplist, 0, 1, 2, 1)
        self.mapPreview = QLabel()
        self.mapPreview.setFixedWidth(self.mapsize)
        self.mapPreview.setFixedHeight(self.mapsize)
        self.mapPreview.setAlignment(Qt.AlignCenter)
        layout.addWidget(self.mapPreview, 0, 0)
        self.mapInfo = QLabel()
        self.mapInfo.setIndent(10)
        layout.addWidget(self.mapInfo, 1, 0)

        self.pb_addMapLiquipedia = QPushButton(_("Add from Liquipedia"))
        self.pb_addMapLiquipedia.clicked.connect(self.addFromLquipedia)
        self.pb_addMap = QPushButton(_("Add from File"))
        self.pb_addMap.clicked.connect(self.addMap)
        self.pb_renameMap = QPushButton(_("Rename"))
        self.pb_renameMap.clicked.connect(self.renameMap)
        self.pb_changeMap = QPushButton(_("Change Image"))
        self.pb_changeMap.clicked.connect(self.changeMap)
        self.pb_removeMap = QPushButton(_("Remove"))
        self.pb_removeMap.clicked.connect(self.deleteMap)

        self.sc_removeMap = QShortcut(QKeySequence("Del"), self.maplist)
        self.sc_removeMap.setAutoRepeat(False)
        self.sc_removeMap.setContext(Qt.WidgetWithChildrenShortcut)
        self.sc_removeMap.activated.connect(self.deleteMap)

        self.cb_newMapsPrompt = QCheckBox(
            _('Prompt to download new ladders maps.'))
        self.cb_newMapsPrompt.setChecked(
            scctool.settings.config.parser.getboolean("SCT",
                                                      "new_maps_prompt"))
        self.cb_newMapsPrompt.stateChanged.connect(self.changed)

        self.pb_downloadLadderMaps = QPushButton(_("Download Ladder Maps"))
        self.pb_downloadLadderMaps.clicked.connect(self.downloadLadderMaps)

        box = QWidget()
        container = QHBoxLayout()

        container.addWidget(self.pb_addMapLiquipedia, 0)
        container.addWidget(self.pb_addMap, 0)
        container.addWidget(QLabel(), 1)
        container.addWidget(self.pb_downloadLadderMaps, 0)
        container.addWidget(QLabel(), 1)
        container.addWidget(self.pb_renameMap, 0)
        container.addWidget(self.pb_changeMap, 0)
        container.addWidget(self.pb_removeMap, 0)
        box.setLayout(container)

        layout.addWidget(box, 2, 0, 1, 2)

        layout.addWidget(self.cb_newMapsPrompt, 3, 0, 1, 1)
        layout.addItem(
            QSpacerItem(0, 0, QSizePolicy.Minimum, QSizePolicy.Expanding), 3,
            2, 1, 2)

        layout.addItem(
            QSpacerItem(0, 0, QSizePolicy.Minimum, QSizePolicy.Expanding), 4,
            0, 1, 2)

        self.changePreview()
        self.mapsBox.setLayout(layout)
Exemplo n.º 13
0
 def setShortcut(button, shortcutStr):
     button.setShortcut(QKeySequence(shortcutStr))
     button.setText(button.text() + ' [' + shortcutStr + ']')
Exemplo n.º 14
0
    def __init__(self):
        print('AppWindow::__init__()')
        super().__init__()
        self.settings = QSettings('./settings.ini', QSettings.IniFormat)
        self.defaultBboxesLandscape = [
            QRectF(0, 0.1, 1, 0.8),
            QRectF(0.1, 0.1, 0.9, 0.8)
        ]
        self.defaultBboxesPortrait = [
            QRectF(0, 0, 1, 0), QRectF(0.05, 0.05, 0.9, 0)
        ]

        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.ui.buttonDone.clicked.connect(self.slot_on_buttonDone_clicked)
        self.ui.buttonSwitchInOutEditor.clicked.connect(
            self.slot_on_buttonSwitchInOutEditor_clicked)
        self.ui.buttonSwapInOutEditor.clicked.connect(
            self.slot_on_buttonSwapInOutEditor_clicked)
        self.ui.buttonImageNext.clicked.connect(
            self.slot_on_buttonImageNext_clicked)
        self.ui.buttonImagePrev.clicked.connect(
            self.slot_on_buttonImagePrev_clicked)
        self.ui.buttonLoadKdenlive.clicked.connect(
            self.slot_on_buttonLoadKdenlive_clicked)
        self.ui.buttonLoadImages.clicked.connect(
            self.slot_on_buttonLoadImages_clicked)
        self.ui.buttonSaveKdenlive.clicked.connect(
            self.slot_on_buttonSaveKdenlive_clicked)
        self.ui.buttonSaveBboxesJson.clicked.connect(
            self.slot_on_buttonSaveBboxesJson_clicked)
        self.ui.buttonApplyBboxRatioMultiplier.clicked.connect(
            self.slot_on_buttonApplyBboxRatioMultiplier_clicked)
        self.ui.lineeditTargetVideoResolution.textChanged.connect(
            self.slot_on_lineeditTargetVideoResolution_textChanged)
        self.ui.checkboxStayInside.toggled.connect(
            self.slot_on_checkboxStayInside_toggled)
        self.ui.buttonLoadKdenlive.setShortcut(QKeySequence('Ctrl+o'))
        self.ui.buttonSwitchInOutEditor.setShortcut(QKeySequence('Tab'))
        self.ui.buttonSwapInOutEditor.setShortcut(QKeySequence('w'))
        self.ui.buttonImageNext.setShortcut(QKeySequence('Space'))
        self.ui.buttonImagePrev.setShortcut(QKeySequence('Backspace'))
        self.ui.checkboxStayInside.setShortcut(QKeySequence('s'))
        self.ui.buttonSaveKdenlive.setEnabled(False)
        self.ui.buttonImageNext.setEnabled(False)
        self.ui.buttonImagePrev.setEnabled(False)
        self.ui.lineeditTargetVideoResolution.setText('1920x1080')
        #		self.ui.image.setTargetRatio(1920 / 1080) # Aspect ratio of the video slideshow
        self.ui.image.bboxesChanged.connect(self.bboxesChanged)
        self.fileFormats = [
            'All supported formats: *.kdenlive, *.json (*.kdenlive *.json)',
            'Kdenlive Project Files: *.kdenlive (*.kdenlive)',
            'Bboxes Json: *.json (*.json)',
        ]
        self.kdenliveFile = None
        self.images = []
        self.imagesData = {}
        self.imageIdx = 0
        if len(sys.argv) > 1:
            if re.match('.*\.kdenlive', sys.argv[1]):
                self.LoadKdenliveFile(sys.argv[1])
            else:
                self.images = sys.argv[1:]
                print('images:', self.images)

            # Load bboxes from json
            try:
                self.LoadBboxesJson(self.getBboxesFilename())
            except:
                print('WARNING: unable to parse json data')
                traceback.print_exc()

            # Override json bboxes with kdenlive clip transformations
            if self.kdenliveFile is not None:
                self.KdenliveFileToImagesData()

            img_path = self.images[self.imageIdx]
            print('imagesData:', self.imagesData)
            self.SetImageIdx(self.imageIdx)

        self.show()
Exemplo n.º 15
0
    def __init__(self):
        super(Ui_MainWindow, self).__init__()
        self.setObjectName("MainWindow")
        self.resize(805, 709)

        self.centralwidget = QtWidgets.QWidget(self)
        self.centralwidget.setObjectName("centralwidget")
        self.verticalLayout = QtWidgets.QVBoxLayout(self.centralwidget)
        self.verticalLayout.setObjectName("verticalLayout")

        self.fft_count = 0
        self.count_bin = 0

        self.verticalLayout.addWidget(self.canvas)
        self.setCentralWidget(self.centralwidget)

        self.menubar = QtWidgets.QMenuBar(self)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 805, 20))
        self.menubar.setObjectName("menubar")
        self.menu = QtWidgets.QMenu(self.menubar)
        self.menu.setObjectName("menu")
        self.menu_2 = QtWidgets.QMenu(self.menubar)
        self.menu_2.setObjectName("menu_2")
        self.menu_3 = QtWidgets.QMenu(self.menubar)
        self.menu_3.setObjectName("menu_3")
        self.menu_4 = QtWidgets.QMenu(self.menubar)
        self.menu_4.setObjectName("drift_correction")
        self.menu_5 = QtWidgets.QMenu(self.menubar)
        self.menu_5.setObjectName("图形处理")
        self.menu_6 = QtWidgets.QMenu(self.menubar)
        self.menu_6.setObjectName('绘制linecut')

        self.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(self)
        self.statusbar.setObjectName("statusbar")
        self.setStatusBar(self.statusbar)
        self.actionchoose_color = QtWidgets.QAction(self)
        self.actionchoose_color.setObjectName("actionchoose_color")

        self.actionopen3ds = QtWidgets.QAction(self)
        self.actionopen3ds.setObjectName("actionopen3ds")
        self.actionopen3ds.setShortcut('Shift+D')

        self.actionopenpythonbin = QtWidgets.QAction(self)
        self.actionopenpythonbin.setObjectName("actionopenpythonbin")
        self.actionopenpythonbin.setShortcut('Shift+p')

        self.actionopenjavabin = QtWidgets.QAction(self)
        self.actionopenjavabin.setObjectName("actionopenjavabin")
        self.actionopenjavabin.setShortcut('Shift+j')

        self.actionopendidvdata = QtWidgets.QAction(self)
        self.actionopendidvdata.setObjectName('actionopendidvdat')
        self.actionopendidvdata.setShortcut('shift+d')

        self.actionochooseimpurities = QtWidgets.QAction(self)
        self.actionochooseimpurities.setObjectName("choose_impurities")
        self.actionoaddmask = QtWidgets.QAction(self)
        self.actionoaddmask.setObjectName("add_mask")

        self.actionochooseBraggPeak = QtWidgets.QAction(self)
        self.actionochooseBraggPeak.setObjectName("chooseBraggPeak")
        self.actionoDoingDrfitCorrection = QtWidgets.QAction(self)
        self.actionoDoingDrfitCorrection.setObjectName("DriftCorrection")

        self.actioncutfigure = QtWidgets.QAction(self)
        self.actioncutfigure.setObjectName("cutfigure")

        self.actiondidvs = QtWidgets.QAction(self)
        self.actiondidvs.setObjectName('didvmap')

        self.menu.addAction(self.actionopen3ds)
        self.menu.addAction(self.actionopenpythonbin)
        self.menu.addAction(self.actionopenjavabin)
        self.menu.addAction(self.actionopendidvdata)

        self.menu_2.addAction(self.actionchoose_color)

        self.menu_3.addAction(self.actionochooseimpurities)
        self.menu_3.addAction(self.actionoaddmask)

        self.menu_4.addAction(self.actionochooseBraggPeak)
        self.menu_4.addAction(self.actionoDoingDrfitCorrection)

        self.menu_5.addAction(self.actioncutfigure)

        self.menu_6.addAction(self.actiondidvs)

        self.menubar.addAction(self.menu.menuAction())
        self.menubar.addAction(self.menu_2.menuAction())
        self.menubar.addAction(self.menu_3.menuAction())
        self.menubar.addAction(self.menu_4.menuAction())
        self.menubar.addAction(self.menu_5.menuAction())
        self.menubar.addAction(self.menu_6.menuAction())

        self.actionchoose_color.triggered.connect(self.choosecolor)
        self.actionopen3ds.triggered.connect(self.open3ds_or_sxm)
        self.actionopenpythonbin.triggered.connect(self.openpythonbinfile)
        #self.actionopendidvdata.triggered.connect(self.opendidvdat)
        #self.actiondidvdatread.triggered.connect(self.didvdata)
        self.actionopenjavabin.triggered.connect(self.openjavabinfile)
        self.actionochooseimpurities.triggered.connect(self.choose_impurity)
        self.actionochooseBraggPeak.triggered.connect(self.choose_peak)
        self.actionoDoingDrfitCorrection.triggered.connect(
            self.driftcorrection)
        self.actioncutfigure.triggered.connect(self.cutfigure)
        self.actiondidvs.triggered.connect(self.didvmap)

        self.shortcut = QShortcut(QKeySequence('F3'), self.centralwidget,
                                  self.changecolor)
        self.shortcut_color_decrease = QShortcut(QKeySequence('F2'),
                                                 self.centralwidget,
                                                 self.changecolor_decrease)
        self.shortcut_1 = QShortcut(QKeySequence('Ctrl+Q'), self.centralwidget,
                                    self.dialog_open)
        self.shortcut_2 = QShortcut(QKeySequence('Ctrl+S'), self.centralwidget,
                                    self.savepng)
        self.shortcut_3 = QShortcut(QKeySequence('Ctrl+B'), self.centralwidget,
                                    self.savedata_bin)
        self.shortcut_4 = QShortcut(QKeySequence('F11'), self.centralwidget,
                                    self.contrast_ratio)
        self.shortcut_5 = QShortcut(QKeySequence('Ctrl+F'), self.centralwidget,
                                    self.fouriertransform)
        self.shortclipboard = QShortcut(QKeySequence('Ctrl+C'),
                                        self.centralwidget, self.to_clipboard)

        self.retranslateUi()

        QtCore.QMetaObject.connectSlotsByName(self)
Exemplo n.º 16
0
    def add_shortcuts(self) -> None:
        self.shortcutCloseI = QShortcut(QKeySequence("I"), self)
        self.shortcutCloseI.activated.connect(self.close)

        self.shortcutCloseQ = QShortcut(QKeySequence("Q"), self)
        self.shortcutCloseQ.activated.connect(self.close)
Exemplo n.º 17
0
    def __initActions(self):
        """
        Private method to define the user interface actions.
        """
        self.openAct = QAction(
            UI.PixmapCache.getIcon("openUI.png"),
            self.tr('&Open File'), self)
        self.openAct.setShortcut(
            QKeySequence(self.tr("Ctrl+O", "File|Open")))
        self.openAct.setStatusTip(self.tr('Open a UI file for display'))
        self.openAct.setWhatsThis(self.tr(
            """<b>Open File</b>"""
            """<p>This opens a new UI file for display.</p>"""
        ))
        self.openAct.triggered.connect(self.__openFile)
        
        self.printAct = QAction(
            UI.PixmapCache.getIcon("print.png"),
            self.tr('&Print'), self)
        self.printAct.setShortcut(
            QKeySequence(self.tr("Ctrl+P", "File|Print")))
        self.printAct.setStatusTip(self.tr('Print a screen capture'))
        self.printAct.setWhatsThis(self.tr(
            """<b>Print</b>"""
            """<p>Print a screen capture.</p>"""
        ))
        self.printAct.triggered.connect(self.__printImage)
        
        self.printPreviewAct = QAction(
            UI.PixmapCache.getIcon("printPreview.png"),
            self.tr('Print Preview'), self)
        self.printPreviewAct.setStatusTip(self.tr(
            'Print preview a screen capture'))
        self.printPreviewAct.setWhatsThis(self.tr(
            """<b>Print Preview</b>"""
            """<p>Print preview a screen capture.</p>"""
        ))
        self.printPreviewAct.triggered.connect(self.__printPreviewImage)
        
        self.imageAct = QAction(
            UI.PixmapCache.getIcon("screenCapture.png"),
            self.tr('&Screen Capture'), self)
        self.imageAct.setShortcut(
            QKeySequence(self.tr("Ctrl+S", "File|Screen Capture")))
        self.imageAct.setStatusTip(self.tr(
            'Save a screen capture to an image file'))
        self.imageAct.setWhatsThis(self.tr(
            """<b>Screen Capture</b>"""
            """<p>Save a screen capture to an image file.</p>"""
        ))
        self.imageAct.triggered.connect(self.__saveImage)
        
        self.exitAct = QAction(
            UI.PixmapCache.getIcon("exit.png"), self.tr('&Quit'), self)
        self.exitAct.setShortcut(
            QKeySequence(self.tr("Ctrl+Q", "File|Quit")))
        self.exitAct.setStatusTip(self.tr('Quit the application'))
        self.exitAct.setWhatsThis(self.tr(
            """<b>Quit</b>"""
            """<p>Quit the application.</p>"""
        ))
        self.exitAct.triggered.connect(qApp.closeAllWindows)
        
        self.copyAct = QAction(
            UI.PixmapCache.getIcon("editCopy.png"), self.tr('&Copy'), self)
        self.copyAct.setShortcut(
            QKeySequence(self.tr("Ctrl+C", "Edit|Copy")))
        self.copyAct.setStatusTip(
            self.tr('Copy screen capture to clipboard'))
        self.copyAct.setWhatsThis(self.tr(
            """<b>Copy</b>"""
            """<p>Copy screen capture to clipboard.</p>"""
        ))
        self.copyAct.triggered.connect(self.__copyImageToClipboard)
        
        self.whatsThisAct = QAction(
            UI.PixmapCache.getIcon("whatsThis.png"),
            self.tr('&What\'s This?'), self)
        self.whatsThisAct.setShortcut(QKeySequence(self.tr("Shift+F1")))
        self.whatsThisAct.setStatusTip(self.tr('Context sensitive help'))
        self.whatsThisAct.setWhatsThis(self.tr(
            """<b>Display context sensitive help</b>"""
            """<p>In What's This? mode, the mouse cursor shows an arrow"""
            """ with a question mark, and you can click on the interface"""
            """ elements to get a short description of what they do and"""
            """ how to use them. In dialogs, this feature can be accessed"""
            """ using the context help button in the titlebar.</p>"""
        ))
        self.whatsThisAct.triggered.connect(self.__whatsThis)

        self.aboutAct = QAction(self.tr('&About'), self)
        self.aboutAct.setStatusTip(self.tr(
            'Display information about this software'))
        self.aboutAct.setWhatsThis(self.tr(
            """<b>About</b>"""
            """<p>Display some information about this software.</p>"""
        ))
        self.aboutAct.triggered.connect(self.__about)
                     
        self.aboutQtAct = QAction(self.tr('About &Qt'), self)
        self.aboutQtAct.setStatusTip(
            self.tr('Display information about the Qt toolkit'))
        self.aboutQtAct.setWhatsThis(self.tr(
            """<b>About Qt</b>"""
            """<p>Display some information about the Qt toolkit.</p>"""
        ))
        self.aboutQtAct.triggered.connect(self.__aboutQt)
Exemplo n.º 18
0
 def registe_hotkey(self):
     self._app.hotkey_manager.registe(
         QKeySequence('Ctrl+F'),
         self.ui.songs_table_container.table_control.search_box.setFocus)
Exemplo n.º 19
0
    def _setupUi(self): # has to take place *before* base elements creation
        self.setWindowTitle("moneyGuru")
        self.resize(700, 580)
        self.centralwidget = QWidget(self)
        self.verticalLayout = QVBoxLayout(self.centralwidget)
        self.verticalLayout.setSpacing(0)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.topBar = QWidget(self.centralwidget)
        self.horizontalLayout_2 = QHBoxLayout(self.topBar)
        self.horizontalLayout_2.setContentsMargins(2, 0, 2, 0)
        spacerItem = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem)
        self.dateRangeSelectorView = DateRangeSelectorView(self.topBar)
        self.dateRangeSelectorView.setMinimumSize(QSize(220, 0))
        self.horizontalLayout_2.addWidget(self.dateRangeSelectorView)
        spacerItem1 = QSpacerItem(40, 20, QSizePolicy.Expanding, QSizePolicy.Minimum)
        self.horizontalLayout_2.addItem(spacerItem1)
        self.searchLineEdit = SearchEdit(self.topBar)
        self.searchLineEdit.setMaximumSize(QSize(240, 16777215))
        self.horizontalLayout_2.addWidget(self.searchLineEdit)
        self.verticalLayout.addWidget(self.topBar)
        self.tabBar = QTabBar(self.centralwidget)
        self.tabBar.setMinimumSize(QSize(0, 20))
        self.verticalLayout.addWidget(self.tabBar)
        self.mainView = QStackedWidget(self.centralwidget)
        self.verticalLayout.addWidget(self.mainView)

        # Bottom buttons & status label
        self.bottomBar = QWidget(self.centralwidget)
        self.horizontalLayout = QHBoxLayout(self.bottomBar)
        self.horizontalLayout.setContentsMargins(2, 2, 2, 2)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.newItemButton = QPushButton(self.bottomBar)
        buttonSizePolicy = QSizePolicy(QSizePolicy.Maximum, QSizePolicy.Fixed)
        buttonSizePolicy.setHorizontalStretch(0)
        buttonSizePolicy.setVerticalStretch(0)
        buttonSizePolicy.setHeightForWidth(self.newItemButton.sizePolicy().hasHeightForWidth())
        self.newItemButton.setSizePolicy(buttonSizePolicy)
        self.newItemButton.setIcon(QIcon(QPixmap(':/plus_8')))
        self.horizontalLayout.addWidget(self.newItemButton)
        self.deleteItemButton = QPushButton(self.bottomBar)
        self.deleteItemButton.setSizePolicy(buttonSizePolicy)
        self.deleteItemButton.setIcon(QIcon(QPixmap(':/minus_8')))
        self.horizontalLayout.addWidget(self.deleteItemButton)
        self.editItemButton = QPushButton(self.bottomBar)
        self.editItemButton.setSizePolicy(buttonSizePolicy)
        self.editItemButton.setIcon(QIcon(QPixmap(':/info_gray_12')))
        self.horizontalLayout.addWidget(self.editItemButton)
        self.horizontalLayout.addItem(horizontalSpacer(size=20))
        self.graphVisibilityButton = QPushButton()
        self.graphVisibilityButton.setSizePolicy(buttonSizePolicy)
        self.graphVisibilityButton.setIcon(QIcon(QPixmap(':/graph_visibility_on_16')))
        self.horizontalLayout.addWidget(self.graphVisibilityButton)
        self.piechartVisibilityButton = QPushButton()
        self.piechartVisibilityButton.setSizePolicy(buttonSizePolicy)
        self.piechartVisibilityButton.setIcon(QIcon(QPixmap(':/piechart_visibility_on_16')))
        self.horizontalLayout.addWidget(self.piechartVisibilityButton)
        self.columnsVisibilityButton = QPushButton()
        self.columnsVisibilityButton.setSizePolicy(buttonSizePolicy)
        self.columnsVisibilityButton.setIcon(QIcon(QPixmap(':/columns_16')))
        self.horizontalLayout.addWidget(self.columnsVisibilityButton)

        self.statusLabel = QLabel(tr("Status"))
        self.statusLabel.setAlignment(Qt.AlignCenter)
        self.horizontalLayout.addWidget(self.statusLabel)
        self.verticalLayout.addWidget(self.bottomBar)


        self.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(self)
        self.menubar.setGeometry(QRect(0, 0, 700, 20))
        self.menuFile = QMenu(tr("File"))
        self.menuOpenRecent = QMenu(tr("Open Recent"))
        self.menuView = QMenu(tr("View"))
        self.menuDateRange = QMenu(tr("Date Range"))
        self.menuEdit = QMenu(tr("Edit"))
        self.menuHelp = QMenu(tr("Help"))
        self.setMenuBar(self.menubar)
        self.actionOpenDocument = QAction(tr("Open..."), self)
        self.actionOpenDocument.setShortcut("Ctrl+O")
        self.actionShowNetWorth = QAction(tr("Net Worth"), self)
        self.actionShowNetWorth.setShortcut("Ctrl+1")
        self.actionShowNetWorth.setIcon(QIcon(QPixmap(':/balance_sheet_48')))
        self.actionShowProfitLoss = QAction(escapeamp(tr("Profit & Loss")), self)
        self.actionShowProfitLoss.setShortcut("Ctrl+2")
        self.actionShowProfitLoss.setIcon(QIcon(QPixmap(':/income_statement_48')))
        self.actionShowTransactions = QAction(tr("Transactions"), self)
        self.actionShowTransactions.setShortcut("Ctrl+3")
        self.actionShowTransactions.setIcon(QIcon(QPixmap(':/transaction_table_48')))
        self.actionShowSelectedAccount = QAction(tr("Show Account"), self)
        self.actionShowSelectedAccount.setShortcut("Ctrl+]")
        self.actionNewItem = QAction(tr("New Item"), self)
        self.actionNewItem.setShortcut("Ctrl+N")
        self.actionDeleteItem = QAction(tr("Remove Selected"), self)
        self.actionEditItem = QAction(tr("Show Info"), self)
        self.actionEditItem.setShortcut("Ctrl+I")
        self.actionToggleGraph = QAction(tr("Toggle Graph"), self)
        self.actionToggleGraph.setShortcut("Ctrl+Alt+G")
        self.actionTogglePieChart = QAction(tr("Toggle Pie Chart"), self)
        self.actionTogglePieChart.setShortcut("Ctrl+Alt+P")
        self.actionMoveUp = QAction(tr("Move Up"), self)
        self.actionMoveUp.setShortcut("Ctrl++")
        self.actionMoveDown = QAction(tr("Move Down"), self)
        self.actionMoveDown.setShortcut("Ctrl+-")
        self.actionNavigateBack = QAction(tr("Go Back"), self)
        self.actionNavigateBack.setShortcut("Ctrl+[")
        self.actionNewAccountGroup = QAction(tr("New Account Group"), self)
        self.actionNewAccountGroup.setShortcut("Ctrl+Shift+N")
        self.actionShowNextView = QAction(tr("Next View"), self)
        self.actionShowNextView.setShortcut("Ctrl+Shift+]")
        self.actionShowPreviousView = QAction(tr("Previous View"), self)
        self.actionShowPreviousView.setShortcut("Ctrl+Shift+[")
        self.actionNewDocument = QAction(tr("New Document"), self)
        self.actionOpenExampleDocument = QAction(tr("Open Example Document"), self)
        self.actionOpenPluginFolder = QAction(tr("Open Plugin Folder"), self)
        self.actionImport = QAction(tr("Import..."), self)
        self.actionImport.setShortcut("Ctrl+Alt+I")
        self.actionExport = QAction(tr("Export..."), self)
        self.actionExport.setShortcut("Ctrl+Alt+E")
        self.actionSave = QAction(tr("Save"), self)
        self.actionSave.setShortcut("Ctrl+S")
        self.actionSaveAs = QAction(tr("Save As..."), self)
        self.actionSaveAs.setShortcut("Ctrl+Shift+S")
        self.actionAbout = QAction(tr("About moneyGuru"), self)
        self.actionToggleReconciliationMode = QAction(tr("Toggle Reconciliation Mode"), self)
        self.actionToggleReconciliationMode.setShortcut("Ctrl+Shift+R")
        self.actionToggleAccountExclusion = QAction(tr("Toggle Exclusion Status of Account"), self)
        self.actionToggleAccountExclusion.setShortcut("Ctrl+Shift+X")
        self.actionShowSchedules = QAction(tr("Schedules"), self)
        self.actionShowSchedules.setShortcut("Ctrl+4")
        self.actionShowSchedules.setIcon(QIcon(QPixmap(':/schedules_48')))
        self.actionShowBudgets = QAction(tr("Budgets"), self)
        self.actionShowBudgets.setShortcut("Ctrl+5")
        self.actionShowBudgets.setIcon(QIcon(QPixmap(':/budget_48')))
        self.actionReconcileSelected = QAction(tr("Reconcile Selection"), self)
        self.actionReconcileSelected.setShortcut("Ctrl+R")
        self.actionMakeScheduleFromSelected = QAction(tr("Make Schedule from Selected"), self)
        self.actionMakeScheduleFromSelected.setShortcut("Ctrl+M")
        self.actionShowPreferences = QAction(tr("Preferences..."), self)
        self.actionPrint = QAction(tr("Print..."), self)
        self.actionPrint.setShortcut("Ctrl+P")
        self.actionQuit = QAction(tr("Quit moneyGuru"), self)
        self.actionQuit.setShortcut("Ctrl+Q")
        self.actionUndo = QAction(tr("Undo"), self)
        self.actionUndo.setShortcut("Ctrl+Z")
        self.actionRedo = QAction(tr("Redo"), self)
        self.actionRedo.setShortcut("Ctrl+Y")
        self.actionShowHelp = QAction(tr("moneyGuru Help"), self)
        self.actionShowHelp.setShortcut("F1")
        self.actionCheckForUpdate = QAction(tr("Check for update"), self)
        self.actionOpenDebugLog = QAction(tr("Open Debug Log"), self)
        self.actionDuplicateTransaction = QAction(tr("Duplicate Transaction"), self)
        self.actionDuplicateTransaction.setShortcut("Ctrl+D")
        self.actionJumpToAccount = QAction(tr("Jump to Account..."), self)
        self.actionJumpToAccount.setShortcut("Ctrl+Shift+A")
        self.actionNewTab = QAction(tr("New Tab"), self)
        self.actionNewTab.setShortcut("Ctrl+T")
        self.actionCloseTab = QAction(tr("Close Tab"), self)
        self.actionCloseTab.setShortcut("Ctrl+W")

        self.menuFile.addAction(self.actionNewDocument)
        self.menuFile.addAction(self.actionNewTab)
        self.menuFile.addAction(self.actionOpenDocument)
        self.menuFile.addAction(self.menuOpenRecent.menuAction())
        self.menuFile.addAction(self.actionOpenExampleDocument)
        self.menuFile.addAction(self.actionOpenPluginFolder)
        self.menuFile.addAction(self.actionImport)
        self.menuFile.addSeparator()
        self.menuFile.addAction(self.actionCloseTab)
        self.menuFile.addAction(self.actionSave)
        self.menuFile.addAction(self.actionSaveAs)
        self.menuFile.addAction(self.actionExport)
        self.menuFile.addAction(self.actionPrint)
        self.menuFile.addAction(self.actionQuit)
        self.menuView.addAction(self.actionShowNetWorth)
        self.menuView.addAction(self.actionShowProfitLoss)
        self.menuView.addAction(self.actionShowTransactions)
        self.menuView.addAction(self.actionShowSchedules)
        self.menuView.addAction(self.actionShowBudgets)
        self.menuView.addAction(self.actionShowPreviousView)
        self.menuView.addAction(self.actionShowNextView)
        self.menuView.addAction(self.menuDateRange.menuAction())
        self.menuView.addAction(self.actionShowPreferences)
        self.menuView.addAction(self.actionToggleGraph)
        self.menuView.addAction(self.actionTogglePieChart)
        self.menuEdit.addAction(self.actionNewItem)
        self.menuEdit.addAction(self.actionNewAccountGroup)
        self.menuEdit.addAction(self.actionDeleteItem)
        self.menuEdit.addAction(self.actionEditItem)
        self.menuEdit.addSeparator()
        self.menuEdit.addAction(self.actionMoveUp)
        self.menuEdit.addAction(self.actionMoveDown)
        self.menuEdit.addAction(self.actionDuplicateTransaction)
        self.menuEdit.addAction(self.actionMakeScheduleFromSelected)
        self.menuEdit.addAction(self.actionReconcileSelected)
        self.menuEdit.addAction(self.actionToggleReconciliationMode)
        self.menuEdit.addAction(self.actionToggleAccountExclusion)
        self.menuEdit.addSeparator()
        self.menuEdit.addAction(self.actionShowSelectedAccount)
        self.menuEdit.addAction(self.actionNavigateBack)
        self.menuEdit.addAction(self.actionJumpToAccount)
        self.menuEdit.addSeparator()
        self.menuEdit.addAction(self.actionUndo)
        self.menuEdit.addAction(self.actionRedo)
        self.menuHelp.addAction(self.actionShowHelp)
        self.menuHelp.addAction(self.actionCheckForUpdate)
        self.menuHelp.addAction(self.actionOpenDebugLog)
        self.menuHelp.addAction(self.actionAbout)
        mainmenus = [self.menuFile, self.menuEdit, self.menuView, self.menuHelp]
        for menu in mainmenus:
            self.menubar.addAction(menu.menuAction())
            setAccelKeys(menu)
        setAccelKeys(self.menubar)
        self.tabBar.setMovable(True)
        self.tabBar.setTabsClosable(True)
        self.tabBar.setExpanding(False)

        seq = QKeySequence(Qt.CTRL + Qt.SHIFT + Qt.Key_Right)
        self._shortcutNextTab = QShortcut(seq, self)
        seq = QKeySequence(Qt.CTRL + Qt.SHIFT + Qt.Key_Left)
        self._shortcutPrevTab = QShortcut(seq, self)

        # Linux setup
        if ISLINUX:
            self.actionCheckForUpdate.setVisible(False) # This only works on Windows
Exemplo n.º 20
0
 def getHotkeyForCommand(self, cmd):
     if plat.Supports.hotkeys:
         return hotkeys.default.hotkeyForCommand(cmd)
     else:
         return QKeySequence()
Exemplo n.º 21
0
AGENT = 'AwesomeTTS/%s (Anki %s; PyQt %s; %s)' % (
    VERSION, anki.version, PYQT_VERSION_STR, get_platform_info())

# Begin core class initialization and dependency setup, pylint:disable=C0103

logger = Bundle(debug=lambda *a, **k: None,
                error=lambda *a, **k: None,
                info=lambda *a, **k: None,
                warn=lambda *a, **k: None)
# for logging output, replace `logger` with a real one, e.g.:
# import logging as logger
# logger.basicConfig(stream=sys.stdout, level=logger.DEBUG)

sequences = {
    key: QKeySequence()
    for key in [
        'browser_generator', 'browser_stripper', 'configurator',
        'editor_generator', 'templater'
    ]
}

config = Config(
    db=Bundle(path=paths.CONFIG,
              table='general',
              normalize=to.normalized_ascii),
    cols=[
        ('automaticAnswers', 'integer', True, to.lax_bool, int),
        ('automatic_answers_errors', 'integer', True, to.lax_bool, int),
        ('automaticQuestions', 'integer', True, to.lax_bool, int),
        ('automatic_questions_errors', 'integer', True, to.lax_bool, int),
Exemplo n.º 22
0
    def setupUi(self):
        self.centralwidget = QWidget(self)
        with open("style.css", 'r') as file:
            self.centralwidget.setStyleSheet(file.read())
        self.appswidget = QWidget(self.centralwidget)
        self.appswidget.setGeometry(50, 0, 481, 450)
        self.appswidget.setProperty('class', 'appswidget')
        self.sidebar = QFrame(self)
        self.sidebar.setFrameShape(QFrame.StyledPanel)
        self.sidebar.setGeometry(0, 0, 50, 450)
        self.sidebar.setProperty('class', 'sidebar')

        self.refresh_btn = QPushButton(self.sidebar)
        self.refresh_btn.setGeometry(QRect(0, 0, 51, 51))
        self.refresh_btn.setProperty('class', 'sidebar_btns')
        self.refresh_btn.setIcon(QIcon(':/icon/refresh_icon.png'))
        self.refresh_btn.setIconSize(QSize(24, 24))
        self.refresh_bind = QShortcut(QKeySequence('Ctrl+R'), self)

        self.store_btn = QPushButton(self.sidebar)
        self.store_btn.setGeometry(QRect(0, 51, 51, 51))
        self.store_btn.setProperty('class', 'sidebar_btns')
        self.store_btn.setIcon(QIcon(':/icon/store_icon.png'))
        self.store_btn.setIconSize(QSize(24, 24))
        self.store_bind = QShortcut(QKeySequence('Ctrl+S'), self)

        self.homepage_btn = QPushButton(self.sidebar)
        self.homepage_btn.setGeometry(QRect(0, 102, 51, 51))
        self.homepage_btn.setProperty('class', 'sidebar_btns')
        self.homepage_btn.setIcon(QIcon(':/icon/github_icon.png'))
        self.homepage_btn.setIconSize(QSize(24, 24))
        self.homepage_bind = QShortcut(QKeySequence('Ctrl+G'), self)

        self.about_btn = QPushButton(self.sidebar)
        self.about_btn.setGeometry(QRect(0, 153, 51, 51))
        self.about_btn.setProperty('class', 'sidebar_btns')
        self.about_btn.setIcon(QIcon(':/icon/about_icon.png'))
        self.about_btn.setIconSize(QSize(24, 24))
        self.about_bind = QShortcut(QKeySequence('Ctrl+A'), self)

        self.quit_btn = QPushButton(self.sidebar)
        self.quit_btn.setGeometry(QRect(0, 400, 51, 51))
        self.quit_btn.setProperty('class', 'sidebar_btns_quit')
        self.quit_btn.setIcon(QIcon(':/icon/quit_icon.png'))
        self.quit_btn.setIconSize(QSize(24, 24))
        self.quit_bind = QShortcut(QKeySequence('Ctrl+Q'), self)

        self.label_refresh = QLabel(self.appswidget)
        self.label_refresh.setGeometry(QRect(20, 10, 441, 15))

        self.label_info = QLabel(self.appswidget)
        self.label_info.setGeometry(QRect(20, 15, 441, 30))

        self.progressbar = QProgressBar(self.appswidget)
        self.progressbar.setGeometry(QRect(20, 35, 441, 20))

        self.verticalLayoutWidget = QWidget(self.appswidget)
        self.verticalLayoutWidget.setGeometry(QRect(20, 55, 121, 291))
        self.verticalLayout = QVBoxLayout(self.verticalLayoutWidget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.checkBox = QCheckBox(self.verticalLayoutWidget)
        self.verticalLayout.addWidget(self.checkBox)
        self.checkBox_2 = QCheckBox(self.verticalLayoutWidget)
        self.verticalLayout.addWidget(self.checkBox_2)
        self.checkBox_3 = QCheckBox(self.verticalLayoutWidget)
        self.verticalLayout.addWidget(self.checkBox_3)
        self.checkBox_4 = QCheckBox(self.verticalLayoutWidget)
        self.verticalLayout.addWidget(self.checkBox_4)
        self.checkBox_5 = QCheckBox(self.verticalLayoutWidget)
        self.verticalLayout.addWidget(self.checkBox_5)
        self.checkBox_6 = QCheckBox(self.verticalLayoutWidget)
        self.verticalLayout.addWidget(self.checkBox_6)
        self.checkBox_7 = QCheckBox(self.verticalLayoutWidget)
        self.verticalLayout.addWidget(self.checkBox_7)
        self.checkBox_8 = QCheckBox(self.verticalLayoutWidget)
        self.verticalLayout.addWidget(self.checkBox_8)
        self.checkBox_9 = QCheckBox(self.verticalLayoutWidget)
        self.verticalLayout.addWidget(self.checkBox_9)
        self.checkBox_10 = QCheckBox(self.verticalLayoutWidget)
        self.verticalLayout.addWidget(self.checkBox_10)

        self.verticalLayoutWidget_2 = QWidget(self.appswidget)
        self.verticalLayoutWidget_2.setGeometry(QRect(170, 55, 131, 291))
        self.verticalLayout_2 = QVBoxLayout(self.verticalLayoutWidget_2)
        self.verticalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.checkBox_11 = QCheckBox(self.verticalLayoutWidget_2)
        self.verticalLayout_2.addWidget(self.checkBox_11)
        self.checkBox_12 = QCheckBox(self.verticalLayoutWidget_2)
        self.verticalLayout_2.addWidget(self.checkBox_12)
        self.checkBox_13 = QCheckBox(self.verticalLayoutWidget_2)
        self.verticalLayout_2.addWidget(self.checkBox_13)
        self.checkBox_14 = QCheckBox(self.verticalLayoutWidget_2)
        self.verticalLayout_2.addWidget(self.checkBox_14)
        self.checkBox_15 = QCheckBox(self.verticalLayoutWidget_2)
        self.verticalLayout_2.addWidget(self.checkBox_15)
        self.checkBox_16 = QCheckBox(self.verticalLayoutWidget_2)
        self.verticalLayout_2.addWidget(self.checkBox_16)
        self.checkBox_17 = QCheckBox(self.verticalLayoutWidget_2)
        self.verticalLayout_2.addWidget(self.checkBox_17)
        self.checkBox_18 = QCheckBox(self.verticalLayoutWidget_2)
        self.verticalLayout_2.addWidget(self.checkBox_18)
        self.checkBox_19 = QCheckBox(self.verticalLayoutWidget_2)
        self.verticalLayout_2.addWidget(self.checkBox_19)
        self.checkBox_20 = QCheckBox(self.verticalLayoutWidget_2)
        self.verticalLayout_2.addWidget(self.checkBox_20)

        self.verticalLayoutWidget_3 = QWidget(self.appswidget)
        self.verticalLayoutWidget_3.setGeometry(QRect(330, 55, 131, 291))
        self.verticalLayout_3 = QVBoxLayout(self.verticalLayoutWidget_3)
        self.verticalLayout_3.setContentsMargins(0, 0, 0, 0)
        self.checkBox_21 = QCheckBox(self.verticalLayoutWidget_3)
        self.verticalLayout_3.addWidget(self.checkBox_21)
        self.checkBox_22 = QCheckBox(self.verticalLayoutWidget_3)
        self.verticalLayout_3.addWidget(self.checkBox_22)
        self.checkBox_23 = QCheckBox(self.verticalLayoutWidget_3)
        self.verticalLayout_3.addWidget(self.checkBox_23)
        self.checkBox_24 = QCheckBox(self.verticalLayoutWidget_3)
        self.verticalLayout_3.addWidget(self.checkBox_24)
        self.checkBox_25 = QCheckBox(self.verticalLayoutWidget_3)
        self.verticalLayout_3.addWidget(self.checkBox_25)
        self.checkBox_26 = QCheckBox(self.verticalLayoutWidget_3)
        self.verticalLayout_3.addWidget(self.checkBox_26)
        self.checkBox_27 = QCheckBox(self.verticalLayoutWidget_3)
        self.verticalLayout_3.addWidget(self.checkBox_27)
        self.checkBox_28 = QCheckBox(self.verticalLayoutWidget_3)
        self.verticalLayout_3.addWidget(self.checkBox_28)
        self.checkBox_29 = QCheckBox(self.verticalLayoutWidget_3)
        self.verticalLayout_3.addWidget(self.checkBox_29)
        self.checkBox_30 = QCheckBox(self.verticalLayoutWidget_3)
        self.verticalLayout_3.addWidget(self.checkBox_30)

        self.label_note = QLabel(self.appswidget)
        self.label_note.setGeometry(QRect(20, 350, 350, 16))
        self.label_space = QLabel(self.appswidget)
        self.label_space.setGeometry(QRect(20, 370, 350, 16))
        self.label_size = QLabel(self.appswidget)
        self.label_size.setGeometry(QRect(155, 370, 200, 16))

        self.horizontalLayoutWidget_2 = QWidget(self.appswidget)
        self.horizontalLayoutWidget_2.setGeometry(QRect(20, 400, 220, 31))
        self.horizontalLayout_2 = QHBoxLayout(self.horizontalLayoutWidget_2)
        self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)
        self.button_select_all = QPushButton(self.horizontalLayoutWidget_2)
        self.button_select_all.setIcon(QIcon(':/icon/no_check_icon.png'))
        self.button_select_all.setIconSize(QSize(18, 18))
        self.button_select_all.setLayoutDirection(Qt.RightToLeft)
        self.horizontalLayout_2.addWidget(self.button_select_all)
        self.button_select_all.setMinimumSize(100, 30)
        self.button_select_all.setProperty('class', 'Aqua')
        self.button_deselect_all = QPushButton(self.horizontalLayoutWidget_2)
        self.button_deselect_all.setIcon(QIcon(':/icon/no_cancel_icon.png'))
        self.button_deselect_all.setIconSize(QSize(18, 18))
        self.button_deselect_all.setLayoutDirection(Qt.RightToLeft)
        self.horizontalLayout_2.addWidget(self.button_deselect_all)
        self.button_deselect_all.setMinimumSize(100, 30)
        self.button_deselect_all.setProperty('class', 'Aqua')

        self.horizontalLayoutWidget = QWidget(self.appswidget)
        self.horizontalLayoutWidget.setGeometry(QRect(354, 400, 107, 31))
        self.horizontalLayout = QHBoxLayout(self.horizontalLayoutWidget)
        self.horizontalLayout.setContentsMargins(0, 0, 0, 0)
        self.button_uninstall = QPushButton(self.horizontalLayoutWidget)
        self.button_uninstall.setIcon(QIcon(':/icon/no_trash_icon.png'))
        self.button_uninstall.setIconSize(QSize(18, 18))
        self.button_uninstall.setLayoutDirection(Qt.RightToLeft)
        self.horizontalLayout.addWidget(self.button_uninstall)
        self.button_uninstall.setMinimumSize(100, 30)
        self.button_uninstall.setProperty('class', 'Grapefruit')

        with open("style.css", 'r') as file:
            self.sidebar.setStyleSheet(file.read())
            self.refresh_btn.setStyleSheet(file.read())
            self.homepage_btn.setStyleSheet(file.read())
            self.about_btn.setStyleSheet(file.read())
            self.quit_btn.setStyleSheet(file.read())
            self.progressbar.setStyleSheet(file.read())
            self.button_select_all.setStyleSheet(file.read())
            self.button_deselect_all.setStyleSheet(file.read())
            self.button_uninstall.setStyleSheet(file.read())

        self.setCentralWidget(self.centralwidget)
        self.retranslateUi()
        QMetaObject.connectSlotsByName(self)
Exemplo n.º 23
0
    def __init__(self, parent=None):  # pylint: disable=too-many-statements
        super(BookmarksWidget, self).__init__(parent=parent)

        self._app_window = parent

        if self._app_window.dwarf is None:
            print('BookmarksPanel created before Dwarf exists')
            return

        self.bookmarks = {}

        self._bookmarks_list = DwarfListView()
        self._bookmarks_list.doubleClicked.connect(self._on_double_clicked)
        self._bookmarks_list.setContextMenuPolicy(Qt.CustomContextMenu)
        self._bookmarks_list.customContextMenuRequested.connect(
            self._on_contextmenu)

        self._bookmarks_model = QStandardItemModel(0, 2)
        self._bookmarks_model.setHeaderData(0, Qt.Horizontal, 'Address')
        self._bookmarks_model.setHeaderData(1, Qt.Horizontal, 'Notes')

        self._bookmarks_list.setModel(self._bookmarks_model)

        self._bookmarks_list.header().setStretchLastSection(False)
        self._bookmarks_list.header().setSectionResizeMode(
            0, QHeaderView.ResizeToContents | QHeaderView.Interactive)
        self._bookmarks_list.header().setSectionResizeMode(
            1, QHeaderView.Stretch | QHeaderView.Interactive)

        v_box = QVBoxLayout(self)
        v_box.setContentsMargins(0, 0, 0, 0)
        v_box.addWidget(self._bookmarks_list)
        #header = QHeaderView(Qt.Horizontal, self)

        h_box = QHBoxLayout()
        h_box.setContentsMargins(5, 2, 5, 5)
        self.btn1 = QPushButton(
            QIcon(utils.resource_path('assets/icons/plus.svg')), '')
        self.btn1.setFixedSize(20, 20)
        self.btn1.clicked.connect(lambda: self._create_bookmark(-1))
        btn2 = QPushButton(QIcon(utils.resource_path('assets/icons/dash.svg')),
                           '')
        btn2.setFixedSize(20, 20)
        btn2.clicked.connect(self.delete_items)
        btn3 = QPushButton(
            QIcon(utils.resource_path('assets/icons/trashcan.svg')), '')
        btn3.setFixedSize(20, 20)
        btn3.clicked.connect(self.clear_list)
        h_box.addWidget(self.btn1)
        h_box.addWidget(btn2)
        h_box.addSpacerItem(
            QSpacerItem(0, 0, QSizePolicy.Expanding, QSizePolicy.Preferred))
        h_box.addWidget(btn3)
        # header.setLayout(h_box)
        # header.setFixedHeight(25)
        # v_box.addWidget(header)
        v_box.addLayout(h_box)
        self.setLayout(v_box)

        self._bold_font = QFont(self._bookmarks_list.font())
        self._bold_font.setBold(True)

        shortcut_addnative = QShortcut(QKeySequence(Qt.CTRL + Qt.Key_A),
                                       self._app_window, self._create_bookmark)
        shortcut_addnative.setAutoRepeat(False)
Exemplo n.º 24
0
    def __init__(self, parent=None):
        QWidget.__init__(self, parent)
        self.options = self.parent().options

        self.ffmpeg = self.options['paths']['ffmpeg_bin']
        self.thumbnails = self.options['paths']['thumbnails']
        self.thumb_width = self.options['thumbnail']['width']
        self.thumb_height = self.options['thumbnail']['height']

        self.jumping = False
        self.blocked = False
        self.durations = {}
        self.playback_value = 0

        self.text = ["None", "Repeat", "Random"]
        self.playlist_list = []
        self.values = [
            QMediaPlaylist.Loop, QMediaPlaylist.CurrentItemInLoop,
            QMediaPlaylist.Random
        ]

        # Thumbnail widget
        self.image_label = QLabel()

        # Control widgets
        self.playButton = QToolButton(clicked=self.play)
        self.playButton.setIcon(self.style().standardIcon(QStyle.SP_MediaPlay))

        self.stopButton = QToolButton(clicked=self.stop)
        self.stopButton.setIcon(self.style().standardIcon(QStyle.SP_MediaStop))
        self.stopButton.setEnabled(False)

        self.playbackButton = QToolButton(clicked=self.playback_mode)
        self.playbackButton.setText(self.text[0])

        self.nextButton = QToolButton(clicked=self.next_song)
        self.nextButton.setIcon(self.style().standardIcon(
            QStyle.SP_MediaSkipForward))

        self.previousButton = QToolButton(clicked=self.previous_song)
        self.previousButton.setIcon(self.style().standardIcon(
            QStyle.SP_MediaSkipBackward))

        self.muteButton = QToolButton(clicked=self.mute_clicked)
        self.muteButton.setIcon(self.style().standardIcon(
            QStyle.SP_MediaVolume))

        self.volumeSlider = QSlider(Qt.Horizontal,
                                    sliderMoved=self.change_volume)
        self.volumeSlider.setRange(0, 100)
        self.volumeSlider.setPageStep(1)
        self.volumeSlider.setValue(50)

        # Player and playlist setup

        self.player = QMediaPlayer()
        self.player.setVolume(50)
        self.player.stateChanged.connect(self.waveform)

        self.playlist = QMediaPlaylist()
        self.playlist.setPlaybackMode(self.values[0])
        self.playlist.setCurrentIndex(1)

        self.player.setPlaylist(self.playlist)

        self.playlistModel = PlaylistModel()
        self.playlistModel.setPlaylist(self.playlist)

        self.playlistView = QListView()
        self.playlistView.setModel(self.playlistModel)
        self.playlistView.setCurrentIndex(
            self.playlistModel.index(self.playlist.currentIndex(), 0))
        self.playlistView.activated.connect(self.jump)
        self.playlistView.setContextMenuPolicy(Qt.CustomContextMenu)
        self.playlistView.customContextMenuRequested.connect(
            self.list_view_menu)
        self.playlist.currentIndexChanged.connect(
            lambda position: self.change_thumbnail(position))

        song_search = QLineEdit()
        song_search.textChanged.connect(self.search)
        song_search.setClearButtonEnabled(True)

        # Playlist
        self.playlist_name = QComboBox()
        self.playlist_name.currentTextChanged.connect(self.switch_playlist)
        self.refresh_lists()

        self.up_button = QToolButton(clicked=self.move_up)
        self.up_button.setIcon(self.style().standardIcon(QStyle.SP_ArrowUp))
        self.down_button = QToolButton(clicked=self.move_down)
        self.down_button.setIcon(self.style().standardIcon(
            QStyle.SP_ArrowDown))

        # Sound wave widget

        self.wave_graphic = WaveGraphic(self)
        #self.wave_graphic.hide()

        # Testing slider again
        self.slider = QSlider(Qt.Horizontal)
        self.slider.setRange(0, self.player.duration() / 1000)
        self.slider.sliderMoved.connect(self.seek)
        self.player.durationChanged.connect(self.durationChanged)
        self.player.positionChanged.connect(self.positionChanged)

        # Shortcuts
        QShortcut(QKeySequence(Qt.CTRL + Qt.Key_F), self, song_search.setFocus)

        # Layouts setup

        playlist_layout = QHBoxLayout()
        playlist_layout.addWidget(self.playlist_name)
        playlist_layout.addWidget(self.up_button)
        playlist_layout.addWidget(self.down_button)

        control_layout = QHBoxLayout()
        control_layout.setContentsMargins(0, 0, 0, 0)
        control_layout.addWidget(self.stopButton)
        control_layout.addWidget(self.previousButton)
        control_layout.addWidget(self.playButton)
        control_layout.addWidget(self.nextButton)
        control_layout.addWidget(self.muteButton)
        control_layout.addWidget(self.volumeSlider)
        control_layout.addWidget(self.playbackButton)

        display_layout = QVBoxLayout()
        display_layout.addWidget(song_search)
        display_layout.addWidget(self.playlistView)
        display_layout.addLayout(playlist_layout)

        music_layout = QVBoxLayout()
        music_layout.addWidget(self.image_label)
        music_layout.addWidget(self.slider)
        music_layout.addLayout(control_layout)

        main_layout = QHBoxLayout()
        main_layout.addLayout(music_layout)
        main_layout.addLayout(display_layout)

        main_2_layout = QVBoxLayout()
        main_2_layout.addLayout(main_layout)
        main_2_layout.addWidget(self.wave_graphic)

        self.setLayout(main_2_layout)
Exemplo n.º 25
0
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("Trabalho AV1 Redes Convergentes")
        MainWindow.resize(800, 600)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.plainTxtBox = QtWidgets.QTextEdit(self.centralwidget)
        self.plainTxtBox.setGeometry(QtCore.QRect(10, 20, 381, 341))
        self.plainTxtBox.setObjectName("plainTxtBox")
        self.cryptTxtBox = QtWidgets.QTextBrowser(self.centralwidget)
        self.cryptTxtBox.setGeometry(QtCore.QRect(410, 20, 381, 341))
        self.cryptTxtBox.setObjectName("cryptTxtBox")
        self.chaveTxtBox = QtWidgets.QLineEdit(self.centralwidget)
        self.chaveTxtBox.setGeometry(QtCore.QRect(400, 380, 91, 31))
        self.chaveTxtBox.setObjectName("chaveTxtBox")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(400, 420, 93, 28))
        self.pushButton.setObjectName("pushButton")
        self.pushButton.clicked.connect(self.clickedCifrar)
        self.decodificarBtn = QtWidgets.QPushButton(self.centralwidget)
        self.decodificarBtn.setGeometry(QtCore.QRect(400, 460, 93, 28))
        self.decodificarBtn.setObjectName("decodificarBtn")
        self.decodificarBtn.clicked.connect(self.clickedDecodificar)
        self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox.setGeometry(QtCore.QRect(10, 370, 381, 171))
        self.groupBox.setObjectName("groupBox")
        self.cesarBtn = QtWidgets.QRadioButton(self.groupBox)
        self.cesarBtn.setGeometry(QtCore.QRect(10, 20, 111, 20))
        self.cesarBtn.setObjectName("cesarBtn")
        self.xorBtn = QtWidgets.QRadioButton(self.groupBox)
        self.xorBtn.setGeometry(QtCore.QRect(10, 50, 95, 20))
        self.xorBtn.setObjectName("xorBtn")
        self.sdesBtn = QtWidgets.QRadioButton(self.groupBox)
        self.sdesBtn.setGeometry(QtCore.QRect(10, 80, 95, 20))
        self.sdesBtn.setObjectName("sdesBtn")
        self.desBtn = QtWidgets.QRadioButton(self.groupBox)
        self.desBtn.setGeometry(QtCore.QRect(10, 110, 95, 20))
        self.desBtn.setObjectName("desBtn")
        self.aesBtn = QtWidgets.QRadioButton(self.groupBox)
        self.aesBtn.setGeometry(QtCore.QRect(10, 140, 95, 20))
        self.aesBtn.setObjectName("aesBtn")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 26))
        self.menubar.setObjectName("menubar")
        self.menuArquivo = QtWidgets.QMenu(self.menubar)
        self.menuArquivo.setObjectName("menuArquivo")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
        self.actionSalvar = QtWidgets.QAction(MainWindow)
        self.actionSalvar.setObjectName("actionSalvar")
        self.actionAbrir = QtWidgets.QAction(MainWindow)
        self.actionAbrir.setObjectName("actionAbrir")
        self.actionLimpar = QtWidgets.QAction(MainWindow)
        self.actionLimpar.setObjectName("actionLimpar")
        self.menuArquivo.addSeparator()
        self.menuArquivo.addAction(self.actionSalvar)
        self.menuArquivo.addAction(self.actionAbrir)
        self.menuArquivo.addAction(self.actionLimpar)
        self.actionLimpar.triggered.connect(self.clickedLimpar)
        self.actionAbrir.triggered.connect(self.clickedAbrir)
        self.actionAbrir.setShortcut(QKeySequence('Ctrl+O'))
        self.actionSalvar.triggered.connect(self.clickedSalvar)
        self.actionSalvar.setShortcut(QKeySequence('Ctrl+S'))
        self.menubar.addAction(self.menuArquivo.menuAction())

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
Exemplo n.º 26
0
WEB = 'https://ankiatts.appspot.com'

AGENT = 'AwesomeTTS/%s (Anki %s; PyQt %s; %s)' % (VERSION, anki.version,
                                                  PYQT_VERSION_STR,
                                                  get_platform_info())


# Begin core class initialization and dependency setup, pylint:disable=C0103

logger = Bundle(debug=lambda *a, **k: None, error=lambda *a, **k: None,
                info=lambda *a, **k: None, warn=lambda *a, **k: None)
# for logging output, replace `logger` with a real one, e.g.:
# import logging as logger
# logger.basicConfig(stream=sys.stdout, level=logger.DEBUG)

sequences = {key: QKeySequence()
             for key in ['browser_generator', 'browser_stripper',
                         'configurator', 'editor_generator', 'templater']}

config = Config(
    db=Bundle(path=paths.CONFIG,
              table='general',
              normalize=to.normalized_ascii),
    cols=[
        ('automaticAnswers', 'integer', True, to.lax_bool, int),
        ('automatic_answers_errors', 'integer', True, to.lax_bool, int),
        ('automaticQuestions', 'integer', True, to.lax_bool, int),
        ('automatic_questions_errors', 'integer', True, to.lax_bool, int),
        ('cache_days', 'integer', 365, int, int),
        ('delay_answers_onthefly', 'integer', 0, int, int),
        ('delay_answers_stored_ours', 'integer', 0, int, int),
Exemplo n.º 27
0
    def create_connects(self):
        self.ui.actionFullscreen_mode.setShortcut(QKeySequence.FullScreen)
        self.ui.actionOpen.setShortcut(QKeySequence(QKeySequence.Open))
        self.ui.actionOpen_directory.setShortcut(QKeySequence("Ctrl+Shift+O"))

        self.ui.menuEdit.aboutToShow.connect(self.on_edit_menu_about_to_show)

        self.ui.actionNew_Project.triggered.connect(self.on_new_project_action_triggered)
        self.ui.actionNew_Project.setShortcut(QKeySequence.New)
        self.ui.actionProject_settings.triggered.connect(self.on_project_settings_action_triggered)
        self.ui.actionSave_project.triggered.connect(self.project_manager.save_project)

        self.ui.actionAbout_AutomaticHacker.triggered.connect(self.on_show_about_clicked)
        self.ui.actionRecord.triggered.connect(self.on_show_record_dialog_action_triggered)

        self.ui.actionFullscreen_mode.triggered.connect(self.on_fullscreen_action_triggered)
        self.ui.actionSaveAllSignals.triggered.connect(self.signal_tab_controller.save_all)
        self.ui.actionClose_all.triggered.connect(self.on_close_all_action_triggered)
        self.ui.actionOpen.triggered.connect(self.on_open_file_action_triggered)
        self.ui.actionOpen_directory.triggered.connect(self.on_open_directory_action_triggered)
        self.ui.actionDecoding.triggered.connect(self.on_show_decoding_dialog_triggered)
        self.ui.actionSpectrum_Analyzer.triggered.connect(self.on_show_spectrum_dialog_action_triggered)
        self.ui.actionOptions.triggered.connect(self.show_options_dialog_action_triggered)
        self.ui.actionSniff_protocol.triggered.connect(self.show_proto_sniff_dialog)
        self.ui.actionAbout_Qt.triggered.connect(QApplication.instance().aboutQt)
        self.ui.actionSamples_from_csv.triggered.connect(self.on_import_samples_from_csv_action_triggered)

        self.ui.btnFileTreeGoUp.clicked.connect(self.on_btn_file_tree_go_up_clicked)
        self.ui.fileTree.directory_open_wanted.connect(self.project_manager.set_project_folder)

        self.signal_tab_controller.frame_closed.connect(self.close_signal_frame)
        self.signal_tab_controller.signal_created.connect(self.on_signal_created)
        self.signal_tab_controller.ui.scrollArea.files_dropped.connect(self.on_files_dropped)
        self.signal_tab_controller.files_dropped.connect(self.on_files_dropped)
        self.signal_tab_controller.frame_was_dropped.connect(self.set_frame_numbers)

        self.compare_frame_controller.show_interpretation_clicked.connect(
            self.show_protocol_selection_in_interpretation)
        self.compare_frame_controller.files_dropped.connect(self.on_files_dropped)
        self.compare_frame_controller.show_decoding_clicked.connect(self.on_show_decoding_dialog_triggered)
        self.compare_frame_controller.ui.treeViewProtocols.files_dropped_on_group.connect(
            self.on_files_dropped_on_group)
        self.compare_frame_controller.participant_changed.connect(self.signal_tab_controller.on_participant_changed)
        self.compare_frame_controller.ui.treeViewProtocols.close_wanted.connect(self.on_cfc_close_wanted)
        self.compare_frame_controller.show_config_field_types_triggered.connect(
            self.on_show_field_types_config_action_triggered)

        self.ui.lnEdtTreeFilter.textChanged.connect(self.on_file_tree_filter_text_changed)

        self.ui.tabWidget.currentChanged.connect(self.on_selected_tab_changed)
        self.project_save_timer.timeout.connect(self.project_manager.save_project)

        self.ui.actionConvert_Folder_to_Project.triggered.connect(self.project_manager.convert_folder_to_project)
        self.project_manager.project_loaded_status_changed.connect(self.ui.actionProject_settings.setVisible)
        self.project_manager.project_loaded_status_changed.connect(self.ui.actionSave_project.setVisible)
        self.project_manager.project_loaded_status_changed.connect(self.ui.actionConvert_Folder_to_Project.setDisabled)
        self.project_manager.project_updated.connect(self.on_project_updated)

        self.ui.textEditProjectDescription.textChanged.connect(self.on_text_edit_project_description_text_changed)
        self.ui.tabWidget_Project.tabBarDoubleClicked.connect(self.on_project_tab_bar_double_clicked)

        self.ui.listViewParticipants.doubleClicked.connect(self.on_project_settings_action_triggered)

        self.ui.actionShowFileTree.triggered.connect(self.on_action_show_filetree_triggered)
        self.ui.actionShowFileTree.setShortcut(QKeySequence("F10"))

        self.ui.menuFile.addSeparator()
        for i in range(constants.MAX_RECENT_FILE_NR):
            recent_file_action = QAction(self)
            recent_file_action.setVisible(False)
            recent_file_action.triggered.connect(self.on_open_recent_action_triggered)
            self.recentFileActionList.append(recent_file_action)
            self.ui.menuFile.addAction(self.recentFileActionList[i])
Exemplo n.º 28
0
    def __init__(self, core_args=None, core_env=None, api_port=None):
        QMainWindow.__init__(self)

        QCoreApplication.setOrganizationDomain("nl")
        QCoreApplication.setOrganizationName("TUDelft")
        QCoreApplication.setApplicationName("Tribler")
        QCoreApplication.setAttribute(Qt.AA_UseHighDpiPixmaps)

        self.gui_settings = QSettings()
        api_port = api_port or int(
            get_gui_setting(self.gui_settings, "api_port", DEFAULT_API_PORT))
        dispatcher.update_worker_settings(port=api_port)

        self.navigation_stack = []
        self.tribler_started = False
        self.tribler_settings = None
        self.debug_window = None
        self.core_manager = CoreManager(api_port)
        self.pending_requests = {}
        self.pending_uri_requests = []
        self.download_uri = None
        self.dialog = None
        self.new_version_dialog = None
        self.start_download_dialog_active = False
        self.request_mgr = None
        self.search_request_mgr = None
        self.search_suggestion_mgr = None
        self.selected_torrent_files = []
        self.vlc_available = True
        self.has_search_results = False
        self.last_search_query = None
        self.last_search_time = None
        self.start_time = time.time()
        self.exception_handler_called = False
        self.token_refresh_timer = None

        sys.excepthook = self.on_exception

        uic.loadUi(get_ui_file_path('mainwindow.ui'), self)
        TriblerRequestManager.window = self
        self.tribler_status_bar.hide()

        # Load dynamic widgets
        uic.loadUi(get_ui_file_path('torrent_channel_list_container.ui'),
                   self.channel_page_container)
        self.channel_torrents_list = self.channel_page_container.items_list
        self.channel_torrents_detail_widget = self.channel_page_container.details_tab_widget
        self.channel_torrents_detail_widget.initialize_details_widget()
        self.channel_torrents_list.itemClicked.connect(
            self.channel_page.clicked_item)

        uic.loadUi(get_ui_file_path('torrent_channel_list_container.ui'),
                   self.search_page_container)
        self.search_results_list = self.search_page_container.items_list
        self.search_torrents_detail_widget = self.search_page_container.details_tab_widget
        self.search_torrents_detail_widget.initialize_details_widget()
        self.search_results_list.itemClicked.connect(
            self.on_channel_item_click)
        self.search_results_list.itemClicked.connect(
            self.search_results_page.clicked_item)
        self.token_balance_widget.mouseReleaseEvent = self.on_token_balance_click

        def on_state_update(new_state):
            self.loading_text_label.setText(new_state)

        self.core_manager.core_state_update.connect(on_state_update)

        self.magnet_handler = MagnetHandler(self.window)
        QDesktopServices.setUrlHandler("magnet", self.magnet_handler,
                                       "on_open_magnet_link")

        self.debug_pane_shortcut = QShortcut(QKeySequence("Ctrl+d"), self)
        self.debug_pane_shortcut.activated.connect(
            self.clicked_menu_button_debug)

        # Remove the focus rect on OS X
        for widget in self.findChildren(QLineEdit) + self.findChildren(
                QListWidget) + self.findChildren(QTreeWidget):
            widget.setAttribute(Qt.WA_MacShowFocusRect, 0)

        self.menu_buttons = [
            self.left_menu_button_home, self.left_menu_button_search,
            self.left_menu_button_my_channel,
            self.left_menu_button_subscriptions,
            self.left_menu_button_video_player,
            self.left_menu_button_downloads, self.left_menu_button_discovered
        ]

        self.video_player_page.initialize_player()
        self.search_results_page.initialize_search_results_page()
        self.settings_page.initialize_settings_page()
        self.subscribed_channels_page.initialize()
        self.edit_channel_page.initialize_edit_channel_page()
        self.downloads_page.initialize_downloads_page()
        self.home_page.initialize_home_page()
        self.loading_page.initialize_loading_page()
        self.discovering_page.initialize_discovering_page()
        self.discovered_page.initialize_discovered_page()
        self.trust_page.initialize_trust_page()

        self.stackedWidget.setCurrentIndex(PAGE_LOADING)

        # Create the system tray icon
        if QSystemTrayIcon.isSystemTrayAvailable():
            self.tray_icon = QSystemTrayIcon()
            use_monochrome_icon = get_gui_setting(self.gui_settings,
                                                  "use_monochrome_icon",
                                                  False,
                                                  is_bool=True)
            self.update_tray_icon(use_monochrome_icon)

            # Create the tray icon menu
            menu = self.create_add_torrent_menu()
            show_downloads_action = QAction('Show downloads', self)
            show_downloads_action.triggered.connect(
                self.clicked_menu_button_downloads)
            token_balance_action = QAction('Show token balance', self)
            token_balance_action.triggered.connect(
                lambda: self.on_token_balance_click(None))
            quit_action = QAction('Quit Tribler', self)
            quit_action.triggered.connect(self.close_tribler)
            menu.addSeparator()
            menu.addAction(show_downloads_action)
            menu.addAction(token_balance_action)
            menu.addSeparator()
            menu.addAction(quit_action)
            self.tray_icon.setContextMenu(menu)
        else:
            self.tray_icon = None

        self.hide_left_menu_playlist()
        self.left_menu_button_debug.setHidden(True)
        self.top_menu_button.setHidden(True)
        self.left_menu.setHidden(True)
        self.token_balance_widget.setHidden(True)
        self.settings_button.setHidden(True)
        self.add_torrent_button.setHidden(True)
        self.top_search_bar.setHidden(True)

        # Set various icons
        self.top_menu_button.setIcon(QIcon(get_image_path('menu.png')))

        self.search_completion_model = QStringListModel()
        completer = QCompleter()
        completer.setModel(self.search_completion_model)
        completer.setCompletionMode(QCompleter.UnfilteredPopupCompletion)
        self.item_delegate = QStyledItemDelegate()
        completer.popup().setItemDelegate(self.item_delegate)
        completer.popup().setStyleSheet("""
        QListView {
            background-color: #404040;
        }

        QListView::item {
            color: #D0D0D0;
            padding-top: 5px;
            padding-bottom: 5px;
        }

        QListView::item:hover {
            background-color: #707070;
        }
        """)
        self.top_search_bar.setCompleter(completer)

        # Toggle debug if developer mode is enabled
        self.window().left_menu_button_debug.setHidden(not get_gui_setting(
            self.gui_settings, "debug", False, is_bool=True))

        # Start Tribler
        self.core_manager.start(core_args=core_args, core_env=core_env)

        self.core_manager.events_manager.received_search_result_channel.connect(
            self.search_results_page.received_search_result_channel)
        self.core_manager.events_manager.received_search_result_torrent.connect(
            self.search_results_page.received_search_result_torrent)
        self.core_manager.events_manager.torrent_finished.connect(
            self.on_torrent_finished)
        self.core_manager.events_manager.new_version_available.connect(
            self.on_new_version_available)
        self.core_manager.events_manager.tribler_started.connect(
            self.on_tribler_started)
        self.core_manager.events_manager.events_started.connect(
            self.on_events_started)
        self.core_manager.events_manager.low_storage_signal.connect(
            self.on_low_storage)

        # Install signal handler for ctrl+c events
        def sigint_handler(*_):
            self.close_tribler()

        signal.signal(signal.SIGINT, sigint_handler)

        self.installEventFilter(self.video_player_page)

        # Resize the window according to the settings
        center = QApplication.desktop().availableGeometry(self).center()
        pos = self.gui_settings.value(
            "pos",
            QPoint(center.x() - self.width() * 0.5,
                   center.y() - self.height() * 0.5))
        size = self.gui_settings.value("size", self.size())

        self.move(pos)
        self.resize(size)

        self.show()
Exemplo n.º 29
0
            return -1
        if qtkey in self.keys.values():
            return -1
        modifier, raw_winkey = translateKey(qtkey)
        if not RegisterHotKey(self.hwnd, self.nextId, modifier, raw_winkey):
            return -1
        self.keys[self.nextId] = (qtkey, (modifier, raw_winkey))
        self.nextId += 1
        return self.nextId - 1

    def removeHotKey(self, keyId):
        if keyId in self.keys:
            UnregisterHotKey(self.hwnd, keyId)
            del self.keys[keyId]

if __name__ == "__main__":
    from PyQt4.QtGui import QApplication, QPlainTextEdit

    app = QApplication([])
    w = QPlainTextEdit()
    w.show()
    globalKey = GlobalKey()
    globalKey.addHotKey("Test", QKeySequence("Ctrl+`"))
    def gotKey(keyId):
        w.appendPlainText("Got Key")
        #globalKey.removeHotKey(keyId)
        #globalKey.close()
    globalKey.catched.connect(gotKey)
    app.exec_()

Exemplo n.º 30
0
    def __init__(self, app: QApplication):
        super().__init__()

        Settings.load()

        self.setWindowTitle(APP_NAME)

        self.app = app
        app.setApplicationName(APP_NAME)
        app.setApplicationDisplayName(APP_NAME)

        self.preview_image = QLabel('No items to preview')
        self.preview_image.setFixedHeight(USABLE_HEIGHT)

        self.props_empty = False

        self.save_image_button = QPushButton('Save image')
        self.save_image_button.setDisabled(True)

        self.tree_view = ItemView()
        self.items = self.create_model()
        self.item_data = []
        self.tree_view.setRootIsDecorated(False)
        # self.tree_view.setAlternatingRowColors(True)
        self.tree_view.setModel(self.items)
        self.tree_view.clicked.connect(self.tree_view_clicked)
        self.tree_view.rowMoved.connect(self.tree_view_reorder)
        self.tree_view.setDragEnabled(True)
        self.tree_view.setDragDropMode(QTreeView.InternalMove)
        self.tree_view.setItemsExpandable(False)
        self.tree_view.setDragDropOverwriteMode(False)

        root = QVBoxLayout()

        items_layout = QHBoxLayout()

        group = QGroupBox('Source items:')
        layout = QVBoxLayout()
        layout.addWidget(self.tree_view)
        buttons = QHBoxLayout()

        add_menu = QMenu()
        add_menu.addAction(Text.get_add_add_action(self))
        add_menu.addAction(Image.get_add_add_action(self))
        add_menu.addAction(Barcode.get_add_add_action(self))
        add_menu.addAction(QrCode.get_add_add_action(self))

        add_menu.addSeparator()
        add_menu.addAction(Spacing.get_add_add_action(self))

        add_button = QPushButton('Add')
        add_button.setMenu(add_menu)
        buttons.addWidget(add_button)

        #buttons.addWidget(add_text_button)
        #buttons.addWidget(add_barcode_button)
        buttons.addStretch()
        buttons.setSpacing(1)

        b_down = QPushButton('⬇︎')
        b_down.clicked.connect(lambda _: self.move_item(1))
        b_up = QPushButton('⬆︎')
        b_up.clicked.connect(lambda _: self.move_item(-1))
        b_delete = QPushButton('Delete')
        b_delete.clicked.connect(self.delete_item)

        b_clone = QPushButton('Copy')
        b_clone.clicked.connect(self.on_clone)

        buttons.addWidget(b_clone)
        buttons.addSpacing(10)
        buttons.addWidget(b_up)
        buttons.addWidget(b_down)
        buttons.addSpacing(10)
        buttons.addWidget(b_delete)

        layout.addLayout(buttons)
        group.setLayout(layout)
        items_layout.addWidget(group)

        self.property_group = QGroupBox('Item properties:')
        self.props_layout = QVBoxLayout()

        self.property_group.setLayout(self.props_layout)

        self.props_current = QLabel()
        self.props_layout.addWidget(self.props_current)
        self.save_printable_button = QPushButton('Save Changes')
        self.save_printable_button.clicked.connect(self.save_props)
        self.props_layout.addWidget(self.save_printable_button)
        self.update_props()

        items_layout.addWidget(self.property_group)

        root.addLayout(items_layout)

        group = QGroupBox('Preview:')
        layout = QVBoxLayout()

        preview_wrapper = QScrollArea(self)

        #prev_layout = QHBoxLayout()
        preview_wrapper.setWidget(self.preview_image)
        preview_wrapper.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
        preview_wrapper.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
        preview_wrapper.setWidgetResizable(True)
        preview_wrapper.setFixedHeight(USABLE_HEIGHT)
        layout.addWidget(preview_wrapper)

        # layout.addWidget(self.save_image_button)
        group.setLayout(layout)
        group.setSizePolicy(
            QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed))

        root.addWidget(group)

        self.printer_select = QComboBox(self)
        fs_model = QFileSystemModel(self)
        #model_proxy = QSortFilterProxyModel(self)
        #model_proxy.setSourceModel(fs_model)
        # fs_model.setNameFilters(['tty.PT-P3*'])

        potential_printer = None
        printers = QStandardItemModel()

        #for p in QDir('/dev').entryList(['tty*'], QDir.System, QDir.Name):
        #    if p.startswith('tty.'):
        for p in LabelMaker.list_serial_ports():
            # pprint(p.__dict__)
            item = [QStandardItem(p.name), QStandardItem(p.device)]
            print(p.name)
            printers.appendRow(item)
            '''
            item = QStandardItem('/dev/' + p)
            printers.appendRow(item)
            if p.startswith('tty.PT-P3'):
                potential_printer = item
            '''

        #print(printers.entryList())

        #model_proxy.setRecursiveFilteringEnabled(True)
        #model_proxy.setFilterKeyColumn(0)

        fs_model.setRootPath('/dev/')  #/Users/nilsmasen')
        fs_model.setFilter(QDir.System)

        dev_index = fs_model.index('/dev')
        #proxy_dev = model_proxy.mapFromSource(dev_index)

        self.printer_select.setModel(printers)

        if potential_printer is not None:
            index = printers.indexFromItem(potential_printer)
            self.printer_select.setCurrentIndex(index.row())
        #printer_select.setRootModelIndex(dev_index)
        #printer_select.setRootIndex(dev_index)
        #printer_select.setExpanded(dev_index, True)
        #model_proxy.setFilterWildcard('tty*')

        bottom_box = QGroupBox('Print label: ')
        bottom_bar = QHBoxLayout()
        bottom_bar.addWidget(QLabel('Print device:'))
        bottom_bar.addWidget(self.printer_select)
        bottom_bar.addStretch()
        # /dev/tty.PT-P300BT0607-Serial
        print_button = QPushButton('Print')
        print_button.setFixedWidth(100)
        bottom_bar.addWidget(print_button)
        print_button.clicked.connect(self.print_clicked)

        bottom_box.setLayout(bottom_bar)
        root.addWidget(bottom_box)

        root_widget = QWidget()
        root_widget.setFixedWidth(800)
        root_widget.setLayout(root)
        self.setCentralWidget(root_widget)
        menu = QMenuBar()
        self.setMenuBar(menu)

        menu.setWindowTitle(APP_NAME)
        tools_menu = menu.addMenu('Python')
        prefs = QAction('&Preferences', self)
        prefs.triggered.connect(self.on_prefs)
        tools_menu.addAction(prefs)
        about = QAction('About ' + APP_NAME, self)
        about.triggered.connect(self.on_prefs)
        about.setMenuRole(QAction.AboutRole)
        tools_menu.addAction(about)

        file_menu = menu.addMenu('Label')
        act_new = QAction('&New', self)
        act_new.triggered.connect(self.on_new)
        file_menu.addAction(act_new)
        file_menu.addSeparator()
        act_open = QAction('&Open', self)
        act_open.triggered.connect(self.on_open)
        act_open.setShortcut(QKeySequence('Ctrl+O'))
        file_menu.addAction(act_open)
        file_menu.addSeparator()
        act_save = QAction('&Save', self)
        act_save.triggered.connect(self.on_save)
        act_save.setShortcut(QKeySequence("Ctrl+S"))
        file_menu.addAction(act_save)
        act_save_as = QAction('Save &as...', self)
        act_save_as.triggered.connect(self.on_save_as)
        act_save_as.setShortcut(QKeySequence("Ctrl+Shift+S"))
        file_menu.addAction(act_save_as)
        file_menu.addSeparator()
        file_menu.addAction(QAction('&Export image', self))