eric7/Preferences/ConfigurationPages/EditorExportersPage.py

branch
eric7
changeset 8312
800c432b34c8
parent 8218
7c09585bd960
child 8318
962bce857696
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/Preferences/ConfigurationPages/EditorExportersPage.py	Sat May 15 18:45:04 2021 +0200
@@ -0,0 +1,211 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2007 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the Editor Exporters configuration page.
+"""
+
+from PyQt5.QtCore import pyqtSlot
+from PyQt5.QtWidgets import QFontDialog
+
+from .ConfigurationPageBase import ConfigurationPageBase
+from .Ui_EditorExportersPage import Ui_EditorExportersPage
+
+import Preferences
+
+
+class EditorExportersPage(ConfigurationPageBase, Ui_EditorExportersPage):
+    """
+    Class implementing the Editor Typing configuration page.
+    """
+    def __init__(self):
+        """
+        Constructor
+        """
+        super().__init__()
+        self.setupUi(self)
+        self.setObjectName("EditorExportersPage")
+        
+        # set initial values
+        self.pageIds = {}
+        self.pageIds[' '] = self.stackedWidget.indexOf(self.emptyPage)
+        self.pageIds['HTML'] = self.stackedWidget.indexOf(self.htmlPage)
+        self.pageIds['ODT'] = self.stackedWidget.indexOf(self.odtPage)
+        self.pageIds['PDF'] = self.stackedWidget.indexOf(self.pdfPage)
+        self.pageIds['RTF'] = self.stackedWidget.indexOf(self.rtfPage)
+        self.pageIds['TeX'] = self.stackedWidget.indexOf(self.texPage)
+        exporters = sorted(list(self.pageIds.keys()))
+        for exporter in exporters:
+            self.exportersCombo.addItem(exporter, self.pageIds[exporter])
+        
+        self.pdfFontCombo.addItem(self.tr("Courier"), "Courier")
+        self.pdfFontCombo.addItem(self.tr("Helvetica"), "Helvetica")
+        self.pdfFontCombo.addItem(self.tr("Times"), "Times")
+        
+        self.pdfPageSizeCombo.addItem(self.tr("A4"), "A4")
+        self.pdfPageSizeCombo.addItem(self.tr("Letter"), "Letter")
+        
+        # HTML
+        self.htmlWysiwygCheckBox.setChecked(
+            Preferences.getEditorExporter("HTML/WYSIWYG"))
+        self.htmlFoldingCheckBox.setChecked(
+            Preferences.getEditorExporter("HTML/Folding"))
+        self.htmlStylesCheckBox.setChecked(
+            Preferences.getEditorExporter("HTML/OnlyStylesUsed"))
+        self.htmlTitleCheckBox.setChecked(
+            Preferences.getEditorExporter("HTML/FullPathAsTitle"))
+        self.htmlTabsCheckBox.setChecked(
+            Preferences.getEditorExporter("HTML/UseTabs"))
+        
+        # ODT
+        self.odtWysiwygCheckBox.setChecked(
+            Preferences.getEditorExporter("ODT/WYSIWYG"))
+        self.odtStylesCheckBox.setChecked(
+            Preferences.getEditorExporter("ODT/OnlyStylesUsed"))
+        self.odtTabsCheckBox.setChecked(
+            Preferences.getEditorExporter("ODT/UseTabs"))
+        
+        # PDF
+        self.pdfMagnificationSlider.setValue(
+            Preferences.getEditorExporter("PDF/Magnification"))
+        ind = self.pdfFontCombo.findData(
+            Preferences.getEditorExporter("PDF/Font"))
+        self.pdfFontCombo.setCurrentIndex(ind)
+        ind = self.pdfPageSizeCombo.findData(
+            Preferences.getEditorExporter("PDF/PageSize"))
+        self.pdfPageSizeCombo.setCurrentIndex(ind)
+        self.pdfMarginTopSpin.setValue(
+            Preferences.getEditorExporter("PDF/MarginTop"))
+        self.pdfMarginBottomSpin.setValue(
+            Preferences.getEditorExporter("PDF/MarginBottom"))
+        self.pdfMarginLeftSpin.setValue(
+            Preferences.getEditorExporter("PDF/MarginLeft"))
+        self.pdfMarginRightSpin.setValue(
+            Preferences.getEditorExporter("PDF/MarginRight"))
+        
+        # RTF
+        self.rtfWysiwygCheckBox.setChecked(
+            Preferences.getEditorExporter("RTF/WYSIWYG"))
+        self.rtfTabsCheckBox.setChecked(
+            Preferences.getEditorExporter("RTF/UseTabs"))
+        self.rtfFont = Preferences.getEditorExporter("RTF/Font")
+        self.rtfFontSample.setFont(self.rtfFont)
+        
+        # TeX
+        self.texStylesCheckBox.setChecked(
+            Preferences.getEditorExporter("TeX/OnlyStylesUsed"))
+        self.texTitleCheckBox.setChecked(
+            Preferences.getEditorExporter("TeX/FullPathAsTitle"))
+        
+        self.on_exportersCombo_activated(0)
+    
+    def save(self):
+        """
+        Public slot to save the Editor Typing configuration.
+        """
+        # HTML
+        Preferences.setEditorExporter(
+            "HTML/WYSIWYG",
+            self.htmlWysiwygCheckBox.isChecked())
+        Preferences.setEditorExporter(
+            "HTML/Folding",
+            self.htmlFoldingCheckBox.isChecked())
+        Preferences.setEditorExporter(
+            "HTML/OnlyStylesUsed",
+            self.htmlStylesCheckBox.isChecked())
+        Preferences.setEditorExporter(
+            "HTML/FullPathAsTitle",
+            self.htmlTitleCheckBox.isChecked())
+        Preferences.setEditorExporter(
+            "HTML/UseTabs",
+            self.htmlTabsCheckBox.isChecked())
+        
+        # ODT
+        Preferences.setEditorExporter(
+            "ODT/WYSIWYG",
+            self.odtWysiwygCheckBox.isChecked())
+        Preferences.setEditorExporter(
+            "ODT/OnlyStylesUsed",
+            self.odtStylesCheckBox.isChecked())
+        Preferences.setEditorExporter(
+            "ODT/UseTabs",
+            self.odtTabsCheckBox.isChecked())
+        
+        # PDF
+        Preferences.setEditorExporter(
+            "PDF/Magnification",
+            self.pdfMagnificationSlider.value())
+        Preferences.setEditorExporter(
+            "PDF/Font",
+            self.pdfFontCombo.itemData(self.pdfFontCombo.currentIndex()))
+        Preferences.setEditorExporter(
+            "PDF/PageSize",
+            self.pdfPageSizeCombo.itemData(
+                self.pdfPageSizeCombo.currentIndex()))
+        Preferences.setEditorExporter(
+            "PDF/MarginTop",
+            self.pdfMarginTopSpin.value())
+        Preferences.setEditorExporter(
+            "PDF/MarginBottom",
+            self.pdfMarginBottomSpin.value())
+        Preferences.setEditorExporter(
+            "PDF/MarginLeft",
+            self.pdfMarginLeftSpin.value())
+        Preferences.setEditorExporter(
+            "PDF/MarginRight",
+            self.pdfMarginRightSpin.value())
+        
+        # RTF
+        Preferences.setEditorExporter(
+            "RTF/WYSIWYG",
+            self.rtfWysiwygCheckBox.isChecked())
+        Preferences.setEditorExporter(
+            "RTF/UseTabs",
+            self.rtfTabsCheckBox.isChecked())
+        Preferences.setEditorExporter("RTF/Font", self.rtfFont)
+        
+        # TeX
+        Preferences.setEditorExporter(
+            "TeX/OnlyStylesUsed",
+            self.texStylesCheckBox.isChecked())
+        Preferences.setEditorExporter(
+            "TeX/FullPathAsTitle",
+            self.texTitleCheckBox.isChecked())
+    
+    @pyqtSlot(int)
+    def on_exportersCombo_activated(self, index):
+        """
+        Private slot to select the page related to the selected exporter.
+        
+        @param index index of the selected entry
+        @type int
+        """
+        exporter = self.exportersCombo.itemText(index)
+        try:
+            index = self.pageIds[exporter]
+        except KeyError:
+            index = self.pageIds[' ']
+        self.stackedWidget.setCurrentIndex(index)
+    
+    @pyqtSlot()
+    def on_rtfFontButton_clicked(self):
+        """
+        Private method used to select the font for the RTF export.
+        """
+        font, ok = QFontDialog.getFont(self.rtfFont)
+        if ok:
+            self.rtfFontSample.setFont(font)
+            self.rtfFont = font
+
+
+def create(dlg):
+    """
+    Module function to create the configuration page.
+    
+    @param dlg reference to the configuration dialog
+    @return reference to the instantiated page (ConfigurationPageBase)
+    """
+    page = EditorExportersPage()
+    return page

eric ide

mercurial