]> git.lyx.org Git - lyx.git/blobdiff - src/graphics/GraphicsConverter.C
* GuiView.C (updateTab): do not update early if current tab has
[lyx.git] / src / graphics / GraphicsConverter.C
index d3390e10df9c71227826aa3b00510c83d165d5e8..3a11012ba7ed81d67a7d7c73f8b54e0b652ae236 100644 (file)
@@ -92,7 +92,7 @@ public:
 bool Converter::isReachable(string const & from_format_name,
                            string const & to_format_name)
 {
-       return converters.isReachable(from_format_name, to_format_name);
+       return theConverters().isReachable(from_format_name, to_format_name);
 }
 
 
@@ -282,13 +282,22 @@ static void build_script(FileName const & from_file,
 
        script << "#!/usr/bin/env python\n"
                  "# -*- coding: utf-8 -*-\n"
-                 "import os, shutil, sys\n\n"
+                 "import os, shutil, sys, locale\n\n"
                  "def unlinkNoThrow(file):\n"
                  "  ''' remove a file, do not throw if an error occurs '''\n"
                  "  try:\n"
                  "    os.unlink(file)\n"
                  "  except:\n"
-                 "    pass\n\n";
+                 "    pass\n\n"
+                 "def utf8ToDefaultEncoding(file):\n"
+                 "  ''' if possible, convert to the default encoding '''\n"
+                 "  try:\n"
+                 "    language, output_encoding = locale.getdefaultlocale()\n"
+                 "    if output_encoding == None:\n"
+                 "      output_encoding = 'latin1'\n"
+                 "    return unicode(file, 'utf8').encode(output_encoding)\n"
+                 "  except:\n"
+                 "    return file\n\n";
 
        // we do not use ChangeExtension because this is a basename
        // which may nevertheless contain a '.'
@@ -297,7 +306,7 @@ static void build_script(FileName const & from_file,
 
        EdgePath const edgepath = from_format.empty() ?
                EdgePath() :
-               converters.getPath(from_format, to_format);
+               theConverters().getPath(from_format, to_format);
 
        // Create a temporary base file-name for all intermediate steps.
        // Remember to remove the temp file because we only want the name...
@@ -311,7 +320,9 @@ static void build_script(FileName const & from_file,
        // in python, but the converters might be shell scripts and have more
        // troubles with it.
        string outfile = addExtension(to_base.absFilename(), getExtension(from_file.absFilename()));
-       script << "infile = " << quoteName(from_file.absFilename(), quote_python) << "\n"
+       script << "infile = utf8ToDefaultEncoding("
+                       << quoteName(from_file.absFilename(), quote_python)
+                       << ")\n"
                  "outfile = " << quoteName(outfile, quote_python) << "\n"
                  "shutil.copy(infile, outfile)\n";
 
@@ -360,7 +371,7 @@ static void build_script(FileName const & from_file,
        EdgePath::const_iterator end = edgepath.end();
 
        for (; it != end; ++it) {
-               lyx::Converter const & conv = converters.get(*it);
+               lyx::Converter const & conv = theConverters().get(*it);
 
                // Build the conversion command
                string const infile      = outfile;