def _disconnect_icon(): """Determine which icon to display if disconnect menu is toggled on/off. Returns: QtGui.QIcon """ # Clipboard _disconnected and ignoring changes if settings.get_disconnect(): return QtGui.QIcon.fromTheme('network-offline', QtGui.QIcon(resource_filename('icons/disconnect.png'))) # Clipboard connected and monitoring else: return QtGui.QIcon.fromTheme('network-transmit-receive', QtGui.QIcon(resource_filename('icons/connect.png')))
def setup_menu(self): """Create right click menu. """ # Right click menu menu = QtGui.QMenu() # Open or hide main window toggle_act = menu.addAction(QtGui.QIcon.fromTheme('search', QtGui.QIcon( resource_filename('icons/search.png'))), 'Toggle') menu.addSeparator() # Disconnect from OS clipboard(s) self.disconnect_act = menu.addAction(_disconnect_icon(), 'Disconnect') self.disconnect_act.setCheckable(True) self.disconnect_act.setChecked(settings.get_disconnect()) # Open settings dialog settings_act = menu.addAction(QtGui.QIcon.fromTheme('emblem-system', QtGui.QIcon(resource_filename( 'icons/settings.png'))), 'Settings') # Open about dialog about_act = menu.addAction(QtGui.QIcon.fromTheme('help-about', QtGui.QIcon( resource_filename('icons/about.png'))), 'About') menu.addSeparator() # Exit application exit_act = menu.addAction(QtGui.QIcon.fromTheme('application-exit', QtGui.QIcon( resource_filename('icons/exit.png'))), 'Quit') # Connect menu triggered action to functions self.connect(toggle_act, QtCore.SIGNAL('triggered()'), self._emit_toggle_window) self.connect(self.disconnect_act, QtCore.SIGNAL('triggered()'), self._disconnect) self.connect(settings_act, QtCore.SIGNAL('triggered()'), self._emit_open_settings) self.connect(about_act, QtCore.SIGNAL("triggered()"), self._about) self.connect(exit_act, QtCore.SIGNAL("triggered()"), self._exit) self.setContextMenu(menu)
def __init__(self, parent=None): super(SystemTrayIcon, self).__init__(parent) self.parent = parent self.setIcon(QtGui.QIcon(resource_filename('icons/clipmanager.ico'))) self.setToolTip(APP_NAME) self.setup_menu()
def __init__(self, parent=None): super(PreviewDialog, self).__init__(parent) self.parent = parent self.setWindowIcon(QtGui.QIcon(resource_filename('icons/clipmanager.ico'))) self.setWindowTitle('Preview') self.resize(QtCore.QSize(500,300)) self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
def setup_ui(self): """Display application name, version, company, and url. """ app_name = QtCore.QCoreApplication.applicationName() app_version = QtCore.QCoreApplication.applicationVersion() app_org = QtCore.QCoreApplication.organizationName() app_domain = QtCore.QCoreApplication.organizationDomain() # Application logo # app_pixmap = QtGui.QPixmap('icons/app.ico') # scale_size = QtCore.QSize(50, 50) # app_pixmap = app_pixmap.scaled(scale_size, QtCore.Qt.IgnoreAspectRatio, # QtCore.Qt.FastTransformation) # app_logo = QtGui.QLabel() # app_logo.setFixedSize(scale_size) # app_logo.setPixmap(app_pixmap) # app_logo.setAlignment(QtCore.Qt.AlignHCenter) # Company url. Todo: Remove mailto when I have a domain/company name company_url = QtGui.QLabel('<a href="%s">%s</a>' % (app_domain, app_domain)) company_url.setTextFormat(QtCore.Qt.RichText) company_url.setTextInteractionFlags(QtCore.Qt.TextBrowserInteraction) company_url.setOpenExternalLinks(True) with open (resource_filename('license.txt'), 'r') as license_file: about_text = license_file.read() self.about_doc = QtGui.QTextEdit() self.about_doc.setReadOnly(True) self.about_doc.setPlainText(about_text) # about_doc.setHtml(about_text) # Close button button_box = QtGui.QDialogButtonBox(QtGui.QDialogButtonBox.Close) layout = QtGui.QGridLayout() # layout.addWidget(app_logo, 0, 0, 4, 1) layout.addWidget(QtGui.QLabel('Name:'), 0, 0) layout.addWidget(QtGui.QLabel(app_name), 0, 1) layout.addWidget(QtGui.QLabel('Version:'), 1, 0) layout.addWidget(QtGui.QLabel(app_version), 1, 1) layout.addWidget(QtGui.QLabel('Company:'), 2, 0) layout.addWidget(QtGui.QLabel(app_org), 2, 1) layout.addWidget(QtGui.QLabel('Url:'), 3, 0) layout.addWidget(company_url, 3, 1) layout.addWidget(self.about_doc, 4, 0, 1, 4) layout.addWidget(button_box, 5, 0, 1, 4) self.setLayout(layout) button_box.rejected.connect(self.close)
def __init__(self, parent=None): super(SettingsDialog, self).__init__(parent) self.parent = parent self.setWindowIcon(QtGui.QIcon(resource_filename('icons/clipmanager.ico'))) self.setWindowTitle('Settings') self.setAttribute(QtCore.Qt.WA_DeleteOnClose) self.setup_ui()
def __init__(self, minimize=False): """Initialize main window, systemtray, global hotkey, and signals. Args: minimize: True, minimize to system tray. False, bring window to front. """ super(MainWindow, self).__init__() self.setWindowTitle(APP_NAME) self.setWindowIcon(QtGui.QIcon(utils.resource_filename('icons/clipmanager.ico'))) # Remove minimize and maximize buttons from window title self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint| QtCore.Qt.CustomizeWindowHint| QtCore.Qt.WindowCloseButtonHint) # Connect to database and create tables self.db = database.create_connection(STORAGE_PATH) database.create_tables() # Create main widget that holds contents of clipboard history self.main_widget = MainWidget(self) self.setCentralWidget(self.main_widget) # Create system tray icon if not QtGui.QSystemTrayIcon.isSystemTrayAvailable(): logging.warn('cannot find a system tray.') QtGui.QMessageBox.warning(self, 'System Tray', 'Cannot find a system tray.') self.tray_icon = systemtray.SystemTrayIcon(self) self.tray_icon.activated.connect(self._on_icon_activated) self.tray_icon.show() # Return OS specific global hot key binder and set it self.key_binder = hotkey.Binder(self) self._set_hot_key() # Toggle window from system tray right click menu self.connect(self.tray_icon, QtCore.SIGNAL('toggle-window()'), self._on_toggle_window) # Open settings dialog from right click menu on system tray and view self.connect(self.tray_icon, QtCore.SIGNAL('open-settings()'), self._on_open_settings) self.connect(self.main_widget, QtCore.SIGNAL('open-settings()'), self._on_open_settings) # Show window if not minimize: self._on_toggle_window()
def __init__(self, parent=None): self._is_playing = False self._is_recording = False self._icon_blocked = QtGui.QIcon(utils.resource_filename(ICON_BLOCKED)) self._icon_playing = QtGui.QIcon(utils.resource_filename(ICON_PLAYING)) self._icon_paused = QtGui.QIcon(utils.resource_filename(ICON_PAUSED)) self._icon_playing_and_recording = QtGui.QIcon(utils.resource_filename(ICON_PLAYING_AND_RECORDING)) self._last_icon = None QtGui.QSystemTrayIcon.__init__(self, self._icon_playing, parent) self._last_tooltip = "" self._last_song_title = "" menu = QtGui.QMenu(parent) self._play_action = menu.addAction("Play", self.on_play_click) self._pause_action = menu.addAction("Pause", self.on_pause_click) menu.addSeparator() self._current_song_menu = menu.addMenu("Current song") self._add_to_fav_action = self._current_song_menu.addAction( "Add to favourites", self.on_add_to_fav_click ) self._search_for_lyrics_action = self._current_song_menu.addAction( "Search for lyrics online", self.on_search_for_lyrics_click ) self._current_song_menu.addSeparator() self._blacklist_action = self._current_song_menu.addAction( "Mark as advertisement (Blacklist)", self.on_blacklist_click ) self._current_song_menu.addSeparator() self._start_recording_action = self._current_song_menu.addAction( "Record this song", self.on_record_click ) menu.addSeparator() self._stations_menu = menu.addMenu("Stations") for station in config.stations: item = self._stations_menu.addAction(station['name'], functools.partial(self.on_station_select, station)) item.setCheckable(True) menu.addSeparator() self._manage_menu = menu.addMenu("Manage") self._manage_blacklist_action = self._manage_menu.addAction( "Blacklist patterns...", self.on_manage_blacklist_click ) self._manage_favourites_action = self._manage_menu.addAction( "Favourites...", self.on_manage_favourites_click ) menu.addSeparator() self._exit_action = menu.addAction("Exit", self.on_exit_click) self.setContextMenu(menu) self.activated.connect(self.on_icon_click) self.show() dispatchers.player.station_changed += self.on_station_changed dispatchers.player.playing_state_changed += self.on_playing_state_changed dispatchers.player.song_changed += self.on_song_changed dispatchers.recorder.recording_stopped += self.on_recording_stopped dispatchers.recorder.recording_state_changed += self.on_recording_state_changed
def _create_context_menu(self): """Create right click menu item for items in list. """ self.setContextMenuPolicy(QtCore.Qt.ActionsContextMenu) # Set item to clipboard apply_act = QtGui.QAction(QtGui.QIcon.fromTheme('list-add', QtGui.QIcon( resource_filename('icons/add.png'))), 'Set to clipboard', self) apply_act.setShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Return)) # Preview item's contents preview_act = QtGui.QAction(QtGui.QIcon.fromTheme('document', QtGui.QIcon( resource_filename('icons/document.png'))), 'Preview', self) preview_act.setShortcut(QtGui.QKeySequence(QtCore.Qt.Key_F11)) # Delete item delete_act = QtGui.QAction(QtGui.QIcon.fromTheme('list-remove', QtGui.QIcon( resource_filename('icons/remove.png'))), 'Delete', self) delete_act.setShortcut(QtGui.QKeySequence.Delete) seperator_1 = QtGui.QAction(self) seperator_1.setSeparator(True) # Open settings dialog settings_act = QtGui.QAction(QtGui.QIcon.fromTheme('emblem-system', QtGui.QIcon( resource_filename('icons/settings.png'))), 'Settings', self) seperator_2 = QtGui.QAction(self) seperator_2.setSeparator(True) # Exit exit_act = QtGui.QAction(QtGui.QIcon.fromTheme('application-exit', QtGui.QIcon( resource_filename('icons/exit.png'))), 'Quit', self) self.addAction(apply_act) self.addAction(preview_act) self.addAction(delete_act) self.addAction(seperator_2) self.addAction(settings_act) self.addAction(seperator_1) self.addAction(exit_act) self.connect(apply_act, QtCore.SIGNAL('triggered()'), self._emit_set_clipboard) self.connect(preview_act, QtCore.SIGNAL('triggered()'), self._emit_open_preview) self.connect(delete_act, QtCore.SIGNAL('triggered()'), self._delete_rows) self.connect(settings_act, QtCore.SIGNAL('triggered()'), self._emit_open_settings) self.connect(exit_act, QtCore.SIGNAL('triggered()'), self._exit)
def __init__(self, parent=None): super(MainWidget, self).__init__(parent) self.parent = parent # Ignore clipboard change when user sets item to clipboard self.ignore_created = False # Monitor clipboards self.clipboard_monitor = clipboards.ClipBoards(self) # Create view, model, and proxy self.view_main = view.ListView(self) self.model_main = model.MainSqlTableModel(self) self.proxy_main = searchbox.SearchFilterProxyModel(self) self.proxy_main.setSourceModel(self.model_main) # self.proxy_main = QtGui.QSortFilterProxyModel(self) # self.proxy_main.setFilterKeyColumn(TITLEFULL) # self.proxy_main.setSourceModel(self.model_main) # self.proxy_main.setDynamicSortFilter(True) # self.proxy_main.setFilterCaseSensitivity(QtCore.Qt.CaseInsensitive) self.view_main.setModel(self.proxy_main) self.view_main.setModelColumn(TITLESHORT) # Pass view and proxy pointers to search box class self.search_box = searchbox.SearchBox(self.view_main, self.proxy_main) settings_button = QtGui.QPushButton(self) settings_button.setIcon(QtGui.QIcon.fromTheme('emblem-system', QtGui.QIcon( utils.resource_filename('icons/settings.png') ))) settings_button.setToolTip('Settings...') # Create layout layout = QtGui.QGridLayout(self) layout.addWidget(self.search_box, 0, 0) layout.addWidget(settings_button, 0, 1) layout.addWidget(self.view_main, 1, 0, 1, 2) self.setLayout(layout) # Set clipboard contents if return pressed or from right click menu self.connect(self.search_box, QtCore.SIGNAL('returnPressed()'), self.on_set_clipboard) # Search proxy model self.connect(self.search_box, QtCore.SIGNAL('textChanged(QString)'), self.proxy_main.setFilterFixedString) # Check selection in view during search self.connect(self.search_box, QtCore.SIGNAL('textChanged(QString)'), self.check_selection) # Set clipboard data from signal by view self.connect(self.view_main, QtCore.SIGNAL('set-clipboard()'), self.on_set_clipboard) # Open settings dialog from button next to search box self.connect(settings_button, QtCore.SIGNAL('clicked()'), self._emit_open_settings) # Open settings dialog from right click menu of the view self.connect(self.view_main, QtCore.SIGNAL('open-settings()'), self._emit_open_settings) # Show preview of selected item in view self.connect(self.view_main, QtCore.SIGNAL('open-preview(QModelIndex)'), self._on_open_preview) # Clipboard dataChanged() emits to append new item to model->view self.connect(self.clipboard_monitor, QtCore.SIGNAL('new-item(QMimeData)'), self._on_new_item)