#include "support/lassert.h"
#include "support/debug.h"
+#include "support/ExceptionMessage.h"
#include "support/FileName.h"
#include "support/filetools.h"
#include "support/gettext.h"
// development/tools/updatelayouts.sh script, to update the format of
// all of our layout files.
//
-int const LAYOUT_FORMAT = 44; // rgh: change LabelType declarations
+int const LAYOUT_FORMAT = 49; //gb: change default of ResetsFont
namespace {
TC_HTMLSTYLES,
TC_PROVIDES,
TC_REQUIRES,
+ TC_PKGOPTS,
TC_LEFTMARGIN,
TC_RIGHTMARGIN,
TC_FLOAT,
{ "nostyle", TC_NOSTYLE },
{ "outputformat", TC_OUTPUTFORMAT },
{ "outputtype", TC_OUTPUTTYPE },
+ { "packageoptions", TC_PKGOPTS },
{ "pagestyle", TC_PAGESTYLE },
{ "preamble", TC_PREAMBLE },
{ "provides", TC_PROVIDES },
break;
}
+ case TC_PKGOPTS : {
+ lexrc.next();
+ string const pkg = lexrc.getString();
+ lexrc.next();
+ string const options = lexrc.getString();
+ package_options_[pkg] = options;
+ break;
+ }
+
case TC_DEFAULTMODULE: {
lexrc.next();
string const module = lexrc.getString();
cite_styles_[ENGINE_TYPE_AUTHORYEAR].clear();
if (type & ENGINE_TYPE_NUMERICAL)
cite_styles_[ENGINE_TYPE_NUMERICAL].clear();
+ if (type & ENGINE_TYPE_DEFAULT)
+ cite_styles_[ENGINE_TYPE_DEFAULT].clear();
string def;
bool getout = false;
while (!getout && lexrc.isOK()) {
cite_styles_[ENGINE_TYPE_AUTHORYEAR].push_back(cs);
if (type & ENGINE_TYPE_NUMERICAL)
cite_styles_[ENGINE_TYPE_NUMERICAL].push_back(cs);
+ if (type & ENGINE_TYPE_DEFAULT)
+ cite_styles_[ENGINE_TYPE_DEFAULT].push_back(cs);
}
return getout;
}
int TextClass::readCiteEngineType(Lexer & lexrc) const
{
- int const ENGINE_TYPE_DEFAULT =
- ENGINE_TYPE_AUTHORYEAR | ENGINE_TYPE_NUMERICAL;
+ LATTEST(ENGINE_TYPE_DEFAULT ==
+ (ENGINE_TYPE_AUTHORYEAR | ENGINE_TYPE_NUMERICAL));
if (!lexrc.next()) {
lexrc.printError("No cite engine type given for token: `$$Token'.");
return ENGINE_TYPE_DEFAULT;
cite_macros_[ENGINE_TYPE_AUTHORYEAR][etype] = definition;
if (type & ENGINE_TYPE_NUMERICAL)
cite_macros_[ENGINE_TYPE_NUMERICAL][etype] = definition;
+ if (type & ENGINE_TYPE_DEFAULT)
+ cite_macros_[ENGINE_TYPE_DEFAULT][etype] = definition;
} else {
if (type & ENGINE_TYPE_AUTHORYEAR)
cite_formats_[ENGINE_TYPE_AUTHORYEAR][etype] = definition;
if (type & ENGINE_TYPE_NUMERICAL)
cite_formats_[ENGINE_TYPE_NUMERICAL][etype] = definition;
+ if (type & ENGINE_TYPE_DEFAULT)
+ cite_formats_[ENGINE_TYPE_DEFAULT][etype] = definition;
}
}
return true;
Layout const & TextClass::operator[](docstring const & name) const
{
- LASSERT(!name.empty(), /**/);
+ LATTEST(!name.empty());
const_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 '" << name
+ << "' in the layout list. You MUST investigate!");
for (const_iterator cit = begin(); cit != end(); ++cit)
lyxerr << " " << to_utf8(cit->name()) << endl;
- // we require the name to exist
- LASSERT(false, /**/);
+ // We require the name to exist
+ static const Layout dummy;
+ LASSERT(false, return dummy);
}
return *it;
Layout & TextClass::operator[](docstring const & name)
{
- LASSERT(!name.empty(), /**/);
+ LATTEST(!name.empty());
+ // Safe to continue, given what we do below.
iterator it = find_if(begin(), end(), LayoutNamesEqual(name));
LYXERR0(" " << to_utf8(cit->name()));
// we require the name to exist
- LASSERT(false, /**/);
+ LATTEST(false);
+ // we are here only in release mode
+ layoutlist_.push_back(createBasicLayout(name, true));
+ it = find_if(begin(), end(), LayoutNamesEqual(name));
}
return *it;
}
+string DocumentClass::forcedLayouts() const
+{
+ ostringstream os;
+ bool first = true;
+ const_iterator const e = end();
+ for (const_iterator i = begin(); i != e; ++i) {
+ if (i->forcelocal > 0) {
+ if (first) {
+ os << "Format " << LAYOUT_FORMAT << '\n';
+ first = false;
+ }
+ i->write(os);
+ }
+ }
+ return os.str();
+}
+
+
InsetLayout const & DocumentClass::insetLayout(docstring const & name) const
{
// FIXME The fix for the InsetLayout part of 4812 would be here:
if (!readStyle(lex, *defaultLayout)) {
// The only way this happens is because the hardcoded layout above
// is wrong.
- LASSERT(false, /**/);
+ LATTEST(false);
};
return *defaultLayout;
}
DocumentClassPtr getDocumentClass(
- LayoutFile const & baseClass, LayoutModuleList const & modlist)
+ LayoutFile const & baseClass, LayoutModuleList const & modlist,
+ bool const clone)
{
DocumentClassPtr doc_class =
DocumentClassPtr(new DocumentClass(baseClass));
"this document but has not been found in the list of\n"
"available modules. If you recently installed it, you\n"
"probably need to reconfigure LyX.\n"), from_utf8(modName));
- frontend::Alert::warning(_("Module not available"), msg);
+ if (!clone)
+ frontend::Alert::warning(_("Module not available"), msg);
continue;
}
- if (!lm->isAvailable()) {
+ if (!lm->isAvailable() && !clone) {
docstring const prereqs = from_utf8(getStringFromVector(lm->prerequisites(), "\n\t"));
docstring const msg =
bformat(_("The module %1$s requires a package that is not\n"
Layout const * lay = NULL;
for (; lit != len; ++lit) {
int const level = lit->toclevel;
- // we don't want Part
- if (level == Layout::NOT_IN_TOC || level < 0 || level >= minlevel)
+ // we don't want Part or unnumbered sections
+ if (level == Layout::NOT_IN_TOC || level < 0
+ || level >= minlevel || lit->counter.empty())
continue;
lay = &*lit;
minlevel = level;