]> git.lyx.org Git - lyx.git/blobdiff - src/LyXFunc.cpp
remove unused code
[lyx.git] / src / LyXFunc.cpp
index 717d686f1c33fb010c78757c442c3ca5a427fdd6..8cd2d66906122667452902f9d5ad33cc3d584ddd 100644 (file)
@@ -21,7 +21,7 @@
 
 #include "LyXFunc.h"
 
-#include "BaseClassList.h"
+#include "LayoutFile.h"
 #include "BranchList.h"
 #include "buffer_funcs.h"
 #include "Buffer.h"
@@ -66,6 +66,7 @@
 #include "insets/InsetGraphics.h"
 #include "insets/InsetInclude.h"
 #include "insets/InsetNote.h"
+#include "insets/InsetSpace.h"
 #include "insets/InsetTabular.h"
 #include "insets/InsetVSpace.h"
 #include "insets/InsetWrap.h"
@@ -105,10 +106,11 @@ namespace {
 
 // This function runs "configure" and then rereads lyx.defaults to
 // reconfigure the automatic settings.
-void reconfigure(LyXView & lv, string const & option)
+void reconfigure(LyXView * lv, string const & option)
 {
        // emit message signal.
-       lv.message(_("Running configure..."));
+       if (lv)
+               lv->message(_("Running configure..."));
 
        // Run configure in user lyx directory
        PathChanger p(package().user_support());
@@ -118,7 +120,8 @@ void reconfigure(LyXView & lv, string const & option)
        int ret = one.startscript(Systemcall::Wait, configure_command);
        p.pop();
        // emit message signal.
-       lv.message(_("Reloading configuration..."));
+       if (lv)
+               lv->message(_("Reloading configuration..."));
        lyxrc.read(libFileSearch(string(), "lyxrc.defaults"));
        // Re-read packages.lst
        LaTeXFeatures::getAvailable();
@@ -214,7 +217,7 @@ void LyXFunc::setLyXView(LyXView * lv)
 }
 
 
-void LyXFunc::handleKeyFunc(kb_action action)
+void LyXFunc::handleKeyFunc(FuncCode action)
 {
        char_type c = encoded_last_key;
 
@@ -293,7 +296,8 @@ void LyXFunc::processKeySym(KeySymbol const & keysym, KeyModifier state)
 
        if (keysym.isModifier()) {
                LYXERR(Debug::KEY, "isModifier true");
-               lyx_view_->restartCursor();
+               if (lyx_view_)
+                       lyx_view_->restartCursor();
                return;
        }
 
@@ -367,19 +371,11 @@ void LyXFunc::processKeySym(KeySymbol const & keysym, KeyModifier state)
                        dispatch(FuncRequest(LFUN_SELF_INSERT, arg,
                                             FuncRequest::KEYBOARD));
                        LYXERR(Debug::KEY, "SelfInsert arg[`" << to_utf8(arg) << "']");
-                       lyx_view_->updateCompletion(true, true);
                }
        } else {
                dispatch(func);
                if (!lyx_view_)
                        return;
-               if (func.action == LFUN_CHAR_DELETE_BACKWARD)
-                       // backspace is not a self-insertion. But it
-                       // still should not hide the completion popup.
-                       // FIXME: more clever way to detect those movements
-                       lyx_view_->updateCompletion(false, true);
-               else
-                       lyx_view_->updateCompletion(false, false);
        }
 
        if (lyx_view_)
@@ -392,7 +388,7 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
        //lyxerr << "LyXFunc::getStatus: cmd: " << cmd << endl;
        FuncStatus flag;
 
-       Buffer * buf = lyx_view_? lyx_view_->buffer() : 0;
+       Buffer * buf = lyx_view_ ? lyx_view_->buffer() : 0;
 
        if (cmd.action == LFUN_NOACTION) {
                flag.message(from_utf8(N_("Nothing to do")));
@@ -450,11 +446,11 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
        // FIXME: these cases should be hidden in GuiView::getStatus().
        case LFUN_DIALOG_TOGGLE:
        case LFUN_DIALOG_SHOW:
+       case LFUN_UI_TOGGLE:
        case LFUN_DIALOG_UPDATE:
-               if (cmd.argument() == "prefs"
-                   || cmd.argument() == "aboutlyx")
-                       enable = true;
-               else if (lyx_view_)
+               // FIXME: add special handling for about and prefs dialogs here
+               // which do not depend on GuiView.
+               if (lyx_view_)
                        return lyx_view_->getStatus(cmd);
                else
                        enable = false;
@@ -614,8 +610,7 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
        case LFUN_DIALOG_HIDE:
        case LFUN_DIALOG_DISCONNECT_INSET:
        case LFUN_BUFFER_CHILD_OPEN:
-       case LFUN_UI_TOGGLE:
-       case LFUN_TOGGLE_CURSOR_FOLLOWS_SCROLLBAR:
+       case LFUN_CURSOR_FOLLOWS_SCROLLBAR_TOGGLE:
        case LFUN_KEYMAP_OFF:
        case LFUN_KEYMAP_PRIMARY:
        case LFUN_KEYMAP_SECONDARY:
@@ -715,26 +710,23 @@ void showPrintError(string const & name)
 }
 
 
