]> git.lyx.org Git - lyx.git/blobdiff - src/ParagraphParameters.C
* QPrefsDialog::QPrefsDialog():
[lyx.git] / src / ParagraphParameters.C
index a1e62c521ef25ea99bf1222c5b7dbc193fa00b31..1f5da6720a93de1cb22715edf5508c2a1a17f7d3 100644 (file)
@@ -38,6 +38,26 @@ using std::ostream;
 using std::ostringstream;
 using std::string;
 
+// anonym namespace
+namespace {
+int findToken(char const * const str[], string const search_token)
+{
+       int i = 0;
+
+       if (search_token != "default") {
+               while (str[i][0] && str[i] != search_token) {
+                       ++i;
+               }
+               if (!str[i][0]) {
+                       i = -1;
+               }
+       }
+
+       return i;
+}
+
+}
+
 
 ParagraphParameters::ParagraphParameters()
        : noindent_(false),
@@ -186,7 +206,7 @@ void ParagraphParameters::read(LyXLex & lex)
                if (token == "\\noindent") {
                        noindent(true);
                } else if (token == "\\leftindent") {
-                       lex.nextToken();
+                       lex.next();
                        LyXLength value(lex.getString());
                        leftIndent(value);
                } else if (token == "\\start_of_appendix") {
@@ -203,12 +223,13 @@ void ParagraphParameters::read(LyXLex & lex)
                        } else if (tmp == "other") {
                                lex.next();
                                spacing(Spacing(Spacing::Other,
-                                                lex.getFloat()));
+                                                lex.getString()));
                        } else {
                                lex.printError("Unknown spacing token: '$$Token'");
                        }
                } else if (token == "\\align") {
-                       int tmpret = lex.findToken(string_align);
+                       lex.next();
+                       int tmpret = findToken(string_align, lex.getString());
                        if (tmpret == -1)
                                ++tmpret;
                        align(LyXAlignment(1 << tmpret));
@@ -225,28 +246,25 @@ void ParagraphParameters::read(LyXLex & lex)
 
 void ParagraphParameters::write(ostream & os) const
 {
-       ostringstream oss;
-
        // Maybe the paragraph has special spacing
-       spacing().writeFile(oss, true);
+       spacing().writeFile(os, true);
 
        // The labelwidth string used in lists.
        if (!labelWidthString().empty())
-               oss << "\\labelwidthstring "
+               os << "\\labelwidthstring "
                   << labelWidthString() << '\n';
 
        // Start of appendix?
        if (startOfAppendix())
-               oss << "\\start_of_appendix ";
+               os << "\\start_of_appendix\n";
 
        // Noindent?
        if (noindent())
-               oss << "\\noindent ";
+               os << "\\noindent\n";
 
        // Do we have a manual left indent?
        if (!leftIndent().zero())
-               oss << "\\leftindent " << leftIndent().asString()
-                  << ' ';
+               os << "\\leftindent " << leftIndent().asString() << '\n';
 
        // Alignment?
        if (align() != LYX_ALIGN_LAYOUT) {
@@ -257,9 +275,8 @@ void ParagraphParameters::write(ostream & os) const
                case LYX_ALIGN_CENTER: h = 3; break;
                default: h = 0; break;
                }
-               oss << "\\align " << string_align[h] << ' ';
+               os << "\\align " << string_align[h] << '\n';
        }
-       os << rtrim(oss.str());
 }
 
 
@@ -280,7 +297,7 @@ void params2string(Paragraph const & par, string & data)
        params.write(os);
 
        // Is alignment possible
-       os << '\n' << "\\alignpossible " << layout->alignpossible << '\n';
+       os << "\\alignpossible " << layout->alignpossible << '\n';
 
        /// set default alignment
        os << "\\aligndefault " << layout->align << '\n';