// development/tools/updatelayouts.sh script, to update the format of
// all of our layout files.
//
-int const LAYOUT_FORMAT = 38; //gb : LangPreamble and BabelPreamble for InsetLayout
+int const LAYOUT_FORMAT = 39; //sanda branch styling
namespace {
}
-/////////////////////////////////////////////////////////////////////////
-//
-// 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);
- documentClasses_.push_back(dc);
- return *documentClasses_.back();
-}
-
-
-DocumentClassBundle & DocumentClassBundle::get()
-{
- static DocumentClassBundle singleton;
- return singleton;
-}
-
-
-DocumentClass & DocumentClassBundle::makeDocumentClass(
+DocumentClassPtr getDocumentClass(
LayoutFile const & baseClass, LayoutModuleList const & modlist)
{
- DocumentClass & doc_class = newClass(baseClass);
+ DocumentClassPtr doc_class =
+ DocumentClassPtr(new DocumentClass(baseClass));
LayoutModuleList::const_iterator it = modlist.begin();
LayoutModuleList::const_iterator en = modlist.end();
- for (; it != en; it++) {
+ for (; it != en; ++it) {
string const modName = *it;
LyXModule * lm = theModuleList[modName];
if (!lm) {
frontend::Alert::warning(_("Package not available"), msg, true);
}
FileName layout_file = libFileSearch("layouts", lm->getFilename());
- if (!doc_class.read(layout_file, TextClass::MODULE)) {
+ if (!doc_class->read(layout_file, TextClass::MODULE)) {
docstring const msg =
bformat(_("Error reading module %1$s\n"), from_utf8(modName));
frontend::Alert::warning(_("Read Error"), msg);
}
+Layout const & DocumentClass::getTOCLayout() const
+{
+ // we're going to look for the layout with the minimum toclevel
+ TextClass::LayoutList::const_iterator lit = begin();
+ TextClass::LayoutList::const_iterator const len = end();
+ int minlevel = 1000;
+ 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)
+ continue;
+ lay = &*lit;
+ minlevel = level;
+ }
+ if (lay)
+ return *lay;
+ // hmm. that is very odd, so we'll do our best.
+ return operator[](defaultLayoutName());
+}
+
+
Layout const & DocumentClass::htmlTOCLayout() const
{
if (html_toc_section_.empty()) {
- // we're going to look for the layout with the minimum toclevel
- TextClass::LayoutList::const_iterator lit = begin();
- TextClass::LayoutList::const_iterator const len = end();
- int minlevel = 1000;
- 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)
- continue;
- lay = &*lit;
- minlevel = level;
- }
- if (lay)
- html_toc_section_ = lay->name();
- else
- // hmm. that is very odd, so we'll do our best
- html_toc_section_ = defaultLayoutName();
+ html_toc_section_ = getTOCLayout().name();
}
return operator[](html_toc_section_);
}