def updateNetworkStatus(self): self.networkManagerAction.setIcon( common.complete_icon("network-idle") if network. isConnectedToNetwork() else common.complete_icon("network-offline" )) strength = system.get_signal_strength() self.networkManagerAction.setText(strength)
def updateLife(self): percentage = system.get_battery_percentage() text_percentage = str(percentage) + "%" self.setText(text_percentage) percent = tr("Power remaining: %s%s") ac = system.is_on_ac() self.setToolTip(percent % (text_percentage, " (AC)" if ac else "")) if ac: self.setIcon(complete_icon("charging")) return if percentage >= 40: self.setIcon(complete_icon("battery")) elif percentage >= 10: self.setIcon(complete_icon("battery-caution")) else: self.setIcon(complete_icon("dialog-warning"))
def __init__(self, *args, **kwargs): super(BatteryAction, self).__init__(*args, **kwargs) self.setToolTip(tr("Power")) if system.battery: self.updateLife() self.timer.timeout.connect(self.updateLife) if not self.timer.isActive(): self.timer.start(5000) elif system.is_on_ac(): self.setIcon(complete_icon("charging")) self.setText(tr("AC")) self.setToolTip(tr("System is running on AC power")) else: self.setIcon(complete_icon("dialog-warning")) self.setText(tr("N/A")) self.setToolTip(tr("Battery not detected"))
def __init__(self, *args, **kwargs): super(StatusRocker, self).__init__(*args, **kwargs) self.setWindowFlags(Qt.WindowStaysOnTopHint) # Displays the date and time while in fullscreen mode. self.dateTime = QAction(self) self.addAction(self.dateTime) self.dateTimeButton = self.widgetForAction(self.dateTime) self.dateTimeButton.setStyleSheet( "QToolButton { font-family: monospace; border-radius: 4px; padding: 2px; background: palette(highlight); color: palette(highlighted-text); }" ) self.dateTimeButton.clicked.connect(self.showCalendar) self.dateTime.setVisible(False) self.batteryAction = custom_widgets.BatteryAction(self) self.addAction(self.batteryAction) self.batteryWidget = self.widgetForAction(self.batteryAction) self.batteryWidget.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) # Add stuff for linux self.networkManagerAction = QAction( common.complete_icon("network-idle"), "N/A", self) self.networkManagerAction.setToolTip("Network Management") self.networkManagerAction.setShortcut("Alt+N") self.addAction(self.networkManagerAction) self.networkManagerButton = self.widgetForAction( self.networkManagerAction) self.networkManagerButton.setToolButtonStyle( Qt.ToolButtonTextBesideIcon) self.addAction(self.networkManagerAction) if sys.platform.startswith("linux"): self.networkManagerMenu = QMenu(self) self.networkManagerMenu.aboutToShow.connect( self.aboutToShowNetworkManagerMenu) self.connectedToAction = QAction(self.networkManagerMenu) self.connectedToAction.setDisabled(True) self.networkManagerMenu.addAction(self.connectedToAction) self.connectAction = QAction("Connect to Wi-Fi Network...", self.networkManagerMenu) self.connectAction.triggered.connect(lambda: os.system( "qdbus org.gnome.network_manager_applet /org/gnome/network_manager_applet ConnectToHiddenNetwork &" )) self.networkManagerMenu.addAction(self.connectAction) self.connectionEditAction = QAction("Edit Connections...", self.networkManagerMenu) self.connectionEditAction.triggered.connect( lambda: os.system("nm-connection-editor &")) self.networkManagerMenu.addAction(self.connectionEditAction) self.networkManagerAction.triggered.connect( self.networkManagerButton.showMenu) self.networkManagerAction.setMenu(self.networkManagerMenu) self.networkManagerButton.setPopupMode(QToolButton.InstantPopup) else: self.networkManagerAction.triggered.connect( lambda: os.system("control ncpa.cpl")) self.timer = QTimer(timeout=self.updateNetworkStatus, parent=self) self.timer.start(500)
def __init__(self, parent=None): super(SearchEditor, self).__init__(parent) self.setWindowFlags(Qt.FramelessWindowHint | Qt.Popup) self.parent = parent self.setWindowTitle(tr('Search Editor')) self.styleSheet = "QMainWindow { background: palette(window); border: 1px solid palette(dark); }" self.setStyleSheet(self.styleSheet) try: self.setWindowIcon(common.app_icon) except: pass closeWindowAction = QAction(self) closeWindowAction.setShortcuts(["Ctrl+W", "Ctrl+Shift+K"]) closeWindowAction.triggered.connect(self.close) self.addAction(closeWindowAction) self.entryBar = QToolBar(self) self.entryBar.setIconSize(QSize(16, 16)) self.entryBar.setStyleSheet(common.blank_toolbar) self.entryBar.setContextMenuPolicy(Qt.CustomContextMenu) self.entryBar.setMovable(False) self.addToolBar(self.entryBar) eLabel = QLabel(" " + tr('New expression:'), self) self.entryBar.addWidget(eLabel) self.expEntry = custom_widgets.LineEdit(self) self.expEntry.returnPressed.connect(self.addSearch) self.entryBar.addWidget(self.expEntry) self.addSearchButton = QToolButton(self) self.addSearchButton.setText(tr("Add")) self.addSearchButton.setIcon(common.complete_icon("list-add")) self.addSearchButton.clicked.connect(self.addSearch) self.entryBar.addWidget(self.addSearchButton) self.engineList = QListWidget(self) self.engineList.setAlternatingRowColors(True) self.engineList.itemClicked.connect(self.applySearch) self.engineList.itemActivated.connect(self.applySearch) self.engineList.itemActivated.connect(self.close) self.setCentralWidget(self.engineList) self.takeSearchAction = QAction(self) self.takeSearchAction.triggered.connect(self.takeSearch) self.takeSearchAction.setShortcut("Del") self.addAction(self.takeSearchAction) self.hideAction = QAction(self) self.hideAction.triggered.connect(self.hide) self.hideAction.setShortcut("Esc") self.addAction(self.hideAction) self.reload_()
def __init__(self, *args, **kwargs): super(LineEdit, self).__init__(*args, **kwargs) self.clearButton = QToolButton(self) icon = complete_icon("fileclose") self.clearButton.setIcon(icon) self.clearButton.setIconSize(icon.pixmap(QSize(16, 16)).size()) self.clearButton.setCursor(Qt.ArrowCursor) self.clearButton.setStyleSheet("QToolButton { border: none; padding: 0px; }") self.clearButton.hide() self.clearButton.clicked.connect(self.clear) self.textChanged.connect(self.updateCloseButton) frameWidth = self.style().pixelMetric(QStyle.PM_DefaultFrameWidth) self.setStyleSheet("QLineEdit { padding-right: %spx; }" % (self.clearButton.sizeHint().width() + frameWidth + 1,)) msz = self.minimumSizeHint() self.setMinimumSize(max(msz.width(), self.clearButton.sizeHint().height() + frameWidth * 2 + 2), max(msz.height(), self.clearButton.sizeHint().height() + frameWidth * 2 + 2));
def main(): app = QApplication(sys.argv) common.app_icon = common.complete_icon("nimbus") common.trayIcon = tray_icon.SystemTrayIcon() network.setup() filtering.setup() common.downloadManager = nwebkit.DownloadManager(windowTitle=tr("Downloads")) common.downloadManager.loadSession() settings.settingsDialog = settings_dialog.SettingsDialog() session.loadSession() if len(browser.windows) == 0: win = mainwindow.MainWindow() win.show() win.addTab() app.aboutToQuit.connect(prepareQuit) sys.exit(app.exec_())
def __init__(self, *args, **kwargs): super(StatusRocker, self).__init__(*args, **kwargs) self.setWindowFlags(Qt.WindowStaysOnTopHint) # Displays the date and time while in fullscreen mode. self.dateTime = QAction(self) self.addAction(self.dateTime) self.dateTimeButton = self.widgetForAction(self.dateTime) self.dateTimeButton.setStyleSheet("QToolButton { font-family: monospace; border-radius: 4px; padding: 2px; background: palette(highlight); color: palette(highlighted-text); }") self.dateTimeButton.clicked.connect(self.showCalendar) self.dateTime.setVisible(False) self.batteryAction = custom_widgets.BatteryAction(self) self.addAction(self.batteryAction) self.batteryWidget = self.widgetForAction(self.batteryAction) self.batteryWidget.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) # Add stuff for linux self.networkManagerAction = QAction(common.complete_icon("network-idle"), "N/A", self) self.networkManagerAction.setToolTip("Network Management") self.networkManagerAction.setShortcut("Alt+N") self.addAction(self.networkManagerAction) self.networkManagerButton = self.widgetForAction(self.networkManagerAction) self.networkManagerButton.setToolButtonStyle(Qt.ToolButtonTextBesideIcon) self.addAction(self.networkManagerAction) if sys.platform.startswith("linux"): self.networkManagerMenu = QMenu(self) self.networkManagerMenu.aboutToShow.connect(self.aboutToShowNetworkManagerMenu) self.connectedToAction = QAction(self.networkManagerMenu) self.connectedToAction.setDisabled(True) self.networkManagerMenu.addAction(self.connectedToAction) self.connectAction = QAction("Connect to Wi-Fi Network...", self.networkManagerMenu) self.connectAction.triggered.connect(lambda: os.system("qdbus org.gnome.network_manager_applet /org/gnome/network_manager_applet ConnectToHiddenNetwork &")) self.networkManagerMenu.addAction(self.connectAction) self.connectionEditAction = QAction("Edit Connections...", self.networkManagerMenu) self.connectionEditAction.triggered.connect(lambda: os.system("nm-connection-editor &")) self.networkManagerMenu.addAction(self.connectionEditAction) self.networkManagerAction.triggered.connect(self.networkManagerButton.showMenu) self.networkManagerAction.setMenu(self.networkManagerMenu) self.networkManagerButton.setPopupMode(QToolButton.InstantPopup) else: self.networkManagerAction.triggered.connect(lambda: os.system("control ncpa.cpl")) self.timer = QTimer(timeout=self.updateNetworkStatus, parent=self) self.timer.start(500)
def main(): app = QApplication(sys.argv) common.app_icon = common.complete_icon("nimbus") common.trayIcon = tray_icon.SystemTrayIcon() network.setup() filtering.setup() common.downloadManager = nwebkit.DownloadManager( windowTitle=tr("Downloads")) common.downloadManager.loadSession() settings.settingsDialog = settings_dialog.SettingsDialog() session.loadSession() if len(browser.windows) == 0: win = mainwindow.MainWindow() win.show() win.addTab() app.aboutToQuit.connect(prepareQuit) sys.exit(app.exec_())
def __init__(self, *args, **kwargs): super(LineEdit, self).__init__(*args, **kwargs) self.clearButton = QToolButton(self) icon = complete_icon("fileclose") self.clearButton.setIcon(icon) self.clearButton.setIconSize(icon.pixmap(QSize(16, 16)).size()) self.clearButton.setCursor(Qt.ArrowCursor) self.clearButton.setStyleSheet( "QToolButton { border: none; padding: 0px; }") self.clearButton.hide() self.clearButton.clicked.connect(self.clear) self.textChanged.connect(self.updateCloseButton) frameWidth = self.style().pixelMetric(QStyle.PM_DefaultFrameWidth) self.setStyleSheet( "QLineEdit { padding-right: %spx; }" % (self.clearButton.sizeHint().width() + frameWidth + 1, )) msz = self.minimumSizeHint() self.setMinimumSize( max(msz.width(), self.clearButton.sizeHint().height() + frameWidth * 2 + 2), max(msz.height(), self.clearButton.sizeHint().height() + frameWidth * 2 + 2))
def main(argv): global server_thread print("Starting %s %s..." % (common.app_name, common.app_version)) print(""" __ / \_ __( )_ _( \_ _( )_ (__________________) """) app = QApplication(argv) network.setup() filtering.setup() # Create extension server. server_thread = extension_server.ExtensionServerThread(QCoreApplication.instance()) # Start DBus loop if has_dbus: print("DBus available. Creating main loop...", end=" ") mainloop = DBusQtMainLoop(set_as_default = True) dbus.set_default_main_loop(mainloop) print("done.") else: print("DBus unavailable.") # Create app. app.setApplicationName(common.app_name) app.setApplicationVersion(common.app_version) app.installTranslator(translate.translator) # We want Nimbus to stay open when the last window is closed, # so we set this. app.setQuitOnLastWindowClosed(False) # If D-Bus is present... if has_dbus: print("Creating DBus session bus...", end=" ") try: bus = dbus.SessionBus() except: print("failed.") else: print("done.") try: print("Checking for running instances of %s..." % (common.app_name,), end=" ") proxy = bus.get_object("org.nimbus.%s" % (common.app_name,), "/%s" % common.app_name,) except: dbus_present = False else: dbus_present = True print("done.") # If Nimbus detects the existence of another Nimbus process, it # will send all the requested URLs to the existing process and # exit. if dbus_present: print("An instance of Nimbus is already running. Passing arguments via DBus.") for arg in argv[1:]: proxy.addTab(arg) if len(argv) < 2: proxy.addWindow() return elif has_dbus: print("No prior instances found. Continuing on our merry way.") # Hack together the browser's icon. This needs to be improved. common.app_icon = common.complete_icon("nimbus") app.setWindowIcon(common.app_icon) common.searchEditor = search_manager.SearchEditor() common.downloadManager = DownloadManager(windowTitle=tr("Downloads")) common.downloadManager.resize(QSize(480, 320)) common.downloadManager.loadSession() # Create tray icon. common.trayIcon = SystemTrayIcon() common.trayIcon.newWindowRequested.connect(addWindow) #common.trayIcon.windowReopenRequested.connect(reopenWindow) common.trayIcon.show() # Creates a licensing information dialog. common.licenseDialog = custom_widgets.LicenseDialog() # Create instance of clear history dialog. common.chistorydialog = clear_history_dialog.ClearHistoryDialog() uc = QUrl.fromUserInput(settings.user_css) websettings = QWebSettings.globalSettings() websettings.setUserStyleSheetUrl(uc) websettings.enablePersistentStorage(settings.settings_folder) websettings.setAttribute(websettings.LocalContentCanAccessRemoteUrls, True) websettings.setAttribute(websettings.LocalContentCanAccessFileUrls, True) websettings.setAttribute(websettings.DeveloperExtrasEnabled, True) try: websettings.setAttribute(websettings.ScrollAnimatorEnabled, True) except: pass common.applyWebSettings() # Set up settings dialog. settings.settingsDialog = settings_dialog.SettingsDialog() settings.settingsDialog.setWindowFlags(Qt.Dialog) closeSettingsDialogAction = QAction(settings.settingsDialog) closeSettingsDialogAction.setShortcuts(["Esc", "Ctrl+W"]) closeSettingsDialogAction.triggered.connect(settings.settingsDialog.hide) settings.settingsDialog.addAction(closeSettingsDialogAction) # Set up clippings manager. settings.clippingsManager = settings_dialog.ClippingsPanel() settings.clippingsManager.setWindowFlags(Qt.Dialog) closeClippingsManagerAction = QAction(settings.clippingsManager) closeClippingsManagerAction.setShortcuts(["Esc", "Ctrl+W"]) closeClippingsManagerAction.triggered.connect(settings.clippingsManager.hide) settings.clippingsManager.addAction(closeClippingsManagerAction) # Create DBus server if has_dbus: print("Creating DBus server...", end=" ") server = DBusServer(bus) print("done.") # Load adblock rules. filtering.adblock_filter_loader.start() if not os.path.isdir(settings.extensions_folder): try: print("Copying extensions...", end=" ") shutil.copytree(common.extensions_folder,\ settings.extensions_folder) except: print("failed.") else: print("done.") if not os.path.isfile(settings.startpage): try: print("Copying start page...", end=" ") shutil.copy2(common.startpage, settings.startpage) except: print("failed.") else: print("done.") settings.reload_extensions() settings.reload_userscripts() server_thread.setDirectory(settings.extensions_folder) # Start extension server. server_thread.start() # On quit, save settings. app.aboutToQuit.connect(prepareQuit) # Load settings. data.loadData() # View source dialog. common.viewSourceDialog = ViewSourceDialogTabber() #common.viewSourceDialog.show() # This is a baaad name. common.sessionSaver = QTimer(QCoreApplication.instance()) common.sessionSaver.timeout.connect(saveSession) common.sessionSaver.timeout.connect(data.saveData) if common.portable: common.sessionSaver.start(50000) else: common.sessionSaver.start(30000) common.desktop = QDesktopWidget() changeSettings = False if os.path.isfile(settings.crash_file): print("Crash file detected.", end="") if not has_dbus: print(" With no DBus, %s may already be running." % common.app_name,) multInstances = QMessageBox.question(None, tr("Hm."), tr("It's not good to run multiple instances of %(app_name)s. Is an instance of %(app_name)s already running?") % {"app_name": common.app_name}, QMessageBox.Yes | QMessageBox.No) if multInstances == QMessageBox.Yes: print("%s will now halt." % common.app_name,) return else: print() clearCache = QMessageBox() clearCache.setWindowTitle(tr("Ow.")) clearCache.setText(tr("%(app_name)s seems to have crashed during your last session. Fortunately, your tabs were saved up to 30 seconds beforehand. Would you like to restore them?") % {"app_name": common.app_name}) clearCache.addButton(QPushButton(tr("Yes and change &settings")), QMessageBox.YesRole) clearCache.addButton(QMessageBox.Yes) clearCache.addButton(QMessageBox.No) returnValue = clearCache.exec_() if returnValue == QMessageBox.No: try: os.remove(settings.session_file) except: pass if returnValue == 0: changeSettings = True else: f = open(settings.crash_file, "w") f.write("") f.close() if not "--daemon" in argv and os.path.exists(settings.session_file): print("Loading previous session...", end=" ") if changeSettings: settings.settingsDialog.exec_() loadSession() print("done.") if not "--daemon" in argv and len(argv[1:]) > 0: # Create instance of MainWindow. print("Loading the URLs you requested...", end=" ") if len(browser.windows) > 0: win = browser.windows[-1] else: win = MainWindow(appMode = ("--app" in argv)) # Open URLs from command line. if len(argv[1:]) > 0: for arg in argv[1:]: if "." in arg or ":" in arg: win.addTab(url=arg) if win.tabWidget().count() < 1: win.addTab(url=settings.settings.value("general/Homepage")) # Show window. win.show() print("done.") elif not "--daemon" in argv and len(argv[1:]) == 0 and len(browser.windows) == 0: win = MainWindow(appMode = ("--app" in argv)) win.addTab(url=settings.settings.value("general/Homepage")) win.show() # Load filtering stuff. if not os.path.isdir(filtering.hosts_folder): common.trayIcon.showMessage(tr("Downloading content filters"), ("Ad blocking and host filtering will not work until this completes.")) filtering.update_filters() else: filtering.load_host_rules() # Start app. print("Kon~!") sys.exit(app.exec_())
def __init__(self, parent=None): super(SystemTrayIcon, self).__init__(common.app_icon, parent) # Set tooltip. self.setToolTip(common.app_name) self.widget = QWidget(None) self.widget.resize(0, 0) self.widget.setWindowFlags(Qt.FramelessWindowHint) # Set context menu. self.menu = QMenu(None) self.setContextMenu(self.menu) # New window action newWindowAction = QAction(common.complete_icon("window-new"), tr("&New Window"), self) newWindowAction.triggered.connect(self.newWindowRequested.emit) self.menu.addAction(newWindowAction) # Reopen window action reopenWindowAction = QAction(common.complete_icon("reopen-window"), tr("R&eopen Window"), self) reopenWindowAction.triggered.connect(self.reopenWindow) self.menu.addAction(reopenWindowAction) self.menu.addSeparator() self.sessionManager = session.SessionManager(None) # Load session action loadSessionAction = QAction(common.complete_icon("document-open"), tr("&Load Session..."), self) loadSessionAction.triggered.connect(self.loadSession) self.menu.addAction(loadSessionAction) # Save session action saveSessionAction = QAction(common.complete_icon("document-save-as"), tr("Sa&ve Session..."), self) saveSessionAction.triggered.connect(self.saveSession) self.menu.addAction(saveSessionAction) self.menu.addSeparator() # Settings action settingsAction = QAction(common.complete_icon("preferences-system"), tr("&Settings..."), self) settingsAction.triggered.connect(self.openSettings) self.menu.addAction(settingsAction) # Clippings manager clippingsAction = QAction(common.complete_icon("edit-paste"), tr("&Manage Clippings..."), self) clippingsAction.triggered.connect(self.openClippings) self.menu.addAction(clippingsAction) self.menu.addSeparator() # About Nimbus action. aboutAction = QAction(common.complete_icon("help-about"), tr("A&bout %s") % (common.app_name,), self) aboutAction.triggered.connect(self.about) self.menu.addAction(aboutAction) # Quit action quitAction = QAction(common.complete_icon("application-exit"), tr("Quit"), self) quitAction.triggered.connect(QApplication.quit) self.menu.addAction(quitAction) """if self.geometry().width() < 8:
def icon(self): return common.complete_icon("preferences-system")
def updateNetworkStatus(self): self.networkManagerAction.setIcon(common.complete_icon("network-idle") if network.isConnectedToNetwork() else common.complete_icon("network-offline")) strength = system.get_signal_strength() self.networkManagerAction.setText(strength)
def main(argv): global server_thread print("Starting %s %s..." % (common.app_name, common.app_version)) print(""" __ / \_ __( )_ _( \_ _( )_ (__________________) """) app = QApplication(argv) network.setup() filtering.setup() # Create extension server. server_thread = extension_server.ExtensionServerThread( QCoreApplication.instance()) # Start DBus loop if has_dbus: print("DBus available. Creating main loop...", end=" ") mainloop = DBusQtMainLoop(set_as_default=True) dbus.set_default_main_loop(mainloop) print("done.") else: print("DBus unavailable.") # Create app. app.setApplicationName(common.app_name) app.setApplicationVersion(common.app_version) app.installTranslator(translate.translator) # We want Nimbus to stay open when the last window is closed, # so we set this. app.setQuitOnLastWindowClosed(False) # If D-Bus is present... if has_dbus: print("Creating DBus session bus...", end=" ") try: bus = dbus.SessionBus() except: print("failed.") else: print("done.") try: print("Checking for running instances of %s..." % (common.app_name, ), end=" ") proxy = bus.get_object( "org.nimbus.%s" % (common.app_name, ), "/%s" % common.app_name, ) except: dbus_present = False else: dbus_present = True print("done.") # If Nimbus detects the existence of another Nimbus process, it # will send all the requested URLs to the existing process and # exit. if dbus_present: print( "An instance of Nimbus is already running. Passing arguments via DBus." ) for arg in argv[1:]: proxy.addTab(arg) if len(argv) < 2: proxy.addWindow() return elif has_dbus: print("No prior instances found. Continuing on our merry way.") # Hack together the browser's icon. This needs to be improved. common.app_icon = common.complete_icon("nimbus") app.setWindowIcon(common.app_icon) common.searchEditor = search_manager.SearchEditor() common.downloadManager = DownloadManager(windowTitle=tr("Downloads")) common.downloadManager.resize(QSize(480, 320)) common.downloadManager.loadSession() # Create tray icon. common.trayIcon = SystemTrayIcon() common.trayIcon.newWindowRequested.connect(addWindow) #common.trayIcon.windowReopenRequested.connect(reopenWindow) common.trayIcon.show() # Creates a licensing information dialog. common.licenseDialog = custom_widgets.LicenseDialog() # Create instance of clear history dialog. common.chistorydialog = clear_history_dialog.ClearHistoryDialog() uc = QUrl.fromUserInput(settings.user_css) websettings = QWebSettings.globalSettings() websettings.setUserStyleSheetUrl(uc) websettings.enablePersistentStorage(settings.settings_folder) websettings.setAttribute(websettings.LocalContentCanAccessRemoteUrls, True) websettings.setAttribute(websettings.LocalContentCanAccessFileUrls, True) websettings.setAttribute(websettings.DeveloperExtrasEnabled, True) try: websettings.setAttribute(websettings.ScrollAnimatorEnabled, True) except: pass common.applyWebSettings() # Set up settings dialog. settings.settingsDialog = settings_dialog.SettingsDialog() settings.settingsDialog.setWindowFlags(Qt.Dialog) closeSettingsDialogAction = QAction(settings.settingsDialog) closeSettingsDialogAction.setShortcuts(["Esc", "Ctrl+W"]) closeSettingsDialogAction.triggered.connect(settings.settingsDialog.hide) settings.settingsDialog.addAction(closeSettingsDialogAction) # Set up clippings manager. settings.clippingsManager = settings_dialog.ClippingsPanel() settings.clippingsManager.setWindowFlags(Qt.Dialog) closeClippingsManagerAction = QAction(settings.clippingsManager) closeClippingsManagerAction.setShortcuts(["Esc", "Ctrl+W"]) closeClippingsManagerAction.triggered.connect( settings.clippingsManager.hide) settings.clippingsManager.addAction(closeClippingsManagerAction) # Create DBus server if has_dbus: print("Creating DBus server...", end=" ") server = DBusServer(bus) print("done.") # Load adblock rules. filtering.adblock_filter_loader.start() if not os.path.isdir(settings.extensions_folder): try: print("Copying extensions...", end=" ") shutil.copytree(common.extensions_folder,\ settings.extensions_folder) except: print("failed.") else: print("done.") if not os.path.isfile(settings.startpage): try: print("Copying start page...", end=" ") shutil.copy2(common.startpage, settings.startpage) except: print("failed.") else: print("done.") settings.reload_extensions() settings.reload_userscripts() server_thread.setDirectory(settings.extensions_folder) # Start extension server. server_thread.start() # On quit, save settings. app.aboutToQuit.connect(prepareQuit) # Load settings. data.loadData() # View source dialog. common.viewSourceDialog = ViewSourceDialogTabber() #common.viewSourceDialog.show() # This is a baaad name. common.sessionSaver = QTimer(QCoreApplication.instance()) common.sessionSaver.timeout.connect(saveSession) common.sessionSaver.timeout.connect(data.saveData) if common.portable: common.sessionSaver.start(50000) else: common.sessionSaver.start(30000) common.desktop = QDesktopWidget() changeSettings = False if os.path.isfile(settings.crash_file): print("Crash file detected.", end="") if not has_dbus: print( " With no DBus, %s may already be running." % common.app_name, ) multInstances = QMessageBox.question( None, tr("Hm."), tr("It's not good to run multiple instances of %(app_name)s. Is an instance of %(app_name)s already running?" ) % {"app_name": common.app_name}, QMessageBox.Yes | QMessageBox.No) if multInstances == QMessageBox.Yes: print("%s will now halt." % common.app_name, ) return else: print() clearCache = QMessageBox() clearCache.setWindowTitle(tr("Ow.")) clearCache.setText( tr("%(app_name)s seems to have crashed during your last session. Fortunately, your tabs were saved up to 30 seconds beforehand. Would you like to restore them?" ) % {"app_name": common.app_name}) clearCache.addButton(QPushButton(tr("Yes and change &settings")), QMessageBox.YesRole) clearCache.addButton(QMessageBox.Yes) clearCache.addButton(QMessageBox.No) returnValue = clearCache.exec_() if returnValue == QMessageBox.No: try: os.remove(settings.session_file) except: pass if returnValue == 0: changeSettings = True else: f = open(settings.crash_file, "w") f.write("") f.close() if not "--daemon" in argv and os.path.exists(settings.session_file): print("Loading previous session...", end=" ") if changeSettings: settings.settingsDialog.exec_() loadSession() print("done.") if not "--daemon" in argv and len(argv[1:]) > 0: # Create instance of MainWindow. print("Loading the URLs you requested...", end=" ") if len(browser.windows) > 0: win = browser.windows[-1] else: win = MainWindow(appMode=("--app" in argv)) # Open URLs from command line. if len(argv[1:]) > 0: for arg in argv[1:]: if "." in arg or ":" in arg: win.addTab(url=arg) if win.tabWidget().count() < 1: win.addTab(url=settings.settings.value("general/Homepage")) # Show window. win.show() print("done.") elif not "--daemon" in argv and len(argv[1:]) == 0 and len( browser.windows) == 0: win = MainWindow(appMode=("--app" in argv)) win.addTab(url=settings.settings.value("general/Homepage")) win.show() # Load filtering stuff. if not os.path.isdir(filtering.hosts_folder): common.trayIcon.showMessage(tr("Downloading content filters"), ( "Ad blocking and host filtering will not work until this completes." )) filtering.update_filters() else: filtering.load_host_rules() # Start app. print("Kon~!") sys.exit(app.exec_())
def __init__(self, parent=None): super(SystemTrayIcon, self).__init__(common.app_icon, parent) # Set tooltip. self.setToolTip(common.app_name) self.widget = QWidget(None) self.widget.resize(0, 0) self.widget.setWindowFlags(Qt.FramelessWindowHint) # Set context menu. self.menu = QMenu(None) self.setContextMenu(self.menu) # New window action newWindowAction = QAction(common.complete_icon("window-new"), tr("&New Window"), self) newWindowAction.triggered.connect(self.newWindowRequested.emit) self.menu.addAction(newWindowAction) # Reopen window action reopenWindowAction = QAction(common.complete_icon("reopen-window"), tr("R&eopen Window"), self) reopenWindowAction.triggered.connect(self.reopenWindow) self.menu.addAction(reopenWindowAction) self.menu.addSeparator() self.sessionManager = session.SessionManager(None) # Load session action loadSessionAction = QAction(common.complete_icon("document-open"), tr("&Load Session..."), self) loadSessionAction.triggered.connect(self.loadSession) self.menu.addAction(loadSessionAction) # Save session action saveSessionAction = QAction(common.complete_icon("document-save-as"), tr("Sa&ve Session..."), self) saveSessionAction.triggered.connect(self.saveSession) self.menu.addAction(saveSessionAction) self.menu.addSeparator() # Settings action settingsAction = QAction(common.complete_icon("preferences-system"), tr("&Settings..."), self) settingsAction.triggered.connect(self.openSettings) self.menu.addAction(settingsAction) # Clippings manager clippingsAction = QAction(common.complete_icon("edit-paste"), tr("&Manage Clippings..."), self) clippingsAction.triggered.connect(self.openClippings) self.menu.addAction(clippingsAction) self.menu.addSeparator() # About Nimbus action. aboutAction = QAction(common.complete_icon("help-about"), tr("A&bout %s") % (common.app_name, ), self) aboutAction.triggered.connect(self.about) self.menu.addAction(aboutAction) # Quit action quitAction = QAction(common.complete_icon("application-exit"), tr("Quit"), self) quitAction.triggered.connect(QApplication.quit) self.menu.addAction(quitAction) """if self.geometry().width() < 8: