QScintilla/Exporters/ExporterODT.py

changeset 532
a3c0f1e2594a
child 535
4b00d7336e19
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/QScintilla/Exporters/ExporterODT.py	Mon Aug 30 15:24:28 2010 +0200
@@ -0,0 +1,74 @@
+# -*- coding: utf-8 -*-
+
+# Copyright (c) 2010 Detlev Offenbach <detlev@die-offenbachs.de>
+#
+
+"""
+Module implementing an exporter for ODT.
+"""
+
+from PyQt4.QtCore import Qt
+from PyQt4.QtGui import QApplication, QCursor, QTextDocument, QTextDocumentWriter, \
+    QMessageBox
+
+from .ExporterBase import ExporterBase
+from .ExporterHTML import HTMLGenerator
+
+import Preferences
+
+class ExporterODT(ExporterBase):
+    """
+    Class implementing an exporter for ODT.
+    """
+    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)
+        """
+        ExporterBase.__init__(self, editor, parent)
+    
+    def exportSource(self):
+        """
+        Public method performing the export.
+        """
+        filename = self._getFileName(self.trUtf8("ODT Files (*.odt)"))
+        if not filename:
+            return
+        
+        QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
+        QApplication.processEvents()
+        
+        tabSize = Preferences.getEditor("TabWidth")
+        if tabSize == 0:
+            tabSize = 4
+        wysiwyg = Preferences.getEditorExporter("ODT/WYSIWYG")
+        onlyStylesUsed = Preferences.getEditorExporter("ODT/OnlyStylesUsed")
+        tabs = Preferences.getEditorExporter("ODT/UseTabs")
+        
+        # generate HTML of the source
+        generator = HTMLGenerator(self.editor)
+        html = generator.generate(
+            tabSize = tabSize, 
+            useTabs = tabs, 
+            wysiwyg = wysiwyg, 
+            folding = False, 
+            onlyStylesUsed = onlyStylesUsed, 
+            titleFullPath = False
+        )
+        
+        # convert HTML to ODT
+        doc = QTextDocument()
+        doc.setHtml(html)
+        writer = QTextDocumentWriter(filename)
+        ok = writer.write(doc)
+        QApplication.restoreOverrideCursor()
+        if not ok:
+            QMessageBox.critical(self.editor,
+                self.trUtf8("Export source"),
+                self.trUtf8(\
+                    """<p>The source could not be exported to <b>{0}</b>.</p>""")\
+                    .format(filename),
+                QMessageBox.StandardButtons(\
+                    QMessageBox.Ok))

eric ide

mercurial