]> git.lyx.org Git - lyx.git/blobdiff - src/TextClass.cpp
Typo.
[lyx.git] / src / TextClass.cpp
index 2d79a2b75528d5b9b270c40057afd6974a4762af..b3ac4898513fe72ffcfd1455e8147e1e1733fe6a 100644 (file)
@@ -27,6 +27,7 @@
 
 #include "frontends/alert.h"
 
+#include "support/lassert.h"
 #include "support/debug.h"
 #include "support/ExceptionMessage.h"
 #include "support/FileName.h"
@@ -39,8 +40,6 @@
 #include <fstream>
 #include <sstream>
 
-#include "boost/assert.hpp"
-
 using namespace std;
 using namespace lyx::support;
 
@@ -69,8 +68,8 @@ bool layout2layout(FileName const & filename, FileName const & tempfile)
 {
        FileName const script = libFileSearch("scripts", "layout2layout.py");
        if (script.empty()) {
-               lyxerr << "Could not find layout conversion "
-                         "script layout2layout.py." << endl;
+               LYXERR0("Could not find layout conversion "
+                         "script layout2layout.py.");
                return false;
        }
 
@@ -82,11 +81,9 @@ bool layout2layout(FileName const & filename, FileName const & tempfile)
 
        LYXERR(Debug::TCLASS, "Running `" << command_str << '\'');
 
-       cmd_ret const ret =
-               runCommand(command_str);
+       cmd_ret const ret = runCommand(command_str);
        if (ret.first != 0) {
-               lyxerr << "Could not run layout conversion "
-                         "script layout2layout.py." << endl;
+               LYXERR0("Could not run layout conversion script layout2layout.py.");
                return false;
        }
        return true;
@@ -112,12 +109,20 @@ std::string translateRT(TextClass::ReadType rt)
 } // namespace anon
 
 
-docstring const TextClass::emptylayout_ = from_ascii(N_("Plain Layout"));
+// This string should not be translated here, 
+// because it is a layout identifier.
+docstring const TextClass::emptylayout_ = from_ascii("Plain Layout");
 
 
 InsetLayout DocumentClass::empty_insetlayout_;
 
 
+/////////////////////////////////////////////////////////////////////////
+//
+// TextClass
+//
+/////////////////////////////////////////////////////////////////////////
+
 TextClass::TextClass()
 {
        outputType_ = LATEX;
@@ -132,6 +137,7 @@ TextClass::TextClass()
        titletype_ = TITLE_COMMAND_AFTER;
        titlename_ = "maketitle";
        loaded_ = false;
+       _("Plain Layout"); // a hack to make this translatable
 }
 
 
@@ -139,7 +145,7 @@ bool TextClass::readStyle(Lexer & lexrc, Layout & lay)
 {
        LYXERR(Debug::TCLASS, "Reading style " << to_utf8(lay.name()));
        if (!lay.read(lexrc, *this)) {
-               lyxerr << "Error parsing style `" << to_utf8(lay.name()) << '\'' << endl;
+               LYXERR0("Error parsing style `" << to_utf8(lay.name()) << '\'');
                return false;
        }
        // Resolve fonts
@@ -256,7 +262,7 @@ bool TextClass::read(FileName const & filename, ReadType rt)
                if (!readStyle(lex, lay)) {
                        // The only way this happens is because the hardcoded layout above
                        // is wrong.
-                       BOOST_ASSERT(false);
+                       LASSERT(false, /**/);
                };
                layoutlist_.push_back(lay);
        }
@@ -302,8 +308,7 @@ bool TextClass::read(std::string const & str, ReadType rt)
        FileName const tempfile = FileName::tempName();
        ofstream os(tempfile.toFilesystemEncoding().c_str());
        if (!os) {
-               lyxerr << "Unable to create tempoary file in TextClass::read!!" 
-                       << std::endl;
+               LYXERR0("Unable to create tempoary file");
                return false;
        }
        os << str;
