Example #1
0
    def __init__(self, cookieJar=awb_cookiejar, downloadManager=None, appProfile=os.path.expanduser("~"), parent=None):
        super(AWebBrowser, self).__init__()

        self.defaultIcon = QtGui.QIcon()
        self.webViews = []
        self.downloadManager = downloadManager
        self.cookieJar = cookieJar
        self.appProfile = appProfile

        if os.path.exists(unix_icon) and sys.platform.startswith("linux"):
            self.setWindowIcon(QtGui.QIcon(unix_icon))
        elif os.path.exists(windows_icon) and sys.platform.startswith("win"):
            self.setWindowIcon(QtGui.QIcon(windows_icon))

        self.closeAction = QtGui.QAction(self)
        self.closeAction.setShortcuts(["Ctrl+Shift+N"])
        self.closeAction.triggered.connect(self.close)
        self.addAction(self.closeAction)

        self.toolBar = QtGui.QToolBar()
        self.toolBar.setStyleSheet("QToolBar { border: 0; }")
        self.toolBar.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.toolBar.setMovable(False)
        self.addToolBar(self.toolBar)

        self.backButton = QtGui.QToolButton(self)
        self.backButton.setText(tr("back"))
        self.backButton.setIcon(QtGui.QIcon().fromTheme("go-previous", QtGui.QIcon(os.path.join(app_lib, "icons", "web-back.png"))))
        self.toolBar.addWidget(self.backButton)

        self.nextButton = QtGui.QToolButton(self)
        self.nextButton.setText(tr("next"))
        self.nextButton.setIcon(QtGui.QIcon().fromTheme("go-next", QtGui.QIcon(os.path.join(app_lib, "icons", "web-next.png"))))
        self.toolBar.addWidget(self.nextButton)

        self.reloadButton = QtGui.QToolButton(self)
        self.reloadButton.setText(tr("reload"))
        self.reloadButton.setIcon(QtGui.QIcon().fromTheme("view-refresh", QtGui.QIcon(os.path.join(app_lib, "icons", "reload.png"))))
        self.toolBar.addWidget(self.reloadButton)

        self.urlEdit = RUrlBar(self.defaultIcon, self)
        self.toolBar.addWidget(self.urlEdit)

        self.focusURLEditAction = QtGui.QAction(self)
        self.focusURLEditAction.setShortcuts(["Ctrl+L", "Alt+D"])
        self.focusURLEditAction.triggered.connect(self.urlEdit.setFocus)
        self.focusURLEditAction.triggered.connect(self.urlEdit.selectAll)
        self.addAction(self.focusURLEditAction)

        self.tabs = QtGui.QTabWidget(self)
        self.tabs.setMovable(True)
        self.tabs.setDocumentMode(True)
        self.tabs.currentChanged.connect(self.updateURLEdit)
        self.tabs.currentChanged.connect(self.updateTitles)
        self.tabs.currentChanged.connect(self.updateIcons)
        self.setCentralWidget(self.tabs)

        self.tabsToolBar = QtGui.QToolBar()
        self.tabsToolBar.setStyleSheet("QToolBar { border: 0; }")
        self.tabsToolBar.setMovable(False)
        self.tabsToolBar.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.tabs.setCornerWidget(self.tabsToolBar, QtCore.Qt.TopRightCorner)

        self.newTabAction = QtGui.QAction(self)
        self.newTabAction.setShortcut("Ctrl+T")
        self.newTabAction.setIcon(QtGui.QIcon(os.path.join(app_lib, "icons", "add-16.png")))
        self.newTabAction.triggered.connect(self.newTab)
        self.tabsToolBar.addAction(self.newTabAction)
        self.addAction(self.newTabAction)

        self.closeTabAction = QtGui.QAction(self)
        self.closeTabAction.setShortcut("Ctrl+W")
        self.closeTabAction.setIcon(QtGui.QIcon(os.path.join(app_lib, "icons", "close.png")))
        self.closeTabAction.triggered.connect(self.closeTab)
        self.tabsToolBar.addAction(self.closeTabAction)
        self.addAction(self.closeTabAction)

        self.newTab()
        self.defaultIcon = QtGui.QIcon(self.webViews[len(self.webViews) - 1].icon())

        self.backButton.clicked.connect(self.back)
        self.nextButton.clicked.connect(self.forward)
        self.reloadButton.clicked.connect(self.reload)
        self.urlEdit.returnPressed.connect(self.updateWeb)

        self.backAction = QtGui.QAction(self)
        self.backAction.setShortcut("Alt+Left")
        self.backAction.triggered.connect(self.back)
        self.addAction(self.backAction)

        self.nextAction = QtGui.QAction(self)
        self.nextAction.setShortcut("Alt+Right")
        self.nextAction.triggered.connect(self.forward)
        self.addAction(self.nextAction)

        self.reloadAction = QtGui.QAction(self)
        self.reloadAction.setShortcuts(["F5", "Ctrl+R"])
        self.reloadAction.triggered.connect(self.reload)
        self.addAction(self.reloadAction)

        self.tabs.widget(self.tabs.currentIndex()).load(QtCore.QUrl("about:blank"))

        self.resize(640, 480)
