Helpviewer/HelpTabWidget.py

changeset 6122
e7d98249f393
parent 6048
82ad8ec9548c
child 6157
708a22e46bbd
equal deleted inserted replaced
6121:d3d64f3128b3 6122:e7d98249f393
201 UI.PixmapCache.getIcon("addBookmark.png"), 201 UI.PixmapCache.getIcon("addBookmark.png"),
202 self.tr('Bookmark All Tabs'), self.__mainWindow.bookmarkAll) 202 self.tr('Bookmark All Tabs'), self.__mainWindow.bookmarkAll)
203 self.__tabBackContextMenu.addSeparator() 203 self.__tabBackContextMenu.addSeparator()
204 self.__restoreClosedTabAct = self.__tabBackContextMenu.addAction( 204 self.__restoreClosedTabAct = self.__tabBackContextMenu.addAction(
205 UI.PixmapCache.getIcon("trash.png"), 205 UI.PixmapCache.getIcon("trash.png"),
206 self.tr('Restore Closed Tab'), self.restoreClosedTab) 206 self.tr('Restore Closed Tab'))
207 self.__restoreClosedTabAct.setEnabled(False) 207 self.__restoreClosedTabAct.setEnabled(False)
208 self.__restoreClosedTabAct.setData(0) 208 self.__restoreClosedTabAct.setData(0)
209 self.__restoreClosedTabAct.triggered.connect(
210 lambda: self.restoreClosedTab(self.__restoreClosedTabAct))
209 211
210 def __showContextMenu(self, coord, index): 212 def __showContextMenu(self, coord, index):
211 """ 213 """
212 Private slot to show the tab context menu. 214 Private slot to show the tab context menu.
213 215
326 .historyFilterModel()) 328 .historyFilterModel())
327 self.__historyCompleter = HistoryCompleter( 329 self.__historyCompleter = HistoryCompleter(
328 self.__historyCompletionModel, self) 330 self.__historyCompletionModel, self)
329 self.__historyCompleter.activated[str].connect(self.__pathSelected) 331 self.__historyCompleter.activated[str].connect(self.__pathSelected)
330 urlbar.setCompleter(self.__historyCompleter) 332 urlbar.setCompleter(self.__historyCompleter)
331 urlbar.returnPressed.connect(self.__lineEditReturnPressed) 333 urlbar.returnPressed.connect(
334 lambda: self.__lineEditReturnPressed(urlbar))
332 if position == -1: 335 if position == -1:
333 self.__stackedUrlBar.addWidget(urlbar) 336 self.__stackedUrlBar.addWidget(urlbar)
334 else: 337 else:
335 self.__stackedUrlBar.insertWidget(position, urlbar) 338 self.__stackedUrlBar.insertWidget(position, urlbar)
336 339
337 browser = HelpBrowser(self.__mainWindow, self) 340 browser = HelpBrowser(self.__mainWindow, self)
338 urlbar.setBrowser(browser) 341 urlbar.setBrowser(browser)
339 342
340 browser.sourceChanged.connect(self.__sourceChanged) 343 browser.sourceChanged.connect(
341 browser.titleChanged.connect(self.__titleChanged) 344 lambda url: self.__sourceChanged(url, browser))
345 browser.titleChanged.connect(
346 lambda title: self.__titleChanged(title, browser))
342 browser.highlighted.connect(self.showMessage) 347 browser.highlighted.connect(self.showMessage)
343 browser.backwardAvailable.connect( 348 browser.backwardAvailable.connect(
344 self.__mainWindow.setBackwardAvailable) 349 self.__mainWindow.setBackwardAvailable)
345 browser.forwardAvailable.connect(self.__mainWindow.setForwardAvailable) 350 browser.forwardAvailable.connect(self.__mainWindow.setForwardAvailable)
346 browser.loadStarted.connect(self.__loadStarted) 351 browser.loadStarted.connect(
347 browser.loadFinished.connect(self.__loadFinished) 352 lambda: self.__loadStarted(browser))
348 browser.iconChanged.connect(self.__iconChanged) 353 browser.loadFinished.connect(
354 lambda ok: self.__loadFinished(ok, browser))
355 browser.faviconChanged.connect(
356 lambda: self.__iconChanged(browser))
349 browser.search.connect(self.newBrowser) 357 browser.search.connect(self.newBrowser)
350 browser.page().windowCloseRequested.connect( 358 browser.page().windowCloseRequested.connect(
351 self.__windowCloseRequested) 359 lambda: self.__windowCloseRequested(browser.page()))
352 browser.page().printRequested.connect(self.__printRequested) 360 browser.page().printRequested.connect(self.__printRequested)
353 browser.zoomValueChanged.connect(self.browserZoomValueChanged) 361 browser.zoomValueChanged.connect(self.browserZoomValueChanged)
354 362
355 if position == -1: 363 if position == -1:
356 index = self.addTab(browser, self.tr("...")) 364 index = self.addTab(browser, self.tr("..."))
415 """ 423 """
416 index = act.data() 424 index = act.data()
417 if index is not None: 425 if index is not None:
418 self.setCurrentIndex(index) 426 self.setCurrentIndex(index)
419 427
420 def __windowCloseRequested(self): 428 def __windowCloseRequested(self, page):
421 """ 429 """
422 Private slot to handle the windowCloseRequested signal of a browser. 430 Private slot to handle the windowCloseRequested signal of a browser.
423 """ 431
424 page = self.sender() 432 @param page reference to the web page
425 if page is None: 433 @type HelpWebPage
426 return 434 """
427
428 browser = page.view() 435 browser = page.view()
429 if browser is None: 436 if browser is None:
430 return 437 return
431 438
432 index = self.indexOf(browser) 439 index = self.indexOf(browser)
670 self.tr( 677 self.tr(
671 """<p>Printing is not available due to a bug in PyQt5.""" 678 """<p>Printing is not available due to a bug in PyQt5."""
672 """Please upgrade.</p>""")) 679 """Please upgrade.</p>"""))
673 return 680 return
674 681
675 def __sourceChanged(self, url): 682 def __sourceChanged(self, url, browser):
676 """ 683 """
677 Private slot to handle a change of a browsers source. 684 Private slot to handle a change of a browsers source.
678 685
679 @param url URL of the new site (QUrl) 686 @param url URL of the new site
680 """ 687 @type QUrl
681 browser = self.sender() 688 @param browser reference to the web browser
682 689 @type HelpBrowser
683 if browser is not None: 690 """
684 self.sourceChanged.emit(browser, url) 691 self.sourceChanged.emit(browser, url)
685 692
686 def __titleChanged(self, title): 693 def __titleChanged(self, title, browser):
687 """ 694 """
688 Private slot to handle a change of a browsers title. 695 Private slot to handle a change of a browsers title.
689 696
690 @param title new title (string) 697 @param title new title
691 """ 698 @type str
692 browser = self.sender() 699 @param browser reference to the web browser
693 700 @type HelpBrowser
694 if browser is not None and isinstance(browser, QWidget): 701 """
695 index = self.indexOf(browser) 702 index = self.indexOf(browser)
696 if title == "": 703 if title == "":
697 title = browser.url().toString() 704 title = browser.url().toString()
698 705
699 self.setTabText(index, self.__elide(title.replace("&", "&&"))) 706 self.setTabText(index, self.__elide(title.replace("&", "&&")))
700 self.setTabToolTip(index, title) 707 self.setTabToolTip(index, title)
701 708
702 self.titleChanged.emit(browser, title) 709 self.titleChanged.emit(browser, title)
703 710
704 def __elide(self, txt, mode=Qt.ElideRight, length=40): 711 def __elide(self, txt, mode=Qt.ElideRight, length=40):
705 """ 712 """
706 Private method to elide some text. 713 Private method to elide some text.
707 714
744 else: 751 else:
745 self.setTabsClosable(True) 752 self.setTabsClosable(True)
746 self.tabCloseRequested.connect(self.closeBrowserAt) 753 self.tabCloseRequested.connect(self.closeBrowserAt)
747 self.__closeButton.hide() 754 self.__closeButton.hide()
748 755
749 def __loadStarted(self): 756 def __loadStarted(self, browser):
750 """ 757 """
751 Private method to handle the loadStarted signal. 758 Private method to handle the loadStarted signal.
752 """ 759
753 browser = self.sender() 760 @param browser reference to the web browser
754 761 @type HelpBrowser
755 if browser is not None: 762 """
756 index = self.indexOf(browser) 763 index = self.indexOf(browser)
757 anim = self.animationLabel( 764 anim = self.animationLabel(
758 index, os.path.join(getConfig("ericPixDir"), "loading.gif"), 765 index, os.path.join(getConfig("ericPixDir"), "loading.gif"),
759 100) 766 100)
760 if not anim: 767 if not anim:
761 loading = QIcon(os.path.join(getConfig("ericPixDir"), 768 loading = QIcon(os.path.join(getConfig("ericPixDir"),
762 "loading.gif")) 769 "loading.gif"))
763 self.setTabIcon(index, loading) 770 self.setTabIcon(index, loading)
764 else: 771 else:
765 self.setTabIcon(index, QIcon()) 772 self.setTabIcon(index, QIcon())
766 self.setTabText(index, self.tr("Loading...")) 773 self.setTabText(index, self.tr("Loading..."))
767 self.setTabToolTip(index, self.tr("Loading...")) 774 self.setTabToolTip(index, self.tr("Loading..."))
768 self.showMessage.emit(self.tr("Loading...")) 775 self.showMessage.emit(self.tr("Loading..."))
769 776
770 self.__mainWindow.setLoadingActions(True) 777 self.__mainWindow.setLoadingActions(True)
771 778
772 def __loadFinished(self, ok): 779 def __loadFinished(self, ok, browser):
773 """ 780 """
774 Private method to handle the loadFinished signal. 781 Private method to handle the loadFinished signal.
775 782
776 @param ok flag indicating the result (boolean) 783 @param ok flag indicating the result
777 """ 784 @type bool
778 browser = self.sender() 785 @param browser reference to the web browser
779 if not isinstance(browser, HelpBrowser): 786 @type HelpBrowser
780 return 787 """
781 788 import Helpviewer.HelpWindow
782 if browser is not None: 789 index = self.indexOf(browser)
783 import Helpviewer.HelpWindow 790 self.resetAnimation(index)
784 index = self.indexOf(browser) 791 self.setTabIcon(
785 self.resetAnimation(index) 792 index, Helpviewer.HelpWindow.HelpWindow.icon(browser.url()))
786 self.setTabIcon( 793 if ok:
787 index, Helpviewer.HelpWindow.HelpWindow.icon(browser.url())) 794 self.showMessage.emit(self.tr("Finished loading"))
788 if ok: 795 else:
789 self.showMessage.emit(self.tr("Finished loading")) 796 self.showMessage.emit(self.tr("Failed to load"))
790 else: 797
791 self.showMessage.emit(self.tr("Failed to load")) 798 self.__mainWindow.setLoadingActions(False)
792 799
793 self.__mainWindow.setLoadingActions(False) 800 def __iconChanged(self, browser):
794
795 def __iconChanged(self):
796 """ 801 """
797 Private slot to handle the icon change. 802 Private slot to handle the icon change.
798 """ 803
799 browser = self.sender() 804 @param browser reference to the web browser
800 805 @type HelpBrowser
801 if browser is not None and isinstance(browser, QWidget): 806 """
802 import Helpviewer.HelpWindow 807 import Helpviewer.HelpWindow
803 self.setTabIcon( 808 self.setTabIcon(
804 self.indexOf(browser), 809 self.indexOf(browser),
805 Helpviewer.HelpWindow.HelpWindow.icon(browser.url())) 810 Helpviewer.HelpWindow.HelpWindow.icon(browser.url()))
806 Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\ 811 Helpviewer.HelpWindow.HelpWindow.bookmarksManager()\
807 .iconChanged(browser.url()) 812 .iconChanged(browser.url())
808 813
809 def getSourceFileList(self): 814 def getSourceFileList(self):
810 """ 815 """
811 Public method to get a list of all opened source files. 816 Public method to get a list of all opened source files.
812 817
871 876
872 @return reference to the current url bar (UrlBar) 877 @return reference to the current url bar (UrlBar)
873 """ 878 """
874 return self.__stackedUrlBar.currentWidget() 879 return self.__stackedUrlBar.currentWidget()
875 880
876 def __lineEditReturnPressed(self): 881 def __lineEditReturnPressed(self, edit):
877 """ 882 """
878 Private slot to handle the entering of an URL. 883 Private slot to handle the entering of an URL.
879 """ 884
880 edit = self.sender() 885 @param edit reference to the line edit
886 @type UrlBar
887 """
881 url = self.__guessUrlFromPath(edit.text()) 888 url = self.__guessUrlFromPath(edit.text())
882 request = QNetworkRequest(url) 889 request = QNetworkRequest(url)
883 request.setRawHeader(b"X-Eric6-UserLoadAction", b"1") 890 request.setRawHeader(b"X-Eric6-UserLoadAction", b"1")
884 if e5App().keyboardModifiers() == Qt.AltModifier: 891 if e5App().keyboardModifiers() == Qt.AltModifier:
885 self.newBrowser( 892 self.newBrowser(
945 if browser.url() == "" and browser.hasFocus(): 952 if browser.url() == "" and browser.hasFocus():
946 self.__stackedUrlBar.currentWidget.setFocus() 953 self.__stackedUrlBar.currentWidget.setFocus()
947 elif browser.url() != "": 954 elif browser.url() != "":
948 browser.setFocus() 955 browser.setFocus()
949 956
950 def restoreClosedTab(self): 957 def restoreClosedTab(self, act):
951 """ 958 """
952 Public slot to restore the most recently closed tab. 959 Public slot to restore the most recently closed tab.
960
961 @param act reference to the action that triggered
962 @type QAction
953 """ 963 """
954 if not self.canRestoreClosedTab(): 964 if not self.canRestoreClosedTab():
955 return 965 return
956 966
957 act = self.sender()
958 tab = self.__closedTabsManager.getClosedTabAt(act.data()) 967 tab = self.__closedTabsManager.getClosedTabAt(act.data())
959 968
960 self.newBrowser(tab.url.toString(), position=tab.position) 969 self.newBrowser(tab.url.toString(), position=tab.position)
961 970
962 def canRestoreClosedTab(self): 971 def canRestoreClosedTab(self):
993 1002
994 self.__closedTabsMenu.clear() 1003 self.__closedTabsMenu.clear()
995 index = 0 1004 index = 0
996 for tab in self.__closedTabsManager.allClosedTabs(): 1005 for tab in self.__closedTabsManager.allClosedTabs():
997 title = fm.elidedText(tab.title, Qt.ElideRight, maxWidth) 1006 title = fm.elidedText(tab.title, Qt.ElideRight, maxWidth)
998 self.__closedTabsMenu.addAction( 1007 act = self.__closedTabsMenu.addAction(
999 self.__mainWindow.icon(tab.url), title, 1008 self.__mainWindow.icon(tab.url), title)
1000 self.restoreClosedTab).setData(index) 1009 act.setData(index)
1010 act.triggered.connect(lambda: self.restoreClosedTab(act))
1001 index += 1 1011 index += 1
1002 self.__closedTabsMenu.addSeparator() 1012 self.__closedTabsMenu.addSeparator()
1003 self.__closedTabsMenu.addAction( 1013 self.__closedTabsMenu.addAction(
1004 self.tr("Restore All Closed Tabs"), self.restoreAllClosedTabs) 1014 self.tr("Restore All Closed Tabs"), self.restoreAllClosedTabs)
1005 self.__closedTabsMenu.addAction( 1015 self.__closedTabsMenu.addAction(

eric ide

mercurial