9 |
9 |
10 import os |
10 import os |
11 |
11 |
12 from PyQt6.QtCore import QMarginsF, Qt, QUrl, pyqtSignal, pyqtSlot |
12 from PyQt6.QtCore import QMarginsF, Qt, QUrl, pyqtSignal, pyqtSlot |
13 from PyQt6.QtGui import QIcon, QPageLayout, QPainter, QPixmap |
13 from PyQt6.QtGui import QIcon, QPageLayout, QPainter, QPixmap |
14 from PyQt6.QtPrintSupport import QAbstractPrintDialog, QPrintDialog, QPrinter |
14 from PyQt6.QtPrintSupport import ( |
|
15 QAbstractPrintDialog, |
|
16 QPrintDialog, |
|
17 QPrinter, |
|
18 QPrintPreviewDialog, |
|
19 ) |
15 from PyQt6.QtWidgets import QDialog, QHBoxLayout, QMenu, QToolButton, QWidget |
20 from PyQt6.QtWidgets import QDialog, QHBoxLayout, QMenu, QToolButton, QWidget |
16 |
21 |
17 from eric7 import Globals, Preferences, Utilities |
22 from eric7 import Globals, Preferences, Utilities |
18 from eric7.EricGui import EricPixmapCache |
23 from eric7.EricGui import EricPixmapCache |
19 from eric7.EricGui.EricOverrideCursor import EricOverrideCursor |
24 from eric7.EricGui.EricOverrideCursor import EricOverrideCursor |
20 from eric7.EricWidgets import EricMessageBox |
25 from eric7.EricWidgets import EricMessageBox |
21 from eric7.EricWidgets.EricApplication import ericApp |
26 from eric7.EricWidgets.EricApplication import ericApp |
22 from eric7.EricWidgets.EricTabWidget import EricTabWidget |
27 from eric7.EricWidgets.EricTabWidget import EricTabWidget |
|
28 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
23 |
29 |
24 from . import WebInspector |
30 from . import WebInspector |
|
31 from .ClosedTabsManager import ClosedTabsManager |
25 from .Tools import WebBrowserTools |
32 from .Tools import WebBrowserTools |
|
33 from .UrlBar.StackedUrlBar import StackedUrlBar |
26 from .WebBrowserPage import WebBrowserPage |
34 from .WebBrowserPage import WebBrowserPage |
|
35 from .WebBrowserTabBar import WebBrowserTabBar |
27 from .WebBrowserView import WebBrowserView |
36 from .WebBrowserView import WebBrowserView |
28 |
37 |
29 |
38 |
30 def isCupsAvailable(): |
39 def isCupsAvailable(): |
31 """ |
40 """ |
76 |
85 |
77 @param parent reference to the parent widget (QWidget) |
86 @param parent reference to the parent widget (QWidget) |
78 """ |
87 """ |
79 super().__init__(parent, dnd=True) |
88 super().__init__(parent, dnd=True) |
80 |
89 |
81 from .WebBrowserTabBar import WebBrowserTabBar |
|
82 |
|
83 self.__tabBar = WebBrowserTabBar(self) |
90 self.__tabBar = WebBrowserTabBar(self) |
84 self.setCustomTabBar(True, self.__tabBar) |
91 self.setCustomTabBar(True, self.__tabBar) |
85 |
92 |
86 self.__mainWindow = parent |
93 self.__mainWindow = parent |
87 |
94 |
88 self.setUsesScrollButtons(True) |
95 self.setUsesScrollButtons(True) |
89 self.setDocumentMode(True) |
96 self.setDocumentMode(True) |
90 self.setElideMode(Qt.TextElideMode.ElideNone) |
97 self.setElideMode(Qt.TextElideMode.ElideNone) |
91 |
98 |
92 from .ClosedTabsManager import ClosedTabsManager |
|
93 |
|
94 self.__closedTabsManager = ClosedTabsManager(self) |
99 self.__closedTabsManager = ClosedTabsManager(self) |
95 self.__closedTabsManager.closedTabAvailable.connect(self.__closedTabAvailable) |
100 self.__closedTabsManager.closedTabAvailable.connect(self.__closedTabAvailable) |
96 |
|
97 from .UrlBar.StackedUrlBar import StackedUrlBar |
|
98 |
101 |
99 self.__stackedUrlBar = StackedUrlBar(self) |
102 self.__stackedUrlBar = StackedUrlBar(self) |
100 self.__tabBar.tabMoved.connect(self.__stackedUrlBar.moveBar) |
103 self.__tabBar.tabMoved.connect(self.__stackedUrlBar.moveBar) |
101 |
104 |
102 self.__tabContextMenuIndex = -1 |
105 self.__tabContextMenuIndex = -1 |
399 @param restoreSession flag indicating a restore session action |
402 @param restoreSession flag indicating a restore session action |
400 @type bool |
403 @type bool |
401 @return reference to the new browser |
404 @return reference to the new browser |
402 @rtype WebBrowserView |
405 @rtype WebBrowserView |
403 """ |
406 """ |
|
407 from .History.HistoryCompleter import HistoryCompleter, HistoryCompletionModel |
|
408 from .UrlBar.UrlBar import UrlBar |
|
409 |
404 if link is None: |
410 if link is None: |
405 linkName = "" |
411 linkName = "" |
406 elif isinstance(link, QUrl): |
412 elif isinstance(link, QUrl): |
407 linkName = link.toString() |
413 linkName = link.toString() |
408 else: |
414 else: |
409 linkName = link |
415 linkName = link |
410 |
416 |
411 from .UrlBar.UrlBar import UrlBar |
|
412 |
|
413 urlbar = UrlBar(self.__mainWindow, self) |
417 urlbar = UrlBar(self.__mainWindow, self) |
414 if self.__historyCompleter is None: |
418 if self.__historyCompleter is None: |
415 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
|
416 |
|
417 from .History.HistoryCompleter import ( |
|
418 HistoryCompleter, |
|
419 HistoryCompletionModel, |
|
420 ) |
|
421 |
|
422 histMgr = WebBrowserWindow.historyManager() |
419 histMgr = WebBrowserWindow.historyManager() |
423 self.__historyCompletionModel = HistoryCompletionModel(self) |
420 self.__historyCompletionModel = HistoryCompletionModel(self) |
424 self.__historyCompletionModel.setSourceModel(histMgr.historyFilterModel()) |
421 self.__historyCompletionModel.setSourceModel(histMgr.historyFilterModel()) |
425 self.__historyCompleter = HistoryCompleter( |
422 self.__historyCompleter = HistoryCompleter( |
426 self.__historyCompletionModel, self |
423 self.__historyCompletionModel, self |
696 """ |
693 """ |
697 Public slot called to print the displayed page to PDF. |
694 Public slot called to print the displayed page to PDF. |
698 |
695 |
699 @param browser reference to the browser to be printed (HelpBrowser) |
696 @param browser reference to the browser to be printed (HelpBrowser) |
700 """ |
697 """ |
|
698 from .Tools.PrintToPdfDialog import PrintToPdfDialog |
|
699 |
701 if browser is None: |
700 if browser is None: |
702 browser = self.currentBrowser() |
701 browser = self.currentBrowser() |
703 |
702 |
704 name = WebBrowserTools.getFileNameFromUrl(browser.url()) |
703 name = WebBrowserTools.getFileNameFromUrl(browser.url()) |
705 if name: |
704 if name: |
706 name = name.rsplit(".", 1)[0] |
705 name = name.rsplit(".", 1)[0] |
707 name += ".pdf" |
706 name += ".pdf" |
708 if hasattr(browser.page(), "printToPdf"): |
707 if hasattr(browser.page(), "printToPdf"): |
709 from .Tools.PrintToPdfDialog import PrintToPdfDialog |
|
710 |
|
711 if not name: |
708 if not name: |
712 name = "printout.pdf" |
709 name = "printout.pdf" |
713 dlg = PrintToPdfDialog(name, self) |
710 dlg = PrintToPdfDialog(name, self) |
714 if dlg.exec() == QDialog.DialogCode.Accepted: |
711 if dlg.exec() == QDialog.DialogCode.Accepted: |
715 filePath, pageLayout = dlg.getData() |
712 filePath, pageLayout = dlg.getData() |
781 """ |
778 """ |
782 Public slot called to show a print preview of the displayed file. |
779 Public slot called to show a print preview of the displayed file. |
783 |
780 |
784 @param browser reference to the browser to be printed (WebBrowserView) |
781 @param browser reference to the browser to be printed (WebBrowserView) |
785 """ |
782 """ |
786 from PyQt6.QtPrintSupport import QPrintPreviewDialog |
|
787 |
|
788 if browser is None: |
783 if browser is None: |
789 browser = self.currentBrowser() |
784 browser = self.currentBrowser() |
790 |
785 |
791 printer = QPrinter(mode=QPrinter.PrinterMode.HighResolution) |
786 printer = QPrinter(mode=QPrinter.PrinterMode.HighResolution) |
792 if Preferences.getPrinter("ColorMode"): |
787 if Preferences.getPrinter("ColorMode"): |
931 self.setTabToolTip(index, self.tr("Loading...")) |
926 self.setTabToolTip(index, self.tr("Loading...")) |
932 self.showMessage.emit(self.tr("Loading...")) |
927 self.showMessage.emit(self.tr("Loading...")) |
933 |
928 |
934 self.__mainWindow.setLoadingActions(True) |
929 self.__mainWindow.setLoadingActions(True) |
935 elif progress == 100: |
930 elif progress == 100: |
936 from eric7.WebBrowser.WebBrowserWindow import WebBrowserWindow |
|
937 |
|
938 self.resetAnimation(index) |
931 self.resetAnimation(index) |
939 self.setTabIcon(index, WebBrowserWindow.icon(browser.url())) |
932 self.setTabIcon(index, WebBrowserWindow.icon(browser.url())) |
940 self.showMessage.emit(self.tr("Finished loading")) |
933 self.showMessage.emit(self.tr("Finished loading")) |
941 |
934 |
942 self.__mainWindow.setLoadingActions(False) |
935 self.__mainWindow.setLoadingActions(False) |
1145 def __aboutToShowClosedTabsMenu(self): |
1138 def __aboutToShowClosedTabsMenu(self): |
1146 """ |
1139 """ |
1147 Private slot to populate the closed tabs menu. |
1140 Private slot to populate the closed tabs menu. |
1148 """ |
1141 """ |
1149 fm = self.__closedTabsMenu.fontMetrics() |
1142 fm = self.__closedTabsMenu.fontMetrics() |
1150 try: |
1143 maxWidth = fm.horizontalAdvance("m") * 40 |
1151 maxWidth = fm.horizontalAdvance("m") * 40 |
|
1152 except AttributeError: |
|
1153 maxWidth = fm.width("m") * 40 |
|
1154 |
1144 |
1155 self.__closedTabsMenu.clear() |
1145 self.__closedTabsMenu.clear() |
1156 for index, tab in enumerate(self.__closedTabsManager.allClosedTabs()): |
1146 for index, tab in enumerate(self.__closedTabsManager.allClosedTabs()): |
1157 title = fm.elidedText(tab.title, Qt.TextElideMode.ElideRight, maxWidth) |
1147 title = fm.elidedText(tab.title, Qt.TextElideMode.ElideRight, maxWidth) |
1158 act = self.__closedTabsMenu.addAction( |
1148 act = self.__closedTabsMenu.addAction( |