src/eric7/WebBrowser/WebBrowserTabWidget.py

branch
eric7
changeset 9482
a2bc06a54d9d
parent 9473
3f23dbf37dbe
child 9624
b47dfa7a137d
equal deleted inserted replaced
9481:0b936ff1bbb9 9482:a2bc06a54d9d
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(

eric ide

mercurial