Helpviewer/HelpTabWidget.py

changeset 1645
73904ca06d2d
parent 1636
6a25bb84e2a3
child 1651
bc68f24d5658
equal deleted inserted replaced
1644:c580a7686c52 1645:73904ca06d2d
35 35
36 36
37 class HelpTabWidget(E5TabWidget): 37 class HelpTabWidget(E5TabWidget):
38 """ 38 """
39 Class implementing the central widget showing the web pages. 39 Class implementing the central widget showing the web pages.
40
41 @signal sourceChanged(HelpBrowser, QUrl) emitted after the URL of a browser
42 has changed
43 @signal titleChanged(HelpBrowser, str) emitted after the title of a browser
44 has changed
45 @signal showMessage(str) emitted to show a message in the main window status bar
46 @signal browserClosed(QWidget) emitted after a browser was closed
40 """ 47 """
41 sourceChanged = pyqtSignal(QUrl) 48 sourceChanged = pyqtSignal(HelpBrowser, QUrl)
42 titleChanged = pyqtSignal(str) 49 titleChanged = pyqtSignal(HelpBrowser, str)
43 showMessage = pyqtSignal(str) 50 showMessage = pyqtSignal(str)
44 browserClosed = pyqtSignal(QWidget) 51 browserClosed = pyqtSignal(QWidget)
45 52
46 def __init__(self, parent): 53 def __init__(self, parent):
47 """ 54 """
82 self.__navigationButton.setPopupMode(QToolButton.InstantPopup) 89 self.__navigationButton.setPopupMode(QToolButton.InstantPopup)
83 self.__navigationButton.setMenu(self.__navigationMenu) 90 self.__navigationButton.setMenu(self.__navigationMenu)
84 self.__navigationButton.setEnabled(False) 91 self.__navigationButton.setEnabled(False)
85 self.__rightCornerWidgetLayout.addWidget(self.__navigationButton) 92 self.__rightCornerWidgetLayout.addWidget(self.__navigationButton)
86 93
94 self.__closeButton = QToolButton(self)
95 self.__closeButton.setIcon(UI.PixmapCache.getIcon("close.png"))
96 self.__closeButton.setToolTip(self.trUtf8("Close the current help window"))
97 self.__closeButton.setEnabled(False)
98 self.__closeButton.clicked[bool].connect(self.closeBrowser)
99 self.__rightCornerWidgetLayout.addWidget(self.__closeButton)
87 if Preferences.getUI("SingleCloseButton") or \ 100 if Preferences.getUI("SingleCloseButton") or \
88 not hasattr(self, 'setTabsClosable'): 101 not hasattr(self, 'setTabsClosable'):
89 self.__closeButton = QToolButton(self) 102 self.__closeButton.show()
90 self.__closeButton.setIcon(UI.PixmapCache.getIcon("close.png"))
91 self.__closeButton.setToolTip(self.trUtf8("Close the current help window"))
92 self.__closeButton.setEnabled(False)
93 self.__closeButton.clicked[bool].connect(self.closeBrowser)
94 self.__rightCornerWidgetLayout.addWidget(self.__closeButton)
95 else: 103 else:
96 self.setTabsClosable(True) 104 self.setTabsClosable(True)
97 self.tabCloseRequested.connect(self.closeBrowserAt) 105 self.tabCloseRequested.connect(self.closeBrowserAt)
98 self.__closeButton = None 106 self.__closeButton.hide()
99 107
100 self.setCornerWidget(self.__rightCornerWidget, Qt.TopRightCorner) 108 self.setCornerWidget(self.__rightCornerWidget, Qt.TopRightCorner)
101 109
102 self.__newTabButton = QToolButton(self) 110 self.__newTabButton = QToolButton(self)
103 self.__newTabButton.setIcon(UI.PixmapCache.getIcon("tabNew.png")) 111 self.__newTabButton.setIcon(UI.PixmapCache.getIcon("tabNew.png"))
269 index = self.addTab(browser, self.trUtf8("...")) 277 index = self.addTab(browser, self.trUtf8("..."))
270 self.setCurrentIndex(index) 278 self.setCurrentIndex(index)
271 279
272 self.__mainWindow.closeAct.setEnabled(True) 280 self.__mainWindow.closeAct.setEnabled(True)
273 self.__mainWindow.closeAllAct.setEnabled(True) 281 self.__mainWindow.closeAllAct.setEnabled(True)
274 self.__closeButton and self.__closeButton.setEnabled(True) 282 self.__closeButton.setEnabled(True)
275 self.__navigationButton.setEnabled(True) 283 self.__navigationButton.setEnabled(True)
276 284
277 if not linkName and not requestData and \ 285 if not linkName and not requestData and \
278 Preferences.getHelp("StartupBehavior") == 0: 286 Preferences.getHelp("StartupBehavior") == 0:
279 linkName = Preferences.getHelp("HomePage") 287 linkName = Preferences.getHelp("HomePage")
526 """ 534 """
527 Private slot to handle a change of a browsers source. 535 Private slot to handle a change of a browsers source.
528 536
529 @param url URL of the new site (QUrl) 537 @param url URL of the new site (QUrl)
530 """ 538 """
531 self.sourceChanged.emit(url) 539 browser = self.sender()
540
541 if browser is not None:
542 self.sourceChanged.emit(browser, url)
532 543
533 def __titleChanged(self, title): 544 def __titleChanged(self, title):
534 """ 545 """
535 Private slot to handle a change of a browsers title. 546 Private slot to handle a change of a browsers title.
536 547
537 @param title new title (string) 548 @param title new title (string)
538 """ 549 """
539 if title == "": 550 browser = self.sender()
540 title = self.currentBrowser().url().toString() 551
541 552 if browser is not None:
542 self.setTabText(self.currentIndex(), self.__elide(title.replace("&", "&&"))) 553 index = self.indexOf(browser)
543 self.setTabToolTip(self.currentIndex(), title) 554 if title == "":
544 555 title = browser.url().toString()
545 self.titleChanged.emit(title) 556
557 self.setTabText(index, self.__elide(title.replace("&", "&&")))
558 self.setTabToolTip(index, title)
559
560 self.titleChanged.emit(browser, title)
546 561
547 def __elide(self, txt, mode=Qt.ElideRight, length=40): 562 def __elide(self, txt, mode=Qt.ElideRight, length=40):
548 """ 563 """
549 Private method to elide some text. 564 Private method to elide some text.
550 565
572 for browser in self.browsers(): 587 for browser in self.browsers():
573 browser.preferencesChanged() 588 browser.preferencesChanged()
574 589
575 for urlbar in self.__stackedUrlBar.urlBars(): 590 for urlbar in self.__stackedUrlBar.urlBars():
576 urlbar.preferencesChanged() 591 urlbar.preferencesChanged()
592
593 if Preferences.getUI("SingleCloseButton") or \
594 not hasattr(self, 'setTabsClosable'):
595 if hasattr(self, 'setTabsClosable'):
596 self.setTabsClosable(False)
597 try:
598 self.tabCloseRequested.disconnect(self.closeBrowserAt)
599 except TypeError:
600 pass
601 self.__closeButton.show()
602 else:
603 self.setTabsClosable(True)
604 self.tabCloseRequested.connect(self.closeBrowserAt)
605 self.__closeButton.hide()
577 606
578 def __loadStarted(self): 607 def __loadStarted(self):
579 """ 608 """
580 Private method to handle the loadStarted signal. 609 Private method to handle the loadStarted signal.
581 """ 610 """

eric ide

mercurial