]> git.lyx.org Git - lyx.git/blobdiff - src/TextClass.cpp
Add a preference option to specify the default length unit (cm or in).
[lyx.git] / src / TextClass.cpp
index 1d1b3f6aaf042d3cb89b71701d7bdcc81048a959..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;
 }
 
 
@@ -979,6 +1001,7 @@ bool TextClass::readFloat(Lexer & lexrc)
                                name = fl.name();
                                listname = fl.listName();
                                usesfloat = fl.usesFloatPkg();
+                               ispredefined = fl.isPredefined();
                                listcommand = fl.listCommand();
                                refprefix = fl.refPrefix();
                        } 
@@ -1198,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;
 }
 
 
@@ -1226,7 +1252,6 @@ InsetLayout const & DocumentClass::insetLayout(docstring const & name) const
 
 docstring const & TextClass::defaultLayoutName() const
 {
-       // This really should come from the actual layout... (Lgb)
        return defaultlayout_;
 }