Started implementing a PDF viewer tool. pdf_viewer

Thu, 12 Jan 2023 18:08:12 +0100

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Thu, 12 Jan 2023 18:08:12 +0100
branch
pdf_viewer
changeset 9697
cdaa3cc805f7
parent 9696
669dabfa1319
child 9698
69e183e4db6f

Started implementing a PDF viewer tool.

eric7.epj file | annotate | diff | comparison | revisions
pyproject.toml file | annotate | diff | comparison | revisions
scripts/install.py file | annotate | diff | comparison | revisions
scripts/uninstall.py file | annotate | diff | comparison | revisions
src/eric7/Globals/__init__.py file | annotate | diff | comparison | revisions
src/eric7/HexEdit/HexEditMainWindow.py file | annotate | diff | comparison | revisions
src/eric7/PdfViewer/PdfViewerWindow.py file | annotate | diff | comparison | revisions
src/eric7/PdfViewer/__init__.py file | annotate | diff | comparison | revisions
src/eric7/Preferences/__init__.py file | annotate | diff | comparison | revisions
src/eric7/Project/ProjectBrowser.py file | annotate | diff | comparison | revisions
src/eric7/Project/ProjectOthersBrowser.py file | annotate | diff | comparison | revisions
src/eric7/UI/Browser.py file | annotate | diff | comparison | revisions
src/eric7/UI/BrowserModel.py file | annotate | diff | comparison | revisions
src/eric7/UI/UserInterface.py file | annotate | diff | comparison | revisions
src/eric7/eric7_pdf.py file | annotate | diff | comparison | revisions
src/eric7/icons/breeze-dark/ericPdf.svg file | annotate | diff | comparison | revisions
src/eric7/icons/breeze-dark/ericPdf48.svg file | annotate | diff | comparison | revisions
src/eric7/icons/breeze-dark/pdfviewer.svg file | annotate | diff | comparison | revisions
src/eric7/icons/breeze-light/ericPdf.svg file | annotate | diff | comparison | revisions
src/eric7/icons/breeze-light/ericPdf48.svg file | annotate | diff | comparison | revisions
src/eric7/icons/breeze-light/pdfviewer.svg file | annotate | diff | comparison | revisions
src/eric7/icons/oxygen/ericPdf.png file | annotate | diff | comparison | revisions
src/eric7/icons/oxygen/ericPdf48.png file | annotate | diff | comparison | revisions
src/eric7/icons/oxygen/pdfviewer.png file | annotate | diff | comparison | revisions
--- a/eric7.epj	Thu Jan 12 14:01:40 2023 +0100
+++ b/eric7.epj	Thu Jan 12 18:08:12 2023 +0100
@@ -1314,6 +1314,8 @@
       "src/eric7/Network/IRC/IrcWidget.py",
       "src/eric7/Network/IRC/__init__.py",
       "src/eric7/Network/__init__.py",
+      "src/eric7/PdfViewer/PdfViewerWindow.py",
+      "src/eric7/PdfViewer/__init__.py",
       "src/eric7/PipInterface/Pip.py",
       "src/eric7/PipInterface/PipDialog.py",
       "src/eric7/PipInterface/PipFileSelectionDialog.py",
@@ -2362,6 +2364,7 @@
       "src/eric7/eric7_iconeditor.pyw",
       "src/eric7/eric7_ide.py",
       "src/eric7/eric7_ide.pyw",
+      "src/eric7/eric7_pdf.py",
       "src/eric7/eric7_plugininstall.py",
       "src/eric7/eric7_plugininstall.pyw",
       "src/eric7/eric7_pluginrepository.py",
--- a/pyproject.toml	Thu Jan 12 14:01:40 2023 +0100
+++ b/pyproject.toml	Thu Jan 12 18:08:12 2023 +0100
@@ -107,6 +107,7 @@
 eric7_hexeditor = "eric7.eric7_hexeditor:main"
 eric7_iconeditor = "eric7.eric7_iconeditor:main"
 eric7_ide = "eric7.eric7_ide:main"
+eric7_pdf = "eric7.eric7_pdf:main"
 eric7_plugininstall = "eric7.eric7_plugininstall:main"
 eric7_pluginrepository = "eric7.eric7_pluginrepository:main"
 eric7_pluginuninstall = "eric7.eric7_pluginuninstall:main"
--- a/scripts/install.py	Thu Jan 12 14:01:40 2023 +0100
+++ b/scripts/install.py	Thu Jan 12 18:08:12 2023 +0100
@@ -513,6 +513,7 @@
         "eric7_hexeditor",
         "eric7_iconeditor",
         "eric7_ide",
+        "eric7_pdf",
         "eric7_plugininstall",
         "eric7_pluginrepository",
         "eric7_pluginuninstall",
@@ -751,6 +752,7 @@
         "eric7_hexeditor",
         "eric7_iconeditor",
         "eric7_ide",
+        "eric7_pdf",
         "eric7_plugininstall",
         "eric7_pluginrepository",
         "eric7_pluginuninstall",
--- a/scripts/uninstall.py	Thu Jan 12 14:01:40 2023 +0100
+++ b/scripts/uninstall.py	Thu Jan 12 18:08:12 2023 +0100
@@ -133,6 +133,7 @@
         "eric7_hexeditor",
         "eric7_iconeditor",
         "eric7_ide",
+        "eric7_pdf",
         "eric7_plugininstall",
         "eric7_pluginrepository",
         "eric7_pluginuninstall",
--- a/src/eric7/Globals/__init__.py	Thu Jan 12 14:01:40 2023 +0100
+++ b/src/eric7/Globals/__init__.py	Thu Jan 12 18:08:12 2023 +0100
@@ -55,13 +55,14 @@
 settingsNameRecent = "eric7recent"
 
 # key names of the various recent entries
-recentNameMultiProject = "MultiProjects"
-recentNameProject = "Projects"
+recentNameBreakpointConditions = "BreakPointConditions"
+recentNameBreakpointFiles = "BreakPointFiles"
 recentNameFiles = "Files"
 recentNameHexFiles = "HexFiles"
 recentNameHosts = "Hosts"
-recentNameBreakpointFiles = "BreakPointFiles"
-recentNameBreakpointConditions = "BreakPointConditions"
+recentNameMultiProject = "MultiProjects"
+recentNamePdfFiles = "PdfFiles"
+recentNameProject = "Projects"
 recentNameTestDiscoverHistory = "UTDiscoverHistory"
 recentNameTestFileHistory = "UTFileHistory"
 recentNameTestNameHistory = "UTTestnameHistory"
