Helpviewer/HelpTabWidget.py

branch
Py2 comp.
changeset 3484
645c12de6b0c
parent 3178
f25fc1364c88
parent 3345
071afe8be2a1
child 3656
441956d8fce5
equal deleted inserted replaced
3456:96232974dcdb 3484:645c12de6b0c
9 9
10 from __future__ import unicode_literals 10 from __future__ import unicode_literals
11 11
12 import os 12 import os
13 13
14 from PyQt4.QtCore import pyqtSignal, Qt, QUrl 14 from PyQt4.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl
15 from PyQt4.QtGui import QWidget, QHBoxLayout, QMenu, QToolButton, QPrinter, \ 15 from PyQt4.QtGui import QWidget, QHBoxLayout, QMenu, QToolButton, QPrinter, \
16 QPrintDialog, QDialog, QIcon 16 QPrintDialog, QDialog, QIcon
17 from PyQt4.QtNetwork import QNetworkAccessManager, QNetworkRequest 17 from PyQt4.QtNetwork import QNetworkAccessManager, QNetworkRequest
18 18
19 from E5Gui.E5TabWidget import E5TabWidget 19 from E5Gui.E5TabWidget import E5TabWidget
93 93
94 self.__navigationButton = QToolButton(self) 94 self.__navigationButton = QToolButton(self)
95 self.__navigationButton.setIcon( 95 self.__navigationButton.setIcon(
96 UI.PixmapCache.getIcon("1downarrow.png")) 96 UI.PixmapCache.getIcon("1downarrow.png"))
97 self.__navigationButton.setToolTip( 97 self.__navigationButton.setToolTip(
98 self.trUtf8("Show a navigation menu")) 98 self.tr("Show a navigation menu"))
99 self.__navigationButton.setPopupMode(QToolButton.InstantPopup) 99 self.__navigationButton.setPopupMode(QToolButton.InstantPopup)
100 self.__navigationButton.setMenu(self.__navigationMenu) 100 self.__navigationButton.setMenu(self.__navigationMenu)
101 self.__navigationButton.setEnabled(False) 101 self.__navigationButton.setEnabled(False)
102 self.__rightCornerWidgetLayout.addWidget(self.__navigationButton) 102 self.__rightCornerWidgetLayout.addWidget(self.__navigationButton)
103 103
106 self.__aboutToShowClosedTabsMenu) 106 self.__aboutToShowClosedTabsMenu)
107 107
108 self.__closedTabsButton = QToolButton(self) 108 self.__closedTabsButton = QToolButton(self)
109 self.__closedTabsButton.setIcon(UI.PixmapCache.getIcon("trash.png")) 109 self.__closedTabsButton.setIcon(UI.PixmapCache.getIcon("trash.png"))
110 self.__closedTabsButton.setToolTip( 110 self.__closedTabsButton.setToolTip(
111 self.trUtf8("Show a navigation menu for closed tabs")) 111 self.tr("Show a navigation menu for closed tabs"))
112 self.__closedTabsButton.setPopupMode(QToolButton.InstantPopup) 112 self.__closedTabsButton.setPopupMode(QToolButton.InstantPopup)
113 self.__closedTabsButton.setMenu(self.__closedTabsMenu) 113 self.__closedTabsButton.setMenu(self.__closedTabsMenu)
114 self.__closedTabsButton.setEnabled(False) 114 self.__closedTabsButton.setEnabled(False)
115 self.__rightCornerWidgetLayout.addWidget(self.__closedTabsButton) 115 self.__rightCornerWidgetLayout.addWidget(self.__closedTabsButton)
116 116
117 self.__closeButton = QToolButton(self) 117 self.__closeButton = QToolButton(self)
118 self.__closeButton.setIcon(UI.PixmapCache.getIcon("close.png")) 118 self.__closeButton.setIcon(UI.PixmapCache.getIcon("close.png"))
119 self.__closeButton.setToolTip( 119 self.__closeButton.setToolTip(
120 self.trUtf8("Close the current help window")) 120 self.tr("Close the current help window"))
121 self.__closeButton.setEnabled(False) 121 self.__closeButton.setEnabled(False)
122 self.__closeButton.clicked[bool].connect(self.closeBrowser) 122 self.__closeButton.clicked[bool].connect(self.closeBrowser)
123 self.__rightCornerWidgetLayout.addWidget(self.__closeButton) 123 self.__rightCornerWidgetLayout.addWidget(self.__closeButton)
124 if Preferences.getUI("SingleCloseButton") or \ 124 if Preferences.getUI("SingleCloseButton") or \
125 not hasattr(self, 'setTabsClosable'): 125 not hasattr(self, 'setTabsClosable'):
132 self.setCornerWidget(self.__rightCornerWidget, Qt.TopRightCorner) 132 self.setCornerWidget(self.__rightCornerWidget, Qt.TopRightCorner)
133 133
134 self.__newTabButton = QToolButton(self) 134 self.__newTabButton = QToolButton(self)
135 self.__newTabButton.setIcon(UI.PixmapCache.getIcon("plus.png")) 135 self.__newTabButton.setIcon(UI.PixmapCache.getIcon("plus.png"))
136 self.__newTabButton.setToolTip( 136 self.__newTabButton.setToolTip(
137 self.trUtf8("Open a new help window tab")) 137 self.tr("Open a new help window tab"))
138 self.setCornerWidget(self.__newTabButton, Qt.TopLeftCorner) 138 self.setCornerWidget(self.__newTabButton, Qt.TopLeftCorner)
139 self.__newTabButton.clicked[bool].connect(self.newBrowser) 139 self.__newTabButton.clicked[bool].connect(self.newBrowser)
140 140
141 self.__initTabContextMenu() 141 self.__initTabContextMenu()
142 142
147 Private method to create the tab context menu. 147 Private method to create the tab context menu.
148 """ 148 """
149 self.__tabContextMenu = QMenu(self) 149 self.__tabContextMenu = QMenu(self)
150 self.tabContextNewAct = self.__tabContextMenu.addAction( 150 self.tabContextNewAct = self.__tabContextMenu.addAction(
151 UI.PixmapCache.getIcon("tabNew.png"), 151 UI.PixmapCache.getIcon("tabNew.png"),
152 self.trUtf8('New Tab'), self.newBrowser) 152 self.tr('New Tab'), self.newBrowser)
153 self.__tabContextMenu.addSeparator() 153 self.__tabContextMenu.addSeparator()
154 self.leftMenuAct = self.__tabContextMenu.addAction( 154 self.leftMenuAct = self.__tabContextMenu.addAction(
155 UI.PixmapCache.getIcon("1leftarrow.png"), 155 UI.PixmapCache.getIcon("1leftarrow.png"),
156 self.trUtf8('Move Left'), self.__tabContextMenuMoveLeft) 156 self.tr('Move Left'), self.__tabContextMenuMoveLeft)
157 self.rightMenuAct = self.__tabContextMenu.addAction( 157 self.rightMenuAct = self.__tabContextMenu.addAction(
158 UI.PixmapCache.getIcon("1rightarrow.png"), 158 UI.PixmapCache.getIcon("1rightarrow.png"),
159 self.trUtf8('Move Right'), self.__tabContextMenuMoveRight) 159 self.tr('Move Right'), self.__tabContextMenuMoveRight)
160 self.__tabContextMenu.addSeparator() 160 self.__tabContextMenu.addSeparator()
161 self.tabContextCloneAct = self.__tabContextMenu.addAction( 161 self.tabContextCloneAct = self.__tabContextMenu.addAction(
162 self.trUtf8("Duplicate Page"), self.__tabContextMenuClone) 162 self.tr("Duplicate Page"), self.__tabContextMenuClone)
163 self.__tabContextMenu.addSeparator() 163 self.__tabContextMenu.addSeparator()
164 self.tabContextCloseAct = self.__tabContextMenu.addAction( 164 self.tabContextCloseAct = self.__tabContextMenu.addAction(
165 UI.PixmapCache.getIcon("tabClose.png"), 165 UI.PixmapCache.getIcon("tabClose.png"),
166 self.trUtf8('Close'), self.__tabContextMenuClose) 166 self.tr('Close'), self.__tabContextMenuClose)
167 self.tabContextCloseOthersAct = self.__tabContextMenu.addAction( 167 self.tabContextCloseOthersAct = self.__tabContextMenu.addAction(
168 UI.PixmapCache.getIcon("tabCloseOther.png"), 168 UI.PixmapCache.getIcon("tabCloseOther.png"),
169 self.trUtf8("Close Others"), self.__tabContextMenuCloseOthers) 169 self.tr("Close Others"), self.__tabContextMenuCloseOthers)
170 self.__tabContextMenu.addAction( 170 self.__tabContextMenu.addAction(
171 self.trUtf8('Close All'), self.closeAllBrowsers) 171 self.tr('Close All'), self.closeAllBrowsers)
172 self.__tabContextMenu.addSeparator() 172 self.__tabContextMenu.addSeparator()
173 self.__tabContextMenu.addAction( 173 self.__tabContextMenu.addAction(
174 UI.PixmapCache.getIcon("printPreview.png"), 174 UI.PixmapCache.getIcon("printPreview.png"),
175 self.trUtf8('Print Preview'), self.__tabContextMenuPrintPreview) 175 self.tr('Print Preview'), self.__tabContextMenuPrintPreview)
176 self.__tabContextMenu.addAction( 176 self.__tabContextMenu.addAction(
177 UI.PixmapCache.getIcon("print.png"), 177 UI.PixmapCache.getIcon("print.png"),
178 self.trUtf8('Print'), self.__tabContextMenuPrint) 178 self.tr('Print'), self.__tabContextMenuPrint)
179 self.__tabContextMenu.addAction( 179 self.__tabContextMenu.addAction(
180 UI.PixmapCache.getIcon("printPdf.png"), 180 UI.PixmapCache.getIcon("printPdf.png"),
181 self.trUtf8('Print as PDF'), self.__tabContextMenuPrintPdf) 181 self.tr('Print as PDF'), self.__tabContextMenuPrintPdf)
182 self.__tabContextMenu.addSeparator() 182 self.__tabContextMenu.addSeparator()
183 self.__tabContextMenu.addAction( 183 self.__tabContextMenu.addAction(
184 UI.PixmapCache.getIcon("reload.png"), 184 UI.PixmapCache.getIcon("reload.png"),
185 self.trUtf8('Reload All'), self.reloadAllBrowsers) 185 self.tr('Reload All'), self.reloadAllBrowsers)
186 self.__tabContextMenu.addSeparator() 186 self.__tabContextMenu.addSeparator()
187 self.__tabContextMenu.addAction( 187 self.__tabContextMenu.addAction(
188 UI.PixmapCache.getIcon("addBookmark.png"), 188 UI.PixmapCache.getIcon("addBookmark.png"),
189 self.trUtf8('Bookmark All Tabs'), self.__mainWindow.bookmarkAll) 189 self.tr('Bookmark All Tabs'), self.__mainWindow.bookmarkAll)
190 190
191 self.__tabBackContextMenu = QMenu(self) 191 self.__tabBackContextMenu = QMenu(self)
192 self.__tabBackContextMenu.addAction( 192 self.__tabBackContextMenu.addAction(
193 self.trUtf8('Close All'), self.closeAllBrowsers) 193 self.tr('Close All'), self.closeAllBrowsers)
194 self.__tabBackContextMenu.addAction( 194 self.__tabBackContextMenu.addAction(
195 UI.PixmapCache.getIcon("reload.png"), 195 UI.PixmapCache.getIcon("reload.png"),
196 self.trUtf8('Reload All'), self.reloadAllBrowsers) 196 self.tr('Reload All'), self.reloadAllBrowsers)
197 self.__tabBackContextMenu.addAction( 197 self.__tabBackContextMenu.addAction(
198 UI.PixmapCache.getIcon("addBookmark.png"), 198 UI.PixmapCache.getIcon("addBookmark.png"),
199 self.trUtf8('Bookmark All Tabs'), self.__mainWindow.bookmarkAll) 199 self.tr('Bookmark All Tabs'), self.__mainWindow.bookmarkAll)
200 self.__tabBackContextMenu.addSeparator() 200 self.__tabBackContextMenu.addSeparator()
201 self.__restoreClosedTabAct = self.__tabBackContextMenu.addAction( 201 self.__restoreClosedTabAct = self.__tabBackContextMenu.addAction(
202 UI.PixmapCache.getIcon("trash.png"), 202 UI.PixmapCache.getIcon("trash.png"),
203 self.trUtf8('Restore Closed Tab'), self.restoreClosedTab) 203 self.tr('Restore Closed Tab'), self.restoreClosedTab)
204 self.__restoreClosedTabAct.setEnabled(False) 204 self.__restoreClosedTabAct.setEnabled(False)
205 self.__restoreClosedTabAct.setData(0) 205 self.__restoreClosedTabAct.setData(0)
206 206
207 def __showContextMenu(self, coord, index): 207 def __showContextMenu(self, coord, index):
208 """ 208 """
341 self.__windowCloseRequested) 341 self.__windowCloseRequested)
342 browser.page().printRequested.connect(self.__printRequested) 342 browser.page().printRequested.connect(self.__printRequested)
343 browser.zoomValueChanged.connect(self.browserZoomValueChanged) 343 browser.zoomValueChanged.connect(self.browserZoomValueChanged)
344 344
345 if position == -1: 345 if position == -1:
346 index = self.addTab(browser, self.trUtf8("...")) 346 index = self.addTab(browser, self.tr("..."))
347 else: 347 else:
348 index = self.insertTab(position, browser, self.trUtf8("...")) 348 index = self.insertTab(position, browser, self.tr("..."))
349 self.setCurrentIndex(index) 349 self.setCurrentIndex(index)
350 350
351 self.__mainWindow.closeAct.setEnabled(True) 351 self.__mainWindow.closeAct.setEnabled(True)
352 self.__mainWindow.closeAllAct.setEnabled(True) 352 self.__mainWindow.closeAllAct.setEnabled(True)
353 self.__closeButton.setEnabled(True) 353 self.__closeButton.setEnabled(True)
495 li = [] 495 li = []
496 for index in range(self.count()): 496 for index in range(self.count()):
497 li.append(self.widget(index)) 497 li.append(self.widget(index))
498 return li 498 return li
499 499
500 @pyqtSlot()
500 def printBrowser(self, browser=None): 501 def printBrowser(self, browser=None):
501 """ 502 """
502 Public slot called to print the displayed page. 503 Public slot called to print the displayed page.
503 504
504 @param browser reference to the browser to be printed (HelpBrowser) 505 @param browser reference to the browser to be printed (HelpBrowser)
539 try: 540 try:
540 frame.print_(printer) 541 frame.print_(printer)
541 except AttributeError: 542 except AttributeError:
542 E5MessageBox.critical( 543 E5MessageBox.critical(
543 self, 544 self,
544 self.trUtf8("eric5 Web Browser"), 545 self.tr("eric5 Web Browser"),
545 self.trUtf8( 546 self.tr(
546 """<p>Printing is not available due to a bug in""" 547 """<p>Printing is not available due to a bug in"""
547 """ PyQt4. Please upgrade.</p>""")) 548 """ PyQt4. Please upgrade.</p>"""))
548 return 549 return
549 550
551 @pyqtSlot()
550 def printBrowserPdf(self, browser=None): 552 def printBrowserPdf(self, browser=None):
551 """ 553 """
552 Public slot called to print the displayed page to PDF. 554 Public slot called to print the displayed page to PDF.
553 555
554 @param browser reference to the browser to be printed (HelpBrowser) 556 @param browser reference to the browser to be printed (HelpBrowser)
584 try: 586 try:
585 frame.print_(printer) 587 frame.print_(printer)
586 except AttributeError: 588 except AttributeError:
587 E5MessageBox.critical( 589 E5MessageBox.critical(
588 self, 590 self,
589 self.trUtf8("eric5 Web Browser"), 591 self.tr("eric5 Web Browser"),
590 self.trUtf8( 592 self.tr(
591 """<p>Printing is not available due to a bug in""" 593 """<p>Printing is not available due to a bug in"""
592 """ PyQt4. Please upgrade.</p>""")) 594 """ PyQt4. Please upgrade.</p>"""))
593 return 595 return
594 596
597 @pyqtSlot()
595 def printPreviewBrowser(self, browser=None): 598 def printPreviewBrowser(self, browser=None):
596 """ 599 """
597 Public slot called to show a print preview of the displayed file. 600 Public slot called to show a print preview of the displayed file.
598 601
599 @param browser reference to the browser to be printed (HelpBrowserWV) 602 @param browser reference to the browser to be printed (HelpBrowserWV)
637 try: 640 try:
638 self.__printPreviewBrowser.print_(printer) 641 self.__printPreviewBrowser.print_(printer)
639 except AttributeError: 642 except AttributeError:
640 E5MessageBox.critical( 643 E5MessageBox.critical(
641 self, 644 self,
642 self.trUtf8("eric5 Web Browser"), 645 self.tr("eric5 Web Browser"),
643 self.trUtf8( 646 self.tr(
644 """<p>Printing is not available due to a bug in PyQt4.""" 647 """<p>Printing is not available due to a bug in PyQt4."""
645 """Please upgrade.</p>""")) 648 """Please upgrade.</p>"""))
646 return 649 return
647 650
648 def __sourceChanged(self, url): 651 def __sourceChanged(self, url):
734 loading = QIcon(os.path.join(getConfig("ericPixDir"), 737 loading = QIcon(os.path.join(getConfig("ericPixDir"),
735 "loading.gif")) 738 "loading.gif"))
736 self.setTabIcon(index, loading) 739 self.setTabIcon(index, loading)
737 else: 740 else:
738 self.setTabIcon(index, QIcon()) 741 self.setTabIcon(index, QIcon())
739 self.setTabText(index, self.trUtf8("Loading...")) 742 self.setTabText(index, self.tr("Loading..."))
740 self.setTabToolTip(index, self.trUtf8("Loading...")) 743 self.setTabToolTip(index, self.tr("Loading..."))
741 self.showMessage.emit(self.trUtf8("Loading...")) 744 self.showMessage.emit(self.tr("Loading..."))
742 745
743 self.__mainWindow.setLoadingActions(True) 746 self.__mainWindow.setLoadingActions(True)
744 747
745 def __loadFinished(self, ok): 748 def __loadFinished(self, ok):
746 """ 749 """
757 index = self.indexOf(browser) 760 index = self.indexOf(browser)
758 self.resetAnimation(index) 761 self.resetAnimation(index)
759 self.setTabIcon( 762 self.setTabIcon(
760 index, Helpviewer.HelpWindow.HelpWindow.icon(browser.url())) 763 index, Helpviewer.HelpWindow.HelpWindow.icon(browser.url()))
761 if ok: 764 if ok:
762 self.showMessage.emit(self.trUtf8("Finished loading")) 765 self.showMessage.emit(self.tr("Finished loading"))
763 else: 766 else:
764 self.showMessage.emit(self.trUtf8("Failed to load")) 767 self.showMessage.emit(self.tr("Failed to load"))
765 768
766 self.__mainWindow.setLoadingActions(False) 769 self.__mainWindow.setLoadingActions(False)
767 770
768 def __iconChanged(self): 771 def __iconChanged(self):
769 """ 772 """
801 @return flag indicating a shut down (boolean) 804 @return flag indicating a shut down (boolean)
802 """ 805 """
803 if self.count() > 1 and Preferences.getHelp("WarnOnMultipleClose"): 806 if self.count() > 1 and Preferences.getHelp("WarnOnMultipleClose"):
804 mb = E5MessageBox.E5MessageBox( 807 mb = E5MessageBox.E5MessageBox(
805 E5MessageBox.Information, 808 E5MessageBox.Information,
806 self.trUtf8("Are you sure you want to close the window?"), 809 self.tr("Are you sure you want to close the window?"),
807 self.trUtf8("""Are you sure you want to close the window?\n""" 810 self.tr("""Are you sure you want to close the window?\n"""
808 """You have %n tab(s) open.""", "", self.count()), 811 """You have %n tab(s) open.""", "", self.count()),
809 modal=True, 812 modal=True,
810 parent=self) 813 parent=self)
811 if self.__mainWindow.fromEric: 814 if self.__mainWindow.fromEric:
812 quitButton = mb.addButton( 815 quitButton = mb.addButton(
813 self.trUtf8("&Close"), E5MessageBox.AcceptRole) 816 self.tr("&Close"), E5MessageBox.AcceptRole)
814 quitButton.setIcon(UI.PixmapCache.getIcon("close.png")) 817 quitButton.setIcon(UI.PixmapCache.getIcon("close.png"))
815 else: 818 else:
816 quitButton = mb.addButton( 819 quitButton = mb.addButton(
817 self.trUtf8("&Quit"), E5MessageBox.AcceptRole) 820 self.tr("&Quit"), E5MessageBox.AcceptRole)
818 quitButton.setIcon(UI.PixmapCache.getIcon("exit.png")) 821 quitButton.setIcon(UI.PixmapCache.getIcon("exit.png"))
819 closeTabButton = mb.addButton( 822 closeTabButton = mb.addButton(
820 self.trUtf8("C&lose Current Tab"), E5MessageBox.AcceptRole) 823 self.tr("C&lose Current Tab"), E5MessageBox.AcceptRole)
821 closeTabButton.setIcon(UI.PixmapCache.getIcon("tabClose.png")) 824 closeTabButton.setIcon(UI.PixmapCache.getIcon("tabClose.png"))
822 mb.addButton(E5MessageBox.Cancel) 825 mb.addButton(E5MessageBox.Cancel)
823 mb.exec_() 826 mb.exec_()
824 if mb.clickedButton() == quitButton: 827 if mb.clickedButton() == quitButton:
825 return True 828 return True
972 self.__mainWindow.icon(tab.url), title, 975 self.__mainWindow.icon(tab.url), title,
973 self.restoreClosedTab).setData(index) 976 self.restoreClosedTab).setData(index)
974 index += 1 977 index += 1
975 self.__closedTabsMenu.addSeparator() 978 self.__closedTabsMenu.addSeparator()
976 self.__closedTabsMenu.addAction( 979 self.__closedTabsMenu.addAction(
977 self.trUtf8("Restore All Closed Tabs"), self.restoreAllClosedTabs) 980 self.tr("Restore All Closed Tabs"), self.restoreAllClosedTabs)
978 self.__closedTabsMenu.addAction( 981 self.__closedTabsMenu.addAction(
979 self.trUtf8("Clear List"), self.clearClosedTabsList) 982 self.tr("Clear List"), self.clearClosedTabsList)
980 983
981 def closedTabsManager(self): 984 def closedTabsManager(self):
982 """ 985 """
983 Public slot to get a reference to the closed tabs manager. 986 Public slot to get a reference to the closed tabs manager.
984 987

eric ide

mercurial