Thu, 04 Feb 2016 19:39:54 +0100
Continued getting the basic web browser functions going.
--- a/Preferences/__init__.py Wed Feb 03 20:05:29 2016 +0100 +++ b/Preferences/__init__.py Thu Feb 04 19:39:54 2016 +0100 @@ -1008,8 +1008,10 @@ "SingleWebBrowserWindow": True, "SaveGeometry": True, "WebBrowserState": QByteArray(), - "StartupBehavior": 1, # show speed dial - "HomePage": "eric:home", +## "StartupBehavior": 1, # show speed dial +## "HomePage": "eric:home", + "StartupBehavior": 0, # show home page + "HomePage": "http://eric-ide.python-projects.org", # TODO: eric: scheme "WarnOnMultipleClose": True, "DefaultScheme": "https://", }
--- a/WebBrowser/SearchWidget.py Wed Feb 03 20:05:29 2016 +0100 +++ b/WebBrowser/SearchWidget.py Thu Feb 04 19:39:54 2016 +0100 @@ -12,7 +12,6 @@ from PyQt5.QtCore import pyqtSlot, Qt from PyQt5.QtGui import QPalette, QBrush, QColor from PyQt5.QtWidgets import QWidget -##from PyQt5.QtWebKitWidgets import QWebPage from .Ui_SearchWidget import Ui_SearchWidget @@ -88,13 +87,22 @@ return # TODO: adjust this to the browser API - # TODO: use the callback interface of QWebEnginePage - if not self.__mainWindow.currentBrowser().findNextPrev( - self.findtextCombo.currentText(), - self.caseCheckBox.isChecked(), - self.__findBackwards, - self.wrapCheckBox.isChecked(), - False): + self.__mainWindow.currentBrowser().findNextPrev( + self.findtextCombo.currentText(), + self.caseCheckBox.isChecked(), + self.__findBackwards, + self.wrapCheckBox.isChecked(), + False, + self.__findNextPrevCallback) + + def __findNextPrevCallback(self, found): + """ + Private method to process the result of the last search. + + @param found flag indicating if the last search succeeded + @type bool + """ + if not found: self.infoLabel.setText(self.tr("Expression was not found.")) self.__setFindtextComboBackground(True) ##
--- a/WebBrowser/UrlBar/UrlBar.py Wed Feb 03 20:05:29 2016 +0100 +++ b/WebBrowser/UrlBar/UrlBar.py Thu Feb 04 19:39:54 2016 +0100 @@ -55,29 +55,34 @@ ## self.__privateMode = QWebSettings.globalSettings().testAttribute( ## QWebSettings.PrivateBrowsingEnabled) - # TODO: re-enable once bookmarks are done + # TODO: Bookmarks ## self.__bmActiveIcon = UI.PixmapCache.getIcon("bookmark16.png") ## self.__bmInactiveIcon = QIcon( ## self.__bmActiveIcon.pixmap(16, 16, QIcon.Disabled)) + # TODO: FavIcon ## self.__favicon = FavIconLabel(self) ## self.addWidget(self.__favicon, E5LineEdit.LeftSide) -## + + # TODO: SSL ## self.__sslLabel = SslLabel(self) ## self.addWidget(self.__sslLabel, E5LineEdit.LeftSide) ## self.__sslLabel.setVisible(False) -## + + # TODO: Privacy ## self.__privacyButton = E5LineEditButton(self) ## self.__privacyButton.setIcon( ## UI.PixmapCache.getIcon("privateBrowsing.png")) ## self.addWidget(self.__privacyButton, E5LineEdit.RightSide) ## self.__privacyButton.setVisible(self.__privateMode) -## + + # TODO: RSS ## self.__rssButton = E5LineEditButton(self) ## self.__rssButton.setIcon(UI.PixmapCache.getIcon("rss16.png")) ## self.addWidget(self.__rssButton, E5LineEdit.RightSide) ## self.__rssButton.setVisible(False) + # TODO: Bookmarks ## self.__bookmarkButton = E5LineEditButton(self) ## self.addWidget(self.__bookmarkButton, E5LineEdit.RightSide) ## self.__bookmarkButton.setVisible(False) @@ -87,19 +92,24 @@ self.addWidget(self.__clearButton, E5LineEdit.RightSide) self.__clearButton.setVisible(False) + # TODO: Bookmarks ## self.__bookmarkButton.clicked.connect(self.__showBookmarkInfo) + # TODO: RSS +## self.__rssButton.clicked.connect(self.__rssClicked) + # TODO: Privacy ## self.__privacyButton.clicked.connect(self.__privacyClicked) -## self.__rssButton.clicked.connect(self.__rssClicked) self.__clearButton.clicked.connect(self.clear) ## self.__mw.privacyChanged.connect(self.__privacyButton.setVisible) self.textChanged.connect(self.__textChanged) + # TODO: Bookmarks ## Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\ ## .entryChanged.connect(self.__bookmarkChanged) ## Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\ ## .entryAdded.connect(self.__bookmarkChanged) ## Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\ ## .entryRemoved.connect(self.__bookmarkChanged) + # TODO: Speed Dial ## Helpviewer.HelpWindow.HelpWindow.speedDial().pagesChanged.connect( ## self.__bookmarkChanged) @@ -110,13 +120,15 @@ @param browser reference to the browser widget (WebBrowserView) """ self.__browser = browser + # TODO: FavIcon ## self.__favicon.setBrowser(browser) self.__browser.urlChanged.connect(self.__browserUrlChanged) self.__browser.loadProgress.connect(self.update) self.__browser.loadFinished.connect(self.__loadFinished) self.__browser.loadStarted.connect(self.__loadStarted) -## + + # TODO: SSL ## self.__sslLabel.clicked.connect(self.__browser.page().showSslInfo) def browser(self): @@ -147,9 +159,12 @@ Private slot to perform actions before the page is loaded. """ pass + # TODO: SSL ## self.__sslLabel.setVisible(False) + # TODO: Bookmarks ## self.__bookmarkButton.setVisible(False) + # TODO: Bookmarks ## def __checkBookmark(self): ## """ ## Private slot to check the current URL for the bookmarked state. @@ -176,18 +191,18 @@ """ pass ## try: - # TODO: re-enable once Bookmarks are done + # TODO: Bookmarks ## if self.__browser.url().scheme() in ["eric", "about"]: ## self.__bookmarkButton.setVisible(False) ## else: ## self.__checkBookmark() ## self.__bookmarkButton.setVisible(True) - # TODO: re-enable once RSS is done + # TODO: RSS ## if ok: ## self.__rssButton.setVisible(self.__browser.checkRSS()) - # TODO: do the SSL certificate stuff (if possible) + # TODO: SSL certificate stuff (if possible) ## if ok and \ ## self.__browser.url().scheme() == "https" and \ ## QSslCertificate is not None: @@ -217,6 +232,7 @@ ## except RuntimeError: ## pass + # TODO: Privacy ## def setPrivateMode(self, on): ## """ ## Public method to set the private mode. @@ -246,6 +262,7 @@ """ self.update() + # TODO: Bookmarks ## def __showBookmarkInfo(self): ## """ ## Private slot to show a dialog with some bookmark info. @@ -283,6 +300,7 @@ @param evt reference to the paint event (QPaintEvent) """ + # TODO: Privacy ## if self.__privateMode: ## backgroundColor = QColor(220, 220, 220) # light gray ## foregroundColor = Qt.black
--- a/WebBrowser/WebBrowserPage.py Wed Feb 03 20:05:29 2016 +0100 +++ b/WebBrowser/WebBrowserPage.py Thu Feb 04 19:39:54 2016 +0100 @@ -457,7 +457,7 @@ ## """ ## return self.__adBlockedEntries - # TODO: re-enable once User Agent Manager is done + # TODO: User Agent Manager ## def userAgent(self, resolveEmpty=False): ## """ ## Public method to get the global user agent setting.
--- a/WebBrowser/WebBrowserTabBar.py Wed Feb 03 20:05:29 2016 +0100 +++ b/WebBrowser/WebBrowserTabBar.py Thu Feb 04 19:39:54 2016 +0100 @@ -37,12 +37,11 @@ self.setMouseTracking(True) - def __showTabPreview(self): - """ - Private slot to show the tab preview. - """ - pass - # TODO: page preview + # TODO: page preview +## def __showTabPreview(self): +## """ +## Private slot to show the tab preview. +## """ ## indexedBrowser = self.__tabWidget.browserAt( ## self.__currentTabPreviewIndex) ## currentBrowser = self.__tabWidget.currentBrowser() @@ -84,7 +83,7 @@ if self.count() == 1: return - E5WheelTabBar.mouseMoveEvent(self, evt) + super(WebBrowserTabBar, self).mouseMoveEvent(evt) # TODO: page preview ## if Preferences.getHelp("ShowPreview"): @@ -124,7 +123,7 @@ ## self.__previewPopup.hide() ## self.__currentTabPreviewIndex = -1 - E5WheelTabBar.leaveEvent(self, evt) + super(WebBrowserTabBar, self).leaveEvent(evt) def mousePressEvent(self, evt): """ @@ -138,7 +137,7 @@ ## self.__previewPopup.hide() ## self.__currentTabPreviewIndex = -1 - E5WheelTabBar.mousePressEvent(self, evt) + super(WebBrowserTabBar, self).mousePressEvent(evt) def event(self, evt): """ @@ -157,7 +156,7 @@ ## evt.setAccepted(True) ## return True - return E5WheelTabBar.event(self, evt) + return super(WebBrowserTabBar, self).event(evt) def tabRemoved(self, index): """
--- a/WebBrowser/WebBrowserTabWidget.py Wed Feb 03 20:05:29 2016 +0100 +++ b/WebBrowser/WebBrowserTabWidget.py Thu Feb 04 19:39:54 2016 +0100 @@ -21,7 +21,6 @@ from E5Gui import E5MessageBox from E5Gui.E5Application import e5App -# TODO: implement this from .WebBrowserView import WebBrowserView import UI.PixmapCache @@ -60,10 +59,9 @@ """ super(WebBrowserTabWidget, self).__init__(parent, dnd=True) - # TODO: implement this -## from .WebBrowserTabBar import WebBrowserTabBar -## self.__tabBar = WebBrowserTabBar(self) -## self.setCustomTabBar(True, self.__tabBar) + from .WebBrowserTabBar import WebBrowserTabBar + self.__tabBar = WebBrowserTabBar(self) + self.setCustomTabBar(True, self.__tabBar) self.__mainWindow = parent @@ -71,7 +69,7 @@ self.setDocumentMode(True) self.setElideMode(Qt.ElideNone) - # TODO: re-enable once Closed Tabs Manager is done + # TODO: Closed Tabs Manager ## from .ClosedTabsManager import ClosedTabsManager ## self.__closedTabsManager = ClosedTabsManager(self) ## self.__closedTabsManager.closedTabAvailable.connect( @@ -79,7 +77,7 @@ from .UrlBar.StackedUrlBar import StackedUrlBar self.__stackedUrlBar = StackedUrlBar(self) -## self.__tabBar.tabMoved.connect(self.__stackedUrlBar.moveBar) + self.__tabBar.tabMoved.connect(self.__stackedUrlBar.moveBar) self.__tabContextMenuIndex = -1 self.currentChanged[int].connect(self.__currentChanged) @@ -105,7 +103,7 @@ self.__navigationButton.setEnabled(False) self.__rightCornerWidgetLayout.addWidget(self.__navigationButton) - # TODO: re-enable once Closed Tabs Manager is done + # TODO: Closed Tabs Manager ## self.__closedTabsMenu = QMenu(self) ## self.__closedTabsMenu.aboutToShow.connect( ## self.__aboutToShowClosedTabsMenu) @@ -837,7 +835,8 @@ @return flag indicating a shut down (boolean) """ - if self.count() > 1 and Preferences.getHelp("WarnOnMultipleClose"): + if self.count() > 1 and Preferences.getWebBrowser( + "WarnOnMultipleClose"): mb = E5MessageBox.E5MessageBox( E5MessageBox.Information, self.tr("Are you sure you want to close the window?"), @@ -917,7 +916,7 @@ @param path path string to guess an URL for (string) @return guessed URL (QUrl) """ - # TODO: re-enable once Open Search is done + # TODO: Open Search ## manager = self.__mainWindow.openSearchManager() ## path = Utilities.fromNativeSeparators(path) ## url = manager.convertKeywordSearchToUrl(path) @@ -962,7 +961,7 @@ elif browser.url() != "": browser.setFocus() - # TODO: re-enable once Closed Tabs Manager is done + # TODO: Closed Tabs Manager ## def restoreClosedTab(self): ## """ ## Public slot to restore the most recently closed tab.
--- a/WebBrowser/WebBrowserView.py Wed Feb 03 20:05:29 2016 +0100 +++ b/WebBrowser/WebBrowserView.py Thu Feb 04 19:39:54 2016 +0100 @@ -10,7 +10,7 @@ from __future__ import unicode_literals try: - str = unicode + str = unicode # __IGNORE_EXCEPTION__ except NameError: pass @@ -228,13 +228,16 @@ ## self.page().databaseQuotaExceeded.connect(self.__databaseQuotaExceeded) - # TODO: re-enable onece Open Search is done + # TODO: Open Search ## self.__mw.openSearchManager().currentEngineChanged.connect( ## self.__currentEngineChanged) + self.__rwhvqt = None + # TODO: eventFilter (see below) +## self.installEventFilter(self) self.setAcceptDrops(True) - # TODO: re-enable for Access Keys + # TODO: Access Keys ## self.__enableAccessKeys = Preferences.getHelp("AccessKeysEnabled") ## self.__accessKeysPressed = False ## self.__accessKeyLabels = [] @@ -247,8 +250,9 @@ self.__clickedFrame = None - # TODO: re-enable once done + # TODO: PIM ## self.__mw.personalInformationManager().connectPage(self.page()) + # TODO: GreaseMonkey ## self.__mw.greaseMonkeyManager().connectPage(self.page()) ## ## self.__inspector = None @@ -459,6 +463,8 @@ """ Public slot to move to the first page loaded. """ +## homeUrl = QUrl("http://localhost") +## # TODO: eric: scheme or Configuration page homeUrl = QUrl(Preferences.getWebBrowser("HomePage")) self.setSource(homeUrl) self.__urlChanged(self.history().currentItem().url()) @@ -524,7 +530,7 @@ if value != self.zoomValue(): self.setZoomFactor(value / 100.0) self.__currentZoom = value - # TODO: re-enable this when Zoom Manager is done + # TODO: Zoom Manager ## if saveValue: ## Helpviewer.HelpWindow.HelpWindow.zoomManager().setZoomValue( ## self.url(), value) @@ -606,7 +612,7 @@ else: self.findText(txt, findFlags, callback) - # TODO: re-enable once WebBrowserWebElement is done + # TODO: WebBrowserWebElement ## def __isMediaElement(self, element): ## """ ## Private method to check, if the given element is a media element. @@ -625,12 +631,12 @@ @param evt reference to the context menu event object (QContextMenuEvent) """ - # TODO: re-enable once User Agent is done + # TODO: User Agent ## from .UserAgent.UserAgentMenu import UserAgentMenu menu = QMenu(self) ## frameAtPos = self.page().frameAt(evt.pos()) - # TODO: re-enable once WebHitTestResult is done + # TODO: WebHitTestResult ## hit = self.page().hitTestContent(evt.pos()) ## if not hit.linkUrl().isEmpty(): ## menu.addAction( @@ -763,7 +769,7 @@ if not menu.isEmpty(): menu.addSeparator() - # TODO: re-enable once PIM is done + # TODO: PIM ## self.__mw.personalInformationManager().createSubMenu(menu, self, hit) menu.addAction(self.__mw.newTabAct) @@ -812,14 +818,15 @@ ## menu.addMenu(fmenu) ## menu.addSeparator() - menu.addAction( - UI.PixmapCache.getIcon("bookmark22.png"), - self.tr("Bookmark this Page"), self.addBookmark) + # TODO: Bookmarks +## menu.addAction( +## UI.PixmapCache.getIcon("bookmark22.png"), +## self.tr("Bookmark this Page"), self.addBookmark) menu.addAction( UI.PixmapCache.getIcon("mailSend.png"), self.tr("Send Page Link"), self.__sendLink).setData(self.url()) menu.addSeparator() - # TODO: re-enable once User Agent is done + # TODO: User Agent ## self.__userAgentMenu = UserAgentMenu(self.tr("User Agent"), ## url=self.url()) ## menu.addMenu(self.__userAgentMenu) @@ -841,7 +848,7 @@ menu.addAction(self.__mw.findAct) menu.addSeparator() if self.selectedText(): - # TODO: re-enable once Open Search is done + # TODO: Open Search ## self.__searchMenu = menu.addMenu(self.tr("Search with...")) ## ## from .OpenSearch.OpenSearchEngineAction import \ @@ -856,7 +863,7 @@ ## ## menu.addSeparator() - # TODO: re-enable once Languages Dialog is done + # TODO: Languages Dialog ## from .HelpLanguagesDialog import HelpLanguagesDialog ## languages = Preferences.toList( ## Preferences.Prefs.settings.value( @@ -896,7 +903,7 @@ ## self.__addSearchEngine).setData(element) ## menu.addSeparator() - # TODO: re-enable once Web Inspector is done + # TODO: Web Inspector ## menu.addAction( ## UI.PixmapCache.getIcon("webInspector.png"), ## self.tr("Web Inspector..."), self.__webInspector) @@ -1306,10 +1313,7 @@ @param evt reference to the wheel event (QWheelEvent) """ - if qVersion() >= "5.0.0": - delta = evt.angleDelta().y() - else: - delta = evt.delta() + delta = evt.angleDelta().y() if evt.modifiers() & Qt.ControlModifier: if delta < 0: self.zoomOut() @@ -1328,45 +1332,45 @@ super(WebBrowserView, self).wheelEvent(evt) - def keyPressEvent(self, evt): - """ - Protected method called by a key press. - - @param evt reference to the key event (QKeyEvent) - """ - # TODO: PIM -## if self.__mw.personalInformationManager().viewKeyPressEvent(self, evt): -## return - - # TODO: Access Keys -## if self.__enableAccessKeys: -## self.__accessKeysPressed = ( -## evt.modifiers() == Qt.ControlModifier and -## evt.key() == Qt.Key_Control) -## if not self.__accessKeysPressed: -## if self.__checkForAccessKey(evt): -## self.__hideAccessKeys() -## evt.accept() -## return -## self.__hideAccessKeys() -## else: -## QTimer.singleShot(300, self.__accessKeyShortcut) - - self.__ctrlPressed = (evt.key() == Qt.Key_Control) - super(WebBrowserView, self).keyPressEvent(evt) - - def keyReleaseEvent(self, evt): - """ - Protected method called by a key release. - - @param evt reference to the key event (QKeyEvent) - """ - # TODO: Access Keys -## if self.__enableAccessKeys: -## self.__accessKeysPressed = evt.key() == Qt.Key_Control - - self.__ctrlPressed = False - super(WebBrowserView, self).keyReleaseEvent(evt) +## def keyPressEvent(self, evt): +## """ +## Protected method called by a key press. +## +## @param evt reference to the key event (QKeyEvent) +## """ +## # TODO: PIM +#### if self.__mw.personalInformationManager().viewKeyPressEvent(self, evt): +#### return +## +## # TODO: Access Keys +#### if self.__enableAccessKeys: +#### self.__accessKeysPressed = ( +#### evt.modifiers() == Qt.ControlModifier and +#### evt.key() == Qt.Key_Control) +#### if not self.__accessKeysPressed: +#### if self.__checkForAccessKey(evt): +#### self.__hideAccessKeys() +#### evt.accept() +#### return +#### self.__hideAccessKeys() +#### else: +#### QTimer.singleShot(300, self.__accessKeyShortcut) +## +## self.__ctrlPressed = (evt.key() == Qt.Key_Control) +## super(WebBrowserView, self).keyPressEvent(evt) +## +## def keyReleaseEvent(self, evt): +## """ +## Protected method called by a key release. +## +## @param evt reference to the key event (QKeyEvent) +## """ +## # TODO: Access Keys +#### if self.__enableAccessKeys: +#### self.__accessKeysPressed = evt.key() == Qt.Key_Control +## +## self.__ctrlPressed = False +## super(WebBrowserView, self).keyReleaseEvent(evt) def focusOutEvent(self, evt): """ @@ -1409,6 +1413,73 @@ self.__currentZoom = int(scaleFactor * 100) self.__applyZoom() evt.accept() +##bool WebView::eventFilter(QObject *obj, QEvent *event) +##{ +## // Hack to find widget that receives input events +## if (obj == this && event->type() == QEvent::ChildAdded) { +## QWidget *child = qobject_cast<QWidget*>(static_cast<QChildEvent*>(event)->child()); +## if (child && child->inherits("QtWebEngineCore::RenderWidgetHostViewQtDelegateWidget")) { +## m_rwhvqt = child; +## m_rwhvqt->installEventFilter(this); +## } +## } +## +## // Forward events to WebView +## if (obj == m_rwhvqt) { +###define HANDLE_EVENT(f, t) \ +## { \ +## bool wasAccepted = event->isAccepted(); \ +## event->setAccepted(false); \ +## f(static_cast<t*>(event)); \ +## bool ret = event->isAccepted(); \ +## event->setAccepted(wasAccepted); \ +## return ret; \ +## } +## +## switch (event->type()) { +## case QEvent::KeyPress: +## HANDLE_EVENT(_keyPressEvent, QKeyEvent); +## +## case QEvent::KeyRelease: +## HANDLE_EVENT(_keyReleaseEvent, QKeyEvent); +## +## case QEvent::MouseButtonPress: +## HANDLE_EVENT(_mousePressEvent, QMouseEvent); +## +## case QEvent::MouseButtonRelease: +## HANDLE_EVENT(_mouseReleaseEvent, QMouseEvent); +## +## case QEvent::MouseMove: +## HANDLE_EVENT(_mouseMoveEvent, QMouseEvent); +## +## case QEvent::Wheel: +## HANDLE_EVENT(_wheelEvent, QWheelEvent); +## +## default: +## break; +## } +## +###undef HANDLE_EVENT +## } +## +## // Block already handled events +## if (obj == this) { +## switch (event->type()) { +## case QEvent::KeyPress: +## case QEvent::KeyRelease: +## case QEvent::MouseButtonPress: +## case QEvent::MouseButtonRelease: +## case QEvent::MouseMove: +## case QEvent::Wheel: +## return true; +## +## default: +## break; +## } +## } +## +## return QWebEngineView::eventFilter(obj, event); +##} def clearHistory(self): """ @@ -1481,7 +1552,7 @@ self.zoomIn() self.zoomOut() - # TODO: ZoomManager + # TODO: Zoom Manager ## zoomValue = Helpviewer.HelpWindow.HelpWindow.zoomManager()\ ## .zoomValue(self.url()) ## self.setZoomValue(zoomValue) @@ -1867,7 +1938,7 @@ ## RSS related methods below ########################################################################### - # TODO: extract links from page to implement RSS stuff + # TODO: RSS, extract links from page to implement RSS stuff ## def checkRSS(self): ## """ ## Public method to check, if the loaded page contains feed links.
--- a/WebBrowser/WebBrowserWindow.py Wed Feb 03 20:05:29 2016 +0100 +++ b/WebBrowser/WebBrowserWindow.py Thu Feb 04 19:39:54 2016 +0100 @@ -9,7 +9,7 @@ from __future__ import unicode_literals try: - str = unicode + str = unicode # __IGNORE_EXCEPTION__ except NameError: pass @@ -41,8 +41,8 @@ from E5Gui import E5MessageBox, E5FileDialog, E5ErrorMessage from E5Gui.E5MainWindow import E5MainWindow from E5Gui.E5Application import e5App -##from E5Gui.E5ZoomWidget import E5ZoomWidget -## +from E5Gui.E5ZoomWidget import E5ZoomWidget + ##from E5Network.E5NetworkIcon import E5NetworkIcon import Preferences @@ -126,14 +126,16 @@ if self.__initShortcutsOnly: self.__initActions() else: - # TODO: implement this from .SearchWidget import SearchWidget + # TODO: QtHelp ## from .HelpTocWidget import HelpTocWidget ## from .HelpIndexWidget import HelpIndexWidget ## from .HelpSearchWidget import HelpSearchWidget -## from .HelpBrowserWV import HelpBrowser + from .WebBrowserView import WebBrowserView from .WebBrowserTabWidget import WebBrowserTabWidget + # TODO: AdBlock ## from .AdBlock.AdBlockIcon import AdBlockIcon + # TODO: VirusTotal ## from .VirusTotal.VirusTotalApi import VirusTotalAPI # TODO: allow using Qt Help even if not called from eric6 @@ -159,22 +161,22 @@ ## self.__helpEngine = None ## self.__helpInstaller = None -## self.__zoomWidget = E5ZoomWidget( -## UI.PixmapCache.getPixmap("zoomOut.png"), -## UI.PixmapCache.getPixmap("zoomIn.png"), -## UI.PixmapCache.getPixmap("zoomReset.png"), self) -## self.statusBar().addPermanentWidget(self.__zoomWidget) -## self.__zoomWidget.setMapping( -## HelpBrowser.ZoomLevels, HelpBrowser.ZoomLevelDefault) -## self.__zoomWidget.valueChanged.connect(self.__zoomValueChanged) -## + self.__zoomWidget = E5ZoomWidget( + UI.PixmapCache.getPixmap("zoomOut.png"), + UI.PixmapCache.getPixmap("zoomIn.png"), + UI.PixmapCache.getPixmap("zoomReset.png"), self) + self.statusBar().addPermanentWidget(self.__zoomWidget) + self.__zoomWidget.setMapping( + WebBrowserView.ZoomLevels, WebBrowserView.ZoomLevelDefault) + self.__zoomWidget.valueChanged.connect(self.__zoomValueChanged) + self.__tabWidget = WebBrowserTabWidget(self) self.__tabWidget.currentChanged[int].connect(self.__currentChanged) self.__tabWidget.titleChanged.connect(self.__titleChanged) self.__tabWidget.showMessage.connect(self.statusBar().showMessage) self.__tabWidget.browserClosed.connect(self.__browserClosed) -## self.__tabWidget.browserZoomValueChanged.connect( -## self.__zoomWidget.setValue) + self.__tabWidget.browserZoomValueChanged.connect( + self.__zoomWidget.setValue) self.__searchWidget = SearchWidget(self, self) centralWidget = QWidget() @@ -188,7 +190,7 @@ self.setCentralWidget(centralWidget) self.__searchWidget.hide() - # TODO: do these once Qt 5.6 is available + # TODO: QtHelp, do these once Qt 5.6 is available ## if WebBrowserWindow.UseQtHelp: ## # setup the TOC widget ## self.__tocWindow = HelpTocWidget(self.__helpEngine, self) @@ -265,7 +267,7 @@ # setup connections self.__activating = False - # TODO: do these once Qt 5.6 is available + # TODO: QtHelp, do these once Qt 5.6 is available ## if WebBrowserWindow.UseQtHelp: ## # TOC window ## self.__tocWindow.linkActivated.connect(self.__linkActivated) @@ -301,7 +303,7 @@ ## self.flashCookieManager() ## - # TODO: do these once Qt 5.6 is available + # TODO: QtHelp, do these once Qt 5.6 is available ## if WebBrowserWindow.UseQtHelp: ## QTimer.singleShot(0, self.__lookForNewDocumentation) ## if self.__searchWord is not None: @@ -323,6 +325,13 @@ """ pass + def fromEric(self): + """ + Public method to check, if the web browser was called from within the + eric IDE. + """ + return self.__fromEric + ## def __setIconDatabasePath(self, enable=True): ## """ ## Private method to set the favicons path. @@ -574,7 +583,7 @@ ## self.__saveVisiblePageScreen) ## self.__actions.append(self.saveVisiblePageScreenAct) - # TODO: re-enable when bookmarks are done + # TODO: Bookmarks ## bookmarksManager = self.bookmarksManager() ## self.importBookmarksAct = E5Action( ## self.tr('Import Bookmarks'), @@ -606,7 +615,7 @@ ## bookmarksManager.exportBookmarks) ## self.__actions.append(self.exportBookmarksAct) - # TODO: re-enable when print stuff is done + # TODO: print stuff ## self.printAct = E5Action( ## self.tr('Print'), ## UI.PixmapCache.getIcon("print.png"), @@ -684,7 +693,7 @@ self.__tabWidget.closeAllBrowsers) self.__actions.append(self.closeAllAct) - # TODO: re-enable when Private Browsing is done + # TODO: Private Browsing ## self.privateBrowsingAct = E5Action( ## self.tr('Private Browsing'), ## UI.PixmapCache.getIcon("privateBrowsing.png"), @@ -871,7 +880,7 @@ self.__searchWidget.findPrevious) self.__actions.append(self.findPrevAct) - # TODO: re-enable when bookmarks are done + # TODO: Bookmarks ## self.bookmarksManageAct = E5Action( ## self.tr('Manage Bookmarks'), ## self.tr('&Manage Bookmarks...'), @@ -982,56 +991,57 @@ self.aboutQtAct.triggered.connect(self.__aboutQt) self.__actions.append(self.aboutQtAct) - # TODO: re-enable once Zoom stuff is done -## self.zoomInAct = E5Action( -## self.tr('Zoom in'), -## UI.PixmapCache.getIcon("zoomIn.png"), -## self.tr('Zoom &in'), -## QKeySequence(self.tr("Ctrl++", "View|Zoom in")), -## QKeySequence(self.tr("Zoom In", "View|Zoom in")), -## self, 'webbrowser_view_zoom_in') -## self.zoomInAct.setStatusTip(self.tr('Zoom in on the text')) -## self.zoomInAct.setWhatsThis(self.tr( -## """<b>Zoom in</b>""" -## """<p>Zoom in on the text. This makes the text bigger.</p>""" -## )) -## if not self.__initShortcutsOnly: -## self.zoomInAct.triggered.connect(self.__zoomIn) -## self.__actions.append(self.zoomInAct) -## -## self.zoomOutAct = E5Action( -## self.tr('Zoom out'), -## UI.PixmapCache.getIcon("zoomOut.png"), -## self.tr('Zoom &out'), -## QKeySequence(self.tr("Ctrl+-", "View|Zoom out")), -## QKeySequence(self.tr("Zoom Out", "View|Zoom out")), -## self, 'webbrowser_view_zoom_out') -## self.zoomOutAct.setStatusTip(self.tr('Zoom out on the text')) -## self.zoomOutAct.setWhatsThis(self.tr( -## """<b>Zoom out</b>""" -## """<p>Zoom out on the text. This makes the text smaller.</p>""" -## )) -## if not self.__initShortcutsOnly: -## self.zoomOutAct.triggered.connect(self.__zoomOut) -## self.__actions.append(self.zoomOutAct) -## -## self.zoomResetAct = E5Action( -## self.tr('Zoom reset'), -## UI.PixmapCache.getIcon("zoomReset.png"), -## self.tr('Zoom &reset'), -## QKeySequence(self.tr("Ctrl+0", "View|Zoom reset")), -## 0, self, 'webbrowser_view_zoom_reset') -## self.zoomResetAct.setStatusTip(self.tr( -## 'Reset the zoom of the text')) -## self.zoomResetAct.setWhatsThis(self.tr( -## """<b>Zoom reset</b>""" -## """<p>Reset the zoom of the text. """ -## """This sets the zoom factor to 100%.</p>""" -## )) -## if not self.__initShortcutsOnly: -## self.zoomResetAct.triggered.connect(self.__zoomReset) -## self.__actions.append(self.zoomResetAct) -## + self.zoomInAct = E5Action( + self.tr('Zoom in'), + UI.PixmapCache.getIcon("zoomIn.png"), + self.tr('Zoom &in'), + QKeySequence(self.tr("Ctrl++", "View|Zoom in")), + QKeySequence(self.tr("Zoom In", "View|Zoom in")), + self, 'webbrowser_view_zoom_in') + self.zoomInAct.setStatusTip(self.tr('Zoom in on the web page')) + self.zoomInAct.setWhatsThis(self.tr( + """<b>Zoom in</b>""" + """<p>Zoom in on the web page.""" + """ This makes the web page bigger.</p>""" + )) + if not self.__initShortcutsOnly: + self.zoomInAct.triggered.connect(self.__zoomIn) + self.__actions.append(self.zoomInAct) + + self.zoomOutAct = E5Action( + self.tr('Zoom out'), + UI.PixmapCache.getIcon("zoomOut.png"), + self.tr('Zoom &out'), + QKeySequence(self.tr("Ctrl+-", "View|Zoom out")), + QKeySequence(self.tr("Zoom Out", "View|Zoom out")), + self, 'webbrowser_view_zoom_out') + self.zoomOutAct.setStatusTip(self.tr('Zoom out on the web page')) + self.zoomOutAct.setWhatsThis(self.tr( + """<b>Zoom out</b>""" + """<p>Zoom out on the web page.""" + """ This makes the web page smaller.</p>""" + )) + if not self.__initShortcutsOnly: + self.zoomOutAct.triggered.connect(self.__zoomOut) + self.__actions.append(self.zoomOutAct) + + self.zoomResetAct = E5Action( + self.tr('Zoom reset'), + UI.PixmapCache.getIcon("zoomReset.png"), + self.tr('Zoom &reset'), + QKeySequence(self.tr("Ctrl+0", "View|Zoom reset")), + 0, self, 'webbrowser_view_zoom_reset') + self.zoomResetAct.setStatusTip(self.tr( + 'Reset the zoom of the web page')) + self.zoomResetAct.setWhatsThis(self.tr( + """<b>Zoom reset</b>""" + """<p>Reset the zoom of the web page. """ + """This sets the zoom factor to 100%.</p>""" + )) + if not self.__initShortcutsOnly: + self.zoomResetAct.triggered.connect(self.__zoomReset) + self.__actions.append(self.zoomResetAct) + ## if hasattr(QWebSettings, 'ZoomTextOnly'): ## self.zoomTextOnlyAct = E5Action( ## self.tr('Zoom text only'), @@ -1139,6 +1149,7 @@ ## self.__showAcceptedLanguages) ## self.__actions.append(self.acceptedLanguagesAct) + # TODO: Cookies ## self.cookiesAct = E5Action( ## self.tr('Cookies'), ## UI.PixmapCache.getIcon("cookie.png"), @@ -1154,7 +1165,7 @@ ## self.__showCookiesConfiguration) ## self.__actions.append(self.cookiesAct) - # TODO: re-enable once Flash Cookies stuff is done + # TODO: Flash Cookies ## self.flashCookiesAct = E5Action( ## self.tr('Flash Cookies'), ## UI.PixmapCache.getIcon("flashCookie.png"), @@ -1240,7 +1251,7 @@ E5ErrorMessage.editMessageFilters) self.__actions.append(self.editMessageFilterAct) - # TODO: re-enable once feature permission stuff is done + # TODO: Feature Permission ## self.featurePermissionAct = E5Action( ## self.tr('Edit HTML5 Feature Permissions'), ## UI.PixmapCache.getIcon("featurePermission.png"), @@ -1398,7 +1409,7 @@ ## self.clearIconsAct.triggered.connect(self.__clearIconsDatabase) ## self.__actions.append(self.clearIconsAct) - # TODO: re-enable once search engines have been done + # TODO: Open Search ## self.searchEnginesAct = E5Action( ## self.tr('Configure Search Engines'), ## self.tr('Configure Search &Engines...'), @@ -1416,6 +1427,7 @@ ## self.__showEnginesConfigurationDialog) ## self.__actions.append(self.searchEnginesAct) + # TODO: Passwords ## self.passwordsAct = E5Action( ## self.tr('Manage Saved Passwords'), ## UI.PixmapCache.getIcon("passwords.png"), @@ -1432,6 +1444,7 @@ ## self.passwordsAct.triggered.connect(self.__showPasswordsDialog) ## self.__actions.append(self.passwordsAct) + # TODO: AdBlock ## self.adblockAct = E5Action( ## self.tr('Ad Block'), ## UI.PixmapCache.getIcon("adBlockPlus.png"), @@ -1449,6 +1462,7 @@ ## self.adblockAct.triggered.connect(self.__showAdBlockDialog) ## self.__actions.append(self.adblockAct) + # TODO: Click2Flash (?) ## self.flashblockAct = E5Action( ## self.tr('ClickToFlash'), ## UI.PixmapCache.getIcon("flashBlock.png"), @@ -1467,6 +1481,7 @@ ## self.__showClickToFlashDialog) ## self.__actions.append(self.flashblockAct) + # TODO: Certificates ## if SSL_AVAILABLE: ## self.certificatesAct = E5Action( ## self.tr('Manage SSL Certificates'), @@ -1486,6 +1501,7 @@ ## self.__showCertificatesDialog) ## self.__actions.append(self.certificatesAct) + # TODO: Network Monitor (?) ## self.toolsMonitorAct = E5Action( ## self.tr('Network Monitor'), ## self.tr('&Network Monitor...'), @@ -1502,7 +1518,7 @@ ## self.__showNetworkMonitor) ## self.__actions.append(self.toolsMonitorAct) - # TODO: re-enable once Download Manager has been done + # TODO: Download Manager ## self.showDownloadManagerAct = E5Action( ## self.tr('Downloads'), ## self.tr('Downloads'), @@ -1518,7 +1534,7 @@ ## self.__showDownloadsWindow) ## self.__actions.append(self.showDownloadManagerAct) - # TODO: re-enable once RSS Feeds Manager has been done + # TODO: RSS Feeds Manager ## self.feedsManagerAct = E5Action( ## self.tr('RSS Feeds Dialog'), ## UI.PixmapCache.getIcon("rss22.png"), @@ -1537,6 +1553,7 @@ ## self.feedsManagerAct.triggered.connect(self.__showFeedsManager) ## self.__actions.append(self.feedsManagerAct) + # TODO: Site Info ## self.siteInfoAct = E5Action( ## self.tr('Siteinfo Dialog'), ## UI.PixmapCache.getIcon("helpAbout.png"), @@ -1554,6 +1571,7 @@ ## self.siteInfoAct.triggered.connect(self.__showSiteinfoDialog) ## self.__actions.append(self.siteInfoAct) + # TODO: User Agents ## self.userAgentManagerAct = E5Action( ## self.tr('Manage User Agent Settings'), ## self.tr('Manage &User Agent Settings'), @@ -1569,6 +1587,7 @@ ## self.__showUserAgentsDialog) ## self.__actions.append(self.userAgentManagerAct) + # TODO: Synchronisation ## self.synchronizationAct = E5Action( ## self.tr('Synchronize data'), ## UI.PixmapCache.getIcon("sync.png"), @@ -1586,7 +1605,7 @@ ## self.__showSyncDialog) ## self.__actions.append(self.synchronizationAct) - # TODO: re-enable once zoom stuff is done + # TODO: Zoom Manager ## self.zoomValuesAct = E5Action( ## self.tr('Manage Saved Zoom Values'), ## UI.PixmapCache.getIcon("zoomReset.png"), @@ -1677,11 +1696,12 @@ menu.addSeparator() menu.addAction(self.stopAct) menu.addAction(self.reloadAct) + # TODO: QtHelp ## if WebBrowserWindow.UseQtHelp: ## menu.addSeparator() ## menu.addAction(self.syncTocAct) - # TODO: re-enable once History stuff is done + # TODO: History ## from .History.HistoryMenu import HistoryMenu ## self.historyMenu = HistoryMenu(self, self.__tabWidget) ## self.historyMenu.setTearOffEnabled(True) @@ -1690,7 +1710,7 @@ ## self.historyMenu.newUrl.connect(self.openUrlNewTab) ## mb.addMenu(self.historyMenu) - # TODO: re-enable once Bookmarks stuff is done + # TODO: Bookmarks ## from .Bookmarks.BookmarksMenu import BookmarksMenuBarMenu ## self.bookmarksMenu = BookmarksMenuBarMenu(self) ## self.bookmarksMenu.setTearOffEnabled(True) @@ -1889,7 +1909,7 @@ ## self.searchEdit.setSizePolicy(sizePolicy) ## self.searchEdit.search.connect(self.__linkActivated) ## self.__navigationSplitter.addWidget(self.searchEdit) -## gotb.addWidget(self.__navigationSplitter) + gotb.addWidget(self.__navigationSplitter) self.__navigationSplitter.setSizePolicy( QSizePolicy.Expanding, QSizePolicy.Maximum) @@ -2373,35 +2393,35 @@ """ self.currentBrowser().stop() -## def __zoomValueChanged(self, value): -## """ -## Private slot to handle value changes of the zoom widget. -## -## @param value zoom value (integer) -## """ -## self.currentBrowser().setZoomValue(value) -## -## def __zoomIn(self): -## """ -## Private slot called to handle the zoom in action. -## """ -## self.currentBrowser().zoomIn() -## self.__zoomWidget.setValue(self.currentBrowser().zoomValue()) -## -## def __zoomOut(self): -## """ -## Private slot called to handle the zoom out action. -## """ -## self.currentBrowser().zoomOut() -## self.__zoomWidget.setValue(self.currentBrowser().zoomValue()) -## -## def __zoomReset(self): -## """ -## Private slot called to handle the zoom reset action. -## """ -## self.currentBrowser().zoomReset() -## self.__zoomWidget.setValue(self.currentBrowser().zoomValue()) -## + def __zoomValueChanged(self, value): + """ + Private slot to handle value changes of the zoom widget. + + @param value zoom value (integer) + """ + self.currentBrowser().setZoomValue(value) + + def __zoomIn(self): + """ + Private slot called to handle the zoom in action. + """ + self.currentBrowser().zoomIn() + self.__zoomWidget.setValue(self.currentBrowser().zoomValue()) + + def __zoomOut(self): + """ + Private slot called to handle the zoom out action. + """ + self.currentBrowser().zoomOut() + self.__zoomWidget.setValue(self.currentBrowser().zoomValue()) + + def __zoomReset(self): + """ + Private slot called to handle the zoom reset action. + """ + self.currentBrowser().zoomReset() + self.__zoomWidget.setValue(self.currentBrowser().zoomValue()) + ## def __zoomTextOnly(self, textOnly): ## """ ## Private slot called to handle the zoom text only action. @@ -2521,9 +2541,9 @@ self.setForwardAvailable(cb.isForwardAvailable()) self.setBackwardAvailable(cb.isBackwardAvailable()) self.setLoadingActions(cb.isLoading()) -## -## # set value of zoom widget -## self.__zoomWidget.setValue(cb.zoomValue()) + + # set value of zoom widget + self.__zoomWidget.setValue(cb.zoomValue()) def __showPreferences(self): """