--- a/src/eric7/HexEdit/HexEditMainWindow.py	Thu Jan 12 14:01:40 2023 +0100
+++ b/src/eric7/HexEdit/HexEditMainWindow.py	Thu Jan 12 18:08:12 2023 +0100
@@ -39,7 +39,7 @@
 
 class HexEditMainWindow(EricMainWindow):
     """
-    Class implementing the web browser main window.
+    Class implementing the hex editor main window.
 
     @signal editorClosed() emitted after the window was requested to close down
     """
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/PdfViewer/PdfViewerWindow.py	Thu Jan 12 18:08:12 2023 +0100
@@ -0,0 +1,508 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the PDF viewer main window.
+"""
+
+import os
+import pathlib
+
+from PyQt6.QtCore import Qt, pyqtSignal, QSize, pyqtSlot, QPointF
+from PyQt6.QtGui import QAction, QKeySequence
+from PyQt6.QtPdf import QPdfDocument
+from PyQt6.QtPdfWidgets import QPdfView
+from PyQt6.QtWidgets import (
+    QWhatsThis, QMenu, QTabWidget, QSplitter, QSpinBox
+)
+
+from eric7 import Preferences
+from eric7.EricGui import EricPixmapCache
+from eric7.EricGui.EricAction import EricAction
+from eric7.EricWidgets import EricFileDialog, EricMessageBox
+from eric7.EricWidgets.EricMainWindow import EricMainWindow
+from eric7.Globals import recentNamePdfFiles
+from eric7.SystemUtilities import FileSystemUtilities
+
+
+class PdfViewerWindow(EricMainWindow):
+    """
+    Class implementing the PDF viewer main window.
+
+    @signal editorClosed() emitted after the window was requested to close down
+    """
+
+    editorClosed = pyqtSignal()
+
+    maxMenuFilePathLen = 75
+
+    def __init__(self, fileName="", parent=None, fromEric=False, project=None):
+        """
+        Constructor
+
+        @param fileName name of a file to load on startup
+        @type str
+        @param parent parent widget of this window
+        @type QWidget
+        @param fromEric flag indicating whether it was called from within
+            eric
+        @type bool
+        @param project reference to the project object
+        @type Project
+        """
+        super().__init__(parent)
+        self.setObjectName("eric7_pdf_viewer")
+
+        self.__fromEric = fromEric
+        self.setWindowIcon(EricPixmapCache.getIcon("ericPdf"))
+
+        if not self.__fromEric:
+            self.setStyle(Preferences.getUI("Style"), Preferences.getUI("StyleSheet"))
+
+        self.__pdfDocument = QPdfDocument(self)
+
+        # TODO: insert central widget here
+        self.__cw = QSplitter(Qt.Orientation.Horizontal, self)
+        self.__info = QTabWidget(self)
+        self.__cw.addWidget(self.__info)
+        self.__view = QPdfView(self)
+        self.__view.setDocument(self.__pdfDocument)
+        self.__cw.addWidget(self.__view)
+        self.setCentralWidget(self.__cw)
+
+        g = Preferences.getGeometry("PdfViewerGeometry")
+        if g.isEmpty():
+            s = QSize(1000, 1000)
+            self.resize(s)
+            self.__cw.setSizes([300, 700])
+        else:
+            self.restoreGeometry(g)
+
+        self.__initActions()
+        self.__initMenus()
+        self.__initToolbars()
+        self.__createStatusBar()
+
+        state = Preferences.getPdfViewer("PdfViewerState")
+        self.restoreState(state)
+
+        self.__project = project
+        self.__lastOpenPath = ""
+
+        self.__recent = []
+        self.__loadRecent()
+
+        self.__setCurrentFile("")
+        self.__setViewerTitle("")
+        if fileName:
+            self.__loadPdfFile(fileName)
+
+        self.__checkActions()
+
+    def __initActions(self):
+        """
+        Private method to define the user interface actions.
+        """
+        # list of all actions
+        self.__actions = []
+
+        self.__initFileActions()
+        self.__initHelpActions()
+
+    def __initFileActions(self):
+        """
+        Private method to define the file related user interface actions.
+        """
+        # TODO: not yet implemented
+        self.exitAct = EricAction(
+            self.tr("Quit"),
+            EricPixmapCache.getIcon("exit"),
+            self.tr("&Quit"),
+            QKeySequence(self.tr("Ctrl+Q", "File|Quit")),
+            0,
+            self,
+            "pdfviewer_file_quit",
+        )
+        self.exitAct.setStatusTip(self.tr("Quit the PDF Viewer"))
+        self.exitAct.setWhatsThis(self.tr("""<b>Quit</b><p>Quit the PDF Viewer.</p>"""))
+        self.__actions.append(self.exitAct)
+
+    def __initHelpActions(self):
+        """
+        Private method to create the Help actions.
+        """
+        self.aboutAct = EricAction(
+            self.tr("About"), self.tr("&About"), 0, 0, self, "pdfviewer_help_about"
+        )
+        self.aboutAct.setStatusTip(self.tr("Display information about this software"))
+        self.aboutAct.setWhatsThis(
+            self.tr(
+                """<b>About</b>"""
+                """<p>Display some information about this software.</p>"""
+            )
+        )
+        self.aboutAct.triggered.connect(self.__about)
+        self.__actions.append(self.aboutAct)
+
+        self.aboutQtAct = EricAction(
+            self.tr("About Qt"),
+            self.tr("About &Qt"),
+            0,
+            0,
+            self,
+            "pdfviewer_help_about_qt",
+        )
+        self.aboutQtAct.setStatusTip(
+            self.tr("Display information about the Qt toolkit")
+        )
+        self.aboutQtAct.setWhatsThis(
+            self.tr(
+                """<b>About Qt</b>"""
+                """<p>Display some information about the Qt toolkit.</p>"""
+            )
+        )
+        self.aboutQtAct.triggered.connect(self.__aboutQt)
+        self.__actions.append(self.aboutQtAct)
+
+        self.whatsThisAct = EricAction(
+            self.tr("What's This?"),
+            EricPixmapCache.getIcon("whatsThis"),
+            self.tr("&What's This?"),
+            QKeySequence(self.tr("Shift+F1", "Help|What's This?'")),
+            0,
+            self,
+            "pdfviewer_help_whats_this",
+        )
+        self.whatsThisAct.setStatusTip(self.tr("Context sensitive help"))
+        self.whatsThisAct.setWhatsThis(
+            self.tr(
+                """<b>Display context sensitive help</b>"""
+                """<p>In What's This? mode, the mouse cursor shows an arrow"""
+                """ with a question mark, and you can click on the interface"""
+                """ elements to get a short description of what they do and"""
+                """ how to use them. In dialogs, this feature can be accessed"""
+                """ using the context help button in the titlebar.</p>"""
+            )
+        )
+        self.whatsThisAct.triggered.connect(self.__whatsThis)
+        self.__actions.append(self.whatsThisAct)
+
+    @pyqtSlot()
+    def __checkActions(self):
+        """
+        Private slot to check some actions for their enable/disable status.
+        """
+        # TODO: not yet implemented
+
+    def __initMenus(self):
+        """
+        Private method to create the menus.
+        """
+        mb = self.menuBar()
+
+        menu = mb.addMenu(self.tr("&File"))
+        menu.setTearOffEnabled(True)
+        self.__recentMenu = QMenu(self.tr("Open &Recent Files"), menu)
+
+        # TODO: not yet implemented
+
+        mb.addSeparator()
+
+        menu = mb.addMenu(self.tr("&Help"))
+        menu.addAction(self.aboutAct)
+        menu.addAction(self.aboutQtAct)
+        menu.addSeparator()
+        menu.addAction(self.whatsThisAct)
+
+    def __initToolbars(self):
+        """
+        Private method to create the toolbars.
+        """
+        # create a few widgets needed in the toolbars
+        self.__pageSelector = QSpinBox(self)
+
+        filetb = self.addToolBar(self.tr("File"))
+        filetb.setObjectName("FileToolBar")
+        # TODO: not yet implemented
+        if not self.__fromEric:
+            filetb.addAction(self.exitAct)
+
+        # TODO: not yet implemented
+
+        helptb = self.addToolBar(self.tr("Help"))
+        helptb.setObjectName("HelpToolBar")
+        helptb.addAction(self.whatsThisAct)
+
+    def __createStatusBar(self):
+        """
+        Private method to initialize the status bar.
+        """
+        self.__statusBar = self.statusBar()
+        self.__statusBar.setSizeGripEnabled(True)
+
+        # not yet implemented
+
+    def closeEvent(self, evt):
+        """
+        Protected method handling the close event.
+
+        @param evt reference to the close event
+        @type QCloseEvent
+        """
+        state = self.saveState()
+        Preferences.setPdfViewer("PdfViewerState", state)
+
+        Preferences.setGeometry("PdfViewerGeometry", self.saveGeometry())
+
+        if not self.__fromEric:
+            Preferences.syncPreferences()
+
+        self.__saveRecent()
+
+        evt.accept()
+        self.editorClosed.emit()
+
+    def __setViewerTitle(self, title):
+        """
+        Private method to set the viewer title.
+
+        @param title title to be set
+        @type str
+        """
+        if title:
+            self.setWindowTitle(self.tr("{0} - PDF Viewer").format(title))
+        else:
+            self.setWindowTitle(self.tr("PDF Viewer"))
+
+    def __getErrorString(self, err):
+        """
+        Private method to get an error string for the given error.
+
+        @param err error type
+        @type QPdfDocument.Error
+        @return string for the given error type
+        @rtype str
+        """
+        if err == QPdfDocument.Error.None_:
+            reason = ""
+        elif err == QPdfDocument.Error.DataNotYetAvailable:
+            reason = self.tr("The document is still loading.")
+        elif err == QPdfDocument.Error.FileNotFound:
+            reason = self.tr("The file does not exist.")
+        elif err == QPdfDocument.Error.InvalidFileFormat:
+            reason = self.tr("The file is not a valid PDF file.")
+        elif err == QPdfDocument.Error.IncorrectPassword:
+            reason = self.tr("The password is not correct for this file.")
+        elif err == QPdfDocument.Error.UnsupportedSecurityScheme:
+            reason = self.tr("This kind of PDF file cannot be unlocked.")
+        else:
+            reason = self.tr("Unknown type of error.")
+
+        return reason
+
+    def __loadPdfFile(self, fileName):
+        """
+        Private method to load a PDF file.
+
+        @param fileName path of the PDF file to load
+        @type str
+        """
+        # TODO: not yet implemented
+        err = self.__pdfDocument.load(fileName)
+        if err != QPdfDocument.Error.None_:
+            EricMessageBox.critical(
+                self,
+                self.tr("Load PDF File"),
+                self.tr(
+                    """<p>The PDF file <b>{0}</b> could not be loaded.</p>"""
+                    """<p>Reason: {1}</p>"""
+                ).format(fileName, self.__getErrorString(err)),
+            )
+            return
+
+        self.__lastOpenPath = os.path.dirname(fileName)
+        self.__setCurrentFile(fileName)
+
+        documentTitle = self.__pdfDocument.metaData(QPdfDocument.MetaDataField.Title)
+        self.__setViewerTitle(documentTitle)
+
+        self.__pageSelected(0)
+        self.__pageSelector.setMaximum(self.__pdfDocument.pageCount() - 1)
+
+    def __openPdfFile(self):
+        """
+        Private slot to open a PDF file.
+        """
+        if (
+            not self.__lastOpenPath
+            and self.__project is not None
+            and self.__project.isOpen()
+        ):
+            self.__lastOpenPath = self.__project.getProjectPath()
+
+        fileName = EricFileDialog.getOpenFileName(
+            self,
+            self.tr("Open PDF File"),
+            self.__lastOpenPath,
+            self.tr("PDF Files (*.pdf);;All Files (*)"),
+        )
+        if fileName:
+            self.__loadPdfFile(fileName)
+
+        self.__checkActions()
+
+    def __pageSelected(self, page):
+        """
+        Private method to navigate to the given page.
+
+        @param page index of the page to be shown
+        @type int
+        """
+        nav = self.__view.pageNavigator()
+        nav.jump(page, QPointF(), nav.currentZoom())
+
+    def __setCurrentFile(self, fileName):
+        """
+        Private method to register the file name of the current file.
+
+        @param fileName name of the file to register
+        @type str
+        """
+        self.__fileName = fileName
+        # insert filename into list of recently opened files
+        self.__addToRecentList(fileName)
+
+    def __strippedName(self, fullFileName):
+        """
+        Private method to return the filename part of the given path.
+
+        @param fullFileName full pathname of the given file
+        @type str
+        @return filename part
+        @rtype str
+        """
+        return pathlib.Path(fullFileName).name
+
+    def __about(self):
+        """
+        Private slot to show a little About message.
+        """
+        EricMessageBox.about(
+            self,
+            self.tr("About eric PDF Viewer"),
+            self.tr(
+                "The eric PDF Viewer is a simple component for viewing PDF files."
+            ),
+        )
+
+    def __aboutQt(self):
+        """
+        Private slot to handle the About Qt dialog.
+        """
+        EricMessageBox.aboutQt(self, "eric PDF Viewer")
+
+    def __whatsThis(self):
+        """
+        Private slot called in to enter Whats This mode.
+        """
+        QWhatsThis.enterWhatsThisMode()
+
+    def __showPreferences(self):
+        """
+        Private slot to set the preferences.
+        """
+        from eric7.Preferences.ConfigurationDialog import (
+            ConfigurationDialog,
+            ConfigurationMode,
+        )
+
+        # TODO: not yet implemented
+
+    @pyqtSlot()
+    def __showFileMenu(self):
+        """
+        Private slot to modify the file menu before being shown.
+        """
+        self.__menuRecentAct.setEnabled(len(self.__recent) > 0)
+
+    @pyqtSlot()
+    def __showRecentMenu(self):
+        """
+        Private slot to set up the recent files menu.
+        """
+        self.__loadRecent()
+
+        self.__recentMenu.clear()
+
+        for idx, rs in enumerate(self.__recent, start=1):
+            formatStr = "&{0:d}. {1}" if idx < 10 else "{0:d}. {1}"
+            act = self.__recentMenu.addAction(
+                formatStr.format(
+                    idx,
+                    FileSystemUtilities.compactPath(
+                        rs, PdfViewerWindow.maxMenuFilePathLen
+                    ),
+                )
+            )
+            act.setData(rs)
+            act.setEnabled(pathlib.Path(rs).exists())
+
+        self.__recentMenu.addSeparator()
+        self.__recentMenu.addAction(self.tr("&Clear"), self.__clearRecent)
+
+    @pyqtSlot(QAction)
+    def __openRecentPdfFile(self, act):
+        """
+        Private method to open a file from the list of recently opened files.
+
+        @param act reference to the action that triggered
+        @type QAction
+        """
+        fileName = act.data()
+        if fileName and self.__maybeSave():
+            self.__loadPdfFile(fileName)
+            self.__checkActions()
+
+    @pyqtSlot()
+    def __clearRecent(self):
+        """
+        Private method to clear the list of recently opened files.
+        """
+        self.__recent = []
+
+    def __loadRecent(self):
+        """
+        Private method to load the list of recently opened files.
+        """
+        self.__recent = []
+        Preferences.Prefs.rsettings.sync()
+        rs = Preferences.Prefs.rsettings.value(recentNamePdfFiles)
+        if rs is not None:
+            for f in Preferences.toList(rs):
+                if pathlib.Path(f).exists():
+                    self.__recent.append(f)
+
+    def __saveRecent(self):
+        """
+        Private method to save the list of recently opened files.
+        """
+        Preferences.Prefs.rsettings.setValue(recentNamePdfFiles, self.__recent)
+        Preferences.Prefs.rsettings.sync()
+
+    def __addToRecentList(self, fileName):
+        """
+        Private method to add a file name to the list of recently opened files.
+
+        @param fileName name of the file to be added
+        """
+        if fileName:
+            for recent in self.__recent[:]:
+                if FileSystemUtilities.samepath(fileName, recent):
+                    self.__recent.remove(recent)
+            self.__recent.insert(0, fileName)
+            maxRecent = Preferences.getPdfViewer("RecentNumber")
+            if len(self.__recent) > maxRecent:
+                self.__recent = self.__recent[:maxRecent]
+            self.__saveRecent()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/PdfViewer/__init__.py	Thu Jan 12 18:08:12 2023 +0100
@@ -0,0 +1,8 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Package implementing a simple PDF viewer tool.
+"""
--- a/src/eric7/Preferences/__init__.py	Thu Jan 12 14:01:40 2023 +0100
+++ b/src/eric7/Preferences/__init__.py	Thu Jan 12 18:08:12 2023 +0100
@@ -1451,13 +1451,12 @@
 
     # defaults for geometry
     geometryDefaults = {
-        "HelpViewerGeometry": QByteArray(),
-        "HelpInspectorGeometry": QByteArray(),
-        "WebBrowserGeometry": QByteArray(),
-        "IconEditorGeometry": QByteArray(),
-        "HexEditorGeometry": QByteArray(),
         "MainGeometry": QByteArray(),
         "MainMaximized": False,
+        "HexEditorGeometry": QByteArray(),
+        "IconEditorGeometry": QByteArray(),
+        "PdfViewerGeometry": QByteArray(),
+        "WebBrowserGeometry": QByteArray(),
         "WebInspectorGeometry": QByteArray(),
     }
 
@@ -1631,6 +1630,12 @@
         "MouseClickGotoButton": Qt.MouseButton.LeftButton,
     }
 
+    # defaults for Hex Editor
+    pdfViewerDefaults = {
+        "PdfViewerState": QByteArray(),
+        "RecentNumber": 9,
+    }
+
 
 def readToolGroups():
     """
