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)
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)
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)
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)
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
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
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)
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)
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)
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()
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)
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)
def setShortcut(button, shortcutStr): button.setShortcut(QKeySequence(shortcutStr)) button.setText(button.text() + ' [' + shortcutStr + ']')
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()
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)
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)
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)
def registe_hotkey(self): self._app.hotkey_manager.registe( QKeySequence('Ctrl+F'), self.ui.songs_table_container.table_control.search_box.setFocus)
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
def getHotkeyForCommand(self, cmd): if plat.Supports.hotkeys: return hotkeys.default.hotkeyForCommand(cmd) else: return QKeySequence()
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),
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)
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)
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)
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)
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),
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])
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()
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_()
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))