]> git.lyx.org Git - lyx.git/blobdiff - src/layout.C
small changes to ButtonController usage
[lyx.git] / src / layout.C
index b11230df024af1e2044e59b465450fdfee619da7..797f2855b1fa6aad79398705c2e38b448553a457 100644 (file)
@@ -6,7 +6,8 @@
  *          Copyright 1995 Matthias Ettrich
  *          Copyright 1995-2000 The LyX Team.
  *
- * ====================================================== */
+ * ======================================================
+ */
 
 #include <config.h>
 
@@ -77,6 +78,7 @@ enum LayoutTags {
        LT_LABELSTRING, 
        LT_LABELSTRING_APPENDIX, 
        LT_LABELTYPE,
+       LT_ENDLABELSTRING,
        LT_ENDLABELTYPE,
        LT_LATEXNAME, 
        LT_LATEXPARAM, 
@@ -97,50 +99,6 @@ enum LayoutTags {
 };
 
 
-#if 0
-// This table is sorted alphabetically [asierra 30March96]
-static keyword_item layoutTags[] = {
-       { "align",                      LT_ALIGN },
-       { "alignpossible",              LT_ALIGNPOSSIBLE },
-       { "bottomsep",                  LT_BOTTOMSEP },
-       { "copystyle",                  LT_COPYSTYLE },
-       { "end",                        LT_END },
-       { "endlabeltype",               LT_ENDLABELTYPE },
-       { "fill_bottom",                LT_FILL_BOTTOM },
-       { "fill_top",                   LT_FILL_TOP },
-       { "font",                       LT_FONT },
-       { "freespacing",                LT_FREE_SPACING },
-       { "intitle",                    LT_INTITLE },
-       { "itemsep",                    LT_ITEMSEP },
-       { "keepempty",                  LT_KEEPEMPTY },
-       { "labelbottomsep",             LT_LABEL_BOTTOMSEP },
-       { "labelfont",                  LT_LABELFONT },
-       { "labelindent",                LT_LABELINDENT },
-       { "labelsep",                   LT_LABELSEP },
-       { "labelstring",                LT_LABELSTRING },
-       { "labelstringappendix",        LT_LABELSTRING_APPENDIX },
-       { "labeltype",                  LT_LABELTYPE },
-       { "latexname",                  LT_LATEXNAME },
-       { "latexparam",                 LT_LATEXPARAM },
-       { "latextype",                  LT_LATEXTYPE },
-       { "leftmargin",                 LT_LEFTMARGIN },
-       { "margin",                     LT_MARGIN },
-       { "needprotect",                LT_NEED_PROTECT },
-       { "newline",                    LT_NEWLINE },
-       { "nextnoindent",               LT_NEXTNOINDENT },
-       { "obsoletedby",                LT_OBSOLETEDBY },
-       { "parindent",                  LT_PARINDENT },
-       { "parsep",                     LT_PARSEP },
-       { "parskip",                    LT_PARSKIP },
-       { "preamble",                   LT_PREAMBLE },
-       { "rightmargin",                LT_RIGHTMARGIN },
-       { "spacing",                    LT_SPACING },
-       { "textfont",                   LT_TEXTFONT },
-       { "topsep",                     LT_TOPSEP }
-};
-#endif
-
-
 /////////////////////
 
 // Constructor for layout
@@ -178,7 +136,6 @@ LyXLayout::LyXLayout ()
 // Reads a layout definition from file
 bool LyXLayout::Read (LyXLex & lexrc, LyXTextClass const & tclass)
 {
-#if 1
        // This table is sorted alphabetically [asierra 30March96]
        keyword_item layoutTags[] = {
                { "align",                      LT_ALIGN },
@@ -186,6 +143,7 @@ bool LyXLayout::Read (LyXLex & lexrc, LyXTextClass const & tclass)
                { "bottomsep",                  LT_BOTTOMSEP },
                { "copystyle",                  LT_COPYSTYLE },
                { "end",                        LT_END },
+               { "endlabelstring",             LT_ENDLABELSTRING },
                { "endlabeltype",               LT_ENDLABELTYPE },
                { "fill_bottom",                LT_FILL_BOTTOM },
                { "fill_top",                   LT_FILL_TOP },
@@ -219,7 +177,7 @@ bool LyXLayout::Read (LyXLex & lexrc, LyXTextClass const & tclass)
                { "textfont",                   LT_TEXTFONT },
                { "topsep",                     LT_TOPSEP }
        };
-#endif
+
        bool error = false;
        bool finished = false;
        lexrc.pushTable(layoutTags, LT_INTITLE);
@@ -416,6 +374,11 @@ bool LyXLayout::Read (LyXLex & lexrc, LyXTextClass const & tclass)
                                labelstring_ = lexrc.GetString();
                        break;
 
+               case LT_ENDLABELSTRING: // endlabel string definition
+                       if (lexrc.next())
+                               endlabelstring_ = lexrc.GetString();
+                       break;
+
                case LT_LABELSTRING_APPENDIX: // label string appendix definition
                        if (lexrc.next())
                                labelstring_appendix_ = lexrc.GetString();
@@ -445,19 +408,8 @@ enum AlignTags {
 };
 
 
-#if 0
-static keyword_item alignTags[] = {
-       { "block",  AT_BLOCK },
-       { "center", AT_CENTER },
-       { "layout", AT_LAYOUT },
-       { "left",   AT_LEFT },
-       { "right",  AT_RIGHT }
-};
-#endif
-
 void LyXLayout::readAlign(LyXLex & lexrc)
 {
-#if 1
        keyword_item alignTags[] = {
                { "block",  AT_BLOCK },
                { "center", AT_CENTER },
@@ -465,7 +417,7 @@ void LyXLayout::readAlign(LyXLex & lexrc)
                { "left",   AT_LEFT },
                { "right",  AT_RIGHT }
        };
-#endif
+
        pushpophelper pph(lexrc, alignTags, AT_LAYOUT);
        int le = lexrc.lex();
        switch (le) {
@@ -496,7 +448,6 @@ void LyXLayout::readAlign(LyXLex & lexrc)
 
 void LyXLayout::readAlignPossible(LyXLex & lexrc)
 {
-#if 1
        keyword_item alignTags[] = {
                { "block",  AT_BLOCK },
                { "center", AT_CENTER },
@@ -504,7 +455,7 @@ void LyXLayout::readAlignPossible(LyXLex & lexrc)
                { "left",   AT_LEFT },
                { "right",  AT_RIGHT }
        };
-#endif
+
        lexrc.pushTable(alignTags, AT_LAYOUT);
        alignpossible = LYX_ALIGN_NONE;
        int lineno = lexrc.GetLineNo();
@@ -559,32 +510,8 @@ enum LabelTypeTags {
 };
 
 
-#if 0
-static keyword_item labelTypeTags[] = {
-       { "bibliography",             LA_BIBLIO },
-       { "centered_top_environment", LA_CENTERED_TOP_ENVIRONMENT },
-       { "counter_chapter",          LA_COUNTER_CHAPTER },
-       { "counter_enumi",            LA_COUNTER_ENUMI },
-       { "counter_enumii",           LA_COUNTER_ENUMII },
-       { "counter_enumiii",          LA_COUNTER_ENUMIII },
-       { "counter_enumiv",           LA_COUNTER_ENUMIV },
-       { "counter_paragraph",        LA_COUNTER_PARAGRAPH },
-       { "counter_section",          LA_COUNTER_SECTION },
-       { "counter_subparagraph",     LA_COUNTER_SUBPARAGRAPH },
-       { "counter_subsection",       LA_COUNTER_SUBSECTION },
-       { "counter_subsubsection",    LA_COUNTER_SUBSUBSECTION },
-       { "manual",                   LA_MANUAL },
-       { "no_label",                 LA_NO_LABEL },
-       { "sensitive",                LA_SENSITIVE },
-       { "static",                   LA_STATIC },
-       { "top_environment",          LA_TOP_ENVIRONMENT }
-};
-#endif
-
-
 void LyXLayout::readLabelType(LyXLex & lexrc)
 {
-#if 1
        keyword_item labelTypeTags[] = {
        { "bibliography",             LA_BIBLIO },
        { "centered_top_environment", LA_CENTERED_TOP_ENVIRONMENT },
@@ -604,7 +531,7 @@ void LyXLayout::readLabelType(LyXLex & lexrc)
        { "static",                   LA_STATIC },
        { "top_environment",          LA_TOP_ENVIRONMENT }
 };
-#endif
+
        pushpophelper pph(lexrc, labelTypeTags, LA_BIBLIO);
        int le = lexrc.lex();
        switch (le) {
@@ -671,7 +598,8 @@ void LyXLayout::readLabelType(LyXLex & lexrc)
 static keyword_item endlabelTypeTags[] = {
        { "box",        END_LABEL_BOX },
        { "filled_box", END_LABEL_FILLED_BOX },
-       { "no_label",   END_LABEL_NO_LABEL }
+       { "no_label",   END_LABEL_NO_LABEL },
+       { "static",     END_LABEL_STATIC }
 };
 
 void LyXLayout::readEndLabelType(LyXLex & lexrc)
@@ -683,6 +611,7 @@ void LyXLayout::readEndLabelType(LyXLex & lexrc)
        case LyXLex::LEX_UNDEF:
                lexrc.printError("Unknown labeltype tag `$$Token'");
                break;
+       case END_LABEL_STATIC:
        case END_LABEL_BOX:
        case END_LABEL_FILLED_BOX:
        case END_LABEL_NO_LABEL:
@@ -695,19 +624,9 @@ void LyXLayout::readEndLabelType(LyXLex & lexrc)
        }
 }
 
-#if 0
-static keyword_item marginTags[] = {
-       { "dynamic",           MARGIN_DYNAMIC },
-       { "first_dynamic",     MARGIN_FIRST_DYNAMIC },
-       { "manual",            MARGIN_MANUAL },
-       { "right_address_box", MARGIN_RIGHT_ADDRESS_BOX },
-       { "static",            MARGIN_STATIC }
-};
-#endif
 
 void LyXLayout::readMargin(LyXLex & lexrc)
 {
-#if 1
        keyword_item marginTags[] = {
                { "dynamic",           MARGIN_DYNAMIC },
                { "first_dynamic",     MARGIN_FIRST_DYNAMIC },
@@ -715,7 +634,7 @@ void LyXLayout::readMargin(LyXLex & lexrc)
                { "right_address_box", MARGIN_RIGHT_ADDRESS_BOX },
                { "static",            MARGIN_STATIC }
        };
-#endif
+
        pushpophelper pph(lexrc, marginTags, MARGIN_RIGHT_ADDRESS_BOX);
 
        int le = lexrc.lex();
@@ -738,28 +657,16 @@ void LyXLayout::readMargin(LyXLex & lexrc)
 }
 
 
-#if 0
-static keyword_item latexTypeTags[] = {
-       { "command",          LATEX_COMMAND },
-       { "environment",      LATEX_ENVIRONMENT },
-       { "item_environment", LATEX_ITEM_ENVIRONMENT },
-       { "list_environment", LATEX_LIST_ENVIRONMENT },
-       { "paragraph",        LATEX_PARAGRAPH }
-};
-#endif
-
-
 void LyXLayout::readLatexType(LyXLex & lexrc)
 {
-#if 1
        keyword_item latexTypeTags[] = {
                { "command",          LATEX_COMMAND },
                { "environment",      LATEX_ENVIRONMENT },
                { "item_environment", LATEX_ITEM_ENVIRONMENT },
                { "list_environment", LATEX_LIST_ENVIRONMENT },
                { "paragraph",        LATEX_PARAGRAPH }
-};
-#endif
+       };
+
        pushpophelper pph(lexrc, latexTypeTags, LATEX_LIST_ENVIRONMENT);
        int le = lexrc.lex();
        switch (le) {
@@ -789,26 +696,15 @@ enum SpacingTags {
 };
 
 
-#if 0
-static keyword_item spacingTags[] = {
-       {"double",  ST_SPACING_DOUBLE },
-       {"onehalf", ST_SPACING_ONEHALF },
-       {"other",   ST_OTHER },
-       {"single",  ST_SPACING_SINGLE }
-};
-#endif
-
-
 void LyXLayout::readSpacing(LyXLex & lexrc)
 {
-#if 1
        keyword_item spacingTags[] = {
                {"double",  ST_SPACING_DOUBLE },
                {"onehalf", ST_SPACING_ONEHALF },
                {"other",   ST_OTHER },
                {"single",  ST_SPACING_SINGLE }
        };
-#endif
+
        pushpophelper pph(lexrc, spacingTags, ST_OTHER);
        int le = lexrc.lex();
        switch(le) {
@@ -894,34 +790,9 @@ enum TextClassTags {
 };
 
 
-#if 0
-static keyword_item textClassTags[] = {
-       { "classoptions",    TC_CLASSOPTIONS },
-       { "columns",         TC_COLUMNS },
-       { "defaultfont",     TC_DEFAULTFONT },
-       { "input",           TC_INPUT },
-       { "leftmargin",      TC_LEFTMARGIN },
-       { "maxcounter",      TC_MAXCOUNTER },
-       { "nostyle",         TC_NOSTYLE },
-       { "outputtype",      TC_OUTPUTTYPE },
-       { "pagestyle",       TC_PAGESTYLE },
-       { "preamble",        TC_PREAMBLE },
-       { "providesamsmath", TC_PROVIDESAMSMATH },
-       { "providesmakeidx", TC_PROVIDESMAKEIDX },
-       { "providesurl",     TC_PROVIDESURL },
-       { "rightmargin",     TC_RIGHTMARGIN },
-       { "secnumdepth",     TC_SECNUMDEPTH },
-       { "sides",           TC_SIDES },
-       { "style",           TC_STYLE },
-       { "tocdepth",        TC_TOCDEPTH }
-};
-#endif
-
-
 // Reads a textclass structure from file.
 bool LyXTextClass::Read(string const & filename, bool merge)
 {
-#if 1
        keyword_item textClassTags[] = {
                { "classoptions",    TC_CLASSOPTIONS },
                { "columns",         TC_COLUMNS },
@@ -941,8 +812,8 @@ bool LyXTextClass::Read(string const & filename, bool merge)
                { "sides",           TC_SIDES },
                { "style",           TC_STYLE },
                { "tocdepth",        TC_TOCDEPTH }
-};
-#endif
+       };
+
        if (!merge)
                lyxerr[Debug::TCLASS] << "Reading textclass "
                                      << MakeDisplayPath(filename)
@@ -1050,7 +921,7 @@ bool LyXTextClass::Read(string const & filename, bool merge)
                        if (!defaultfont_.resolved()) {
                                lexrc.printError("Warning: defaultfont should "
                                                 "be fully instantiated!");
-                               defaultfont_.realize(LyXFont::ALL_SANE);
+                               defaultfont_.realize(LyXFont(LyXFont::ALL_SANE));
                        }
                        break;
 
@@ -1117,25 +988,15 @@ bool LyXTextClass::Read(string const & filename, bool merge)
 }
 
 
-#if 0
-static keyword_item outputTypeTags[] = {
-       { "docbook", DOCBOOK },
-       { "latex", LATEX },
-       { "linuxdoc", LINUXDOC },
-       { "literate", LITERATE }
-};
-#endif
-
 void LyXTextClass::readOutputType(LyXLex & lexrc)
 {
-#if 1
        keyword_item outputTypeTags[] = {
                { "docbook", DOCBOOK },
                { "latex", LATEX },
                { "linuxdoc", LINUXDOC },
                { "literate", LITERATE }
-};
-#endif
+       };
+
        pushpophelper pph(lexrc, outputTypeTags, LITERATE);
 
        int le = lexrc.lex();
@@ -1172,25 +1033,8 @@ enum MaxCounterTags {
 };
 
 
-#if 0
-static keyword_item maxCounterTags[] = {
-       {"counter_chapter", MC_COUNTER_CHAPTER },
-       {"counter_enumi", MC_COUNTER_ENUMI },
-       {"counter_enumii", MC_COUNTER_ENUMII },
-       {"counter_enumiii", MC_COUNTER_ENUMIII },
-       {"counter_enumiv", MC_COUNTER_ENUMIV },
-       {"counter_paragraph", MC_COUNTER_PARAGRAPH },
-       {"counter_section", MC_COUNTER_SECTION },
-       {"counter_subparagraph", MC_COUNTER_SUBPARAGRAPH },
-       {"counter_subsection", MC_COUNTER_SUBSECTION },
-       {"counter_subsubsection", MC_COUNTER_SUBSUBSECTION }
-};
-#endif
-
-
 void LyXTextClass::readMaxCounter(LyXLex & lexrc)
 {
-#if 1
        keyword_item maxCounterTags[] = {
                {"counter_chapter", MC_COUNTER_CHAPTER },
                {"counter_enumi", MC_COUNTER_ENUMI },
@@ -1203,7 +1047,7 @@ void LyXTextClass::readMaxCounter(LyXLex & lexrc)
                {"counter_subsection", MC_COUNTER_SUBSECTION },
                {"counter_subsubsection", MC_COUNTER_SUBSUBSECTION }
        };
-#endif
+
        pushpophelper pph(lexrc, maxCounterTags, MC_COUNTER_ENUMIV);
        int le = lexrc.lex();
        switch(le) {
@@ -1255,26 +1099,15 @@ enum ClassOptionsTags {
 };
 
 
-#if 0
-static keyword_item classOptionsTags[] = {
-       {"end", CO_END },
-       {"fontsize", CO_FONTSIZE },
-       {"other", CO_OTHER },
-       {"pagestyle", CO_PAGESTYLE }
-};
-#endif
-
-
 void LyXTextClass::readClassOptions(LyXLex & lexrc)
 {
-#if 1
        keyword_item classOptionsTags[] = {
                {"end", CO_END },
                {"fontsize", CO_FONTSIZE },
                {"other", CO_OTHER },
                {"pagestyle", CO_PAGESTYLE }
        };
-#endif
+
        lexrc.pushTable(classOptionsTags, CO_END);
        bool getout = false;
        while (!getout && lexrc.IsOK()) {
@@ -1383,7 +1216,8 @@ LyXTextClassList::NumberOfClass(string const & textclass) const
        for (ClassList::const_iterator cit = classlist.begin();
             cit != classlist.end(); ++cit) {
                if ((*cit).name() == textclass)
-                       return make_pair(true, cit - classlist.begin());
+                       return make_pair(true,
+                                        size_type(cit - classlist.begin()));
        }
        return make_pair(false, size_type(0));
 }
@@ -1412,8 +1246,8 @@ LyXTextClassList::NumberOfLayout(LyXTextClassList::size_type textclass,
                        return make_pair(true, i);
        }
        if (name == "dummy")
-               return make_pair(true, LYX_DUMMY_LAYOUT);
-       return make_pair(false, LyXTextClass::LayoutList::size_type(0)); // not found
+               return make_pair(true, LyXTextClassList::size_type(LYX_DUMMY_LAYOUT));
+       return make_pair(false, LyXTextClass::size_type(0)); // not found
 }
 
 
@@ -1602,3 +1436,17 @@ LyXTextClassList::Load (LyXTextClassList::size_type number) const
        }
        return result;
 }
+
+
+std::ostream & operator<<(std::ostream & os, LyXTextClass::PageSides p)
+{
+       switch (p) {
+       case LyXTextClass::OneSide:
+               os << "1";
+               break;
+       case LyXTextClass::TwoSides:
+               os << "2";
+               break;
+       }
+       return os;
+}