12 from PyQt6.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QMarginsF |
12 from PyQt6.QtCore import pyqtSignal, pyqtSlot, Qt, QUrl, QMarginsF |
13 from PyQt6.QtGui import QIcon, QPixmap, QPainter, QPageLayout |
13 from PyQt6.QtGui import QIcon, QPixmap, QPainter, QPageLayout |
14 from PyQt6.QtWidgets import QWidget, QHBoxLayout, QMenu, QToolButton, QDialog |
14 from PyQt6.QtWidgets import QWidget, QHBoxLayout, QMenu, QToolButton, QDialog |
15 from PyQt6.QtPrintSupport import QPrinter, QPrintDialog, QAbstractPrintDialog |
15 from PyQt6.QtPrintSupport import QPrinter, QPrintDialog, QAbstractPrintDialog |
16 |
16 |
17 from EricWidgets.EricTabWidget import EricTabWidget |
17 from eric7.EricWidgets.EricTabWidget import EricTabWidget |
18 from EricWidgets import EricMessageBox |
18 from eric7.EricWidgets import EricMessageBox |
19 from EricWidgets.EricApplication import ericApp |
19 from eric7.EricWidgets.EricApplication import ericApp |
20 from EricGui.EricOverrideCursor import EricOverrideCursor |
20 from eric7.EricGui.EricOverrideCursor import EricOverrideCursor |
21 |
21 |
22 from .WebBrowserView import WebBrowserView |
22 from .WebBrowserView import WebBrowserView |
23 from .WebBrowserPage import WebBrowserPage |
23 from .WebBrowserPage import WebBrowserPage |
24 from .Tools import WebBrowserTools |
24 from .Tools import WebBrowserTools |
25 from . import WebInspector |
25 from . import WebInspector |
26 |
26 |
27 import UI.PixmapCache |
27 from eric7.EricGui import EricPixmapCache |
28 |
28 |
29 import Utilities |
29 from eric7 import Globals, Preferences, Utilities |
30 import Preferences |
|
31 import Globals |
|
32 |
30 |
33 |
31 |
34 def isCupsAvailable(): |
32 def isCupsAvailable(): |
35 """ |
33 """ |
36 Static method to test the availability of CUPS. |
34 Static method to test the availability of CUPS. |
116 self.__navigationMenu = QMenu(self) |
114 self.__navigationMenu = QMenu(self) |
117 self.__navigationMenu.aboutToShow.connect(self.__showNavigationMenu) |
115 self.__navigationMenu.aboutToShow.connect(self.__showNavigationMenu) |
118 self.__navigationMenu.triggered.connect(self.__navigationMenuTriggered) |
116 self.__navigationMenu.triggered.connect(self.__navigationMenuTriggered) |
119 |
117 |
120 self.__navigationButton = QToolButton(self) |
118 self.__navigationButton = QToolButton(self) |
121 self.__navigationButton.setIcon(UI.PixmapCache.getIcon("1downarrow")) |
119 self.__navigationButton.setIcon(EricPixmapCache.getIcon("1downarrow")) |
122 self.__navigationButton.setToolTip(self.tr("Show a navigation menu")) |
120 self.__navigationButton.setToolTip(self.tr("Show a navigation menu")) |
123 self.__navigationButton.setPopupMode( |
121 self.__navigationButton.setPopupMode( |
124 QToolButton.ToolButtonPopupMode.InstantPopup |
122 QToolButton.ToolButtonPopupMode.InstantPopup |
125 ) |
123 ) |
126 self.__navigationButton.setMenu(self.__navigationMenu) |
124 self.__navigationButton.setMenu(self.__navigationMenu) |
161 """ |
159 """ |
162 Private method to create the tab context menu. |
160 Private method to create the tab context menu. |
163 """ |
161 """ |
164 self.__tabContextMenu = QMenu(self) |
162 self.__tabContextMenu = QMenu(self) |
165 self.tabContextNewAct = self.__tabContextMenu.addAction( |
163 self.tabContextNewAct = self.__tabContextMenu.addAction( |
166 UI.PixmapCache.getIcon("tabNew"), self.tr("New Tab"), self.newBrowser |
164 EricPixmapCache.getIcon("tabNew"), self.tr("New Tab"), self.newBrowser |
167 ) |
165 ) |
168 self.__tabContextMenu.addSeparator() |
166 self.__tabContextMenu.addSeparator() |
169 self.leftMenuAct = self.__tabContextMenu.addAction( |
167 self.leftMenuAct = self.__tabContextMenu.addAction( |
170 UI.PixmapCache.getIcon("1leftarrow"), |
168 EricPixmapCache.getIcon("1leftarrow"), |
171 self.tr("Move Left"), |
169 self.tr("Move Left"), |
172 self.__tabContextMenuMoveLeft, |
170 self.__tabContextMenuMoveLeft, |
173 ) |
171 ) |
174 self.rightMenuAct = self.__tabContextMenu.addAction( |
172 self.rightMenuAct = self.__tabContextMenu.addAction( |
175 UI.PixmapCache.getIcon("1rightarrow"), |
173 EricPixmapCache.getIcon("1rightarrow"), |
176 self.tr("Move Right"), |
174 self.tr("Move Right"), |
177 self.__tabContextMenuMoveRight, |
175 self.__tabContextMenuMoveRight, |
178 ) |
176 ) |
179 self.__tabContextMenu.addSeparator() |
177 self.__tabContextMenu.addSeparator() |
180 self.tabContextCloneAct = self.__tabContextMenu.addAction( |
178 self.tabContextCloneAct = self.__tabContextMenu.addAction( |
181 self.tr("Duplicate Page"), self.__tabContextMenuClone |
179 self.tr("Duplicate Page"), self.__tabContextMenuClone |
182 ) |
180 ) |
183 self.__tabContextMenu.addSeparator() |
181 self.__tabContextMenu.addSeparator() |
184 self.tabContextCloseAct = self.__tabContextMenu.addAction( |
182 self.tabContextCloseAct = self.__tabContextMenu.addAction( |
185 UI.PixmapCache.getIcon("tabClose"), |
183 EricPixmapCache.getIcon("tabClose"), |
186 self.tr("Close"), |
184 self.tr("Close"), |
187 self.__tabContextMenuClose, |
185 self.__tabContextMenuClose, |
188 ) |
186 ) |
189 self.tabContextCloseOthersAct = self.__tabContextMenu.addAction( |
187 self.tabContextCloseOthersAct = self.__tabContextMenu.addAction( |
190 UI.PixmapCache.getIcon("tabCloseOther"), |
188 EricPixmapCache.getIcon("tabCloseOther"), |
191 self.tr("Close Others"), |
189 self.tr("Close Others"), |
192 self.__tabContextMenuCloseOthers, |
190 self.__tabContextMenuCloseOthers, |
193 ) |
191 ) |
194 self.__tabContextMenu.addAction(self.tr("Close All"), self.closeAllBrowsers) |
192 self.__tabContextMenu.addAction(self.tr("Close All"), self.closeAllBrowsers) |
195 self.__tabContextMenu.addSeparator() |
193 self.__tabContextMenu.addSeparator() |
196 self.__tabContextMenu.addAction( |
194 self.__tabContextMenu.addAction( |
197 UI.PixmapCache.getIcon("printPreview"), |
195 EricPixmapCache.getIcon("printPreview"), |
198 self.tr("Print Preview"), |
196 self.tr("Print Preview"), |
199 self.__tabContextMenuPrintPreview, |
197 self.__tabContextMenuPrintPreview, |
200 ) |
198 ) |
201 self.__tabContextMenu.addAction( |
199 self.__tabContextMenu.addAction( |
202 UI.PixmapCache.getIcon("print"), |
200 EricPixmapCache.getIcon("print"), |
203 self.tr("Print"), |
201 self.tr("Print"), |
204 self.__tabContextMenuPrint, |
202 self.__tabContextMenuPrint, |
205 ) |
203 ) |
206 self.__tabContextMenu.addAction( |
204 self.__tabContextMenu.addAction( |
207 UI.PixmapCache.getIcon("printPdf"), |
205 EricPixmapCache.getIcon("printPdf"), |
208 self.tr("Print as PDF"), |
206 self.tr("Print as PDF"), |
209 self.__tabContextMenuPrintPdf, |
207 self.__tabContextMenuPrintPdf, |
210 ) |
208 ) |
211 self.__tabContextMenu.addSeparator() |
209 self.__tabContextMenu.addSeparator() |
212 if hasattr(WebBrowserPage, "isAudioMuted"): |
210 if hasattr(WebBrowserPage, "isAudioMuted"): |
215 ) |
213 ) |
216 self.__tabContextMenu.addSeparator() |
214 self.__tabContextMenu.addSeparator() |
217 else: |
215 else: |
218 self.__audioAct = None |
216 self.__audioAct = None |
219 self.__tabContextMenu.addAction( |
217 self.__tabContextMenu.addAction( |
220 UI.PixmapCache.getIcon("reload"), |
218 EricPixmapCache.getIcon("reload"), |
221 self.tr("Reload All"), |
219 self.tr("Reload All"), |
222 self.reloadAllBrowsers, |
220 self.reloadAllBrowsers, |
223 ) |
221 ) |
224 self.__tabContextMenu.addSeparator() |
222 self.__tabContextMenu.addSeparator() |
225 self.__tabContextMenu.addAction( |
223 self.__tabContextMenu.addAction( |
226 UI.PixmapCache.getIcon("addBookmark"), |
224 EricPixmapCache.getIcon("addBookmark"), |
227 self.tr("Bookmark All Tabs"), |
225 self.tr("Bookmark All Tabs"), |
228 self.__mainWindow.bookmarkAll, |
226 self.__mainWindow.bookmarkAll, |
229 ) |
227 ) |
230 |
228 |
231 self.__tabBackContextMenu = QMenu(self) |
229 self.__tabBackContextMenu = QMenu(self) |
232 self.__tabBackContextMenu.addAction(self.tr("Close All"), self.closeAllBrowsers) |
230 self.__tabBackContextMenu.addAction(self.tr("Close All"), self.closeAllBrowsers) |
233 self.__tabBackContextMenu.addAction( |
231 self.__tabBackContextMenu.addAction( |
234 UI.PixmapCache.getIcon("reload"), |
232 EricPixmapCache.getIcon("reload"), |
235 self.tr("Reload All"), |
233 self.tr("Reload All"), |
236 self.reloadAllBrowsers, |
234 self.reloadAllBrowsers, |
237 ) |
235 ) |
238 self.__tabBackContextMenu.addAction( |
236 self.__tabBackContextMenu.addAction( |
239 UI.PixmapCache.getIcon("addBookmark"), |
237 EricPixmapCache.getIcon("addBookmark"), |
240 self.tr("Bookmark All Tabs"), |
238 self.tr("Bookmark All Tabs"), |
241 self.__mainWindow.bookmarkAll, |
239 self.__mainWindow.bookmarkAll, |
242 ) |
240 ) |
243 self.__tabBackContextMenu.addSeparator() |
241 self.__tabBackContextMenu.addSeparator() |
244 self.__restoreClosedTabAct = self.__tabBackContextMenu.addAction( |
242 self.__restoreClosedTabAct = self.__tabBackContextMenu.addAction( |
245 UI.PixmapCache.getIcon("trash"), self.tr("Restore Closed Tab") |
243 EricPixmapCache.getIcon("trash"), self.tr("Restore Closed Tab") |
246 ) |
244 ) |
247 self.__restoreClosedTabAct.setEnabled(False) |
245 self.__restoreClosedTabAct.setEnabled(False) |
248 self.__restoreClosedTabAct.setData(0) |
246 self.__restoreClosedTabAct.setData(0) |
249 self.__restoreClosedTabAct.triggered.connect( |
247 self.__restoreClosedTabAct.triggered.connect( |
250 lambda: self.restoreClosedTab(self.__restoreClosedTabAct) |
248 lambda: self.restoreClosedTab(self.__restoreClosedTabAct) |
368 pix = QPixmap(32, 32) |
366 pix = QPixmap(32, 32) |
369 pix.fill(Qt.GlobalColor.transparent) |
367 pix.fill(Qt.GlobalColor.transparent) |
370 painter = QPainter(pix) |
368 painter = QPainter(pix) |
371 icon.paint(painter, 0, 0, 22, 22) |
369 icon.paint(painter, 0, 0, 22, 22) |
372 if page.isAudioMuted(): |
370 if page.isAudioMuted(): |
373 audioIcon = UI.PixmapCache.getIcon("audioMuted") |
371 audioIcon = EricPixmapCache.getIcon("audioMuted") |
374 else: |
372 else: |
375 audioIcon = UI.PixmapCache.getIcon("audioPlaying") |
373 audioIcon = EricPixmapCache.getIcon("audioPlaying") |
376 audioIcon.paint(painter, 13, 13, 18, 18) |
374 audioIcon.paint(painter, 13, 13, 18, 18) |
377 painter.end() |
375 painter.end() |
378 self.setTabIcon(index, QIcon(pix)) |
376 self.setTabIcon(index, QIcon(pix)) |
379 else: |
377 else: |
380 self.setTabIcon(index, icon) |
378 self.setTabIcon(index, icon) |
414 |
412 |
415 from .UrlBar.UrlBar import UrlBar |
413 from .UrlBar.UrlBar import UrlBar |
416 |
414 |
417 urlbar = UrlBar(self.__mainWindow, self) |
415 urlbar = UrlBar(self.__mainWindow, self) |
418 if self.__historyCompleter is None: |
416 if self.__historyCompleter is None: |
419 import WebBrowser.WebBrowserWindow |
417 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
420 from .History.HistoryCompleter import ( |
418 from .History.HistoryCompleter import ( |
421 HistoryCompletionModel, |
419 HistoryCompletionModel, |
422 HistoryCompleter, |
420 HistoryCompleter, |
423 ) |
421 ) |
424 |
422 |
425 histMgr = WebBrowser.WebBrowserWindow.WebBrowserWindow.historyManager() |
423 histMgr = WebBrowserWindow.historyManager() |
426 self.__historyCompletionModel = HistoryCompletionModel(self) |
424 self.__historyCompletionModel = HistoryCompletionModel(self) |
427 self.__historyCompletionModel.setSourceModel(histMgr.historyFilterModel()) |
425 self.__historyCompletionModel.setSourceModel(histMgr.historyFilterModel()) |
428 self.__historyCompleter = HistoryCompleter( |
426 self.__historyCompleter = HistoryCompleter( |
429 self.__historyCompletionModel, self |
427 self.__historyCompletionModel, self |
430 ) |
428 ) |
925 index = self.indexOf(browser) |
923 index = self.indexOf(browser) |
926 if progress == 0: |
924 if progress == 0: |
927 # page loading has started |
925 # page loading has started |
928 anim = self.animationLabel(index, "loadingAnimation", 40) |
926 anim = self.animationLabel(index, "loadingAnimation", 40) |
929 if not anim: |
927 if not anim: |
930 self.setTabIcon(index, UI.PixmapCache.getIcon("loading")) |
928 self.setTabIcon(index, EricPixmapCache.getIcon("loading")) |
931 else: |
929 else: |
932 self.setTabIcon(index, QIcon()) |
930 self.setTabIcon(index, QIcon()) |
933 self.setTabText(index, self.tr("Loading...")) |
931 self.setTabText(index, self.tr("Loading...")) |
934 self.setTabToolTip(index, self.tr("Loading...")) |
932 self.setTabToolTip(index, self.tr("Loading...")) |
935 self.showMessage.emit(self.tr("Loading...")) |
933 self.showMessage.emit(self.tr("Loading...")) |
936 |
934 |
937 self.__mainWindow.setLoadingActions(True) |
935 self.__mainWindow.setLoadingActions(True) |
938 elif progress == 100: |
936 elif progress == 100: |
939 import WebBrowser.WebBrowserWindow |
937 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
940 |
938 |
941 self.resetAnimation(index) |
939 self.resetAnimation(index) |
942 self.setTabIcon( |
940 self.setTabIcon(index, WebBrowserWindow.icon(browser.url())) |
943 index, WebBrowser.WebBrowserWindow.WebBrowserWindow.icon(browser.url()) |
|
944 ) |
|
945 self.showMessage.emit(self.tr("Finished loading")) |
941 self.showMessage.emit(self.tr("Finished loading")) |
946 |
942 |
947 self.__mainWindow.setLoadingActions(False) |
943 self.__mainWindow.setLoadingActions(False) |
948 |
944 |
949 def __iconChanged(self, browser): |
945 def __iconChanged(self, browser): |