#include <config.h>
#include "TextClass.h"
-#include "debug.h"
-#include "Layout.h"
-#include "Lexer.h"
+
+#include "Color.h"
#include "Counters.h"
+#include "debug.h"
#include "gettext.h"
#include "Floating.h"
#include "FloatList.h"
+#include "Layout.h"
+#include "Lexer.h"
#include "frontends/alert.h"
#include <sstream>
+using std::endl;
+using std::find_if;
+using std::remove_if;
+using std::string;
+using std::ostream;
+
namespace lyx {
using support::FileName;
using support::subst;
using support::addName;
-using std::endl;
-using std::find_if;
-using std::remove_if;
-using std::string;
-using std::ostream;
-
+extern FontInfo lyxRead(Lexer &, FontInfo const & fi = sane_font);
namespace {
<< ' ' << quoteName(tempfile.toFilesystemEncoding());
string const command_str = command.str();
- LYXERR(Debug::TCLASS) << "Running `" << command_str << '\'' << endl;
+ LYXERR(Debug::TCLASS, "Running `" << command_str << '\'');
support::cmd_ret const ret =
support::runCommand(command_str);
secnumdepth_ = 3;
tocdepth_ = 3;
pagestyle_ = "default";
- defaultfont_ = Font(Font::ALL_SANE);
+ defaultfont_ = sane_font;
opt_fontsize_ = "10|11|12";
opt_pagestyle_ = "empty|plain|headings|fancy";
titletype_ = TITLE_COMMAND_AFTER;
}
-bool TextClass::do_readStyle(Lexer & lexrc, Layout & lay)
+bool TextClass::readStyle(Lexer & lexrc, Layout & lay)
{
- LYXERR(Debug::TCLASS) << "Reading style " << to_utf8(lay.name()) << endl;
+ LYXERR(Debug::TCLASS, "Reading style " << to_utf8(lay.name()));
if (!lay.read(lexrc, *this)) {
// Resolve fonts
lay.resfont = lay.font;
switch (rt) {
case BASECLASS:
- LYXERR(Debug::TCLASS) << "Reading textclass ";
+ LYXERR(Debug::TCLASS, "Reading textclass ");
break;
case MERGE:
- LYXERR(Debug::TCLASS) << "Reading input file ";
+ LYXERR(Debug::TCLASS, "Reading input file ");
break;
case MODULE:
- LYXERR(Debug::TCLASS) << "Reading module file ";
+ LYXERR(Debug::TCLASS, "Reading module file ");
break;
default:
BOOST_ASSERT(false);
}
- LYXERR(Debug::TCLASS) << to_utf8(makeDisplayPath(filename.absFilename()))
- << endl;
+ LYXERR(Debug::TCLASS, to_utf8(makeDisplayPath(filename.absFilename())));
Lexer lexrc(textClassTags,
sizeof(textClassTags) / sizeof(textClassTags[0]));
+ lexrc.getString() + " is probably not valid UTF-8!";
lexrc.printError(s.c_str());
Layout lay;
- error = do_readStyle(lexrc, lay);
+ error = readStyle(lexrc, lay);
} else if (hasLayout(name)) {
Layout * lay = operator[](name).get();
- error = do_readStyle(lexrc, *lay);
+ error = readStyle(lexrc, *lay);
} else {
Layout lay;
lay.setName(name);
if (le == TC_ENVIRONMENT)
lay.is_environment = true;
- error = do_readStyle(lexrc, lay);
+ error = readStyle(lexrc, lay);
if (!error)
layoutlist_.push_back(
boost::shared_ptr<Layout>(new Layout(lay))
if (lexrc.next()) {
docstring const style = from_utf8(subst(lexrc.getString(),
'_', ' '));
- if (!delete_layout(style))
+ if (!deleteLayout(style))
lyxerr << "Cannot delete style `"
<< to_utf8(style) << '\'' << endl;
// lexrc.printError("Cannot delete style"
break;
case TC_DEFAULTFONT:
- defaultfont_.lyxRead(lexrc);
+ defaultfont_ = lyxRead(lexrc);
if (!defaultfont_.resolved()) {
lexrc.printError("Warning: defaultfont should "
"be fully instantiated!");
- defaultfont_.realize(Font(Font::ALL_SANE));
+ defaultfont_.realize(sane_font);
}
break;
}
if (format != FORMAT) {
- LYXERR(Debug::TCLASS) << "Converting layout file from format "
- << format << " to " << FORMAT << endl;
+ LYXERR(Debug::TCLASS, "Converting layout file from format "
+ << format << " to " << FORMAT);
FileName const tempfile(support::tempName());
error = !layout2layout(filename, tempfile);
if (!error)
}
if (rt == MODULE)
- LYXERR(Debug::TCLASS) << "Finished reading module file "
- << to_utf8(makeDisplayPath(filename.absFilename()))
- << endl;
+ LYXERR(Debug::TCLASS, "Finished reading module file "
+ << to_utf8(makeDisplayPath(filename.absFilename())));
else if (rt == MERGE)
- LYXERR(Debug::TCLASS) << "Finished reading input file "
- << to_utf8(makeDisplayPath(filename.absFilename()))
- << endl;
+ LYXERR(Debug::TCLASS, "Finished reading input file "
+ << to_utf8(makeDisplayPath(filename.absFilename())));
else { // we are at top level here.
- LYXERR(Debug::TCLASS) << "Finished reading textclass "
- << to_utf8(makeDisplayPath(filename.absFilename()))
- << endl;
+ LYXERR(Debug::TCLASS, "Finished reading textclass "
+ << to_utf8(makeDisplayPath(filename.absFilename())));
if (defaultlayout_.empty()) {
lyxerr << "Error: Textclass '" << name_
<< "' is missing a defaultstyle." << endl;
toclevel);
}
}
- LYXERR(Debug::TCLASS)
- << "Minimum TocLevel is " << min_toclevel_
- << ", maximum is " << max_toclevel_ <<endl;
+ LYXERR(Debug::TCLASS, "Minimum TocLevel is " << min_toclevel_
+ << ", maximum is " << max_toclevel_);
}
IL_FONT = 1,
IL_BGCOLOR,
IL_DECORATION,
+ IL_FREESPACING,
+ IL_FORCELTR,
IL_LABELFONT,
IL_LABELSTRING,
IL_LATEXNAME,
IL_LATEXPARAM,
IL_LATEXTYPE,
IL_LYXTYPE,
+ IL_KEEPEMPTY,
IL_MULTIPAR,
+ IL_NEEDPROTECT,
+ IL_PASSTHRU,
IL_PREAMBLE,
- IL_VERBATIM,
IL_END
};
{ "decoration", IL_DECORATION },
{ "end", IL_END },
{ "font", IL_FONT },
+ { "forceltr", IL_FORCELTR },
+ { "freespacing", IL_FREESPACING },
+ { "keepempty", IL_KEEPEMPTY },
{ "labelfont", IL_LABELFONT },
{ "labelstring", IL_LABELSTRING },
{ "latexname", IL_LATEXNAME },
{ "latextype", IL_LATEXTYPE },
{ "lyxtype", IL_LYXTYPE },
{ "multipar", IL_MULTIPAR },
- { "preamble", IL_PREAMBLE },
- { "verbatim", IL_VERBATIM }
+ { "needprotect", IL_NEEDPROTECT },
+ { "passthru", IL_PASSTHRU },
+ { "preamble", IL_PREAMBLE }
};
lexrc.pushTable(elementTags, IL_END);
string decoration;
string latexname;
string latexparam;
- Font font(defaultfont());
- Font labelfont(defaultfont());
- Color::color bgcolor(Color::background);
+ FontInfo font = inherit_font;
+ FontInfo labelfont = inherit_font;
+ ColorCode bgcolor(Color_background);
string preamble;
- bool multipar(false);
- bool verbatim(false);
+ bool multipar = false;
+ bool passthru = false;
+ bool needprotect = false;
+ bool keepempty = false;
+ bool freespacing = false;
+ bool forceltr = false;
bool getout = false;
while (!getout && lexrc.isOK()) {
latexparam = subst(lexrc.getString(), """, "\"");
break;
case IL_LABELFONT:
- labelfont.lyxRead(lexrc);
- labelfont.realize(defaultfont());
+ labelfont = lyxRead(lexrc, inherit_font);
+ break;
+ case IL_FORCELTR:
+ lexrc.next();
+ forceltr = lexrc.getBool();
break;
case IL_MULTIPAR:
lexrc.next();
multipar = lexrc.getBool();
break;
- case IL_VERBATIM:
+ case IL_PASSTHRU:
+ lexrc.next();
+ passthru = lexrc.getBool();
+ break;
+ case IL_KEEPEMPTY:
+ lexrc.next();
+ keepempty = lexrc.getBool();
+ break;
+ case IL_FREESPACING:
lexrc.next();
- verbatim = lexrc.getBool();
+ freespacing = lexrc.getBool();
+ break;
+ case IL_NEEDPROTECT:
+ lexrc.next();
+ needprotect = lexrc.getBool();
break;
case IL_FONT:
- font.lyxRead(lexrc);
- font.realize(defaultfont());
+ font = lyxRead(lexrc, inherit_font);
// So: define font before labelfont
labelfont = font;
break;
}
}
- //
// Here add element to list if getout == true
if (getout) {
InsetLayout il;
il.latexname = latexname;
il.latexparam = latexparam;
il.multipar = multipar;
- il.verbatim = verbatim;
+ il.passthru = passthru;
+ il.needprotect = needprotect;
+ il.freespacing = freespacing;
+ il.forceltr = forceltr;
+ il.keepempty = keepempty;
il.font = font;
+ // The label font is generally used as-is without
+ // any realization against a given context.
+ labelfont.realize(sane_font);
il.labelfont = labelfont;
il.bgcolor = bgcolor;
il.preamble = preamble;
CT_END
};
+
void TextClass::readCounter(Lexer & lexrc)
{
keyword_item counterTags[] = {
lexrc.next();
name = lexrc.getDocString();
if (counters_->hasCounter(name))
- LYXERR(Debug::TCLASS)
- << "Reading existing counter "
- << to_utf8(name) << endl;
+ LYXERR(Debug::TCLASS, "Reading existing counter " << to_utf8(name));
else
- LYXERR(Debug::TCLASS)
- << "Reading new counter "
- << to_utf8(name) << endl;
+ LYXERR(Debug::TCLASS, "Reading new counter " << to_utf8(name));
break;
case CT_WITHIN:
lexrc.next();
}
-Font const & TextClass::defaultfont() const
+FontInfo const & TextClass::defaultfont() const
{
return defaultfont_;
}
BOOST_ASSERT(false);
}
- return (*cit);
+ return *cit;
}
-
-bool TextClass::delete_layout(docstring const & name)
+bool TextClass::deleteLayout(docstring const & name)
{
if (name == defaultLayoutName())
return false;
}
static InsetLayout empty;
empty.labelstring = from_utf8("UNDEFINED");
- empty.bgcolor = Color::error;
+ empty.labelfont = sane_font;
+ empty.labelfont.setColor(Color_error);
+ empty.bgcolor = Color_error;
return empty;
}
}
-TextClass::PageSides TextClass::sides() const
+PageSides TextClass::sides() const
{
return sides_;
}
}
-ostream & operator<<(ostream & os, TextClass::PageSides p)
+ostream & operator<<(ostream & os, PageSides p)
{
switch (p) {
- case TextClass::OneSide:
+ case OneSide:
os << '1';
break;
- case TextClass::TwoSides:
+ case TwoSides:
os << '2';
break;
}