]> git.lyx.org Git - lyx.git/blobdiff - src/Layout.cpp
Do not overwrite read-only files. We now move the file to the backup directory and...
[lyx.git] / src / Layout.cpp
index 83bd6086870072c245cc756f52e2114f18ba3eab..5ba77ce1c6d0c67a0c8983d6f4c4231b6b5ed5a9 100644 (file)
@@ -23,8 +23,9 @@
 #include "support/lassert.h"
 #include "support/lstrings.h"
 #include "support/Messages.h"
-
 #include "support/regex.h"
+#include "support/textutils.h"
+
 
 using namespace std;
 using namespace lyx::support;
@@ -183,7 +184,7 @@ bool Layout::read(Lexer & lex, TextClass const & tclass)
                { "htmllabel",      LT_HTMLLABEL },
                { "htmllabelattr",  LT_HTMLLABELATTR },
                { "htmllabelfirst", LT_HTMLLABELFIRST },
-               { "htmlpremable",   LT_HTMLPREAMBLE },
+               { "htmlpreamble",   LT_HTMLPREAMBLE },
                { "htmlstyle",      LT_HTMLSTYLE },
                { "htmltag",        LT_HTMLTAG },
                { "htmltitle",      LT_HTMLTITLE },
@@ -996,23 +997,29 @@ string Layout::defaultCSSClass() const
        docstring::const_iterator it = name().begin();
        docstring::const_iterator en = name().end();
        for (; it != en; ++it) {
-               if (!isalpha(*it))
-                       continue;
-               if (islower(*it))
-                       d += *it;
-               else 
-                       d += lowercase(*it);
+               char_type const c = *it;
+               if (!isAlphaASCII(c)) {
+                       if (d.empty())
+                               // make sure we don't start with an underscore,
+                               // as that sometimes causes problems.
+                               d = from_ascii("lyx_");
+                       else
+                               d += '_';
+               } else if (islower(c))
+                       d += c;
+               else
+                       // this is slow, so do it only if necessary
+                       d += lowercase(c);
        }
-       // are there other characters we need to remove?
        defaultcssclass_ = to_utf8(d);
        return defaultcssclass_;
 }
 
 
 namespace {
-       string makeMarginValue(double d) {
+       string makeMarginValue(char const * side, double d) {
                ostringstream os;
-               os << d << "ex";
+               os << "margin-" << side << ": " << d << "ex;\n";
                return os.str();
        }
 }
@@ -1027,12 +1034,23 @@ void Layout::makeDefaultCSS() const {
        // main font
        htmldefaultstyle_ = font.asCSS();
        
-       // top and bottom margins
+       // bottom margins
        string tmp;
        if (topsep > 0)
-               tmp += "margin-top: " + makeMarginValue(topsep) + ";\n";
+               tmp += makeMarginValue("top", topsep);
        if (bottomsep > 0)
-               tmp += "margin-bottom: " + makeMarginValue(bottomsep) + ";\n";
+               tmp += makeMarginValue("bottom", bottomsep);
+       if (!leftmargin.empty()) {
+               // we can't really do what LyX does with the margin, so 
+               // we'll just figure out how many characters it is
+               int const len = leftmargin.length();
+               tmp += makeMarginValue("left", len);
+       }
+       if (!rightmargin.empty()) {
+               int const len = rightmargin.length();
+               tmp += makeMarginValue("right", len);
+       }
+               
        if (!tmp.empty()) {
                if (!htmldefaultstyle_.empty())
                        htmldefaultstyle_ += from_ascii("\n");