--- a/Helpviewer/UrlBar/UrlBar.py Fri Feb 24 11:15:28 2012 +0100 +++ b/Helpviewer/UrlBar/UrlBar.py Sat Feb 25 17:54:39 2012 +0100 @@ -8,7 +8,7 @@ """ from PyQt4.QtCore import pyqtSlot, Qt, QPointF, QUrl -from PyQt4.QtGui import QColor, QPalette, QApplication, QLinearGradient, QIcon +from PyQt4.QtGui import QColor, QPalette, QApplication, QLinearGradient, QIcon, QDialog try: from PyQt4.QtNetwork import QSslCertificate # __IGNORE_EXCEPTION__ except ImportError: @@ -23,6 +23,7 @@ from .FavIconLabel import FavIconLabel from .SslLabel import SslLabel from .BookmarkInfoDialog import BookmarkInfoDialog +from .BookmarkActionSelectionDialog import BookmarkActionSelectionDialog from Helpviewer.Feeds.FeedsDialog import FeedsDialog @@ -93,6 +94,8 @@ self.__bookmarkChanged) Helpviewer.HelpWindow.HelpWindow.bookmarksManager().entryRemoved.connect( self.__bookmarkChanged) + Helpviewer.HelpWindow.HelpWindow.speedDial().pagesChanged.connect( + self.__bookmarkChanged) def setBrowser(self, browser): """ @@ -122,7 +125,12 @@ @param url new URL of the browser (QUrl) """ - self.setText(str(url.toEncoded(), encoding="utf-8")) + strUrl = url.toString() + if strUrl in ["eric:speeddial", "eric:home", "about:blank"]: + strUrl = "" + + if self.text() != strUrl: + self.setText(strUrl) self.setCursorPosition(0) def __loadStarted(self): @@ -132,6 +140,18 @@ self.__sslLabel.setVisible(False) self.__bookmarkButton.setVisible(False) + def __checkBookmark(self): + """ + Private slot to check the current URL for the bookmarked state. + """ + if Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\ + .bookmarkForUrl(self.__browser.url()) is None and \ + Helpviewer.HelpWindow.HelpWindow.speedDial()\ + .pageForUrl(self.__browser.url()).url == "": + self.__bookmarkButton.setIcon(self.__bmInactiveIcon) + else: + self.__bookmarkButton.setIcon(self.__bmActiveIcon) + def __loadFinished(self, ok): """ Private slot to set some data after the page was loaded. @@ -142,11 +162,7 @@ if self.__browser.url().scheme() in ["eric", "about"]: self.__bookmarkButton.setVisible(False) else: - if Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\ - .bookmarkForUrl(self.__browser.url()) is None: - self.__bookmarkButton.setIcon(self.__bmInactiveIcon) - else: - self.__bookmarkButton.setIcon(self.__bmActiveIcon) + self.__checkBookmark() self.__bookmarkButton.setVisible(True) if ok: @@ -208,24 +224,29 @@ """ Private slot to show a dialog with some bookmark info. """ - bookmark = Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\ - .bookmarkForUrl(self.__browser.url()) - if bookmark is None: - self.__browser.addBookmark() - else: - dlg = BookmarkInfoDialog(bookmark, self.__browser) - dlg.exec_() + url = self.__browser.url() + dlg = BookmarkActionSelectionDialog(url) + if dlg.exec_() == QDialog.Accepted: + action = dlg.getAction() + if action == BookmarkActionSelectionDialog.AddBookmark: + self.__browser.addBookmark() + elif action == BookmarkActionSelectionDialog.EditBookmark: + bookmark = Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\ + .bookmarkForUrl(url) + dlg = BookmarkInfoDialog(bookmark, self.__browser) + dlg.exec_() + elif action == BookmarkActionSelectionDialog.AddSpeeddial: + Helpviewer.HelpWindow.HelpWindow.speedDial().addPage( + url, self.__browser.title()) + elif action == BookmarkActionSelectionDialog.RemoveSpeeddial: + Helpviewer.HelpWindow.HelpWindow.speedDial().removePage(url) @pyqtSlot() def __bookmarkChanged(self): """ - Private slot to handle bookmark changes. + Private slot to handle bookmark or speed dial changes. """ - if Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\ - .bookmarkForUrl(self.__browser.url()) is None: - self.__bookmarkButton.setIcon(self.__bmInactiveIcon) - else: - self.__bookmarkButton.setIcon(self.__bmActiveIcon) + self.__checkBookmark() def paintEvent(self, evt): """