@@ -3838,6 +3843,35 @@
     Prefs.settings.setValue("AssistantJedi/" + key, value)
 
 
+def getPdfViewer(key):
+    """
+    Module function to retrieve the Pdf Viewer related settings.
+
+    @param key the key of the value to get
+    @type str
+    @return the requested user setting
+    @rtype Any
+    """
+    if key in ("RecentNumber"):
+        return int(
+            Prefs.settings.value("PdfViewer/" + key, Prefs.pdfViewerDefaults[key])
+        )
+    else:
+        return Prefs.settings.value("PdfViewer/" + key, Prefs.pdfViewerDefaults[key])
+
+
+def setPdfViewer(key, value):
+    """
+    Module function to store the Pdf Viewer related settings.
+
+    @param key the key of the setting to be set
+    @type str
+    @param value the value to be set
+    @type Any
+    """
+    Prefs.settings.setValue("PdfViewer/" + key, value)
+
+
 def getGeometry(key):
     """
     Module function to retrieve the display geometry.
--- a/src/eric7/Project/ProjectBrowser.py	Thu Jan 12 14:01:40 2023 +0100
+++ b/src/eric7/Project/ProjectBrowser.py	Thu Jan 12 18:08:12 2023 +0100
@@ -50,6 +50,7 @@
     @signal designerFile(filename) emitted to open a Qt-Designer file (str)
     @signal linguistFile(filename) emitted to open a Qt-Linguist (*.ts)
         file (str)
+    @signal pdfFile(filename) emitted to open a PDF file (str)
     @signal pixmapEditFile(filename) emitted to edit a pixmap file (str)
     @signal pixmapFile(filename) emitted to open a pixmap file (str)
     @signal preferencesChanged() emitted when the preferences have been changed
@@ -80,6 +81,7 @@
     closeSourceWindow = pyqtSignal(str)
     designerFile = pyqtSignal(str)
     linguistFile = pyqtSignal(str)
+    pdfFile = pyqtSignal(str)
     pixmapEditFile = pyqtSignal(str)
     pixmapFile = pyqtSignal(str)
     preferencesChanged = pyqtSignal()
--- a/src/eric7/Project/ProjectOthersBrowser.py	Thu Jan 12 14:01:40 2023 +0100
+++ b/src/eric7/Project/ProjectOthersBrowser.py	Thu Jan 12 18:08:12 2023 +0100
@@ -114,6 +114,7 @@
         self.svgFile.connect(projectBrowser.svgFile)
         self.umlFile.connect(projectBrowser.umlFile)
         self.binaryFile.connect(projectBrowser.binaryFile)
+        self.pdfFile.connect(projectBrowser.pdfFile)
 
     def getIcon(self):
         """
@@ -137,6 +138,8 @@
         self.openInEditorAct = self.menu.addAction(
             self.tr("Open in Editor"), self._openFileInEditor
         )
+        self.openInPdfViewerAct = self.menu.addAction(
+            self.tr("Open in PDF Viewer"), self._openPdfViewer)
         self.menu.addSeparator()
         self.mimeTypeAct = self.menu.addAction(
             self.tr("Show Mime-Type"), self.__showMimeType
@@ -260,6 +263,7 @@
                     if isinstance(itm, ProjectBrowserFileItem):
                         self.editPixmapAct.setVisible(itm.isPixmapFile())
                         self.openInEditorAct.setVisible(itm.isSvgFile())
+                        self.openInPdfViewerAct.setVisible(itm.isPdfFile())
                         self.mimeTypeAct.setVisible(True)
                         self.menu.popup(self.mapToGlobal(coord))
                     elif isinstance(itm, ProjectBrowserDirectoryItem):
@@ -347,6 +351,16 @@
             if isinstance(itm, ProjectBrowserFileItem):
                 self.binaryFile.emit(itm.fileName())
 
+    def _openPdfViewer(self):
+        """
+        Protected slot to handle the open in PDF viewer popup menu entry.
+        """
+        itmList = self.getSelectedItems()
+
+        for itm in itmList:
+            if isinstance(itm, ProjectBrowserFileItem) and itm.isPdfFile():
+                self.pdfFile.emit(itm.fileName())
+
     def _openItem(self):
         """
         Protected slot to handle the open popup menu entry.
@@ -355,7 +369,9 @@
 
         for itm in itmList:
             if isinstance(itm, ProjectBrowserFileItem):
-                if itm.isSvgFile():
+                if itm.isPdfFile():
+                    self.pdfFile.emit(itm.fileName())
+                elif itm.isSvgFile():
                     self.svgFile.emit(itm.fileName())
                 elif itm.isPixmapFile():
                     self.pixmapFile.emit(itm.fileName())
--- a/src/eric7/UI/Browser.py	Thu Jan 12 14:01:40 2023 +0100
+++ b/src/eric7/UI/Browser.py	Thu Jan 12 18:08:12 2023 +0100
@@ -89,6 +89,7 @@
     @signal binaryFile(filename) emitted to open a file as binary (str)
     @signal testFile(filename) emitted to open a Python file for a
         unit test (str)
+    @signal pdfFile(filename) emitted to open a PDF file (str)
     """
 
     sourceFile = pyqtSignal((str,), (str, int), (str, list), (str, int, str))
@@ -102,6 +103,7 @@
     svgFile = pyqtSignal(str)
     umlFile = pyqtSignal(str)
     binaryFile = pyqtSignal(str)
+    pdfFile = pyqtSignal(str)
     testFile = pyqtSignal(str)
 
     def __init__(self, parent=None):
@@ -294,6 +296,10 @@
             QCoreApplication.translate("Browser", "Open in Editor"),
             self._openFileInEditor,
         )
