BOOST_ASSERT(paragraphs().empty());
readHeader(lex);
- if (!params().getTextClass().load(filePath())) {
- string theclass = params().getTextClass().name();
+ TextClass const & baseClass = textclasslist[params().getBaseClass()];
+ if (!baseClass.load(filePath())) {
+ string theclass = baseClass.name();
Alert::error(_("Can't load document class"), bformat(
_("Using the default document class, because the "
"class %1$s could not be loaded."), from_utf8(theclass)));
bool BufferParams::setBaseClass(textclass_type tc)
{
- if (!textclasslist[tc].load()) {
- docstring s = bformat(_("The document class %1$s."
- "could not be loaded."),
+ bool retVal = true;
+ if (textclasslist[tc].load())
+ baseClass_ = tc;
+ else {
+ docstring s =
+ bformat(_("The document class %1$s could not be loaded."),
from_utf8(textclasslist[tc].name()));
frontend::Alert::error(_("Could not load class"), s);
- return false;
+ retVal = false;
}
-
- baseClass_ = tc;
makeTextClass();
- return true;
+ return retVal;
}
{ LFUN_LISTING_INSERT, "listing-insert", Noop },
{ LFUN_LAYOUT_MODULES_CLEAR, "layout-modules-clear", Noop },
{ LFUN_LAYOUT_MODULE_ADD, "layout-module-add", Noop },
+ { LFUN_LAYOUT_RELOAD, "layout-reload", Noop },
{ LFUN_NOACTION, "", Noop }
};
case LFUN_BUFFER_PARAMS_APPLY:
case LFUN_LAYOUT_MODULES_CLEAR:
case LFUN_LAYOUT_MODULE_ADD:
+ case LFUN_LAYOUT_RELOAD:
case LFUN_LYXRC_APPLY:
case LFUN_BUFFER_NEXT:
case LFUN_BUFFER_PREVIOUS:
updateFlags = Update::Force | Update::FitCursor;
break;
}
+
+ case LFUN_LAYOUT_RELOAD: {
+ BOOST_ASSERT(lyx_view_);
+ Buffer * buffer = lyx_view_->buffer();
+ TextClass_ptr oldClass = buffer->params().getTextClass_ptr();
+ textclass_type const tc = buffer->params().getBaseClass();
+ textclasslist.reset(tc);
+ buffer->params().setBaseClass(tc);
+ updateLayout(oldClass, buffer);
+ updateFlags = Update::Force | Update::FitCursor;
+ break;
+ }
case LFUN_TEXTCLASS_LOAD:
loadTextclass(argument);
TextClass const &
TextClassList::operator[](textclass_type textclass) const
{
- classlist_[textclass].load();
- if (textclass < classlist_.size())
- return classlist_[textclass];
- else
+ if (textclass >= classlist_.size())
return classlist_[0];
+
+ //FIXME I don't believe the following line is actually necessary (rgh)
+ classlist_[textclass].load();
+ return classlist_[textclass];
}
}
+void TextClassList::reset(textclass_type const textclass) {
+ if (textclass >= classlist_.size())
+ return;
+ TextClass const & tc = classlist_[textclass];
+ TextClass tmpl(tc.name(), tc.latexname(), tc.description(),
+ tc.isTeXClassAvailable());
+ classlist_[textclass] = tmpl;
+}
+
+
std::pair<bool, textclass_type> const
TextClassList::addTextClass(std::string const & textclass, std::string const & path)
{
/// Read textclass list. Returns false if this fails.
bool read();
+
+ /// Clears the textclass so as to force it to be reloaded
+ void reset(textclass_type const textclass);
/// add a textclass from user local directory.
/// Return ture/false, and textclass number
LFUN_PARAGRAPH_PARAMS, // rgh, 200708XX
LFUN_LAYOUT_MODULES_CLEAR, // rgh, 20070825
LFUN_LAYOUT_MODULE_ADD, // rgh, 20070825
+ LFUN_LAYOUT_RELOAD, // rgh, 20070903
LFUN_LASTACTION // end of the table
};