Hi,
I have submitted a patch for review:
https://gerrit.libreoffice.org/3009
To pull it, you can do:
git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/09/3009/1
Init: Added new Exporter classes.
Change-Id: I45a0c3a4665581dcd0709d1ae72fbbbf404d7182
---
A wizards/com/sun/star/wizards/web/export/AbstractExporter.py
A wizards/com/sun/star/wizards/web/export/CopyExporter.py
A wizards/com/sun/star/wizards/web/export/Exporter.py
A wizards/com/sun/star/wizards/web/export/__init__.py
4 files changed, 199 insertions(+), 0 deletions(-)
diff --git a/wizards/com/sun/star/wizards/web/export/AbstractExporter.py
b/wizards/com/sun/star/wizards/web/export/AbstractExporter.py
new file mode 100644
index 0000000..2dd45c2
--- /dev/null
+++ b/wizards/com/sun/star/wizards/web/export/AbstractExporter.py
@@ -0,0 +1,106 @@
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# This file incorporates work covered by the following license notice:
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed
+# with this work for additional information regarding copyright
+# ownership. The ASF licenses this file to you under the Apache
+# License, Version 2.0 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.apache.org/licenses/LICENSE-2.0 .
+#
+import traceback
+import uno
+
+from .Exporter import Exporter
+from ..TypeDetection import *
+from ...common.Desktop import Desktop
+from ...common.Properties import Properties
+from ...common.FileAccess import FileAccess
+from ...document.OfficeDocument import OfficeDocument
+from ...text.TextDocument import TextDocument
+
+from com.sun.star.lang import IllegalArgumentException
+from com.sun.star.document.MacroExecMode import NEVER_EXECUTE
+from com.sun.star.document.UpdateDocMode import NO_UPDATE
+
+class AbstractExporter(Exporter):
+
+ exporter = None
+ fileAccess = None
+
+ def __init__(self, exporter_):
+ print ("DEBUG !!! AbstractExporter.init - exporter: ", exporter_)
+ self.exporter = exporter_
+
+ def storeToURL(self, officeDocument, props, targetUrl, filterName, filterData):
+ props = Properties()
+ props["FilterName"] = filterName
+ if (len(filterData) > 0):
+ props["FilterData"] = filterData
+ o = props.getProperties1()
+ officeDocument.storeToURL(targetUrl, tuple(o))
+
+ def storeToURL1(self, officeDocument, targetUrl, filterName, filterData):
+ self.storeToURL(officeDocument, Properties(), targetUrl, filterName, filterData)
+
+ def storeToURL2(self, officeDocument, targetUrl, filterName):
+ self.storeToURL(officeDocument, Properties(), targetUrl, filterName, [])
+
+ def getArgument(self, name, p):
+ return p.cp_Arguments.getElement(name).cp_Value
+
+ def openDocument(self, doc, xmsf):
+ document = None
+ # open the document.
+ try:
+ desktop = Desktop.getDesktop(xmsf)
+ props = list(range(3))
+ props[0] = Properties.createProperty("Hidden", True)
+ props[1] = Properties.createProperty("MacroExecutionMode", NEVER_EXECUTE)
+ props[2] = Properties.createProperty("UpdateDocMode", NO_UPDATE)
+ print ("DEBUG !!! openDocument -- URL: ", doc.cp_URL)
+ document = desktop.loadComponentFromURL(doc.cp_URL, "_blank", 0, tuple(props))
+ except IllegalArgumentException:
+ traceback.print_exc()
+ # try to get the number of pages in the document
+ try:
+ self.pageCount(doc, document)
+ except Exception:
+ traceback.print_exc()
+ # Here i do nothing since pages is not *so* important.
+ return document
+
+ def closeDocument(self, doc, xmsf):
+ try:
+ doc.close(False)
+ except Exception:
+ traceback.print_exc()
+
+ def pageCount(self, doc, document):
+ if (doc.appType == WRITER_DOC):
+ doc.pages = TextDocument.getPageCount(document)
+ elif (doc.appType == IMPRESS_DOC):
+ doc.pages = OfficeDocument.getSlideCount(document)
+ elif (doc.appType == DRAW_DOC):
+ doc.pages = OfficeDocument.getSlideCount(document)
+
+ def getFileAccess(self, xmsf):
+ if (self.fileAccess == None):
+ try:
+ self.fileAccess = FileAccess(xmsf)
+ except Exception:
+ traceback.print_exc()
+ return self.fileAccess
+
+ def calcFileSize(self, doc, url, xmsf):
+ # if the exporter exports to a
+ # binary format, get the size of the destination.
+ if (self.exporter.cp_Binary):
+ doc.sizeBytes = self.getFileAccess(xmsf).getSize(url)
diff --git a/wizards/com/sun/star/wizards/web/export/CopyExporter.py
b/wizards/com/sun/star/wizards/web/export/CopyExporter.py
new file mode 100644
index 0000000..862c045
--- /dev/null
+++ b/wizards/com/sun/star/wizards/web/export/CopyExporter.py
@@ -0,0 +1,52 @@
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# This file incorporates work covered by the following license notice:
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed
+# with this work for additional information regarding copyright
+# ownership. The ASF licenses this file to you under the Apache
+# License, Version 2.0 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.apache.org/licenses/LICENSE-2.0 .
+#
+import traceback
+
+from .AbstractExporter import AbstractExporter
+from ...common.FileAccess import FileAccess
+
+class CopyExporter(AbstractExporter):
+
+ # @see com.sun.star.wizards.web.export.Exporter#export(java.lang.Object, java.io.File,
com.sun.star.wizards.web.data.CGSettings, com.sun.star.lang.XMultiServiceFactory)
+ def export(self, source, target, xmsf, task):
+ try:
+ task.advance(True)
+
+ # this will open the document, and calculate the pages/slides number
+ # in it.
+ if (self.exporter.cp_PageType > 0):
+ self.closeDocument(self.openDocument(source, xmsf), xmsf)
+
+ task.advance(True)
+
+ print ("WARNING !!! CopyExporter (creating newtarget) - source.urlFilename: ",
source.urlFilename)
+
+ newTarget = FileAccess.connectURLs(
+ FileAccess.getParentDir(target), source.urlFilename)
+
+ print ("WARNING !!! CopyExporter (export) - source, target: ", source.cp_URL,
newTarget)
+ b = self.getFileAccess(xmsf).copy(source.cp_URL, newTarget)
+
+ task.advance(True)
+
+ self.calcFileSize(source, newTarget, xmsf)
+
+ return b
+ except Exception:
+ traceback.print_exc()
+ return False
diff --git a/wizards/com/sun/star/wizards/web/export/Exporter.py
b/wizards/com/sun/star/wizards/web/export/Exporter.py
new file mode 100644
index 0000000..5f5c7ec
--- /dev/null
+++ b/wizards/com/sun/star/wizards/web/export/Exporter.py
@@ -0,0 +1,40 @@
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+# This file incorporates work covered by the following license notice:
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed
+# with this work for additional information regarding copyright
+# ownership. The ASF licenses this file to you under the Apache
+# License, Version 2.0 (the "License"); you may not use this file
+# except in compliance with the License. You may obtain a copy of
+# the License at http://www.apache.org/licenses/LICENSE-2.0 .
+#
+from ..abc import abstractmethod
+
+class Exporter:
+
+ # This method exports a document with a specified filter.<br/>
+ # The method is responsible for exporting the given source document
+ # to the given target directory.
+ # The exporter *must* also set the given CGDocument sizeBytes field to the
+ # size of the converted document, *if* the target document is
+ # of a binary format.
+ # always use source.urlFilename as destination filename.
+ # @param source is a CGDocument object.
+ # @param targetDirectory contains the URL of a directory to which the file should be exported
to.
+ # @param xmsf this is a basic multiServiceFactory.
+ # @param task - a task monitoring object. This should advance
+ # (call task.advance(true) ) 3 times, while exporting.
+ @abstractmethod
+ def export(self, source, targetDirectory, xmsf, task):
+ pass
+
+ @abstractmethod
+ def init(self, exporter):
+ pass
diff --git a/wizards/com/sun/star/wizards/web/export/__init__.py
b/wizards/com/sun/star/wizards/web/export/__init__.py
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/wizards/com/sun/star/wizards/web/export/__init__.py
@@ -0,0 +1 @@
+
--
To view, visit https://gerrit.libreoffice.org/3009
To unsubscribe, visit https://gerrit.libreoffice.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I45a0c3a4665581dcd0709d1ae72fbbbf404d7182
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: Javier Fernandez <javier.fgb@gmail.com>
Context
- [PATCH] Init: Added new Exporter classes. · Javier Fernandez (via Code Review)
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.