From: Richard Heck Date: Tue, 11 Sep 2007 16:42:22 +0000 (+0000) Subject: Add layout-reload LFUN. This is useful for people creating and editing layouts. X-Git-Tag: 1.6.10~8389 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=63a190ef495ff9a4e7a6654b71f8c7e24e599b57;p=features.git Add layout-reload LFUN. This is useful for people creating and editing layouts. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@20215 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/LyXAction.cpp b/src/LyXAction.cpp index fe2369cac8..d26b4dffeb 100644 --- a/src/LyXAction.cpp +++ b/src/LyXAction.cpp @@ -374,6 +374,7 @@ void LyXAction::init() { 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 } }; diff --git a/src/LyXFunc.cpp b/src/LyXFunc.cpp index 2dc4086bb4..ff466d0323 100644 --- a/src/LyXFunc.cpp +++ b/src/LyXFunc.cpp @@ -731,6 +731,7 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const 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: @@ -1835,6 +1836,18 @@ void LyXFunc::dispatch(FuncRequest const & cmd) 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); diff --git a/src/TextClassList.cpp b/src/TextClassList.cpp index aee1144668..bfda9d35d5 100644 --- a/src/TextClassList.cpp +++ b/src/TextClassList.cpp @@ -66,11 +66,12 @@ TextClassList::numberOfClass(string const & textclass) const 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]; } @@ -175,6 +176,16 @@ bool TextClassList::read() } +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 const TextClassList::addTextClass(std::string const & textclass, std::string const & path) { diff --git a/src/TextClassList.h b/src/TextClassList.h index 6f8f963fc5..740b87f536 100644 --- a/src/TextClassList.h +++ b/src/TextClassList.h @@ -50,6 +50,9 @@ public: /// 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 diff --git a/src/lfuns.h b/src/lfuns.h index 4a6295abf6..299166c6a2 100644 --- a/src/lfuns.h +++ b/src/lfuns.h @@ -402,6 +402,7 @@ enum kb_action { 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 };