]> git.lyx.org Git - lyx.git/blobdiff - src/LyXFunc.cpp
Allow dissolution of insets inside mathed
[lyx.git] / src / LyXFunc.cpp
index 4da6e5e57e1673b96991b6c77b5f921ea166d688..dfb40f336af8c4d967e05618706c502f22da5fd5 100644 (file)
 #include "LyXFunc.h"
 
 #include "BranchList.h"
-#include "Buffer.h"
 #include "buffer_funcs.h"
+#include "Buffer.h"
 #include "BufferList.h"
 #include "BufferParams.h"
 #include "BufferView.h"
-#include "bufferview_funcs.h"
+#include "callback.h"
+#include "Color.h"
 #include "Cursor.h"
 #include "CutAndPaste.h"
 #include "debug.h"
 #include "Intl.h"
 #include "KeyMap.h"
 #include "Language.h"
-#include "Color.h"
-#include "Session.h"
-#include "LyX.h"
-#include "callback.h"
+#include "Lexer.h"
 #include "LyXAction.h"
 #include "lyxfind.h"
-#include "Lexer.h"
+#include "LyX.h"
 #include "LyXRC.h"
-#include "Row.h"
-#include "Server.h"
-#include "TextClassList.h"
 #include "LyXVC.h"
 #include "Paragraph.h"
-#include "ParIterator.h"
 #include "ParagraphParameters.h"
+#include "ParIterator.h"
+#include "Row.h"
+#include "Server.h"
+#include "Session.h"
+#include "TextClassList.h"
+#include "ToolbarBackend.h"
 #include "Undo.h"
 
 #include "insets/InsetBox.h"