Example #2
0
class AWebBrowser(QtGui.QMainWindow):
    def __init__(self, cookieJar=awb_cookiejar, downloadManager=None, appProfile=os.path.expanduser("~"), parent=None):
        super(AWebBrowser, self).__init__()

        self.defaultIcon = QtGui.QIcon()
        self.webViews = []
        self.downloadManager = downloadManager
        self.cookieJar = cookieJar
        self.appProfile = appProfile

        if os.path.exists(unix_icon) and sys.platform.startswith("linux"):
            self.setWindowIcon(QtGui.QIcon(unix_icon))
        elif os.path.exists(windows_icon) and sys.platform.startswith("win"):
            self.setWindowIcon(QtGui.QIcon(windows_icon))

        self.closeAction = QtGui.QAction(self)
        self.closeAction.setShortcuts(["Ctrl+Shift+N"])
        self.closeAction.triggered.connect(self.close)
        self.addAction(self.closeAction)

        self.toolBar = QtGui.QToolBar()
        self.toolBar.setStyleSheet("QToolBar { border: 0; }")
        self.toolBar.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.toolBar.setMovable(False)
        self.addToolBar(self.toolBar)

        self.backButton = QtGui.QToolButton(self)
        self.backButton.setText(tr("back"))
        self.backButton.setIcon(QtGui.QIcon().fromTheme("go-previous", QtGui.QIcon(os.path.join(app_lib, "icons", "web-back.png"))))
        self.toolBar.addWidget(self.backButton)

        self.nextButton = QtGui.QToolButton(self)
        self.nextButton.setText(tr("next"))
        self.nextButton.setIcon(QtGui.QIcon().fromTheme("go-next", QtGui.QIcon(os.path.join(app_lib, "icons", "web-next.png"))))
        self.toolBar.addWidget(self.nextButton)

        self.reloadButton = QtGui.QToolButton(self)
        self.reloadButton.setText(tr("reload"))
        self.reloadButton.setIcon(QtGui.QIcon().fromTheme("view-refresh", QtGui.QIcon(os.path.join(app_lib, "icons", "reload.png"))))
        self.toolBar.addWidget(self.reloadButton)

        self.urlEdit = RUrlBar(self.defaultIcon, self)
        self.toolBar.addWidget(self.urlEdit)

        self.focusURLEditAction = QtGui.QAction(self)
        self.focusURLEditAction.setShortcuts(["Ctrl+L", "Alt+D"])
        self.focusURLEditAction.triggered.connect(self.urlEdit.setFocus)
        self.focusURLEditAction.triggered.connect(self.urlEdit.selectAll)
        self.addAction(self.focusURLEditAction)

        self.tabs = QtGui.QTabWidget(self)
        self.tabs.setMovable(True)
        self.tabs.setDocumentMode(True)
        self.tabs.currentChanged.connect(self.updateURLEdit)
        self.tabs.currentChanged.connect(self.updateTitles)
        self.tabs.currentChanged.connect(self.updateIcons)
        self.setCentralWidget(self.tabs)

        self.tabsToolBar = QtGui.QToolBar()
        self.tabsToolBar.setStyleSheet("QToolBar { border: 0; }")
        self.tabsToolBar.setMovable(False)
        self.tabsToolBar.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
        self.tabs.setCornerWidget(self.tabsToolBar, QtCore.Qt.TopRightCorner)

        self.newTabAction = QtGui.QAction(self)
        self.newTabAction.setShortcut("Ctrl+T")
        self.newTabAction.setIcon(QtGui.QIcon(os.path.join(app_lib, "icons", "add-16.png")))
        self.newTabAction.triggered.connect(self.newTab)
        self.tabsToolBar.addAction(self.newTabAction)
        self.addAction(self.newTabAction)

        self.closeTabAction = QtGui.QAction(self)
        self.closeTabAction.setShortcut("Ctrl+W")
        self.closeTabAction.setIcon(QtGui.QIcon(os.path.join(app_lib, "icons", "close.png")))
        self.closeTabAction.triggered.connect(self.closeTab)
        self.tabsToolBar.addAction(self.closeTabAction)
        self.addAction(self.closeTabAction)

        self.newTab()
        self.defaultIcon = QtGui.QIcon(self.webViews[len(self.webViews) - 1].icon())

        self.backButton.clicked.connect(self.back)
        self.nextButton.clicked.connect(self.forward)
        self.reloadButton.clicked.connect(self.reload)
        self.urlEdit.returnPressed.connect(self.updateWeb)

        self.backAction = QtGui.QAction(self)
        self.backAction.setShortcut("Alt+Left")
        self.backAction.triggered.connect(self.back)
        self.addAction(self.backAction)

        self.nextAction = QtGui.QAction(self)
        self.nextAction.setShortcut("Alt+Right")
        self.nextAction.triggered.connect(self.forward)
        self.addAction(self.nextAction)

        self.reloadAction = QtGui.QAction(self)
        self.reloadAction.setShortcuts(["F5", "Ctrl+R"])
        self.reloadAction.triggered.connect(self.reload)
        self.addAction(self.reloadAction)

        self.tabs.widget(self.tabs.currentIndex()).load(QtCore.QUrl("about:blank"))

        self.resize(640, 480)

    def back(self):
        self.tabs.widget(self.tabs.currentIndex()).back()

    def forward(self):
        self.tabs.widget(self.tabs.currentIndex()).forward()

    def reload(self):
        self.tabs.widget(self.tabs.currentIndex()).reload()

    def updateWeb(self):
        t = unicode(self.urlEdit.text())
        if not "://" in t:
            t = "http://" + t
        self.tabs.widget(self.tabs.currentIndex()).load(QtCore.QUrl(t))

    def updateURLEdit(self):
        self.urlEdit.setText(self.tabs.widget(self.tabs.currentIndex()).url().toString())
        self.updateIcons()

    def updateTitles(self):
        if unicode(self.tabs.widget(self.tabs.currentIndex()).title()) == "":
            self.setWindowTitle(tr('untitledPage'))
        else:
            self.setWindowTitle(self.tabs.widget(self.tabs.currentIndex()).title())
        for tab in range(self.tabs.count()):
            t = self.tabs.widget(tab).title()
            if unicode(t) == "":
                self.tabs.setTabText(tab, tr("untitledPage"))
            else:
                if len(t) > 19:
                    nt = ""
                    for char in range(20):
                        nt = nt + unicode(self.tabs.widget(tab).title())[char]
                    nt = nt + "..."
                    self.tabs.setTabText(tab, nt)
                else:
                    self.tabs.setTabText(tab, t)

    def updateIcons(self):
        i = self.tabs.widget(self.tabs.currentIndex()).icon()
        if i.actualSize(QtCore.QSize(16, 16)).width() > 0 and not self.tabs.widget(self.tabs.currentIndex()).url() == QtCore.QUrl("about:blank"):
            self.urlEdit.setIcon(i)
        else:
            self.urlEdit.setIcon(self.defaultIcon)
        for tab in range(self.tabs.count()):
            i = self.tabs.widget(tab).icon()
            if i.actualSize(QtCore.QSize(16, 16)).width() > 0 and not self.tabs.widget(tab).url() == QtCore.QUrl("about:blank"):
                self.tabs.setTabIcon(tab, i)
            else:
                self.tabs.setTabIcon(tab, self.defaultIcon)

    def newTab(self):
        webView = RWebView(self)
        self.webViews.append(webView)
        webView.settings().setIconDatabasePath(qstring(self.appProfile))
        webView.downloadManager = self.downloadManager
        webView.setCookieJar(self.cookieJar)
        webView.urlChanged.connect(self.updateURLEdit)
        webView.titleChanged.connect(self.updateTitles)
        webView.iconChanged.connect(self.updateIcons)
        webView.createNewTab.connect(self.newTabWithWebView)
        self.tabs.addTab(webView, webView.icon(), webView.title())
        self.tabs.setCurrentIndex(self.tabs.count() - 1)
        self.updateTitles()

    def newTabWithWebView(self, webView):
        wv = webView.newWindows[len(webView.newWindows) - 1]
        wv.closeAction.setShortcut("")
        wv.urlChanged.connect(self.updateURLEdit)
        wv.titleChanged.connect(self.updateTitles)
        wv.iconChanged.connect(self.updateIcons)
        wv.createNewTab.connect(self.newTabWithWebView)
        self.tabs.addTab(wv, wv.icon(), wv.title())
        self.tabs.setCurrentIndex(self.tabs.count() - 1)
        self.updateTitles()

    def closeTab(self):
        self.tabs.widget(self.tabs.currentIndex()).close()
        self.tabs.removeTab(self.tabs.currentIndex())
        if self.tabs.count() < 1:
            self.newTab()