eric7/QScintilla/Exporters/ExporterBase.py

branch
eric7
changeset 8312
800c432b34c8
parent 8218
7c09585bd960
child 8318
962bce857696
diff -r 4e8b98454baa -r 800c432b34c8 eric7/QScintilla/Exporters/ExporterBase.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eric7/QScintilla/Exporters/ExporterBase.py	Sat May 15 18:45:04 2021 +0200
@@ -0,0 +1,81 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2007 - 2021 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing the exporter base class.
+"""
+
+from PyQt5.QtCore import QFileInfo, QObject, QCoreApplication
+
+from E5Gui import E5MessageBox, E5FileDialog
+
+import Utilities
+
+
+class ExporterBase(QObject):
+    """
+    Class implementing the exporter base class.
+    """
+    def __init__(self, editor, parent=None):
+        """
+        Constructor
+        
+        @param editor reference to the editor object (QScintilla.Editor.Editor)
+        @param parent parent object of the exporter (QObject)
+        """
+        super().__init__(parent)
+        self.editor = editor
+    
+    def _getFileName(self, fileFilter):
+        """
+        Protected method to get the file name of the export file from the user.
+        
+        @param fileFilter the filter string to be used (string). The filter for
+            "All Files (*)" is appended by this method.
+        @return file name entered by the user (string)
+        """
+        fileFilter += ";;"
+        fileFilter += QCoreApplication.translate('Exporter', "All Files (*)")
+        fn, selectedFilter = E5FileDialog.getSaveFileNameAndFilter(
+            self.editor,
+            QCoreApplication.translate('Exporter', "Export source"),
+            "",
+            fileFilter,
+            "",
+            E5FileDialog.Options(E5FileDialog.DontConfirmOverwrite))
+        
+        if fn:
+            ext = QFileInfo(fn).suffix()
+            if not ext:
+                ex = selectedFilter.split("(*")[1].split(")")[0]
+                if ex:
+                    fn += ex
+            if QFileInfo(fn).exists():
+                res = E5MessageBox.yesNo(
+                    self.editor,
+                    QCoreApplication.translate(
+                        'Exporter', "Export source"),
+                    QCoreApplication.translate(
+                        'Exporter',
+                        "<p>The file <b>{0}</b> already exists."
+                        " Overwrite it?</p>").format(fn),
+                    icon=E5MessageBox.Warning)
+                if not res:
+                    return ""
+            
+            fn = Utilities.toNativeSeparators(fn)
+        
+        return fn
+    
+    def exportSource(self):
+        """
+        Public method performing the export.
+        
+        This method must be overridden by the real exporters.
+        
+        @exception NotImplementedError raised to indicate that this method
+            must be implemented by a subclass
+        """
+        raise NotImplementedError

eric ide

mercurial