@@ -115,8 +115,6 @@ namespace fs = boost::filesystem;
 
 namespace lyx {
 
-using bv_funcs::freefont2string;
-
 using frontend::LyXView;
 
 using support::absolutePath;
@@ -150,8 +148,7 @@ namespace Alert = frontend::Alert;
 
 namespace {
 
-bool getLocalStatus(Cursor cursor,
-              FuncRequest const & cmd, FuncStatus & status)
+bool getLocalStatus(Cursor cursor, FuncRequest const & cmd, FuncStatus & status)
 {
        // Try to fix cursor in case it is broken.
        cursor.fixIfBroken();
@@ -205,7 +202,7 @@ Change::Type lookupChangeType(DocIterator const & dit, bool outer = false)
 
 
 LyXFunc::LyXFunc()
-       : lyx_view_(0), encoded_last_key(0), meta_fake_bit(key_modifier::none)
+       : lyx_view_(0), encoded_last_key(0), meta_fake_bit(NoModifier)
 {
 }
 
@@ -292,8 +289,7 @@ void LyXFunc::gotoBookmark(unsigned int idx, bool openFile, bool switchToBuffer)
 }
 
 
-void LyXFunc::processKeySym(KeySymbol const & keysym,
-               key_modifier::state state)
+void LyXFunc::processKeySym(KeySymbol const & keysym, KeyModifier state)
 {
        LYXERR(Debug::KEY) << "KeySym is " << keysym.getSymbolName() << endl;
 
@@ -326,7 +322,7 @@ void LyXFunc::processKeySym(KeySymbol const & keysym,
 
        // When not cancel or meta-fake, do the normal lookup.
        // Note how the meta_fake Mod1 bit is OR-ed in and reset afterwards.
-       // Mostly, meta_fake_bit = key_modifier::none. RVDK_PATCH_5.
+       // Mostly, meta_fake_bit = NoModifier. RVDK_PATCH_5.
        if ((func.action != LFUN_CANCEL) && (func.action != LFUN_META_PREFIX)) {
                // remove Caps Lock and Mod2 as a modifiers
                func = keyseq.addkey(keysym, (state | meta_fake_bit));
@@ -336,12 +332,11 @@ void LyXFunc::processKeySym(KeySymbol const & keysym,
        }
 
        // Dont remove this unless you know what you are doing.
-       meta_fake_bit = key_modifier::none;
+       meta_fake_bit = NoModifier;
 
        // Can this happen now ?
-       if (func.action == LFUN_NOACTION) {
+       if (func.action == LFUN_NOACTION)
                func = FuncRequest(LFUN_COMMAND_PREFIX);
-       }
 
        LYXERR(Debug::KEY) << BOOST_CURRENT_FUNCTION
               << " Key [action="
@@ -353,17 +348,15 @@ void LyXFunc::processKeySym(KeySymbol const & keysym,
        // why not return already here if action == -1 and
        // num_bytes == 0? (Lgb)
 
-       if (keyseq.length() > 1) {
+       if (keyseq.length() > 1)
                lyx_view_->message(keyseq.print(true));
-       }
 
 
        // Maybe user can only reach the key via holding down shift.
        // Let's see. But only if shift is the only modifier
-       if (func.action == LFUN_UNKNOWN_ACTION &&
-           state == key_modifier::shift) {
+       if (func.action == LFUN_UNKNOWN_ACTION && state == ShiftModifier) {
                LYXERR(Debug::KEY) << "Trying without shift" << endl;
-               func = keyseq.addkey(keysym, key_modifier::none);
+               func = keyseq.addkey(keysym, NoModifier);
                LYXERR(Debug::KEY) << "Action now " << func.action << endl;
        }
 
@@ -695,6 +688,8 @@ FuncStatus LyXFunc::getStatus(FuncRequest const & cmd) const
        case LFUN_BUFFER_WRITE_AS:
        case LFUN_BUFFER_UPDATE:
        case LFUN_BUFFER_VIEW:
+       case LFUN_MASTER_BUFFER_UPDATE:
+       case LFUN_MASTER_BUFFER_VIEW:
        case LFUN_BUFFER_IMPORT:
        case LFUN_BUFFER_AUTO_SAVE:
        case LFUN_RECONFIGURE:
@@ -895,7 +890,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                case LFUN_CANCEL:
                        BOOST_ASSERT(lyx_view_ && lyx_view_->view());
                        keyseq.reset();
-                       meta_fake_bit = key_modifier::none;
+                       meta_fake_bit = NoModifier;
                        if (lyx_view_->buffer())
                                // cancel any selection
                                dispatch(FuncRequest(LFUN_MARK_OFF));
@@ -903,18 +898,19 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        break;
 
                case LFUN_META_PREFIX:
-                       meta_fake_bit = key_modifier::alt;
+                       meta_fake_bit = AltModifier;
                        setMessage(keyseq.print(true));
                        break;
 
-               case LFUN_BUFFER_TOGGLE_READ_ONLY:
+               case LFUN_BUFFER_TOGGLE_READ_ONLY: {
                        BOOST_ASSERT(lyx_view_ && lyx_view_->view() && lyx_view_->buffer());
-                       if (lyx_view_->buffer()->lyxvc().inUse())
-                               lyx_view_->buffer()->lyxvc().toggleReadOnly();
+                       Buffer * buf = lyx_view_->buffer();
+                       if (buf->lyxvc().inUse())
+                               buf->lyxvc().toggleReadOnly();
                        else
-                               lyx_view_->buffer()->setReadonly(
-                                       !lyx_view_->buffer()->isReadonly());
+                               buf->setReadonly(!lyx_view_->buffer()->isReadonly());
                        break;
+               }
 
                // --- Menus -----------------------------------------------
                case LFUN_BUFFER_NEW:
@@ -999,6 +995,16 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        Exporter::preview(lyx_view_->buffer(), argument);
                        break;
 
+               case LFUN_MASTER_BUFFER_UPDATE:
+                       BOOST_ASSERT(lyx_view_ && lyx_view_->buffer() && lyx_view_->buffer()->getMasterBuffer());
+                       Exporter::Export(lyx_view_->buffer()->getMasterBuffer(), argument, true);
+                       break;
+
+               case LFUN_MASTER_BUFFER_VIEW:
+                       BOOST_ASSERT(lyx_view_ && lyx_view_->buffer() && lyx_view_->buffer()->getMasterBuffer());
+                       Exporter::preview(lyx_view_->buffer()->getMasterBuffer(), argument);
+                       break;
+
                case LFUN_BUILD_PROGRAM:
                        BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
                        Exporter::Export(lyx_view_->buffer(), "program", true);
@@ -1090,7 +1096,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        }
 
                        // Push directory path.
-                       string const path(buffer->temppath());
+                       string const path = buffer->temppath();
                        // Prevent the compiler from optimizing away p
                        FileName pp(path);
                        support::Path p(pp);
@@ -1187,7 +1193,8 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
 
                case LFUN_RECONFIGURE:
                        BOOST_ASSERT(lyx_view_);
-                       reconfigure(*lyx_view_);
+                       // argument is any additional parameter to the configure.py command
+                       reconfigure(*lyx_view_, argument);
                        break;
 
                case LFUN_HELP_OPEN: {
@@ -1416,7 +1423,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                                InsetBranchParams p;
                                data = InsetBranchMailer::params2string(p);
                        } else if (name == "citation") {
-                               InsetCommandParams p("cite");
+                               InsetCommandParams p("citation");
                                data = InsetCommandMailer::params2string(name, p);
                        } else if (name == "ert") {
                                data = InsetERTMailer::params2string(InsetCollapsable::Open);
@@ -1496,7 +1503,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                                        arg = token(argument, '|', 0);
                                        opt1 = token(argument, '|', 1);
                                }
-                               InsetCommandParams icp("cite");
+                               InsetCommandParams icp("citation");
                                icp["key"] = from_utf8(arg);
                                if (!opt1.empty())
                                        icp["before"] = from_utf8(opt1);
@@ -1751,7 +1758,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                        
                        Buffer * buffer = lyx_view_->buffer();
 
-                       TextClass_ptr oldClass = buffer->params().getTextClass_ptr();
+                       TextClassPtr oldClass = buffer->params().getTextClassPtr();
                        recordUndoFullDocument(view());
                        
                        istringstream ss(argument);
@@ -1790,7 +1797,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                case LFUN_LAYOUT_MODULES_CLEAR: {
                        BOOST_ASSERT(lyx_view_);
                        Buffer * buffer = lyx_view_->buffer();
-                       TextClass_ptr oldClass = buffer->params().getTextClass_ptr();
+                       TextClassPtr oldClass = buffer->params().getTextClassPtr();
                        recordUndoFullDocument(view());
                        buffer->params().clearLayoutModules();
                        updateLayout(oldClass, buffer);
@@ -1801,7 +1808,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                case LFUN_LAYOUT_MODULE_ADD: {
                        BOOST_ASSERT(lyx_view_);
                        Buffer * buffer = lyx_view_->buffer();
-                       TextClass_ptr oldClass = buffer->params().getTextClass_ptr();
+                       TextClassPtr oldClass = buffer->params().getTextClassPtr();
                        recordUndoFullDocument(view());
                        buffer->params().addLayoutModule(argument);
                        updateLayout(oldClass, buffer);
@@ -1829,7 +1836,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                                break;
 
                        //Save the old, possibly modular, layout for use in conversion.
-                       TextClass_ptr oldClass = buffer->params().getTextClass_ptr();
+                       TextClassPtr oldClass = buffer->params().getTextClassPtr();
                        recordUndoFullDocument(view());
                        buffer->params().setBaseClass(new_class);
                        updateLayout(oldClass, buffer);
@@ -1840,7 +1847,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd)
                case LFUN_LAYOUT_RELOAD: {
                        BOOST_ASSERT(lyx_view_);
                        Buffer * buffer = lyx_view_->buffer();
-                       TextClass_ptr oldClass = buffer->params().getTextClass_ptr();
+                       TextClassPtr oldClass = buffer->params().getTextClassPtr();
                        textclass_type const tc = buffer->params().getBaseClass();
                        textclasslist.reset(tc);
                        buffer->params().setBaseClass(tc);
@@ -2302,11 +2309,11 @@ BufferView * LyXFunc::view() const
 
 bool LyXFunc::wasMetaKey() const
 {
-       return (meta_fake_bit != key_modifier::none);
+       return (meta_fake_bit != NoModifier);
 }
 
 
-void LyXFunc::updateLayout(TextClass_ptr const & oldlayout,
+void LyXFunc::updateLayout(TextClassPtr const & oldlayout,
                            Buffer * buffer)
 {
        lyx_view_->message(_("Converting document to new document class..."));
@@ -2314,7 +2321,7 @@ void LyXFunc::updateLayout(TextClass_ptr const & oldlayout,
        StableDocIterator backcur(view()->cursor());
        ErrorList & el = buffer->errorList("Class Switch");
        cap::switchBetweenClasses(
-                       oldlayout, buffer->params().getTextClass_ptr(),
+                       oldlayout, buffer->params().getTextClassPtr(),
                        static_cast<InsetText &>(buffer->inset()), el);
 
        view()->setCursor(backcur.asDocIterator(&(buffer->inset())));