]> git.lyx.org Git - lyx.git/blobdiff - src/TextClass.cpp
Cmake tests: macro setmarkedtestlabel() worked only by chance
[lyx.git] / src / TextClass.cpp
index 02fc86e9f96aaadd48a1f085b1e8ffc775dcde28..17fc266ebdf0dc5fb2b1730a4d2ccaba93a7a845 100644 (file)
@@ -61,7 +61,7 @@ namespace lyx {
 // You should also run the development/tools/updatelayouts.py script,
 // to update the format of all of our layout files.
 //
-int const LAYOUT_FORMAT = 55; //spitz: InsetLayout and Layout tags PassThruChars
+int const LAYOUT_FORMAT = 57; //spitz: New Layout tag ParagraphGroup
 
 namespace {
 
@@ -139,22 +139,16 @@ InsetLayout DocumentClass::plain_insetlayout_;
 /////////////////////////////////////////////////////////////////////////
 
 TextClass::TextClass()
+       : loaded_(false), tex_class_avail_(false),
+         opt_enginetype_("authoryear|numerical"), opt_fontsize_("10|11|12"),
+         opt_pagestyle_("empty|plain|headings|fancy"), pagestyle_("default"),
+         columns_(1), sides_(OneSide), secnumdepth_(3), tocdepth_(3),
+         outputType_(LATEX), outputFormat_("latex"),
+         defaultfont_(sane_font),
+         titletype_(TITLE_COMMAND_AFTER), titlename_("maketitle"),
+         min_toclevel_(0), max_toclevel_(0),
+         cite_full_author_list_(true)
 {
-       outputType_ = LATEX;
-       outputFormat_ = "latex";
-       columns_ = 1;
-       sides_ = OneSide;
-       secnumdepth_ = 3;
-       tocdepth_ = 3;
-       pagestyle_ = "default";
-       defaultfont_ = sane_font;
-       opt_enginetype_ = "authoryear|numerical";
-       opt_fontsize_ = "10|11|12";
-       opt_pagestyle_ = "empty|plain|headings|fancy";
-       cite_full_author_list_ = true;
-       titletype_ = TITLE_COMMAND_AFTER;
-       titlename_ = "maketitle";
-       loaded_ = false;
 }
 
 
@@ -256,7 +250,7 @@ LexerKeyword textClassTags[] = {
        { "nostyle",           TC_NOSTYLE },
        { "outputformat",      TC_OUTPUTFORMAT },
        { "outputtype",        TC_OUTPUTTYPE },
-       { "packageoptions",        TC_PKGOPTS },
+       { "packageoptions",    TC_PKGOPTS },
        { "pagestyle",         TC_PAGESTYLE },
        { "preamble",          TC_PREAMBLE },
        { "provides",          TC_PROVIDES },
@@ -419,8 +413,8 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt)
                }
 
                // used below to track whether we are in an IfStyle or IfCounter tag.
-               bool ifstyle    = false;
-               bool ifcounter  = false;
+               bool ifstyle   = false;
+               bool ifcounter = false;
 
                switch (static_cast<TextClassTags>(le)) {
 
@@ -514,9 +508,6 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt)
                                Layout lay;
                                readStyle(lexrc, lay);
                        }
-
-                       // reset flag
-                       ifstyle = false;
                        break;
                }
 
@@ -751,6 +742,7 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt)
 
                case TC_IFCOUNTER:
                        ifcounter = true;
+                       // fall through
                case TC_COUNTER:
                        if (lexrc.next()) {
                                docstring const name = lexrc.getDocString();
@@ -769,8 +761,6 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt)
                                lexrc.printError("No name given for style: `$$Token'.");
                                error = true;
                        }
-                       // reset flag
-                       ifcounter = false;
                        break;
 
                case TC_TITLELATEXTYPE:
@@ -802,7 +792,7 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt)
                return ERROR;
 
        if (rt != BASECLASS)
-               return (error ? ERROR : OK);
+               return OK;
 
        if (defaultlayout_.empty()) {
                LYXERR0("Error: Textclass '" << name_
@@ -1097,10 +1087,16 @@ bool TextClass::readFloat(Lexer & lexrc)
                FT_HTMLTAG,
                FT_LISTCOMMAND,
                FT_REFPREFIX,
+               FT_ALLOWED_PLACEMENT,
+               FT_ALLOWS_SIDEWAYS,
+               FT_ALLOWS_WIDE,
                FT_END
        };
 
        LexerKeyword floatTags[] = {
+               { "allowedplacement", FT_ALLOWED_PLACEMENT },
+               { "allowssideways", FT_ALLOWS_SIDEWAYS },
+               { "allowswide", FT_ALLOWS_WIDE },
                { "end", FT_END },
                { "extension", FT_EXT },
                { "guiname", FT_NAME },
@@ -1128,12 +1124,15 @@ bool TextClass::readFloat(Lexer & lexrc)
        string listcommand;
        string name;
        string placement;
+       string allowed_placement = "!htbpH";
        string refprefix;
        string style;
        string type;
        string within;
        bool usesfloat = true;
        bool ispredefined = false;
+       bool allowswide = true;
+       bool allowssideways = true;
 
        bool getout = false;
        while (!getout && lexrc.isOK()) {
@@ -1171,6 +1170,10 @@ bool TextClass::readFloat(Lexer & lexrc)
                        lexrc.next();
                        placement = lexrc.getString();
                        break;
+               case FT_ALLOWED_PLACEMENT:
+                       lexrc.next();
+                       allowed_placement = lexrc.getString();
+                       break;
                case FT_EXT:
                        lexrc.next();
                        ext = lexrc.getString();
@@ -1205,6 +1208,14 @@ bool TextClass::readFloat(Lexer & lexrc)
                        lexrc.next();
                        ispredefined = lexrc.getBool();
                        break;
+               case FT_ALLOWS_SIDEWAYS:
+                       lexrc.next();
+                       allowssideways = lexrc.getBool();
+                       break;
+               case FT_ALLOWS_WIDE:
+                       lexrc.next();
+                       allowswide = lexrc.getBool();
+                       break;
                case FT_HTMLATTR:
                        lexrc.next();
                        htmlattr = lexrc.getString();
@@ -1245,8 +1256,9 @@ bool TextClass::readFloat(Lexer & lexrc)
                                  "not be able to produce a float list.");
                }
                Floating fl(type, placement, ext, within, style, name,
-                               listname, listcommand, refprefix,
-                               htmltag, htmlattr, htmlstyle, usesfloat, ispredefined);
+                           listname, listcommand, refprefix, allowed_placement,
+                           htmltag, htmlattr, htmlstyle, usesfloat, ispredefined,
+                           allowswide, allowssideways);
                floatlist_.newFloat(fl);
                // each float has its own counter
                counters_.newCounter(from_ascii(type), from_ascii(within),