]> git.lyx.org Git - lyx.git/blobdiff - src/TextClass.cpp
Pass the encoding to the japanese pLaTeX processor (#4697).
[lyx.git] / src / TextClass.cpp
index edf66b3b34048dc5e36d21d049a99d7061f0dd4c..0ab0c5ce88c1ce31b5ef6a5e0f86606ddfcd9bc8 100644 (file)
@@ -60,7 +60,7 @@ namespace lyx {
 // development/updatelayouts.sh script, to update the format of 
 // all of our layout files.
 //
-int const LAYOUT_FORMAT = 33;
+int const LAYOUT_FORMAT = 35;
        
 namespace {
 
@@ -268,6 +268,29 @@ bool TextClass::convertLayoutFormat(support::FileName const & filename, ReadType
 }
 
 
+std::string TextClass::convert(std::string const & str)
+{
+       FileName const fn = FileName::tempName("locallayout");
+       ofstream os(fn.toFilesystemEncoding().c_str());
+       os << str;
+       os.close();
+       FileName const tempfile = FileName::tempName("convert_locallayout");
+       bool success = layout2layout(fn, tempfile);
+       if (!success)
+               return "";
+       ifstream is(tempfile.toFilesystemEncoding().c_str());
+       string ret;
+       string tmp;
+       while (!is.eof()) {
+               getline(is, tmp);
+               ret += tmp + '\n';
+       }
+       is.close();
+       tempfile.removeFile();
+       return ret;
+}
+
+
 TextClass::ReturnValues TextClass::readWithoutConv(FileName const & filename, ReadType rt)
 {
        if (!filename.isReadableFile()) {
@@ -303,23 +326,21 @@ bool TextClass::read(FileName const & filename, ReadType rt)
                return retval == OK;
 
        bool const worx = convertLayoutFormat(filename, rt);
-       if (!worx) {
+       if (!worx)
                LYXERR0 ("Unable to convert " << filename << 
                        " to format " << LAYOUT_FORMAT);
-               return false;
-       }
-       return true;
+       return worx;
 }
 
 
-bool TextClass::validate(std::string const & str)
+TextClass::ReturnValues TextClass::validate(std::string const & str)
 {
        TextClass tc;
        return tc.read(str, VALIDATION);
 }
 
 
-bool TextClass::read(std::string const & str, ReadType rt) 
+TextClass::ReturnValues TextClass::read(std::string const & str, ReadType rt)
 {
        Lexer lexrc(textClassTags);
        istringstream is(str);
@@ -327,14 +348,14 @@ bool TextClass::read(std::string const & str, ReadType rt)
        ReturnValues retval = read(lexrc, rt);
 
        if (retval != FORMAT_MISMATCH) 
-               return retval == OK;
+               return retval;
 
        // write the layout string to a temporary file
        FileName const tempfile = FileName::tempName("TextClass_read");
        ofstream os(tempfile.toFilesystemEncoding().c_str());
        if (!os) {
                LYXERR0("Unable to create temporary file");
-               return false;
+               return ERROR;
        }
        os << str;
        os.close();
@@ -344,9 +365,10 @@ bool TextClass::read(std::string const & str, ReadType rt)
        if (!worx) {
                LYXERR0("Unable to convert internal layout information to format " 
                        << LAYOUT_FORMAT);
+               return ERROR;
        }
        tempfile.removeFile();
-       return worx;
+       return OK_OLDFORMAT;
 }
 
 
@@ -1199,10 +1221,13 @@ bool TextClass::load(string const & path) const
 }
 
 
-void DocumentClass::addLayoutIfNeeded(docstring const & n) const
+bool DocumentClass::addLayoutIfNeeded(docstring const & n) const
 {
-       if (!hasLayout(n))
-               layoutlist_.push_back(createBasicLayout(n, true));
+       if (hasLayout(n))
+               return false;
+
+       layoutlist_.push_back(createBasicLayout(n, true));
+       return true;
 }