updated gpdf2swf (patch from Ricardo Pedroso)
[swftools.git] / wx / viewers / technoargia.py
diff --git a/wx/viewers/technoargia.py b/wx/viewers/technoargia.py
new file mode 100644 (file)
index 0000000..7d6afa2
--- /dev/null
@@ -0,0 +1,350 @@
+#!/usr/bin/env python
+# -*- coding: UTF-8 -*-
+#
+# gpdf2swf.py
+# graphical user interface for pdf2swf
+#
+# Part of the swftools package.
+# 
+# Copyright (c) 2008,2009 Matthias Kramm <kramm@quiss.org> 
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */
+
+from gui.fields import Choose, ChooseAndInt, Hidden
+
+order = 4
+type = "custom"
+name = u"technoargia Viewer"
+desc = (u"Simple viewer with home link from Laurent Lalanne"
+        u" (http://technoargia.free.fr/swftools/examples/viewer_home/viewer_home.html)")
+
+swf_options = [
+    Hidden("flashversion", 6),
+]
+
+viewer_options = [
+    Choose("html", u"Save HTML:",
+           (u"no", False, u"yes", True, ), True),
+    ChooseAndInt('width', 'Width:',
+                  ('same as PDF', -2, 'fullscreen', -1, 'custom', 0), 1, 2, 600),
+    ChooseAndInt('height', 'Height:',
+                  ('same as PDF', -2, 'fullscreen', -1, 'custom', 0), 1, 2, 800),
+    Choose('zoomtype', 'Initial zoom level:',
+            ('Original resolution', 1,
+             'Show all', 2,
+             'Maximum width/height', 3), 2),
+]
+
+
+html_template = """<html>
+<body style="padding: 0px; margin: 0px">
+<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
+        width="%(width)s"
+        height="%(height)s"
+        codebase="http://active.macromedia.com/flash5/cabs/swflash.cab#version=%(version)d,0,0,0">
+        <param name="MOVIE" value="%(swffilename)s">
+        <param name="PLAY" value="true">
+        <param name="LOOP" value="true">
+        <param name="QUALITY" value="high">
+        <param name="FLASHVARS" value="%(flashvars)s">
+          <embed src="%(swffilename)s" width="%(width)s" height="%(height)s"
+                 play="true" ALIGN="" loop="true" quality="high"
+                 type="application/x-shockwave-flash"
+                 flashvars="%(flashvars)s"
+                 pluginspage="http://www.macromedia.com/go/getflashplayer">
+          </embed>
+</object>
+</body>
+</html>
+"""
+
+from gui.plugin import Plugin
+import os
+
+class Technoargia(Plugin):
+    def __init__(self, swf, filename):
+        self.__swf = swf
+        self.__filename = filename
+
+        for opt in swf_options:
+            swf.setparameter(opt.name, str(opt.value))
+            setattr(self, "_%s" % opt.name, opt.value)
+
+        for opt in viewer_options:
+            setattr(self, "_%s" % opt.name, opt.value)
+
+    def after_save(self, page):
+        viewerfilename = self._swap_extension(__file__, "swf")
+
+        self.swfcombine(
+               u"%s" % viewerfilename,
+               u"viewport=%s" % self.__filename,
+               u"-o", u"%s" % self.__filename,
+        )
+
+        if not self._html:
+            return
+
+        if self._width == -1:
+            width = "100%"
+        elif self._width == -2:
+            width = page.width+40
+        else:
+            width = self._width
+
+        if self._height == -1:
+            height = "100%"
+        elif self._height == -2:
+            height = page.height+70
+        else:
+            height = self._height
+
+        template_vars = {
+                         'width': width,
+                         'height': height,
+                         'version': self._flashversion,
+                         'flashvars': "zoomtype=%s" % self._zoomtype,
+                         'swffilename': os.path.basename(self.__filename),
+                        }
+
+        htmlfilename = self._swap_extension(self.__filename, "html")
+        f = open(htmlfilename, "wb")
+        f.write(html_template % template_vars)
+        f.close()
+
+
+def init(swf, filename):
+    return Technoargia(swf, filename)
+
+
+from lib.embeddedimage import PyEmbeddedImage
+
+preview = PyEmbeddedImage(
+    "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"
+    "AABJRU5ErkJggg==")
+getpreviewData = preview.GetData
+getpreviewImage = preview.GetImage
+getpreviewBitmap = preview.GetBitmap
+getpreviewIcon = preview.GetIcon
+