-void loadTextClass(string const & name, string const & buf_path)
+bool loadLayoutFile(string const & name, string const & buf_path)
 {
-       pair<bool, BaseClassIndex> const tc_pair =
-               baseclasslist.numberOfClass(name);
-
-       if (!tc_pair.first) {
+       if (!LayoutFileList::get().haveClass(name)) {
                lyxerr << "Document class \"" << name
                       << "\" does not exist."
                       << endl;
-               return;
+               return false;
        }
 
-       BaseClassIndex const tc = tc_pair.second;
-
-       if (!baseclasslist[tc].load(buf_path)) {
-               docstring s = bformat(_("The document class %1$s."
-                                  "could not be loaded."),
-                                  from_utf8(baseclasslist[tc].name()));
+       LayoutFile & tc = LayoutFileList::get()[name];
+       if (!tc.load(buf_path)) {
+               docstring s = bformat(_("The document class %1$s "
+                                  "could not be loaded."), from_utf8(name));
                Alert::error(_("Could not load class"), s);
+               return false;
        }
+       return true;
 }
 
 
@@ -746,7 +738,7 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new);
 void LyXFunc::dispatch(FuncRequest const & cmd)
 {
        string const argument = to_utf8(cmd.argument());
-       kb_action const action = cmd.action;
+       FuncCode const action = cmd.action;
 
        LYXERR(Debug::ACTION, "\nLyXFunc::dispatch: cmd: " << cmd);
        //lyxerr << "LyXFunc::dispatch: cmd: " << cmd << endl;
@@ -823,16 +815,6 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                }
 
                // --- Menus -----------------------------------------------
-               case LFUN_BUFFER_NEW:
-                       lyx_view_->newDocument(argument, false);
-                       updateFlags = Update::None;
-                       break;
-
-               case LFUN_BUFFER_NEW_TEMPLATE:
-                       lyx_view_->newDocument(argument, true);
-                       updateFlags = Update::None;
-                       break;
-
                case LFUN_BUFFER_CLOSE:
                        lyx_view_->closeBuffer();
                        updateFlags = Update::None;
@@ -1050,9 +1032,8 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        break;
 
                case LFUN_RECONFIGURE:
-                       BOOST_ASSERT(lyx_view_);
                        // argument is any additional parameter to the configure.py command
-                       reconfigure(*lyx_view_, argument);
+                       reconfigure(lyx_view_, argument);
                        break;
 
                case LFUN_HELP_OPEN: {
@@ -1255,6 +1236,11 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                                data = InsetNoteMailer::params2string(p);
                                break;
                        } 
+                       case SPACE_CODE: {
+                               InsetSpaceParams p;
+                               data = InsetSpaceMailer::params2string(p);
+                               break;
+                       } 
                        case VSPACE_CODE: {
                                VSpace space;
                                data = InsetVSpaceMailer::params2string(space);
@@ -1335,7 +1321,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        break;
                }
 
-               case LFUN_TOGGLE_CURSOR_FOLLOWS_SCROLLBAR:
+               case LFUN_CURSOR_FOLLOWS_SCROLLBAR_TOGGLE:
                        BOOST_ASSERT(lyx_view_);
                        lyxrc.cursor_follows_scrollbar = !lyxrc.cursor_follows_scrollbar;
                        break;
@@ -1534,13 +1520,9 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
 
                case LFUN_BUFFER_PARAMS_APPLY: {
                        BOOST_ASSERT(lyx_view_);
-                       biblio::CiteEngine const oldEngine =
-                                       lyx_view_->buffer()->params().getEngine();
                        
                        Buffer * buffer = lyx_view_->buffer();
-
-                       TextClassPtr oldClass = buffer->params().textClassPtr();
-
+                       DocumentClass * oldClass = buffer->params().documentClassPtr();
                        Cursor & cur = view()->cursor();
                        cur.recordUndoFullDocument();
                        
@@ -1558,24 +1540,10 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        
                        updateLayout(oldClass, buffer);
                        
-                       biblio::CiteEngine const newEngine =
-                                       lyx_view_->buffer()->params().getEngine();
-                       
-                       if (oldEngine != newEngine) {
-                               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() == CITE_CODE)
-                                               it->dispatch(cur, fr);
-                       }
-                       
                        updateFlags = Update::Force | Update::FitCursor;
-                       // We are here most certainaly because of a change in the document
-                       // It is then better to make sure that all dialogs are in sync
-                       // with current document settings. LyXView::restartCursor() achieve this.
+                       // We are most certainly here because of a change in the document
+                       // It is then better to make sure that all dialogs are in sync with
+                       // current document settings. LyXView::restartCursor() achieve this.
                        lyx_view_->restartCursor();
                        break;
                }
