Code

Extensions. Removing tooltips from color>randomize (see Bug #676419).
[inkscape.git] / share / extensions / uniconv-ext.py
index d114b1a306a637bde88375e50f11f06a651d7cc9..246340e8980c32ce9c56f3fae83dea87f3409c5d 100644 (file)
@@ -1,69 +1,64 @@
-#!/usr/bin/env python\r
-\r
-"""\r
-uniconv-ext.py\r
-Python script for running UniConvertor in Inkscape extensions\r
-\r
-Copyright (C) 2008 Stephen Silver\r
-\r
-This program is free software; you can redistribute it and/or modify\r
-it under the terms of the GNU General Public License as published by\r
-the Free Software Foundation; either version 2 of the License, or\r
-(at your option) any later version.\r
-\r
-This program is distributed in the hope that it will be useful,\r
-but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-GNU General Public License for more details.\r
-\r
-You should have received a copy of the GNU General Public License\r
-along with this program; if not, write to the Free Software\r
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA\r
-\r
-"""\r
-\r
-import os\r
-import random\r
-import subprocess\r
-import sys\r
-import tempfile\r
-\r
-# We need a filename ending in ".svg" for UniConvertor.\r
-# This is a hack.\r
-chars = list("0123456789abcdefghijklmnopqrstuvwxyz")\r
-while True:\r
-    random.shuffle(chars)\r
-    svgfile = os.path.join(tempfile.gettempdir(), ''.join(chars) + '.svg')\r
-    if not os.path.exists(svgfile):\r
-        break\r
-\r
-# Run UniConvertor, and determine our return code.\r
-try:\r
-    p = subprocess.Popen('uniconv "%s" "%s"' % (sys.argv[1], svgfile),\r
-                         shell=True, stderr=subprocess.PIPE)\r
-    err = p.stderr.read()\r
-    rc = p.wait()\r
-    if rc:\r
-        sys.stderr.write("UniConvertor failed: %s\n" % err)\r
-        rc = 1\r
-except Exception, inst:\r
-    sys.stderr.write("Spawn error: %s\n" % str(inst))\r
-    rc = 1\r
-\r
-# If successful, copy the SVG file to stdout.\r
-if rc == 0:\r
-    try:\r
-        f = open(svgfile, "rU")\r
-        for line in f:\r
-            sys.stdout.write(line)\r
-        f.close()\r
-    except IOError, inst:\r
-        sys.stderr.write("Error reading temporary SVG file: %s\n" % str(inst))\r
-        rc = 1\r
-\r
-# Clean up and return.\r
-try:\r
-    os.remove(svgfile)\r
-except Exception:\r
-    pass\r
-sys.exit(rc)\r
+#!/usr/bin/env python
+
+"""
+uniconv-ext.py
+Python script for running UniConvertor in Inkscape extensions
+
+Copyright (C) 2008 Stephen Silver
+
+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., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+"""
+
+import sys
+from run_command import run
+import gettext
+_ = gettext.gettext
+
+cmd = None
+
+try:
+    from subprocess import Popen, PIPE
+    p = Popen('uniconvertor', shell=True, stdout=PIPE, stderr=PIPE).wait()
+    if p==0 :
+        cmd = 'uniconvertor'
+    else:
+        p = Popen('uniconv', shell=True, stdout=PIPE, stderr=PIPE).wait()
+        if p==0 :
+            cmd = 'uniconv'
+except ImportError:
+    from popen2 import Popen3
+    p = Popen3('uniconv', True).wait()
+    if p!=32512 : cmd = 'uniconv'
+    p = Popen3('uniconvertor', True).wait()
+    if p!=32512 : cmd = 'uniconvertor'
+
+if cmd == None:
+    # there's no succeffully-returning uniconv command; try to get the module directly (on Windows)
+    try:
+        # cannot simply import uniconvertor, it aborts if you import it without parameters
+        import imp
+        imp.find_module("uniconvertor")
+    except ImportError:
+        sys.stderr.write(_('You need to install the UniConvertor software.\n'+\
+                     'For GNU/Linux: install the package python-uniconvertor.\n'+\
+                     'For Windows: download it from\n'+\
+                     'http://sk1project.org/modules.php?name=Products&product=uniconvertor\n'+\
+                     'and install into your Inkscape\'s Python location\n'))
+        sys.exit(1)
+    cmd = 'python -c "import uniconvertor; uniconvertor.uniconv_run()"'
+
+run((cmd+' "%s" "%%s"') % sys.argv[1].replace("%","%%"), "UniConvertor")
+
+# vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 fileencoding=utf-8 textwidth=99