@@ -312,8 +317,8 @@ bool TextClass::read(std::string const & str, ReadType rt)
        // now try to convert it
        bool const worx = convertLayoutFormat(tempfile, rt);
        if (!worx) {
-               lyxerr << "Unable to convert internal layout information to format " 
-                       << FORMAT << std::endl;
+               LYXERR0("Unable to convert internal layout information to format " 
+                       << FORMAT);
        }
        tempfile.removeFile();
        return worx;
@@ -398,13 +403,13 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt)
                                        Layout & lay = operator[](name);
                                        error = !readStyle(lexrc, lay);
                                } else {
-                                       Layout lay;
-                                       lay.setName(name);
+                                       Layout layout;
+                                       layout.setName(name);
                                        if (le == TC_ENVIRONMENT)
-                                               lay.is_environment = true;
-                                       error = !readStyle(lexrc, lay);
+                                               layout.is_environment = true;
+                                       error = !readStyle(lexrc, layout);
                                        if (!error)
-                                               layoutlist_.push_back(lay);
+                                               layoutlist_.push_back(layout);
 
                                        if (defaultlayout_.empty()) {
                                                // We do not have a default layout yet, so we choose
@@ -415,8 +420,8 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt)
                        }
                        else {
                                //FIXME Should we also eat the style here? viz:
-                               //Layout lay;
-                               //readStyle(lexrc, lay);
+                               //Layout layout;
+                               //readStyle(lexrc, layout);
                                //as above...
                                lexrc.printError("No name given for style: `$$Token'.");
                                error = true;
@@ -522,9 +527,8 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt)
                case TC_INSETLAYOUT:
                        if (lexrc.next()) {
                                InsetLayout il;
-                               if (il.read(lexrc)) {
+                               if (il.read(lexrc))
                                        insetlayoutlist_[il.name()] = il;
-                               }
                                // else there was an error, so forget it
                        }
                        break;
@@ -567,21 +571,21 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt)
                return (error ? ERROR : OK);
 
        if (defaultlayout_.empty()) {
-               lyxerr << "Error: Textclass '" << name_
-                                               << "' is missing a defaultstyle." << endl;
+               LYXERR0("Error: Textclass '" << name_
+                                               << "' is missing a defaultstyle.");
                error = true;
        }
                