@@ -1583,10 +1551,10 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                case LFUN_LAYOUT_MODULES_CLEAR: {
                        BOOST_ASSERT(lyx_view_);
                        Buffer * buffer = lyx_view_->buffer();
-                       TextClassPtr oldClass = buffer->params().textClassPtr();
+                       DocumentClass * oldClass = buffer->params().documentClassPtr();
                        view()->cursor().recordUndoFullDocument();
                        buffer->params().clearLayoutModules();
-                       buffer->params().makeTextClass();
+                       buffer->params().makeDocumentClass();
                        updateLayout(oldClass, buffer);
                        updateFlags = Update::Force | Update::FitCursor;
                        break;
@@ -1595,10 +1563,10 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                case LFUN_LAYOUT_MODULE_ADD: {
                        BOOST_ASSERT(lyx_view_);
                        Buffer * buffer = lyx_view_->buffer();
-                       TextClassPtr oldClass = buffer->params().textClassPtr();
+                       DocumentClass * oldClass = buffer->params().documentClassPtr();
                        view()->cursor().recordUndoFullDocument();
                        buffer->params().addLayoutModule(argument);
-                       buffer->params().makeTextClass();
+                       buffer->params().makeDocumentClass();
                        updateLayout(oldClass, buffer);
                        updateFlags = Update::Force | Update::FitCursor;
                        break;
@@ -1608,27 +1576,23 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        BOOST_ASSERT(lyx_view_);
                        Buffer * buffer = lyx_view_->buffer();
 
-                       loadTextClass(argument, buffer->filePath());
-
-                       pair<bool, BaseClassIndex> const tc_pair =
-                               baseclasslist.numberOfClass(argument);
-
-                       if (!tc_pair.first)
+                       if (!loadLayoutFile(argument, buffer->temppath()) &&
+                               !loadLayoutFile(argument, buffer->filePath()))
                                break;
 
-                       BaseClassIndex const old_class = buffer->params().baseClass();
-                       BaseClassIndex const new_class = tc_pair.second;
+                       LayoutFile const * old_layout = buffer->params().baseClass();
+                       LayoutFile const * new_layout = &(LayoutFileList::get()[argument]);
 
-                       if (old_class == new_class)
+                       if (old_layout == new_layout)
                                // nothing to do
                                break;
 
                        //Save the old, possibly modular, layout for use in conversion.
-                       TextClassPtr oldClass = buffer->params().textClassPtr();
+                       DocumentClass * oldDocClass = buffer->params().documentClassPtr();
                        view()->cursor().recordUndoFullDocument();
-                       buffer->params().setBaseClass(new_class);
-                       buffer->params().makeTextClass();
-                       updateLayout(oldClass, buffer);
+                       buffer->params().setBaseClass(argument);
+                       buffer->params().makeDocumentClass();
+                       updateLayout(oldDocClass, buffer);
                        updateFlags = Update::Force | Update::FitCursor;
                        break;
                }
@@ -1636,18 +1600,19 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                case LFUN_LAYOUT_RELOAD: {
                        BOOST_ASSERT(lyx_view_);
                        Buffer * buffer = lyx_view_->buffer();
-                       TextClassPtr oldClass = buffer->params().textClassPtr();
-                       BaseClassIndex const tc = buffer->params().baseClass();
-                       baseclasslist.reset(tc);
-                       buffer->params().setBaseClass(tc);
-                       buffer->params().makeTextClass();
+                       DocumentClass * oldClass = buffer->params().documentClassPtr();
+                       LayoutFileIndex bc = buffer->params().baseClassID();
+                       LayoutFileList::get().reset(bc);
+                       buffer->params().setBaseClass(bc);
+                       buffer->params().makeDocumentClass();
                        updateLayout(oldClass, buffer);
                        updateFlags = Update::Force | Update::FitCursor;
                        break;
                }
 
                case LFUN_TEXTCLASS_LOAD:
-                       loadTextClass(argument, lyx_view_->buffer()->filePath());
+                       loadLayoutFile(argument, lyx_view_->buffer()->temppath()) ||
+                       loadLayoutFile(argument, lyx_view_->buffer()->filePath());
                        break;
 
                case LFUN_LYXRC_APPLY: {
@@ -1692,8 +1657,11 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                                // Nothing more to do.
                                return;
 
+                       // Everything below is only for active lyx_view_
+                       if (lyx_view_ == 0)
+                               break;
+
                        // Let the current LyXView dispatch its own actions.
-                       BOOST_ASSERT(lyx_view_);
                        if (lyx_view_->dispatch(cmd)) {
                                if (lyx_view_->view())
                                        updateFlags = lyx_view_->view()->cursor().result().update();
@@ -1722,6 +1690,18 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                                        view()->cursor().fixIfBroken();
                        }
 
+                       // update completion. We do it here and not in
+                       // processKeySym to avoid another redraw just for a
+                       // changed inline completion
+                       if (cmd.origin == FuncRequest::KEYBOARD) {
+                               if (cmd.action == LFUN_SELF_INSERT)
+                                       lyx_view_->updateCompletion(view()->cursor(), true, true);
+                               else if (cmd.action == LFUN_CHAR_DELETE_BACKWARD)
+                                       lyx_view_->updateCompletion(view()->cursor(), false, true);
+                               else
+                                       lyx_view_->updateCompletion(view()->cursor(), false, false);
+                       }
+
                        updateFlags = view()->cursor().result().update();
                }
 
@@ -1738,8 +1718,11 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                            && !lyxaction.funcHasFlag(action, LyXAction::ReadOnly))
                                lyx_view_->buffer()->markDirty();                       
 
