]> git.lyx.org Git - lyx.git/blobdiff - src/BufferView.cpp
* For gcc to know about QStandardItemModel < QAbstractItemModel we need this header.
[lyx.git] / src / BufferView.cpp
index 1957c9777fae0158f1c3c89c54310f41eb82338c..345d94a830cb532fada2b5f13351edeac3068e3b 100644 (file)
@@ -24,7 +24,6 @@
 #include "Cursor.h"
 #include "CutAndPaste.h"
 #include "DispatchResult.h"
-#include "EmbeddedFiles.h"
 #include "ErrorList.h"
 #include "factory.h"
 #include "FloatList.h"
@@ -852,8 +851,7 @@ FuncStatus BufferView::getStatus(FuncRequest const & cmd)
        case LFUN_FONT_STATE:
        case LFUN_LABEL_INSERT:
        case LFUN_INFO_INSERT:
-       case LFUN_EXTERNAL_EDIT:
-       case LFUN_GRAPHICS_EDIT:
+       case LFUN_INSET_EDIT:
        case LFUN_PARAGRAPH_GOTO:
        case LFUN_NOTE_NEXT:
        case LFUN_REFERENCE_NEXT:
@@ -869,45 +867,18 @@ FuncStatus BufferView::getStatus(FuncRequest const & cmd)
                flag.enabled(true);
                break;
 
-       case LFUN_NEXT_INSET_TOGGLE: {
-               // this is the real function we want to invoke
-               FuncRequest tmpcmd = FuncRequest(LFUN_INSET_TOGGLE, cmd.argument());
-               // if there is an inset at cursor, see whether it
-               // can be modified.
-               Inset * inset = cur.nextInset();
-               if (inset) {
-                       inset->getStatus(cur, tmpcmd, flag);
-                       return flag;
-                       break;
-               }
-               // if it did not work, try the underlying inset.
-               if (!inset || !cur.result().dispatched())
-                       getStatus(tmpcmd);
-
-               if (!cur.result().dispatched())
-                       // else disable
-                       flag.enabled(false);
-               break;
-       }
-
+       case LFUN_NEXT_INSET_TOGGLE: 
        case LFUN_NEXT_INSET_MODIFY: {
                // this is the real function we want to invoke
-               FuncRequest tmpcmd = FuncRequest(LFUN_INSET_MODIFY, cmd.argument());
+               FuncCode const code = 
+                       (cmd.action == LFUN_NEXT_INSET_TOGGLE) 
+                       ? LFUN_INSET_TOGGLE : LFUN_INSET_MODIFY;
+               FuncRequest const tmpcmd = FuncRequest(code, cmd.argument());
                // if there is an inset at cursor, see whether it
-               // can be modified.
+               // handles the lfun, other start from scratch
                Inset * inset = cur.nextInset();
-               if (inset) {
-                       inset->getStatus(cur, tmpcmd, flag);
-                       return flag;
-                       break;
-               }
-               // if it did not work, try the underlying inset.
-               if (!inset || !cur.result().dispatched())
-                       getStatus(tmpcmd);
-
-               if (!cur.result().dispatched())
-                       // else disable
-                       flag.enabled(false);
+               if (!inset || !inset->getStatus(cur, tmpcmd, flag))
+                       flag = lyx::getStatus(tmpcmd);
                break;
        }
 
@@ -943,11 +914,6 @@ FuncStatus BufferView::getStatus(FuncRequest const & cmd)
                break;
        }
        
-       case LFUN_BUFFER_TOGGLE_EMBEDDING: {
-               flag.setOnOff(buffer_.params().embedded);
-               break;
-       }
-
        case LFUN_SCREEN_UP:
        case LFUN_SCREEN_DOWN:
        case LFUN_SCROLL:
@@ -970,10 +936,14 @@ FuncStatus BufferView::getStatus(FuncRequest const & cmd)
 
        case LFUN_INSET_SETTINGS: {
                InsetCode code = cur.inset().lyxCode();
-               if (cur.nextInset())
-                       code = cur.nextInset()->lyxCode();
+               if (cmd.getArg(0) == insetName(code)) {
+                       flag.enabled(true);
+                       break;
+               }
                bool enable = false;
-               switch (code) {
+               InsetCode next_code = cur.nextInset()
+                       ? cur.nextInset()->lyxCode() : NO_CODE;
+               switch (next_code) {
                        case TABULAR_CODE:
                        case ERT_CODE:
                        case FLOAT_CODE:
@@ -983,7 +953,7 @@ FuncStatus BufferView::getStatus(FuncRequest const & cmd)
                        case BOX_CODE:
                        case LISTINGS_CODE:
                                enable = (cmd.argument().empty() ||
-                                         cmd.getArg(0) == insetName(code));
+                                         cmd.getArg(0) == insetName(next_code));
                                break;
                        default:
                                break;
@@ -1069,23 +1039,20 @@ bool BufferView::dispatch(FuncRequest const & cmd)
                break;
        }
        
-       case LFUN_EXTERNAL_EDIT: {
+       case LFUN_INSET_EDIT: {
                FuncRequest fr(cmd);
-               InsetExternal * inset = getInsetByCode<InsetExternal>(d->cursor_,
-                       EXTERNAL_CODE);
+               // if there is an inset at cursor, see whether it
+               // can be modified.
+               Inset * inset = cur.nextInset();
                if (inset)
-                       inset->dispatch(d->cursor_, fr);
-               break;
-       }
-
+                       inset->dispatch(cur, fr);
+               // if it did not work, try the underlying inset.
+               if (!inset || !cur.result().dispatched())
+                       cur.dispatch(cmd);
 
-       case LFUN_GRAPHICS_EDIT: {
-               FuncRequest fr(cmd);
-               InsetGraphics * inset = getInsetByCode<InsetGraphics>(d->cursor_,
-                       GRAPHICS_CODE);
-               if (inset)
-                       inset->dispatch(d->cursor_, fr);
-               break;
+               if (!cur.result().dispatched())
+                       // It did not work too; no action needed.
+                       break;
        }
 
        case LFUN_PARAGRAPH_GOTO: {
@@ -1311,16 +1278,6 @@ bool BufferView::dispatch(FuncRequest const & cmd)
                buffer_.params().compressed = !buffer_.params().compressed;
                break;
        
-       case LFUN_BUFFER_TOGGLE_EMBEDDING: {
-               // turn embedding on/off
-               try {
-                       buffer_.embeddedFiles().enable(!buffer_.params().embedded, buffer_, true);
-               } catch (ExceptionMessage const & message) {
-                       Alert::error(message.title_, message.details_);
-               }
-               break;
-       }
-
        case LFUN_NEXT_INSET_TOGGLE: {
                // this is the real function we want to invoke
                FuncRequest tmpcmd = FuncRequest(LFUN_INSET_TOGGLE, cmd.origin);