-       //Try to erase "stdinsets" from the provides_ set. 
-       //The
-       //  Provides stdinsets 1
-       //declaration simply tells us that the standard insets have been
-       //defined. (It's found in stdinsets.inc but could also be used in
-       //user-defined files.) There isn't really any such package. So we
-       //might as well go ahead and erase it.
-       //If we do not succeed, then it was not there, which means that
-       //the textclass did not provide the definitions of the standard
-       //insets. So we need to try to load them.
+       // Try to erase "stdinsets" from the provides_ set. 
+       // The
+       //   Provides stdinsets 1
+       // declaration simply tells us that the standard insets have been
+       // defined. (It's found in stdinsets.inc but could also be used in
+       // user-defined files.) There isn't really any such package. So we
+       // might as well go ahead and erase it.
+       // If we do not succeed, then it was not there, which means that
+       // the textclass did not provide the definitions of the standard
+       // insets. So we need to try to load them.
        int erased = provides_.erase("stdinsets");
        if (!erased) {
                FileName tmp = libFileSearch("layouts", "stdinsets.inc");
@@ -622,24 +626,22 @@ void TextClass::readTitleType(Lexer & lexrc)
 {
        LexerKeyword titleTypeTags[] = {
                { "commandafter", TITLE_COMMAND_AFTER },
-               { "environment", TITLE_ENVIRONMENT }
+               { "environment",  TITLE_ENVIRONMENT }
        };
 
-       PushPopHelper pph(lexrc, titleTypeTags, TITLE_ENVIRONMENT);
+       PushPopHelper pph(lexrc, titleTypeTags);
 
        int le = lexrc.lex();
        switch (le) {
        case Lexer::LEX_UNDEF:
                lexrc.printError("Unknown output type `$$Token'");
-               return;
+               break;
        case TITLE_COMMAND_AFTER:
        case TITLE_ENVIRONMENT:
                titletype_ = static_cast<TitleLatexType>(le);
                break;
        default:
-               lyxerr << "Unhandled value " << le
-                      << " in TextClass::readTitleType." << endl;
-
+               LYXERR0("Unhandled value " << le << " in TextClass::readTitleType.");
                break;
        }
 }
@@ -648,12 +650,12 @@ void TextClass::readTitleType(Lexer & lexrc)
 void TextClass::readOutputType(Lexer & lexrc)
 {
        LexerKeyword outputTypeTags[] = {
-               { "docbook", DOCBOOK },
-               { "latex", LATEX },
+               { "docbook",  DOCBOOK },
+               { "latex",    LATEX },
                { "literate", LITERATE }
        };
 
-       PushPopHelper pph(lexrc, outputTypeTags, LITERATE);
+       PushPopHelper pph(lexrc, outputTypeTags);
 
        int le = lexrc.lex();
        switch (le) {
@@ -666,30 +668,27 @@ void TextClass::readOutputType(Lexer & lexrc)
                outputType_ = static_cast<OutputType>(le);
                break;
        default:
-               lyxerr << "Unhandled value " << le
-                      << " in TextClass::readOutputType." << endl;
-
+               LYXERR0("Unhandled value " << le);
                break;
        }
 }
 
 
-enum ClassOptionsTags {
-       CO_FONTSIZE = 1,
-       CO_PAGESTYLE,
-       CO_OTHER,
-       CO_HEADER,
-       CO_END
-};
-
-
 void TextClass::readClassOptions(Lexer & lexrc)
 {
+       enum {
+               CO_FONTSIZE = 1,
+               CO_PAGESTYLE,
+               CO_OTHER,
+               CO_HEADER,
+               CO_END
+       };
+
        LexerKeyword classOptionsTags[] = {
-               {"end", CO_END },
-               {"fontsize", CO_FONTSIZE },
-               {"header", CO_HEADER },
-               {"other", CO_OTHER },
+               {"end",       CO_END },
+               {"fontsize",  CO_FONTSIZE },
+               {"header",    CO_HEADER },
+               {"other",     CO_OTHER },
                {"pagestyle", CO_PAGESTYLE }
        };
 
@@ -703,7 +702,7 @@ void TextClass::readClassOptions(Lexer & lexrc)
                        continue;
                default: break;
                }
-               switch (static_cast<ClassOptionsTags>(le)) {
+               switch (le) {
                case CO_FONTSIZE:
                        lexrc.next();
                        opt_fontsize_ = rtrim(lexrc.getString());
@@ -729,21 +728,20 @@ void TextClass::readClassOptions(Lexer & lexrc)
 }
 
 
-enum FloatTags {
-       FT_TYPE = 1,
-       FT_NAME,
-       FT_PLACEMENT,
-       FT_EXT,
-       FT_WITHIN,
-       FT_STYLE,
-       FT_LISTNAME,
-       FT_BUILTIN,
-       FT_END
-};
-
-
 void TextClass::readFloat(Lexer & lexrc)
 {
+       enum {
+               FT_TYPE = 1,
+               FT_NAME,
+               FT_PLACEMENT,
+               FT_EXT,
+               FT_WITHIN,
+               FT_STYLE,
+               FT_LISTNAME,
+               FT_BUILTIN,
+               FT_END
+       };
+
        LexerKeyword floatTags[] = {
                { "end", FT_END },
                { "extension", FT_EXT },
@@ -776,7 +774,7 @@ void TextClass::readFloat(Lexer & lexrc)
                        continue;
                default: break;
                }
-               switch (static_cast<FloatTags>(le)) {
+               switch (le) {
                case FT_TYPE:
                        lexrc.next();
                        type = lexrc.getString();
@@ -845,17 +843,16 @@ void TextClass::readFloat(Lexer & lexrc)
 }
 
 
-enum CounterTags {
-       CT_NAME = 1,
-       CT_WITHIN,
-       CT_LABELSTRING,
-       CT_LABELSTRING_APPENDIX,
-       CT_END
-};
-
-
 void TextClass::readCounter(Lexer & lexrc)
 {
+       enum {
+               CT_NAME = 1,
+               CT_WITHIN,
+               CT_LABELSTRING,
+               CT_LABELSTRING_APPENDIX,
+               CT_END
+       };
+
        LexerKeyword counterTags[] = {
                { "end", CT_END },
                { "labelstring", CT_LABELSTRING },
@@ -880,7 +877,7 @@ void TextClass::readCounter(Lexer & lexrc)
                        continue;
                default: break;
                }
-               switch (static_cast<CounterTags>(le)) {
+               switch (le) {
                case CT_NAME:
                        lexrc.next();
                        name = lexrc.getDocString();
@@ -932,7 +929,7 @@ bool TextClass::hasLayout(docstring const & n) const
 
 Layout const & TextClass::operator[](docstring const & name) const
 {
-       BOOST_ASSERT(!name.empty());
+       LASSERT(!name.empty(), /**/);
 
        const_iterator it = 
                find_if(begin(), end(), LayoutNamesEqual(name));
@@ -945,7 +942,7 @@ Layout const & TextClass::operator[](docstring const & name) const
                        lyxerr  << " " << to_utf8(cit->name()) << endl;
 
                // we require the name to exist
-               BOOST_ASSERT(false);
+               LASSERT(false, /**/);
        }
 
        return *it;
@@ -954,19 +951,18 @@ Layout const & TextClass::operator[](docstring const & name) const
 
 Layout & TextClass::operator[](docstring const & name)
 {
-       BOOST_ASSERT(!name.empty());
+       LASSERT(!name.empty(), /**/);
 
        iterator it = find_if(begin(), end(), LayoutNamesEqual(name));
 
        if (it == end()) {
-               lyxerr << "We failed to find the layout '" << to_utf8(name)
-                      << "' in the layout list. You MUST investigate!"
-                      << endl;
+               LYXERR0("We failed to find the layout '" << to_utf8(name)
+                      << "' in the layout list. You MUST investigate!");
                for (const_iterator cit = begin(); cit != end(); ++cit)
-                       lyxerr  << " " << to_utf8(cit->name()) << endl;
+                       LYXERR0(" " << to_utf8(cit->name()));
 
                // we require the name to exist
-               BOOST_ASSERT(false);
+               LASSERT(false, /**/);
        }
 
        return *it;
@@ -1045,23 +1041,36 @@ Layout const & TextClass::defaultLayout() const
 }
 
 
-bool TextClass::isDefaultLayout(Layout const & lay) const 
+bool TextClass::isDefaultLayout(Layout const & layout) const 
 {
-       return lay.name() == defaultLayoutName();
+       return layout.name() == defaultLayoutName();
 }
 
 
-bool TextClass::isEmptyLayout(Layout const & lay) const 
+bool TextClass::isEmptyLayout(Layout const & layout) const 
 {
-       return lay.name() == emptyLayoutName();
+       return layout.name() == emptyLayoutName();
 }
 
 
+/////////////////////////////////////////////////////////////////////////
+//
+// DocumentClassBundle
+//
+/////////////////////////////////////////////////////////////////////////
+
+DocumentClassBundle::~DocumentClassBundle()
+{
+       for (size_t i = 0; i != documentClasses_.size(); ++i)
+               delete documentClasses_[i];
+       documentClasses_.clear();
+}
+
 DocumentClass & DocumentClassBundle::newClass(LayoutFile const & baseClass)
 {
        DocumentClass * dc = new DocumentClass(baseClass);
-       tc_list_.push_back(dc);
-       return *tc_list_.back();
+       documentClasses_.push_back(dc);
+       return *documentClasses_.back();
 }
 
 
@@ -1072,6 +1081,12 @@ DocumentClassBundle & DocumentClassBundle::get()
 }
 
 
+/////////////////////////////////////////////////////////////////////////
+//
+// DocumentClass
+//
+/////////////////////////////////////////////////////////////////////////
+
 DocumentClass::DocumentClass(LayoutFile const & tc)
        : TextClass(tc)
 {}
@@ -1100,6 +1115,12 @@ bool DocumentClass::hasTocLevels() const
 }
 
 
+/////////////////////////////////////////////////////////////////////////
+//
+// PageSides
+//
+/////////////////////////////////////////////////////////////////////////
+
 ostream & operator<<(ostream & os, PageSides p)
 {
        switch (p) {