-                       //Do we have a selection?
+                       // Do we have a selection?
                        theSelection().haveSelection(view()->cursor().selection());
+                       
+                       // update gui
+                       lyx_view_->restartCursor();
                }
        }
        if (lyx_view_) {
@@ -1834,7 +1817,7 @@ void LyXFunc::setMessage(docstring const & m) const
 }
 
 
-docstring const LyXFunc::viewStatusMessage()
+docstring LyXFunc::viewStatusMessage()
 {
        // When meta-fake key is pressed, show the key sequence so far + "M-".
        if (wasMetaKey())
@@ -1866,14 +1849,14 @@ bool LyXFunc::wasMetaKey() const
 }
 
 
-void LyXFunc::updateLayout(TextClassPtr oldlayout,Buffer * buffer)
+void LyXFunc::updateLayout(DocumentClass * 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().textClassPtr(),
+                       oldlayout, buffer->params().documentClassPtr(),
                        static_cast<InsetText &>(buffer->inset()), el);
 
        view()->setCursor(backcur.asDocIterator(&(buffer->inset())));
@@ -1906,6 +1889,7 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
        case LyXRC::RC_BIBTEX_COMMAND:
        case LyXRC::RC_BINDFILE:
        case LyXRC::RC_CHECKLASTFILES:
+       case LyXRC::RC_COMPLETION_CURSOR_TEXT:
        case LyXRC::RC_COMPLETION_INLINE_DELAY:
        case LyXRC::RC_COMPLETION_INLINE_DOTS:
        case LyXRC::RC_COMPLETION_INLINE_MATH:
@@ -1939,6 +1923,7 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
        case LyXRC::RC_EXAMPLEPATH:
        case LyXRC::RC_FONT_ENCODING:
        case LyXRC::RC_FORMAT:
+       case LyXRC::RC_GROUP_LAYOUTS:
        case LyXRC::RC_INDEX_COMMAND:
        case LyXRC::RC_INPUT:
        case LyXRC::RC_KBMAP:
@@ -1999,6 +1984,7 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
        case LyXRC::RC_SERVERPIPE:
        case LyXRC::RC_SET_COLOR:
        case LyXRC::RC_SHOW_BANNER:
+       case LyXRC::RC_OPEN_BUFFERS_IN_TABS:
        case LyXRC::RC_SPELL_COMMAND:
        case LyXRC::RC_TEMPDIRPATH:
        case LyXRC::RC_TEMPLATEPATH: