Exemple #1
0
 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)
Exemple #2
0
 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"))
Exemple #3
0
 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"))
Exemple #4
0
    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)
Exemple #5
0
 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"))
Exemple #6
0
 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"))
Exemple #7
0
    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_()
Exemple #8
0
 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));
Exemple #9
0
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_())
Exemple #10
0
 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)
Exemple #11
0
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_())
Exemple #12
0
 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))
Exemple #13
0
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_())
Exemple #14
0
    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:
Exemple #15
0
 def icon(self):
     return common.complete_icon("preferences-system")
Exemple #16
0
 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)
Exemple #17
0
 def icon(self):
     return common.complete_icon("preferences-system")
Exemple #18
0
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_())
Exemple #19
0
    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: