]> git.lyx.org Git - lyx.git/blobdiff - src/LyXFunc.cpp
make index label translatable
[lyx.git] / src / LyXFunc.cpp
index 19f29fc80b10b4800ff257e120bb4f6454f7dbcc..ff466d0323510149fbc11b6a652c20f14662b590 100644 (file)
@@ -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:
@@ -1745,47 +1746,66 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
 
                case LFUN_BUFFER_PARAMS_APPLY: {
                        BOOST_ASSERT(lyx_view_);
-                       biblio::CiteEngine const engine =
-                               lyx_view_->buffer()->params().getEngine();
+                       biblio::CiteEngine const oldEngine =
+                                       lyx_view_->buffer()->params().getEngine();
+                       
+                       Buffer * buffer = lyx_view_->buffer();
 
+                       TextClass_ptr oldClass = buffer->params().getTextClass_ptr();
+                       recordUndoFullDocument(view());
+                       
                        istringstream ss(argument);
                        Lexer lex(0,0);
                        lex.setStream(ss);
-                       int const unknown_tokens =
-                               lyx_view_->buffer()->readHeader(lex);
+                       int const unknown_tokens = buffer->readHeader(lex);
 
                        if (unknown_tokens != 0) {
                                lyxerr << "Warning in LFUN_BUFFER_PARAMS_APPLY!\n"
-                                      << unknown_tokens << " unknown token"
-                                      << (unknown_tokens == 1 ? "" : "s")
-                                      << endl;
+                                               << unknown_tokens << " unknown token"
+                                               << (unknown_tokens == 1 ? "" : "s")
+                                               << endl;
                        }
-                       if (engine == lyx_view_->buffer()->params().getEngine())
-                               break;
-
-                       Cursor & cur = view()->cursor();
-                       FuncRequest fr(LFUN_INSET_REFRESH);
-
-                       Inset & inset = lyx_view_->buffer()->inset();
-                       InsetIterator it  = inset_iterator_begin(inset);
-                       InsetIterator const end = inset_iterator_end(inset);
-                       for (; it != end; ++it)
-                               if (it->lyxCode() == Inset::CITE_CODE)
-                                       it->dispatch(cur, fr);
+                       
+                       updateLayout(oldClass, buffer);
+                       
+                       biblio::CiteEngine const newEngine =
+                                       lyx_view_->buffer()->params().getEngine();
+                       
+                       if (oldEngine != newEngine) {
+                               Cursor & cur = view()->cursor();
+                               FuncRequest fr(LFUN_INSET_REFRESH);
+       
+                               Inset & inset = lyx_view_->buffer()->inset();
+                               InsetIterator it  = inset_iterator_begin(inset);
+                               InsetIterator const end = inset_iterator_end(inset);
+                               for (; it != end; ++it)
+                                       if (it->lyxCode() == Inset::CITE_CODE)
+                                               it->dispatch(cur, fr);
+                       }
+                       
+                       updateFlags = Update::Force | Update::FitCursor;
                        break;
                }
                
                case LFUN_LAYOUT_MODULES_CLEAR: {
                        BOOST_ASSERT(lyx_view_);
-                       lyx_view_->buffer()->params().clearLayoutModules();
-                       updateFlags = Update::Force;
+                       Buffer * buffer = lyx_view_->buffer();
+                       TextClass_ptr oldClass = buffer->params().getTextClass_ptr();
+                       recordUndoFullDocument(view());
+                       buffer->params().clearLayoutModules();
+                       updateLayout(oldClass, buffer);
+                       updateFlags = Update::Force | Update::FitCursor;
                        break;
                }
                
                case LFUN_LAYOUT_MODULE_ADD: {
                        BOOST_ASSERT(lyx_view_);
-                       lyx_view_->buffer()->params().addLayoutModule(argument);
-                       updateFlags = Update::Force;
+                       Buffer * buffer = lyx_view_->buffer();
+                       TextClass_ptr oldClass = buffer->params().getTextClass_ptr();
+                       recordUndoFullDocument(view());
+                       buffer->params().addLayoutModule(argument);
+                       updateLayout(oldClass, buffer);
+                       updateFlags = Update::Force | Update::FitCursor;
                        break;
                }
 
@@ -1808,22 +1828,23 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                                // nothing to do
                                break;
 
-                       lyx_view_->message(_("Converting document to new document class..."));
-                       recordUndoFullDocument(view());
                        //Save the old, possibly modular, layout for use in conversion.
                        TextClass_ptr oldClass = buffer->params().getTextClass_ptr();
+                       recordUndoFullDocument(view());
                        buffer->params().setBaseClass(new_class);
-                       
-                       StableDocIterator backcur(view()->cursor());
-                       ErrorList & el = buffer->errorList("Class Switch");
-                       cap::switchBetweenClasses(
-                               oldClass, buffer->params().getTextClass_ptr(),
-                               static_cast<InsetText &>(buffer->inset()), el);
-
-                       view()->setCursor(backcur.asDocIterator(&(buffer->inset())));
-
-                       buffer->errors("Class Switch");
-                       updateLabels(*buffer);
+                       updateLayout(oldClass, buffer);
+                       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;
                }
@@ -2285,6 +2306,24 @@ bool LyXFunc::wasMetaKey() const
 }
 
 
+void LyXFunc::updateLayout(TextClass_ptr const & oldlayout,
+                           Buffer * buffer)
+{
+       lyx_view_->message(_("Converting document to new document class..."));
+       
+       StableDocIterator backcur(view()->cursor());
+       ErrorList & el = buffer->errorList("Class Switch");
+       cap::switchBetweenClasses(
+                       oldlayout, buffer->params().getTextClass_ptr(),
+                       static_cast<InsetText &>(buffer->inset()), el);
+
+       view()->setCursor(backcur.asDocIterator(&(buffer->inset())));
+
+       buffer->errors("Class Switch");
+       updateLabels(*buffer);
+}
+
+
 namespace {
 
 void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)