+        self.openInPdfViewerAct = self.menu.addAction(
+            QCoreApplication.translate("Browser", "Open in PDF Viewer"),
+            self._openPdfViewer,
+        )
         self.menu.addSeparator()
         self.mimeTypeAct = self.menu.addAction(
             QCoreApplication.translate("Browser", "Show Mime-Type"), self.__showMimeType
@@ -447,11 +453,13 @@
                     else:
                         self.editPixmapAct.setVisible(itm.isPixmapFile())
                         self.openInEditorAct.setVisible(itm.isSvgFile())
+                        self.openInPdfViewerAct.setVisible(itm.isPdfFile())
                         self.menu.popup(coord)
                 elif isinstance(
                     itm, (BrowserClassItem, BrowserMethodItem, BrowserImportItem)
                 ):
                     self.editPixmapAct.setVisible(False)
+                    self.openInPdfViewerAct.setVisible(False)
                     self.menu.popup(coord)
                 elif isinstance(itm, BrowserClassAttributeItem):
                     self.attributeMenu.popup(coord)
@@ -651,6 +659,16 @@
             if isinstance(itm, BrowserFileItem):
                 self.binaryFile.emit(itm.fileName())
 
+    def _openPdfViewer(self):
+        """
+        Protected slot to handle the open in PDF viewer popup menu entry.
+        """
+        itmList = self.getSelectedItems([BrowserFileItem])
+
+        for itm in itmList:
+            if isinstance(itm, BrowserFileItem):
+                self.pdfFile.emit(itm.fileName())
+
     def _openFileInEditor(self):
         """
         Protected slot to handle the Open in Editor menu action.
--- a/src/eric7/UI/BrowserModel.py	Thu Jan 12 14:01:40 2023 +0100
+++ b/src/eric7/UI/BrowserModel.py	Thu Jan 12 18:08:12 2023 +0100
@@ -1394,6 +1394,15 @@
         """
         return self.fileext == ".svg"
 
+    def isPdfFile(self):
+        """
+        Public method to check, if this file is a PDF file.
+
+        @return flag indicating a PDF file
+        @rtype bool
+        """
+        return self.fileext == ".pdf"
+
     def isDFile(self):
         """
         Public method to check, if this file is a D file.
--- a/src/eric7/UI/UserInterface.py	Thu Jan 12 14:01:40 2023 +0100
+++ b/src/eric7/UI/UserInterface.py	Thu Jan 12 18:08:12 2023 +0100
@@ -433,6 +433,7 @@
         self.projectBrowser.svgFile.connect(self.__showSvg)
         self.projectBrowser.umlFile.connect(self.__showUml)
         self.projectBrowser.binaryFile.connect(self.__openHexEditor)
+        self.projectBrowser.pdfFile.connect(self.__openPdfViewer)
 
         self.project.sourceFile.connect(self.viewmanager.openSourceFile)
         self.project.designerFile.connect(self.__designer)
@@ -517,6 +518,7 @@
             self.browser.svgFile.connect(self.__showSvg)
             self.browser.umlFile.connect(self.__showUml)
             self.browser.binaryFile.connect(self.__openHexEditor)
+            self.browser.pdfFile.connect(self.__openPdfViewer)
             self.browser.testFile.connect(self.__startTestScript)
             self.browser.trpreview.connect(self.__TRPreviewer)
 
@@ -3141,6 +3143,25 @@
         self.snapshotAct.triggered.connect(self.__snapshot)
         self.actions.append(self.snapshotAct)
 
+        self.pdfViewerAct = EricAction(
+            self.tr("eric PDF Viewer"),
+            EricPixmapCache.getIcon("ericPdf"),
+            self.tr("eric PDF &Viewer..."),
+            0,
+            0,
+            self,
+            "pdf_viewer",
+        )
+        self.pdfViewerAct.setStatusTip(self.tr("Start the eric PDF Viewer"))
+        self.pdfViewerAct.setWhatsThis(
+            self.tr(
+                """<b>eric PDF Viewer</b>"""
+                """<p>Starts the eric PDF Viewer for viewing PDF files.</p>"""
+            )
+        )
+        self.pdfViewerAct.triggered.connect(self.__openPdfViewer)
+        self.actions.append(self.pdfViewerAct)
+
         self.prefAct = EricAction(
             self.tr("Preferences"),
             EricPixmapCache.getIcon("configure"),
@@ -4142,6 +4163,7 @@
         toolstb.addAction(self.hexEditorAct)
         toolstb.addAction(self.iconEditorAct)
         toolstb.addAction(self.snapshotAct)
+        toolstb.addAction(self.pdfViewerAct)
         if self.webBrowserAct:
             toolstb.addSeparator()
             toolstb.addAction(self.webBrowserAct)
@@ -5085,6 +5107,7 @@
         btMenu.addAction(self.hexEditorAct)
         btMenu.addAction(self.iconEditorAct)
         btMenu.addAction(self.snapshotAct)
+        btMenu.addAction(self.pdfViewerAct)
         if self.webBrowserAct:
             btMenu.addAction(self.webBrowserAct)
 
@@ -6323,7 +6346,8 @@
         """
         Private slot to open the hex editor window.
 
-        @param fn filename of the file to show (string)
+        @param fn path of the file to show (defaults to "")
+        @type str (optional)
         """
         from eric7.HexEdit.HexEditMainWindow import HexEditMainWindow
 
@@ -6332,11 +6356,26 @@
 
     @pyqtSlot()
     @pyqtSlot(str)
+    def __openPdfViewer(self, fn=""):
+        """
+        Private slot to open the PDF viewer window.
+
+        @param fn path of the file to show (defaults to "")
+        @type str (optional)
+        """
+        from eric7.PdfViewer.PdfViewerWindow import PdfViewerWindow
+
+        dlg = PdfViewerWindow(fn, self, fromEric=True, project=self.project)
+        dlg.show()
+
+    @pyqtSlot()
+    @pyqtSlot(str)
     def __editPixmap(self, fn=""):
         """
         Private slot to show a pixmap in a dialog.
 
-        @param fn filename of the file to show (string)
+        @param fn path of the file to show (defaults to "")
+        @type str (optional)
         """
         from eric7.IconEditor.IconEditorWindow import IconEditorWindow
 
@@ -6349,7 +6388,8 @@
         """
         Private slot to show a pixmap in a dialog.
 
-        @param fn filename of the file to show (string)
+        @param fn path of the file to show (defaults to "")
+        @type str (optional)
         """
         from eric7.Graphics.PixmapDiagram import PixmapDiagram
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/eric7_pdf.py	Thu Jan 12 18:08:12 2023 +0100
@@ -0,0 +1,85 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2016 - 2023 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+eric PDF Viewer.
+
+This is the main Python script that performs the necessary initialization
+of the PDF viewer and starts the Qt event loop. This is a standalone version
+of the integrated PDF viewer.
+"""
+
+import os
+import sys
+
+from PyQt6.QtGui import QGuiApplication
+
+for arg in sys.argv[:]:
+    if arg.startswith("--config="):
+        from eric7 import Globals
+
+        configDir = arg.replace("--config=", "")
+        Globals.setConfigDir(configDir)
+        sys.argv.remove(arg)
+    elif arg.startswith("--settings="):
+        from PyQt6.QtCore import QSettings
+
+        settingsDir = os.path.expanduser(arg.replace("--settings=", ""))
+        if not os.path.isdir(settingsDir):
+            os.makedirs(settingsDir)
+        QSettings.setPath(
+            QSettings.Format.IniFormat, QSettings.Scope.UserScope, settingsDir
+        )
+        sys.argv.remove(arg)
+
+from eric7.Globals import AppInfo
+from eric7.Toolbox import Startup
+
+
+def createMainWidget(argv):
+    """
+    Function to create the main widget.
+
+    @param argv list of commandline parameters (list of strings)
+    @return reference to the main widget (QWidget)
+    """
+    from eric7.PdfViewer.PdfViewerWindow import PdfViewerWindow
+
+    try:
+        fileName = argv[1]
+    except IndexError:
+        fileName = ""
+
+    editor = PdfViewerWindow(fileName, None)
+    return editor
+
+
+def main():
+    """
+    Main entry point into the application.
+    """
+    QGuiApplication.setDesktopFileName("eric7_pdf.desktop")
+
+    options = [
+        (
+            "--config=configDir",
+            "use the given directory as the one containing the config files",
+        ),
+        (
+            "--settings=settingsDir",
+            "use the given directory to store the settings files",
+        ),
+        ("", "name of file to edit"),
+    ]
+    appinfo = AppInfo.makeAppInfo(
+        sys.argv, "eric PDF Viewer", "", "Little tool to view PDF files.", options
+    )
+    res = Startup.simpleAppStartup(sys.argv, appinfo, createMainWidget)
+    sys.exit(res)
+
+
+if __name__ == "__main__":
+    main()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/icons/breeze-dark/ericPdf.svg	Thu Jan 12 18:08:12 2023 +0100
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   width="22"
+   height="22"
+   version="1.1"
+   viewBox="0 0 5.8208 5.8208"
+   id="svg37"
+   sodipodi:docname="ericPdf.svg"
+   inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview39"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     showgrid="false"
+     inkscape:zoom="29.272727"
+     inkscape:cx="11"
+     inkscape:cy="11"
+     inkscape:window-width="2580"
+     inkscape:window-height="1080"
+     inkscape:window-x="426"
+     inkscape:window-y="146"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg37" />
+  <defs
+     id="defs19">
+    <linearGradient
+       id="f"
+       x1="4"
+       x2="4"
+       y1="44"
+       y2="4"
+       gradientTransform="matrix(0.066146,0,0,0.066142,2.4253,293.6)"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#54d883"
+         offset="0"
+         id="stop2" />
+      <stop
+         stop-color="#abf9c7"
+         offset="1"
+         id="stop4" />
+    </linearGradient>
+    <linearGradient
+       id="a"
+       x1="34"
+       x2="44"
+       y1="19.008"
+       y2="29.008"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#292c2f"
+         offset="0"
+         id="stop7" />
+      <stop
+         stop-opacity="0"
+         offset="1"
+         id="stop9" />
+    </linearGradient>
+    <linearGradient
+       id="g"
+       x1="9"
+       x2="38"
+       y1="9"
+       y2="38"
+       gradientTransform="matrix(0.066146,0,0,0.066142,2.4253,293.6)"
+       gradientUnits="userSpaceOnUse"
+       xlink:href="#a" />
+    <linearGradient
+       id="h"
+       x1="4"
+       x2="4"
+       y1="44"
+       y2="4"
+       gradientTransform="matrix(0.066146,0,0,0.066142,2.4253,293.6)"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#197cf1"
+         offset="0"
+         id="stop13" />
+      <stop
+         stop-color="#20bcfa"
+         offset="1"
+         id="stop15" />
+    </linearGradient>
+    <linearGradient
+       id="e"
+       x1="34"
+       x2="44"
+       y1="19.008"
+       y2="29.008"
+       gradientTransform="matrix(0.066146,0,0,0.066142,2.4253,293.6)"
+       gradientUnits="userSpaceOnUse"
+       xlink:href="#a" />
+    <linearGradient
+       id="a-3"
+       y1="392.36"
+       y2="336.36"
+       x2="0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.07298809,0,0,0.07298809,0.59308977,-23.158892)">
+      <stop
+         stop-color="#ffffff"
+         stop-opacity="0"
+         id="stop2-6" />
+      <stop
+         offset="1"
+         stop-color="#ffffff"
+         stop-opacity=".15"
+         id="stop4-7" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient860"
+       y1="392.36"
+       y2="336.36"
+       x2="0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-14-332.36)">
+      <stop
+         stop-color="#ffffff"
+         stop-opacity="0"
+         id="stop856" />
+      <stop
+         offset="1"
+         stop-color="#ffffff"
+         stop-opacity=".15"
+         id="stop858" />
+    </linearGradient>
+    <linearGradient
+       id="a-5"
+       y1="392.36"
+       y2="336.36"
+       x2="0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-14,-332.36)">
+      <stop
+         stop-color="#ffffff"
+         stop-opacity="0"
+         id="stop2-3" />
+      <stop
+         offset="1"
+         stop-color="#ffffff"
+         stop-opacity=".15"
+         id="stop4-5" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient916"
+       y1="392.36"
+       y2="336.36"
+       x2="0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-14-332.36)">
+      <stop
+         stop-color="#ffffff"
+         stop-opacity="0"
+         id="stop912" />
+      <stop
+         offset="1"
+         stop-color="#ffffff"
+         stop-opacity=".15"
+         id="stop914" />
+    </linearGradient>
+    <linearGradient
+       id="a-6"
+       y1="392.35999"
+       y2="365.20001"
+       x2="0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(365.57,152.44)">
+      <stop
+         stop-color="#ffffff"
+         stop-opacity="0"
+         id="stop2-2" />
+      <stop
+         offset="1"
+         stop-color="#ffffff"
+         stop-opacity=".2"
+         id="stop4-9" />
+    </linearGradient>
+  </defs>
+  <g
+     id="g918">
+    <path
+       color-rendering="auto"
+       color-interpolation-filters="linearRGB"
+       shape-rendering="auto"
+       image-rendering="auto"
+       text-rendering="auto"
+       id="use26"
+       color-interpolation="sRGB"
+       color="#000000"
+       d="M 10,3 V 61 H 54 V 3 H 40 Z"
+       style="fill:url(#a-5)" />
+  </g>
+  <g
+     id="g921" />
+  <g
+     id="g952"
+     transform="translate(-0.26458001,-0.26000243)">
+    <image
+       x="0.26458001"
+       y="0.26000243"
+       width="5.2916999"
+       height="5.2916999"
+       preserveAspectRatio="none"
+       xlink:href="data:image/png;base64,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 "
+       id="image21" />
+  </g>
+  <g
+     transform="matrix(0.09621154,0,0,0.09449347,-34.041566,-46.018318)"
+     id="g27">
+    <g
+       color-rendering="auto"
+       color-interpolation-filters="linearRGB"
+       shape-rendering="auto"
+       image-rendering="auto"
+       text-rendering="auto"
+       color-interpolation="sRGB"
+       color="#000000"
+       id="g15">
+      <path
+         fill="#da2c2c"
+         d="m 389.57,517.8 v 28 h 22 v -28 h -14 z"
+         id="path9" />
+      <rect
+         opacity="0.25"
+         x="389.57001"
+         y="544.79999"
+         width="22"
+         height="1"
+         id="rect11" />
+      <rect
+         opacity="0.5"
+         x="389.57001"
+         y="517.79999"
+         width="22"
+         fill="#ffffff"
+         height="1"
+         id="rect13" />
+    </g>
+    <rect
+       width="1"
+       x="392.57001"
+       y="518.79999"
+       fill="#ffffff"
+       height="26"
+       fill-opacity="0.252"
+       id="rect17" />
+    <g
+       color-rendering="auto"
+       color-interpolation-filters="linearRGB"
+       shape-rendering="auto"
+       image-rendering="auto"
+       text-rendering="auto"
+       color-interpolation="sRGB"
+       color="#000000"
+       id="g25">
+      <rect
+         x="393.57001"
+         y="518.79999"
+         fill-opacity="0.083"
+         width="1"
+         height="26"
+         id="rect19" />
+      <path
+         opacity="0.8"
+         fill="#ffffff"
+         d="m 398.43,525.8 c -0.162,0.01 -0.336,0 -0.527,0.132 -1.705,0.734 -0.561,2.747 1.612,4.279 0.013,-0.289 0.133,-0.917 0.13,-1.194 -1.854,-1.271 -2.939,-2.509 -1.757,-2.999 1.246,-0.517 1.633,0.895 1.655,2.944 0.116,0.12 0.92,0.654 1.042,0.739 -0.045,-1.869 -1.039,-3.777 -1.993,-3.885 -0.051,-0.01 -0.107,-0.01 -0.161,-0.01 m 1.736,3.252 -0.388,-0.151 -0.322,0.217 -0.065,0.682 0.406,0.312 0.169,0.226 c 1.251,0.83 2.317,1.469 3.718,1.997 l 0.874,0.13 h 0.575 c 0.53,-0.313 0.214,-0.433 2.141,-0.673 l -2.171,0.168 c -1.675,-0.649 -3.385,-1.582 -4.94,-2.6 m 3.822,2.72 c 0.251,0 2.211,-0.17 2.99,-0.242 0.772,-0.12 1.719,-0.156 1.54,0.746 0.204,-0.481 -0.261,-1.298 -0.922,-1.442 -1.023,-0.229 -2.646,0.398 -3.229,0.591 m 0.94,0.25 c -0.304,0.12 -0.999,0.207 -1.327,0.316 0.465,0.241 2.802,1.103 3.766,0.923 0.154,0 0.805,-0.468 0.821,-0.805 -0.05,0.613 -2.906,0.156 -3.26,-0.445 m 0.635,0.011 c -0.25,-0.12 -1.422,-0.114 -1.681,-0.211 -1.468,0.513 -3.442,1.719 -4.855,2.532 l -0.409,0.12 c -0.079,0.561 -0.425,0.755 -0.74,1.118 l 0.478,0.481 0.374,-0.613 c 1.654,-0.998 4.924,-2.611 6.832,-3.386 m -6.832,3.386 c -0.202,0.12 -0.395,0.241 -0.578,0.361 -0.424,1.204 -0.919,2.01 -1.391,1.98 0.729,0.349 2.301,-1.37 2.83,-2.986 m -2.83,2.986 c -1.113,-0.661 1.243,-1.867 1.77,-2.217 0.119,-0.337 -0.206,-0.895 -0.1,-1.292 -1.661,1.034 -2.643,2.531 -2.086,3.24 0.134,0.168 0.276,0.253 0.417,0.265 m 1.617,-2.52 c 0.077,-0.31 1.103,-1.015 1.289,-1.123 0.248,-1.954 0.26,-2.147 0.471,-3.666 -0.126,-0.12 -0.902,-0.725 -1.022,-0.809 -0.149,1.624 -0.429,3.824 -0.826,5.293"
+         id="path21" />
+      <path
+         fill="url(#a)"
+         d="m 389.57,517.8 v 28 h 22 v -28 h -17 z"
+         id="path23"
+         style="fill:url(#a-6)" />
+    </g>
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/icons/breeze-dark/ericPdf48.svg	Thu Jan 12 18:08:12 2023 +0100
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   width="48"
+   height="48"
+   version="1.1"
+   viewBox="0 0 12.7 12.7"
+   id="svg37"
+   sodipodi:docname="ericPdf48.svg"
+   inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+   inkscape:export-filename="/home/detlev/Development/Python/Eric/eric7_pdf/src/eric7/icons/oxygen/ericPdf48.png"
+   inkscape:export-xdpi="96"
+   inkscape:export-ydpi="96"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview39"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     showgrid="false"
+     inkscape:zoom="13.416667"
+     inkscape:cx="23.999999"
+     inkscape:cy="23.999999"
+     inkscape:window-width="2580"
+     inkscape:window-height="1080"
+     inkscape:window-x="426"
+     inkscape:window-y="146"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg37" />
+  <defs
+     id="defs19">
+    <linearGradient
+       id="f"
+       x1="4"
+       x2="4"
+       y1="44"
+       y2="4"
+       gradientTransform="matrix(0.15875,0,0,0.15874,5.1858,289.49)"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#54d883"
+         offset="0"
+         id="stop2" />
+      <stop
+         stop-color="#abf9c7"
+         offset="1"
+         id="stop4" />
+    </linearGradient>
+    <linearGradient
+       id="a"
+       x1="34"
+       x2="44"
+       y1="19.008"
+       y2="29.008"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#292c2f"
+         offset="0"
+         id="stop7" />
+      <stop
+         stop-opacity="0"
+         offset="1"
+         id="stop9" />
+    </linearGradient>
+    <linearGradient
+       id="g"
+       x1="9"
+       x2="38"
+       y1="9"
+       y2="38"
+       gradientTransform="matrix(0.15875,0,0,0.15874,5.1858,289.49)"
+       gradientUnits="userSpaceOnUse"
+       xlink:href="#a" />
+    <linearGradient
+       id="h"
+       x1="4"
+       x2="4"
+       y1="44"
+       y2="4"
+       gradientTransform="matrix(0.15875,0,0,0.15874,5.1858,289.49)"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#197cf1"
+         offset="0"
+         id="stop13" />
+      <stop
+         stop-color="#20bcfa"
+         offset="1"
+         id="stop15" />
+    </linearGradient>
+    <linearGradient
+       id="e"
+       x1="34"
+       x2="44"
+       y1="19.008"
+       y2="29.008"
+       gradientTransform="matrix(0.15875,0,0,0.15874,5.1858,289.49)"
+       gradientUnits="userSpaceOnUse"
+       xlink:href="#a" />
+    <linearGradient
+       id="a-3"
+       y1="392.35999"
+       y2="365.20001"
+       x2="0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(365.57,152.44)">
+      <stop
+         stop-color="#ffffff"
+         stop-opacity="0"
+         id="stop2-6" />
+      <stop
+         offset="1"
+         stop-color="#ffffff"
+         stop-opacity=".2"
+         id="stop4-7" />
+    </linearGradient>
+  </defs>
+  <g
+     id="g952">
+    <g
+       id="g956">
+      <image
+         y="-1.2207031e-05"
+         width="12.7"
+         height="12.7"
+         preserveAspectRatio="none"
+         xlink:href="data:image/png;base64,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 "
+         id="image21"
+         x="0" />
+    </g>
+  </g>
+  <g
+     transform="matrix(0.20445069,0,0,0.20788681,-71.974939,-101.29379)"
+     id="g27">
+    <g
+       color-rendering="auto"
+       color-interpolation-filters="linearRGB"
+       shape-rendering="auto"
+       image-rendering="auto"
+       text-rendering="auto"
+       color-interpolation="sRGB"
+       color="#000000"
+       id="g15">
+      <path
+         fill="#da2c2c"
+         d="m 389.57,517.8 v 28 h 22 v -28 h -14 z"
+         id="path9" />
+      <rect
+         opacity="0.25"
+         x="389.57001"
+         y="544.79999"
+         width="22"
+         height="1"
+         id="rect11" />
+      <rect
+         opacity="0.5"
+         x="389.57001"
+         y="517.79999"
+         width="22"
+         fill="#ffffff"
+         height="1"
+         id="rect13" />
+    </g>
+    <rect
+       width="1"
+       x="392.57001"
+       y="518.79999"
+       fill="#ffffff"
+       height="26"
+       fill-opacity="0.252"
+       id="rect17" />
+    <g
+       color-rendering="auto"
+       color-interpolation-filters="linearRGB"
+       shape-rendering="auto"
+       image-rendering="auto"
+       text-rendering="auto"
+       color-interpolation="sRGB"
+       color="#000000"
+       id="g25">
+      <rect
+         x="393.57001"
+         y="518.79999"
+         fill-opacity="0.083"
+         width="1"
+         height="26"
+         id="rect19" />
+      <path
+         opacity="0.8"
+         fill="#ffffff"
+         d="m 398.43,525.8 c -0.162,0.01 -0.336,0 -0.527,0.132 -1.705,0.734 -0.561,2.747 1.612,4.279 0.013,-0.289 0.133,-0.917 0.13,-1.194 -1.854,-1.271 -2.939,-2.509 -1.757,-2.999 1.246,-0.517 1.633,0.895 1.655,2.944 0.116,0.12 0.92,0.654 1.042,0.739 -0.045,-1.869 -1.039,-3.777 -1.993,-3.885 -0.051,-0.01 -0.107,-0.01 -0.161,-0.01 m 1.736,3.252 -0.388,-0.151 -0.322,0.217 -0.065,0.682 0.406,0.312 0.169,0.226 c 1.251,0.83 2.317,1.469 3.718,1.997 l 0.874,0.13 h 0.575 c 0.53,-0.313 0.214,-0.433 2.141,-0.673 l -2.171,0.168 c -1.675,-0.649 -3.385,-1.582 -4.94,-2.6 m 3.822,2.72 c 0.251,0 2.211,-0.17 2.99,-0.242 0.772,-0.12 1.719,-0.156 1.54,0.746 0.204,-0.481 -0.261,-1.298 -0.922,-1.442 -1.023,-0.229 -2.646,0.398 -3.229,0.591 m 0.94,0.25 c -0.304,0.12 -0.999,0.207 -1.327,0.316 0.465,0.241 2.802,1.103 3.766,0.923 0.154,0 0.805,-0.468 0.821,-0.805 -0.05,0.613 -2.906,0.156 -3.26,-0.445 m 0.635,0.011 c -0.25,-0.12 -1.422,-0.114 -1.681,-0.211 -1.468,0.513 -3.442,1.719 -4.855,2.532 l -0.409,0.12 c -0.079,0.561 -0.425,0.755 -0.74,1.118 l 0.478,0.481 0.374,-0.613 c 1.654,-0.998 4.924,-2.611 6.832,-3.386 m -6.832,3.386 c -0.202,0.12 -0.395,0.241 -0.578,0.361 -0.424,1.204 -0.919,2.01 -1.391,1.98 0.729,0.349 2.301,-1.37 2.83,-2.986 m -2.83,2.986 c -1.113,-0.661 1.243,-1.867 1.77,-2.217 0.119,-0.337 -0.206,-0.895 -0.1,-1.292 -1.661,1.034 -2.643,2.531 -2.086,3.24 0.134,0.168 0.276,0.253 0.417,0.265 m 1.617,-2.52 c 0.077,-0.31 1.103,-1.015 1.289,-1.123 0.248,-1.954 0.26,-2.147 0.471,-3.666 -0.126,-0.12 -0.902,-0.725 -1.022,-0.809 -0.149,1.624 -0.429,3.824 -0.826,5.293"
+         id="path21" />
+      <path
+         fill="url(#a)"
+         d="m 389.57,517.8 v 28 h 22 v -28 h -17 z"
+         id="path23"
+         style="fill:url(#a-3)" />
+    </g>
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/icons/breeze-dark/pdfviewer.svg	Thu Jan 12 18:08:12 2023 +0100
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="22"
+   version="1.1"
+   height="22"
+   id="svg6"
+   sodipodi:docname="pdfviewer.svg"
+   inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview8"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     showgrid="false"
+     inkscape:zoom="29.272727"
+     inkscape:cx="11"
+     inkscape:cy="11"
+     inkscape:window-width="2580"
+     inkscape:window-height="1080"
+     inkscape:window-x="426"
+     inkscape:window-y="146"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="layer1" />
+  <defs
+     id="defs3871" />
+  <metadata
+     id="metadata3874" />
+  <g
+     inkscape:label="Capa 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="matrix(1 0 0 1 -326 -534.3622)">
+    <path
+       inkscape:label="Capa 1"
+       inkscape:connector-curvature="0"
+       style="fill:#cf000f;stroke-width:1.66883"
+       id="path26"
+       d="m 330.10511,535.3622 c -0.27018,0.0167 -0.56038,0 -0.87894,0.22043 -2.84194,1.22285 -0.93576,4.57763 2.68673,7.13137 0.0217,-0.48109 0.22193,-1.52877 0.21693,-1.98983 -3.09046,-2.11874 -4.89836,-4.18137 -2.92868,-4.99911 2.07642,-0.86199 2.72089,1.49137 2.75758,4.90693 0.19346,0.2004 1.53367,1.0906 1.73713,1.23105 -0.075,-3.115 -1.73115,-6.29445 -3.32223,-6.47479 -0.085,-0.0167 -0.17847,-0.0167 -0.26853,-0.0167 m 2.8932,5.41942 -0.64665,-0.25182 -0.53614,0.36119 -0.108,1.13669 0.6772,0.51933 0.28105,0.37706 c 2.08477,1.38316 3.86088,2.44854 6.19747,3.32857 l 1.4572,0.21643 h 0.95898 c 0.88393,-0.52118 0.35692,-0.72173 3.56912,-1.12251 l -3.61916,0.28055 c -2.79191,-1.08242 -5.64098,-2.63691 -8.23276,-4.33284 m 6.37082,4.53405 c 0.41863,0 3.68487,-0.28337 4.98408,-0.40361 1.28589,-0.20055 2.8653,-0.26066 2.56676,1.24273 0.34024,-0.80172 -0.43501,-2.16282 -1.53744,-2.40329 -1.7045,-0.3809 -4.4093,0.66361 -5.38163,0.9844 m 1.56707,0.41663 c -0.50701,0.20054 -1.66531,0.3455 -2.21236,0.52584 0.77553,0.40095 4.66929,1.83871 6.27705,1.53796 0.25685,0 1.34235,-0.78083 1.36904,-1.34224 -0.0834,1.02229 -4.84331,0.26066 -5.43373,-0.7416 m 1.05906,0.0184 c -0.41694,-0.2004 -2.36933,-0.19054 -2.8013,-0.35086 -2.44604,0.85565 -5.7362,2.86453 -8.09116,4.21946 l -0.68213,0.20056 c -0.13154,0.93579 -0.70815,1.25808 -1.23418,1.86408 l 0.79721,0.80188 0.62377,-1.0223 c 2.75689,-1.66371 8.20729,-4.35171 11.38612,-5.6427 m -11.38612,5.6427 c -0.3369,0.20039 -0.65879,0.40093 -0.964,0.60132 -0.70715,2.00652 -1.53105,3.35746 -2.31825,3.29935 1.21582,0.58129 3.8346,-2.28323 4.71687,-4.97725 m -4.71687,4.97725 c -1.85462,-1.10246 2.07107,-3.1115 2.95001,-3.69478 0.19847,-0.56125 -0.34407,-1.49121 -0.1673,-2.15281 -2.76856,1.72398 -4.4055,4.21794 -3.47653,5.40056 0.22349,0.2807 0.46032,0.42097 0.69548,0.44102 m 2.69438,-4.19993 c 0.12892,-0.51665 1.8391,-1.69175 2.14764,-1.87226 0.41376,-3.25709 0.43347,-3.57872 0.78492,-6.11075 -0.21015,-0.20039 -1.50359,-1.20867 -1.70373,-1.34892 -0.24836,2.70602 -0.71546,6.37308 -1.37591,8.82246" />
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/icons/breeze-light/ericPdf.svg	Thu Jan 12 18:08:12 2023 +0100
@@ -0,0 +1,285 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   width="22"
+   height="22"
+   version="1.1"
+   viewBox="0 0 5.8208 5.8208"
+   id="svg37"
+   sodipodi:docname="ericPdf.svg"
+   inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview39"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     showgrid="false"
+     inkscape:zoom="29.272727"
+     inkscape:cx="11"
+     inkscape:cy="11"
+     inkscape:window-width="2580"
+     inkscape:window-height="1080"
+     inkscape:window-x="426"
+     inkscape:window-y="146"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg37" />
+  <defs
+     id="defs19">
+    <linearGradient
+       id="f"
+       x1="4"
+       x2="4"
+       y1="44"
+       y2="4"
+       gradientTransform="matrix(0.066146,0,0,0.066142,2.4253,293.6)"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#54d883"
+         offset="0"
+         id="stop2" />
+      <stop
+         stop-color="#abf9c7"
+         offset="1"
+         id="stop4" />
+    </linearGradient>
+    <linearGradient
+       id="a"
+       x1="34"
+       x2="44"
+       y1="19.008"
+       y2="29.008"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#292c2f"
+         offset="0"
+         id="stop7" />
+      <stop
+         stop-opacity="0"
+         offset="1"
+         id="stop9" />
+    </linearGradient>
+    <linearGradient
+       id="g"
+       x1="9"
+       x2="38"
+       y1="9"
+       y2="38"
+       gradientTransform="matrix(0.066146,0,0,0.066142,2.4253,293.6)"
+       gradientUnits="userSpaceOnUse"
+       xlink:href="#a" />
+    <linearGradient
+       id="h"
+       x1="4"
+       x2="4"
+       y1="44"
+       y2="4"
+       gradientTransform="matrix(0.066146,0,0,0.066142,2.4253,293.6)"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#197cf1"
+         offset="0"
+         id="stop13" />
+      <stop
+         stop-color="#20bcfa"
+         offset="1"
+         id="stop15" />
+    </linearGradient>
+    <linearGradient
+       id="e"
+       x1="34"
+       x2="44"
+       y1="19.008"
+       y2="29.008"
+       gradientTransform="matrix(0.066146,0,0,0.066142,2.4253,293.6)"
+       gradientUnits="userSpaceOnUse"
+       xlink:href="#a" />
+    <linearGradient
+       id="a-3"
+       y1="392.36"
+       y2="336.36"
+       x2="0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.07298809,0,0,0.07298809,0.59308977,-23.158892)">
+      <stop
+         stop-color="#ffffff"
+         stop-opacity="0"
+         id="stop2-6" />
+      <stop
+         offset="1"
+         stop-color="#ffffff"
+         stop-opacity=".15"
+         id="stop4-7" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient860"
+       y1="392.36"
+       y2="336.36"
+       x2="0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-14-332.36)">
+      <stop
+         stop-color="#ffffff"
+         stop-opacity="0"
+         id="stop856" />
+      <stop
+         offset="1"
+         stop-color="#ffffff"
+         stop-opacity=".15"
+         id="stop858" />
+    </linearGradient>
+    <linearGradient
+       id="a-5"
+       y1="392.36"
+       y2="336.36"
+       x2="0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-14,-332.36)">
+      <stop
+         stop-color="#ffffff"
+         stop-opacity="0"
+         id="stop2-3" />
+      <stop
+         offset="1"
+         stop-color="#ffffff"
+         stop-opacity=".15"
+         id="stop4-5" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient916"
+       y1="392.36"
+       y2="336.36"
+       x2="0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(-14-332.36)">
+      <stop
+         stop-color="#ffffff"
+         stop-opacity="0"
+         id="stop912" />
+      <stop
+         offset="1"
+         stop-color="#ffffff"
+         stop-opacity=".15"
+         id="stop914" />
+    </linearGradient>
+    <linearGradient
+       id="a-6"
+       y1="392.35999"
+       y2="365.20001"
+       x2="0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(365.57,152.44)">
+      <stop
+         stop-color="#ffffff"
+         stop-opacity="0"
+         id="stop2-2" />
+      <stop
+         offset="1"
+         stop-color="#ffffff"
+         stop-opacity=".2"
+         id="stop4-9" />
+    </linearGradient>
+  </defs>
+  <g
+     id="g918">
+    <path
+       color-rendering="auto"
+       color-interpolation-filters="linearRGB"
+       shape-rendering="auto"
+       image-rendering="auto"
+       text-rendering="auto"
+       id="use26"
+       color-interpolation="sRGB"
+       color="#000000"
+       d="M 10,3 V 61 H 54 V 3 H 40 Z"
+       style="fill:url(#a-5)" />
+  </g>
+  <g
+     id="g921" />
+  <g
+     id="g952"
+     transform="translate(-0.26458001,-0.26000243)">
+    <image
+       x="0.26458001"
+       y="0.26000243"
+       width="5.2916999"
+       height="5.2916999"
+       preserveAspectRatio="none"
+       xlink:href="data:image/png;base64,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 "
+       id="image21" />
+  </g>
+  <g
+     transform="matrix(0.09621154,0,0,0.09449347,-34.041566,-46.018318)"
+     id="g27">
+    <g
+       color-rendering="auto"
+       color-interpolation-filters="linearRGB"
+       shape-rendering="auto"
+       image-rendering="auto"
+       text-rendering="auto"
+       color-interpolation="sRGB"
+       color="#000000"
+       id="g15">
+      <path
+         fill="#da2c2c"
+         d="m 389.57,517.8 v 28 h 22 v -28 h -14 z"
+         id="path9" />
+      <rect
+         opacity="0.25"
+         x="389.57001"
+         y="544.79999"
+         width="22"
+         height="1"
+         id="rect11" />
+      <rect
+         opacity="0.5"
+         x="389.57001"
+         y="517.79999"
+         width="22"
+         fill="#ffffff"
+         height="1"
+         id="rect13" />
+    </g>
+    <rect
+       width="1"
+       x="392.57001"
+       y="518.79999"
+       fill="#ffffff"
+       height="26"
+       fill-opacity="0.252"
+       id="rect17" />
+    <g
+       color-rendering="auto"
+       color-interpolation-filters="linearRGB"
+       shape-rendering="auto"
+       image-rendering="auto"
+       text-rendering="auto"
+       color-interpolation="sRGB"
+       color="#000000"
+       id="g25">
+      <rect
+         x="393.57001"
+         y="518.79999"
+         fill-opacity="0.083"
+         width="1"
+         height="26"
+         id="rect19" />
+      <path
+         opacity="0.8"
+         fill="#ffffff"
+         d="m 398.43,525.8 c -0.162,0.01 -0.336,0 -0.527,0.132 -1.705,0.734 -0.561,2.747 1.612,4.279 0.013,-0.289 0.133,-0.917 0.13,-1.194 -1.854,-1.271 -2.939,-2.509 -1.757,-2.999 1.246,-0.517 1.633,0.895 1.655,2.944 0.116,0.12 0.92,0.654 1.042,0.739 -0.045,-1.869 -1.039,-3.777 -1.993,-3.885 -0.051,-0.01 -0.107,-0.01 -0.161,-0.01 m 1.736,3.252 -0.388,-0.151 -0.322,0.217 -0.065,0.682 0.406,0.312 0.169,0.226 c 1.251,0.83 2.317,1.469 3.718,1.997 l 0.874,0.13 h 0.575 c 0.53,-0.313 0.214,-0.433 2.141,-0.673 l -2.171,0.168 c -1.675,-0.649 -3.385,-1.582 -4.94,-2.6 m 3.822,2.72 c 0.251,0 2.211,-0.17 2.99,-0.242 0.772,-0.12 1.719,-0.156 1.54,0.746 0.204,-0.481 -0.261,-1.298 -0.922,-1.442 -1.023,-0.229 -2.646,0.398 -3.229,0.591 m 0.94,0.25 c -0.304,0.12 -0.999,0.207 -1.327,0.316 0.465,0.241 2.802,1.103 3.766,0.923 0.154,0 0.805,-0.468 0.821,-0.805 -0.05,0.613 -2.906,0.156 -3.26,-0.445 m 0.635,0.011 c -0.25,-0.12 -1.422,-0.114 -1.681,-0.211 -1.468,0.513 -3.442,1.719 -4.855,2.532 l -0.409,0.12 c -0.079,0.561 -0.425,0.755 -0.74,1.118 l 0.478,0.481 0.374,-0.613 c 1.654,-0.998 4.924,-2.611 6.832,-3.386 m -6.832,3.386 c -0.202,0.12 -0.395,0.241 -0.578,0.361 -0.424,1.204 -0.919,2.01 -1.391,1.98 0.729,0.349 2.301,-1.37 2.83,-2.986 m -2.83,2.986 c -1.113,-0.661 1.243,-1.867 1.77,-2.217 0.119,-0.337 -0.206,-0.895 -0.1,-1.292 -1.661,1.034 -2.643,2.531 -2.086,3.24 0.134,0.168 0.276,0.253 0.417,0.265 m 1.617,-2.52 c 0.077,-0.31 1.103,-1.015 1.289,-1.123 0.248,-1.954 0.26,-2.147 0.471,-3.666 -0.126,-0.12 -0.902,-0.725 -1.022,-0.809 -0.149,1.624 -0.429,3.824 -0.826,5.293"
+         id="path21" />
+      <path
+         fill="url(#a)"
+         d="m 389.57,517.8 v 28 h 22 v -28 h -17 z"
+         id="path23"
+         style="fill:url(#a-6)" />
+    </g>
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/icons/breeze-light/ericPdf48.svg	Thu Jan 12 18:08:12 2023 +0100
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   width="48"
+   height="48"
+   version="1.1"
+   viewBox="0 0 12.7 12.7"
+   id="svg37"
+   sodipodi:docname="ericPdf48.svg"
+   inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview39"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     showgrid="false"
+     inkscape:zoom="13.416667"
+     inkscape:cx="23.999999"
+     inkscape:cy="23.999999"
+     inkscape:window-width="2580"
+     inkscape:window-height="1080"
+     inkscape:window-x="426"
+     inkscape:window-y="146"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg37" />
+  <defs
+     id="defs19">
+    <linearGradient
+       id="f"
+       x1="4"
+       x2="4"
+       y1="44"
+       y2="4"
+       gradientTransform="matrix(0.15875,0,0,0.15874,5.1858,289.49)"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#54d883"
+         offset="0"
+         id="stop2" />
+      <stop
+         stop-color="#abf9c7"
+         offset="1"
+         id="stop4" />
+    </linearGradient>
+    <linearGradient
+       id="a"
+       x1="34"
+       x2="44"
+       y1="19.008"
+       y2="29.008"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#292c2f"
+         offset="0"
+         id="stop7" />
+      <stop
+         stop-opacity="0"
+         offset="1"
+         id="stop9" />
+    </linearGradient>
+    <linearGradient
+       id="g"
+       x1="9"
+       x2="38"
+       y1="9"
+       y2="38"
+       gradientTransform="matrix(0.15875,0,0,0.15874,5.1858,289.49)"
+       gradientUnits="userSpaceOnUse"
+       xlink:href="#a" />
+    <linearGradient
+       id="h"
+       x1="4"
+       x2="4"
+       y1="44"
+       y2="4"
+       gradientTransform="matrix(0.15875,0,0,0.15874,5.1858,289.49)"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         stop-color="#197cf1"
+         offset="0"
+         id="stop13" />
+      <stop
+         stop-color="#20bcfa"
+         offset="1"
+         id="stop15" />
+    </linearGradient>
+    <linearGradient
+       id="e"
+       x1="34"
+       x2="44"
+       y1="19.008"
+       y2="29.008"
+       gradientTransform="matrix(0.15875,0,0,0.15874,5.1858,289.49)"
+       gradientUnits="userSpaceOnUse"
+       xlink:href="#a" />
+    <linearGradient
+       id="a-3"
+       y1="392.35999"
+       y2="365.20001"
+       x2="0"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(365.57,152.44)">
+      <stop
+         stop-color="#ffffff"
+         stop-opacity="0"
+         id="stop2-6" />
+      <stop
+         offset="1"
+         stop-color="#ffffff"
+         stop-opacity=".2"
+         id="stop4-7" />
+    </linearGradient>
+  </defs>
+  <g
+     id="g952">
+    <g
+       id="g956">
+      <image
+         y="-1.2207031e-05"
+         width="12.7"
+         height="12.7"
+         preserveAspectRatio="none"
+         xlink:href="data:image/png;base64,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 "
+         id="image21"
+         x="0" />
+    </g>
+  </g>
+  <g
+     transform="matrix(0.20445069,0,0,0.20788681,-71.974939,-101.29379)"
+     id="g27">
+    <g
+       color-rendering="auto"
+       color-interpolation-filters="linearRGB"
+       shape-rendering="auto"
+       image-rendering="auto"
+       text-rendering="auto"
+       color-interpolation="sRGB"
+       color="#000000"
+       id="g15">
+      <path
+         fill="#da2c2c"
+         d="m 389.57,517.8 v 28 h 22 v -28 h -14 z"
+         id="path9" />
+      <rect
+         opacity="0.25"
+         x="389.57001"
+         y="544.79999"
+         width="22"
+         height="1"
+         id="rect11" />
+      <rect
+         opacity="0.5"
+         x="389.57001"
+         y="517.79999"
+         width="22"
+         fill="#ffffff"
+         height="1"
+         id="rect13" />
+    </g>
+    <rect
+       width="1"
+       x="392.57001"
+       y="518.79999"
+       fill="#ffffff"
+       height="26"
+       fill-opacity="0.252"
+       id="rect17" />
+    <g
+       color-rendering="auto"
+       color-interpolation-filters="linearRGB"
+       shape-rendering="auto"
+       image-rendering="auto"
+       text-rendering="auto"
+       color-interpolation="sRGB"
+       color="#000000"
+       id="g25">
+      <rect
+         x="393.57001"
+         y="518.79999"
+         fill-opacity="0.083"
+         width="1"
+         height="26"
+         id="rect19" />
+      <path
+         opacity="0.8"
+         fill="#ffffff"
+         d="m 398.43,525.8 c -0.162,0.01 -0.336,0 -0.527,0.132 -1.705,0.734 -0.561,2.747 1.612,4.279 0.013,-0.289 0.133,-0.917 0.13,-1.194 -1.854,-1.271 -2.939,-2.509 -1.757,-2.999 1.246,-0.517 1.633,0.895 1.655,2.944 0.116,0.12 0.92,0.654 1.042,0.739 -0.045,-1.869 -1.039,-3.777 -1.993,-3.885 -0.051,-0.01 -0.107,-0.01 -0.161,-0.01 m 1.736,3.252 -0.388,-0.151 -0.322,0.217 -0.065,0.682 0.406,0.312 0.169,0.226 c 1.251,0.83 2.317,1.469 3.718,1.997 l 0.874,0.13 h 0.575 c 0.53,-0.313 0.214,-0.433 2.141,-0.673 l -2.171,0.168 c -1.675,-0.649 -3.385,-1.582 -4.94,-2.6 m 3.822,2.72 c 0.251,0 2.211,-0.17 2.99,-0.242 0.772,-0.12 1.719,-0.156 1.54,0.746 0.204,-0.481 -0.261,-1.298 -0.922,-1.442 -1.023,-0.229 -2.646,0.398 -3.229,0.591 m 0.94,0.25 c -0.304,0.12 -0.999,0.207 -1.327,0.316 0.465,0.241 2.802,1.103 3.766,0.923 0.154,0 0.805,-0.468 0.821,-0.805 -0.05,0.613 -2.906,0.156 -3.26,-0.445 m 0.635,0.011 c -0.25,-0.12 -1.422,-0.114 -1.681,-0.211 -1.468,0.513 -3.442,1.719 -4.855,2.532 l -0.409,0.12 c -0.079,0.561 -0.425,0.755 -0.74,1.118 l 0.478,0.481 0.374,-0.613 c 1.654,-0.998 4.924,-2.611 6.832,-3.386 m -6.832,3.386 c -0.202,0.12 -0.395,0.241 -0.578,0.361 -0.424,1.204 -0.919,2.01 -1.391,1.98 0.729,0.349 2.301,-1.37 2.83,-2.986 m -2.83,2.986 c -1.113,-0.661 1.243,-1.867 1.77,-2.217 0.119,-0.337 -0.206,-0.895 -0.1,-1.292 -1.661,1.034 -2.643,2.531 -2.086,3.24 0.134,0.168 0.276,0.253 0.417,0.265 m 1.617,-2.52 c 0.077,-0.31 1.103,-1.015 1.289,-1.123 0.248,-1.954 0.26,-2.147 0.471,-3.666 -0.126,-0.12 -0.902,-0.725 -1.022,-0.809 -0.149,1.624 -0.429,3.824 -0.826,5.293"
+         id="path21" />
+      <path
+         fill="url(#a)"
+         d="m 389.57,517.8 v 28 h 22 v -28 h -17 z"
+         id="path23"
+         style="fill:url(#a-3)" />
+    </g>
+  </g>
+</svg>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/eric7/icons/breeze-light/pdfviewer.svg	Thu Jan 12 18:08:12 2023 +0100
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="22"
+   version="1.1"
+   height="22"
+   id="svg6"
+   sodipodi:docname="pdfviewer.svg"
+   inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview8"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     showgrid="false"
+     inkscape:zoom="29.272727"
+     inkscape:cx="11"
+     inkscape:cy="11"
+     inkscape:window-width="2580"
+     inkscape:window-height="1080"
+     inkscape:window-x="426"
+     inkscape:window-y="146"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="layer1" />
+  <defs
+     id="defs3871" />
+  <metadata
+     id="metadata3874" />
+  <g
+     inkscape:label="Capa 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="matrix(1 0 0 1 -326 -534.3622)">
+    <path
+       inkscape:label="Capa 1"
+       inkscape:connector-curvature="0"
+       style="fill:#cf000f;stroke-width:1.66883"
+       id="path26"
+       d="m 330.10511,535.3622 c -0.27018,0.0167 -0.56038,0 -0.87894,0.22043 -2.84194,1.22285 -0.93576,4.57763 2.68673,7.13137 0.0217,-0.48109 0.22193,-1.52877 0.21693,-1.98983 -3.09046,-2.11874 -4.89836,-4.18137 -2.92868,-4.99911 2.07642,-0.86199 2.72089,1.49137 2.75758,4.90693 0.19346,0.2004 1.53367,1.0906 1.73713,1.23105 -0.075,-3.115 -1.73115,-6.29445 -3.32223,-6.47479 -0.085,-0.0167 -0.17847,-0.0167 -0.26853,-0.0167 m 2.8932,5.41942 -0.64665,-0.25182 -0.53614,0.36119 -0.108,1.13669 0.6772,0.51933 0.28105,0.37706 c 2.08477,1.38316 3.86088,2.44854 6.19747,3.32857 l 1.4572,0.21643 h 0.95898 c 0.88393,-0.52118 0.35692,-0.72173 3.56912,-1.12251 l -3.61916,0.28055 c -2.79191,-1.08242 -5.64098,-2.63691 -8.23276,-4.33284 m 6.37082,4.53405 c 0.41863,0 3.68487,-0.28337 4.98408,-0.40361 1.28589,-0.20055 2.8653,-0.26066 2.56676,1.24273 0.34024,-0.80172 -0.43501,-2.16282 -1.53744,-2.40329 -1.7045,-0.3809 -4.4093,0.66361 -5.38163,0.9844 m 1.56707,0.41663 c -0.50701,0.20054 -1.66531,0.3455 -2.21236,0.52584 0.77553,0.40095 4.66929,1.83871 6.27705,1.53796 0.25685,0 1.34235,-0.78083 1.36904,-1.34224 -0.0834,1.02229 -4.84331,0.26066 -5.43373,-0.7416 m 1.05906,0.0184 c -0.41694,-0.2004 -2.36933,-0.19054 -2.8013,-0.35086 -2.44604,0.85565 -5.7362,2.86453 -8.09116,4.21946 l -0.68213,0.20056 c -0.13154,0.93579 -0.70815,1.25808 -1.23418,1.86408 l 0.79721,0.80188 0.62377,-1.0223 c 2.75689,-1.66371 8.20729,-4.35171 11.38612,-5.6427 m -11.38612,5.6427 c -0.3369,0.20039 -0.65879,0.40093 -0.964,0.60132 -0.70715,2.00652 -1.53105,3.35746 -2.31825,3.29935 1.21582,0.58129 3.8346,-2.28323 4.71687,-4.97725 m -4.71687,4.97725 c -1.85462,-1.10246 2.07107,-3.1115 2.95001,-3.69478 0.19847,-0.56125 -0.34407,-1.49121 -0.1673,-2.15281 -2.76856,1.72398 -4.4055,4.21794 -3.47653,5.40056 0.22349,0.2807 0.46032,0.42097 0.69548,0.44102 m 2.69438,-4.19993 c 0.12892,-0.51665 1.8391,-1.69175 2.14764,-1.87226 0.41376,-3.25709 0.43347,-3.57872 0.78492,-6.11075 -0.21015,-0.20039 -1.50359,-1.20867 -1.70373,-1.34892 -0.24836,2.70602 -0.71546,6.37308 -1.37591,8.82246" />
+  </g>
+</svg>
Binary file src/eric7/icons/oxygen/ericPdf.png has changed
Binary file src/eric7/icons/oxygen/ericPdf48.png has changed
Binary file src/eric7/icons/oxygen/pdfviewer.png has changed

eric ide

mercurial