]> git.lyx.org Git - lyx.git/blobdiff - src/BufferParams.cpp
Add support for document-local layout information. GUI is to follow.
[lyx.git] / src / BufferParams.cpp
index 84c066114db628724a7b35f2d6c8df0623662498..9302a35c294e43881eeebd47bbbf8816bbb004f9 100644 (file)
@@ -95,13 +95,14 @@ namespace lyx {
 namespace {
 
 // Paragraph separation
-typedef Translator<string, BufferParams::PARSEP> ParSepTranslator;
+typedef Translator<string, BufferParams::ParagraphSeparation> ParSepTranslator;
 
 
 ParSepTranslator const init_parseptranslator()
 {
-       ParSepTranslator translator(string_paragraph_separation[0], BufferParams::PARSEP_INDENT);
-       translator.addPair(string_paragraph_separation[1], BufferParams::PARSEP_SKIP);
+       ParSepTranslator translator
+               (string_paragraph_separation[0], BufferParams::ParagraphIndentSeparation);
+       translator.addPair(string_paragraph_separation[1], BufferParams::ParagraphSkipSeparation);
        return translator;
 }
 
@@ -114,17 +115,18 @@ ParSepTranslator const & parseptranslator()
 
 
 // Quotes language
-typedef Translator<string, InsetQuotes::quote_language> QuotesLangTranslator;
+typedef Translator<string, InsetQuotes::QuoteLanguage> QuotesLangTranslator;
 
 
 QuotesLangTranslator const init_quoteslangtranslator()
 {
-       QuotesLangTranslator translator(string_quotes_language[0], InsetQuotes::EnglishQ);
-       translator.addPair(string_quotes_language[1], InsetQuotes::SwedishQ);
-       translator.addPair(string_quotes_language[2], InsetQuotes::GermanQ);
-       translator.addPair(string_quotes_language[3], InsetQuotes::PolishQ);
-       translator.addPair(string_quotes_language[4], InsetQuotes::FrenchQ);
-       translator.addPair(string_quotes_language[5], InsetQuotes::DanishQ);
+       QuotesLangTranslator translator
+               (string_quotes_language[0], InsetQuotes::EnglishQuotes);
+       translator.addPair(string_quotes_language[1], InsetQuotes::SwedishQuotes);
+       translator.addPair(string_quotes_language[2], InsetQuotes::GermanQuotes);
+       translator.addPair(string_quotes_language[3], InsetQuotes::PolishQuotes);
+       translator.addPair(string_quotes_language[4], InsetQuotes::FrenchQuotes);
+       translator.addPair(string_quotes_language[5], InsetQuotes::DanishQuotes);
        return translator;
 }
 
@@ -140,7 +142,7 @@ QuotesLangTranslator const & quoteslangtranslator()
 typedef Translator<string, PAPER_SIZE> PaperSizeTranslator;
 
 
-PaperSizeTranslator const init_papersizetranslator()
+static PaperSizeTranslator initPaperSizeTranslator()
 {
        PaperSizeTranslator translator(string_papersize[0], PAPER_DEFAULT);
        translator.addPair(string_papersize[1], PAPER_CUSTOM);
@@ -159,7 +161,7 @@ PaperSizeTranslator const init_papersizetranslator()
 
 PaperSizeTranslator const & papersizetranslator()
 {
-       static PaperSizeTranslator translator = init_papersizetranslator();
+       static PaperSizeTranslator translator = initPaperSizeTranslator();
        return translator;
 }
 
@@ -317,8 +319,8 @@ BufferParams::BufferParams()
 {
        setBaseClass(defaultBaseclass());
        makeDocumentClass();
-       paragraph_separation = PARSEP_INDENT;
-       quotes_language = InsetQuotes::EnglishQ;
+       paragraph_separation = ParagraphIndentSeparation;
+       quotes_language = InsetQuotes::EnglishQuotes;
        fontsize = "default";
 
        /*  PaperLayout */
@@ -349,7 +351,7 @@ BufferParams::BufferParams()
        listings_params = string();
        pagestyle = "default";
        compressed = false;
-       embedded = false;
+       embedded = lyxrc.use_bundled_format;
        for (int iter = 0; iter < 4; ++iter) {
                user_defined_bullet(iter) = ITEMIZE_DEFAULTS[iter];
                temp_bullet(iter) = ITEMIZE_DEFAULTS[iter];
@@ -357,11 +359,7 @@ BufferParams::BufferParams()
 }
 
 
-BufferParams::~BufferParams()
-{}
-
-
-docstring const BufferParams::B_(string const & l10n) const
+docstring BufferParams::B_(string const & l10n) const
 {
        BOOST_ASSERT(language);
        return getMessages(language->code()).get(l10n);
@@ -468,7 +466,7 @@ void BufferParams::setDefSkip(VSpace const & vs)
 }
 
 
-string const BufferParams::readToken(Lexer & lex, string const & token,
+string BufferParams::readToken(Lexer & lex, string const & token,
        FileName const & filepath, FileName const & temppath)
 {
        if (token == "\\textclass") {
@@ -508,6 +506,8 @@ string const BufferParams::readToken(Lexer & lex, string const & token,
                
        } else if (token == "\\begin_preamble") {
                readPreamble(lex);
+       } else if (token == "\\begin_local_layout") {
+               readLocalLayout(lex);
        } else if (token == "\\begin_modules") {
                readModules(lex);
        } else if (token == "\\options") {
@@ -724,6 +724,15 @@ void BufferParams::writeFile(ostream & os) const
                os << "\\end_modules" << '\n';
        }
 
+       // local layout information
+       if (!local_layout.empty()) {
+               // remove '\n' from the end 
+               string const tmplocal = rtrim(local_layout, "\n");
+               os << "\\begin_local_layout\n"
+                  << tmplocal
+                  << "\n\\end_local_layout\n";
+       }
+
        // then the text parameters
        if (language != ignore_language)
                os << "\\language " << language->lang() << '\n';
@@ -1503,6 +1512,12 @@ void BufferParams::makeDocumentClass()
                        frontend::Alert::warning(_("Read Error"), msg);
                }
        }
+       if (!local_layout.empty()) {
+               if (!doc_class_->read(local_layout, TextClass::MODULE)) {
+                       docstring const msg = _("Error reading internal layout information");
+                       frontend::Alert::warning(_("Read Error"), msg);
+               }
+       }
 }
 
 
@@ -1557,6 +1572,16 @@ void BufferParams::readPreamble(Lexer & lex)
 }
 
 
+void BufferParams::readLocalLayout(Lexer & lex)
+{
+       if (lex.getString() != "\\begin_local_layout")
+               lyxerr << "Error (BufferParams::readLocalLayout):"
+                       "consistency check failed." << endl;
+
+       local_layout = lex.getLongString("\\end_local_layout");
+}
+
+
 void BufferParams::readLanguage(Lexer & lex)
 {
        if (!lex.next()) return;
@@ -1650,7 +1675,7 @@ void BufferParams::readModules(Lexer & lex)
 }
 
 
-string const BufferParams::paperSizeName(Papersize_Purpose const & purpose) const
+string BufferParams::paperSizeName(PapersizePurpose purpose) const
 {
        char real_papersize = papersize;
        if (real_papersize == PAPER_DEFAULT)
@@ -1742,7 +1767,7 @@ string const BufferParams::dvips_options() const
 }
 
 
-string const BufferParams::babelCall(string const & lang_opts) const
+string BufferParams::babelCall(string const & lang_opts) const
 {
        string lang_pack = lyxrc.language_package;
        if (lang_pack != "\\usepackage{babel}")
@@ -1961,7 +1986,7 @@ string const BufferParams::loadFonts(string const & rm,
        else if (tt == "courier" )
                os << "\\usepackage{" << tt << "}\n";
        // Computer Modern, Latin Modern, CM Bright
-       else if  (tt != "default")
+       else if (tt != "default")
                os << "\\renewcommand{\\ttdefault}{" << tt << "}\n";
 
        return os.str();
@@ -1971,18 +1996,17 @@ string const BufferParams::loadFonts(string const & rm,
 Encoding const & BufferParams::encoding() const
 {
        if (inputenc == "auto" || inputenc == "default")
-               return *(language->encoding());
-       Encoding const * const enc =
-               encodings.getFromLaTeXName(inputenc);
+               return *language->encoding();
+       Encoding const * const enc = encodings.fromLaTeXName(inputenc);
        if (enc)
                return *enc;
-       lyxerr << "Unknown inputenc value `" << inputenc
-              << "'. Using `auto' instead." << endl;
-       return *(language->encoding());
+       LYXERR0("Unknown inputenc value `" << inputenc
+              << "'. Using `auto' instead.");
+       return *language->encoding();
 }
 
 
-biblio::CiteEngine BufferParams::getEngine() const
+biblio::CiteEngine BufferParams::citeEngine() const
 {
        // FIXME the class should provide the numerical/
        // authoryear choice
@@ -1993,7 +2017,7 @@ biblio::CiteEngine BufferParams::getEngine() const
 }
 
 
-void BufferParams::setCiteEngine(biblio::CiteEngine const cite_engine)
+void BufferParams::setCiteEngine(biblio::CiteEngine cite_engine)
 {
        cite_engine_ = cite_engine;
 }