]> git.lyx.org Git - features.git/blobdiff - src/Layout.cpp
Allow to separate menu string from label string for arguments
[features.git] / src / Layout.cpp
index a5d3550ffb493b8ce5dadf2510f307610a890877..1c8aac8ad4a04be7358fcc691f0450b7d18b21bd 100644 (file)
@@ -322,8 +322,10 @@ bool Layout::read(Lexer & lex, TextClass const & tclass)
                case LT_RESETARGS:
                        bool reset;
                        lex >> reset;
-                       if (reset)
+                       if (reset) {
                                latexargs_.clear();
+                               itemargs_.clear();
+                       }
                        break;
 
                case LT_ARGUMENT:
@@ -370,10 +372,14 @@ bool Layout::read(Lexer & lex, TextClass const & tclass)
 
                case LT_LEFTDELIM:
                        lex >> leftdelim_;
+                       leftdelim_ = support::subst(leftdelim_, from_ascii("<br/>"),
+                                                   from_ascii("\n"));
                        break;
 
                case LT_RIGHTDELIM:
                        lex >> rightdelim_;
+                       rightdelim_ = support::subst(rightdelim_, from_ascii("<br/>"),
+                                                    from_ascii("\n"));
                        break;
 
                case LT_INNERTAG:
@@ -877,8 +883,12 @@ void Layout::readArgument(Lexer & lex)
        arg.mandatory = false;
        bool error = false;
        bool finished = false;
-       unsigned int nr;
-       lex >> nr;
+       arg.font = inherit_font;
+       arg.labelfont = inherit_font;
+       string id;
+       lex >> id;
+       bool const itemarg = prefixIs(id, "item:");
+
        while (!finished && lex.isOK() && !error) {
                lex.next();
                string const tok = ascii_lowercase(lex.getString());
@@ -890,21 +900,35 @@ void Layout::readArgument(Lexer & lex)
                } else if (tok == "labelstring") {
                        lex.next();
                        arg.labelstring = lex.getDocString();
+               } else if (tok == "menustring") {
+                       lex.next();
+                       arg.menustring = lex.getDocString();
                } else if (tok == "mandatory") {
                        lex.next();
                        arg.mandatory = lex.getBool();
                } else if (tok == "leftdelim") {
                        lex.next();
                        arg.ldelim = lex.getDocString();
+                       arg.ldelim = support::subst(arg.ldelim, from_ascii("<br/>"),
+                                                   from_ascii("\n"));
                } else if (tok == "rightdelim") {
                        lex.next();
                        arg.rdelim = lex.getDocString();
+                       arg.rdelim = support::subst(arg.rdelim, from_ascii("<br/>"),
+                                                   from_ascii("\n"));
                } else if (tok == "tooltip") {
                        lex.next();
                        arg.tooltip = lex.getDocString();
                } else if (tok == "requires") {
                        lex.next();
                        arg.requires = lex.getString();
+               } else if (tok == "decoration") {
+                       lex.next();
+                       arg.decoration = lex.getString();
+               } else if (tok == "font") {
+                       arg.font = lyxRead(lex, arg.font);
+               } else if (tok == "labelfont") {
+                       arg.labelfont = lyxRead(lex, arg.labelfont);
                } else {
                        lex.printError("Unknown tag");
                        error = true;
@@ -912,8 +936,10 @@ void Layout::readArgument(Lexer & lex)
        }
        if (arg.labelstring.empty())
                LYXERR0("Incomplete Argument definition!");
+       else if (itemarg)
+               itemargs_[id] = arg;
        else
-               latexargs_[nr] = arg;
+               latexargs_[id] = arg;
 }