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 """ |