src/eric7/WebBrowser/QtHelp/HelpTocWidget.py

branch
eric7
changeset 9686
2eee7a645cba
parent 9685
b43e04854aba
child 9687
3a240d3f3b8c
diff -r b43e04854aba -r 2eee7a645cba src/eric7/WebBrowser/QtHelp/HelpTocWidget.py
--- a/src/eric7/WebBrowser/QtHelp/HelpTocWidget.py	Sun Jan 08 16:11:22 2023 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,202 +0,0 @@
-# -*- coding: utf-8 -*-
-
-# Copyright (c) 2009 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
-#
-
-"""
-Module implementing a window for showing the QtHelp TOC.
-"""
-
-from PyQt6.QtCore import Qt, QUrl, pyqtSignal, pyqtSlot
-from PyQt6.QtGui import QClipboard, QGuiApplication
-from PyQt6.QtWidgets import QApplication, QMenu, QVBoxLayout, QWidget
-
-
-class HelpTocWidget(QWidget):
-    """
-    Class implementing a window for showing the QtHelp TOC.
-
-    @signal escapePressed() emitted when the ESC key was pressed
-    @signal openUrl(QUrl, str) emitted to open an entry in the current tab
-    @signal newTab(QUrl, str) emitted to open an entry in a new tab
-    @signal newBackgroundTab(QUrl, str) emitted to open an entry in a
-        new background tab
-    @signal newWindow(QUrl, str) emitted to open an entry in a new window
-    """
-
-    escapePressed = pyqtSignal()
-    openUrl = pyqtSignal(QUrl)
-    newTab = pyqtSignal(QUrl)
-    newBackgroundTab = pyqtSignal(QUrl)
-    newWindow = pyqtSignal(QUrl)
-
-    def __init__(self, engine, internal=False, parent=None):
-        """
-        Constructor
-
-        @param engine reference to the help engine
-        @type QHelpEngine
-        @param internal flag indicating the internal help viewer
-        @type bool
-        @param parent reference to the parent widget
-        @type QWidget
-        """
-        super().__init__(parent)
-
-        self.__engine = engine
-        self.__expandDepth = -2
-
-        self.__internal = internal
-
-        self.__tocWidget = self.__engine.contentWidget()
-        self.__tocWidget.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
-        self.__tocWidget.setSortingEnabled(True)
-
-        self.__layout = QVBoxLayout(self)
-        if internal:
-            # no margins for the internal variant
-            self.__layout.setContentsMargins(0, 0, 0, 0)
-        self.__layout.addWidget(self.__tocWidget)
-
-        self.__tocWidget.customContextMenuRequested.connect(self.__showContextMenu)
-        self.__tocWidget.linkActivated.connect(self.__linkActivated)
-
-        model = self.__tocWidget.model()
-        model.contentsCreated.connect(self.__contentsCreated)
-
-    @pyqtSlot(QUrl)
-    def __linkActivated(self, url):
-        """
-        Private slot handling the activation of an entry.
-
-        @param url URL of the activated entry
-        @type QUrl
-        """
-        if not url.isEmpty() and url.isValid():
-            buttons = QApplication.mouseButtons()
-            modifiers = QApplication.keyboardModifiers()
-
-            if buttons & Qt.MouseButton.MiddleButton:
-                self.newTab.emit(url)
-            else:
-                if modifiers & (
-                    Qt.KeyboardModifier.ControlModifier
-                    | Qt.KeyboardModifier.ShiftModifier
-                ) == (
-                    Qt.KeyboardModifier.ControlModifier
-                    | Qt.KeyboardModifier.ShiftModifier
-                ):
-                    self.newBackgroundTab.emit(url)
-                elif modifiers & Qt.KeyboardModifier.ControlModifier:
-                    self.newTab.emit(url)
-                elif (
-                    modifiers & Qt.KeyboardModifier.ShiftModifier
-                    and not self.__internal
-                ):
-                    self.newWindow.emit(url)
-                else:
-                    self.openUrl.emit(url)
-
-    def __contentsCreated(self):
-        """
-        Private slot to be run after the contents was generated.
-        """
-        self.__tocWidget.sortByColumn(0, Qt.SortOrder.AscendingOrder)
-        self.__expandTOC()
-
-    def __expandTOC(self):
-        """
-        Private slot to expand the table of contents.
-        """
-        if self.__expandDepth > -2:
-            self.expandToDepth(self.__expandDepth)
-            self.__expandDepth = -2
-
-    def expandToDepth(self, depth):
-        """
-        Public slot to expand the table of contents to a specific depth.
-
-        @param depth depth to expand to (integer)
-        """
-        self.__expandDepth = depth
-        if depth == -1:
-            self.__tocWidget.expandAll()
-        else:
-            self.__tocWidget.expandToDepth(depth)
-
-    def focusInEvent(self, evt):
-        """
-        Protected method handling focus in events.
-
-        @param evt reference to the focus event object (QFocusEvent)
-        """
-        if evt.reason() != Qt.FocusReason.MouseFocusReason:
-            self.__tocWidget.setFocus()
-
-    def keyPressEvent(self, evt):
-        """
-        Protected method handling key press events.
-
-        @param evt reference to the key press event (QKeyEvent)
-        """
-        if evt.key() == Qt.Key.Key_Escape:
-            self.escapePressed.emit()
-
-    def syncToContent(self, url):
-        """
-        Public method to sync the TOC to the displayed page.
-
-        @param url URL of the displayed page (QUrl)
-        @return flag indicating a successful synchronization (boolean)
-        """
-        idx = self.__tocWidget.indexOf(url)
-        if not idx.isValid():
-            return False
-        self.__tocWidget.setCurrentIndex(idx)
-        return True
-
-    def __showContextMenu(self, pos):
-        """
-        Private slot showing the context menu.
-
-        @param pos position to show the menu at (QPoint)
-        """
-        if not self.__tocWidget.indexAt(pos).isValid():
-            return
-
-        model = self.__tocWidget.model()
-        itm = model.contentItemAt(self.__tocWidget.currentIndex())
-        link = itm.url()
-        if link.isEmpty() or not link.isValid():
-            return
-
-        menu = QMenu()
-        curTab = menu.addAction(self.tr("Open Link"))
-        if self.__internal:
-            newTab = menu.addAction(self.tr("Open Link in New Page"))
-            newBackgroundTab = menu.addAction(self.tr("Open Link in Background Page"))
-        else:
-            newTab = menu.addAction(self.tr("Open Link in New Tab"))
-            newBackgroundTab = menu.addAction(self.tr("Open Link in Background Tab"))
-            newWindow = menu.addAction(self.tr("Open Link in New Window"))
-        menu.addSeparator()
-        copyLink = menu.addAction(self.tr("Copy URL to Clipboard"))
-        menu.move(self.__tocWidget.mapToGlobal(pos))
-
-        act = menu.exec()
-        if act == curTab:
-            self.openUrl.emit(link)
-        elif act == newTab:
-            self.newTab.emit(link)
-        elif act == newBackgroundTab:
-            self.newBackgroundTab.emit(link)
-        elif not self.__internal and act == newWindow:
-            self.newWindow.emit(link)
-        elif act == copyLink:
-            # copy the URL to both clipboard areas
-            QGuiApplication.clipboard().setText(
-                link.toString(), QClipboard.Mode.Clipboard
-            )
-            QGuiApplication.clipboard().setText(
-                link.toString(), QClipboard.Mode.Selection
-            )

eric ide

mercurial