]> git.lyx.org Git - lyx.git/commitdiff
add a dispatchresult parameter to lyxview::dispatch
authorJean-Marc Lasgouttes <lasgouttes@lyx.org>
Fri, 29 Jan 2010 10:42:39 +0000 (10:42 +0000)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Fri, 29 Jan 2010 10:42:39 +0000 (10:42 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@33258 a592a061-630c-0410-9148-cb99ea01b6c8

src/LyXFunc.cpp
src/frontends/LyXView.h
src/frontends/qt4/GuiView.cpp
src/frontends/qt4/GuiView.h
src/frontends/qt4/GuiWorkArea.cpp

index 9eab7f85edb78a957e4f4c2b9ba597d370a75c27..615b65c5f2542519257678d4d1b6c8fd580c18c6 100644 (file)
@@ -530,13 +530,7 @@ void LyXFunc::dispatch(FuncRequest const & cmd, DispatchResult & dr)
                                break;
 
                        // Let the current LyXView dispatch its own actions.
-                       //FIXME: pass dr to LyXView::dispatch
-                       if (lv->dispatch(cmd)) {
-                               BufferView * bv = lv->currentBufferView();
-                               if (bv)
-                                       dr = bv->cursor().result();
-                               break;
-                       }
+                       lv->dispatch(cmd, dr);
 
                        BufferView * bv = lv->currentBufferView();
                        LASSERT(bv, /**/);
index 2525df425939cb93f60c98e59ae8126fc4ed9bbc..873590320227ea200ffee596b817f793493b8fd1 100644 (file)
@@ -22,6 +22,7 @@ namespace support { class FileName; }
 class Buffer;
 class BufferView;
 class Cursor;
+class DispatchResult;
 class FuncStatus;
 class FuncRequest;
 class Inset;
@@ -64,7 +65,7 @@ public:
        virtual bool getStatus(FuncRequest const & cmd, FuncStatus & flag) = 0;
        /// dispatch command.
        /// \return true if the \c FuncRequest has been dispatched.
-       virtual bool dispatch(FuncRequest const & cmd) = 0;
+       virtual void dispatch(FuncRequest const & cmd, DispatchResult & dr) = 0;
 
        ///
        virtual void restartCursor() = 0;
index 8cbfc9e97ee527e4b319a509c25d645b9f7b23d1..fe0c201b8dc3fe26d20f4ab403dcc02555094797 100644 (file)
@@ -16,6 +16,7 @@
 #include "GuiView.h"
 
 #include "Dialog.h"
+#include "DispatchResult.h"
 #include "FileDialog.h"
 #include "FontLoader.h"
 #include "GuiApplication.h"
@@ -2452,6 +2453,7 @@ void GuiView::checkExternallyModifiedBuffers()
 }
 
 
+//FIXME use a DispatchResult object to transmit messages
 void GuiView::dispatchVC(FuncRequest const & cmd)
 {
        // message for statusbar
@@ -2688,22 +2690,22 @@ static docstring previewAndDestroy(Buffer * buffer, string const & format)
 #endif
 
 
-bool GuiView::dispatch(FuncRequest const & cmd)
+void GuiView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
 {
        BufferView * bv = currentBufferView();
        // By default we won't need any update.
-       if (bv)
-               bv->cursor().updateFlags(Update::None);
+       dr.update(Update::None);
+       // assume cmd will be dispatched
+       dr.dispatched(true);
 
        Buffer * doc_buffer = documentBufferView()
                ? &(documentBufferView()->buffer()) : 0;
 
-       bool dispatched = true;
-
        if (cmd.origin == FuncRequest::TOC) {
                GuiToc * toc = static_cast<GuiToc*>(findOrBuild("toc", false));
+               // FIXME: do we need to pass a DispatchResult object here?
                toc->doDispatch(bv->cursor(), cmd);
-               return true;
+               return;
        }
 
        string const argument = to_utf8(cmd.argument());
@@ -2721,11 +2723,13 @@ bool GuiView::dispatch(FuncRequest const & cmd)
                        if (!doc_buffer)
                                break;
                        if (cmd.argument() == "custom") {
-                               lyx::dispatch(FuncRequest(LFUN_DIALOG_SHOW, "sendto"));
+                               dispatch(FuncRequest(LFUN_DIALOG_SHOW, "sendto"), 
+                                        dr);
                                break;
                        }
                        if (doc_buffer->doExport(argument, false)) {
-                               message(bformat(_("Error exporting to format: %1$s."),
+                               dr.setError(true);
+                               dr.setMessage(bformat(_("Error exporting to format: %1$s."),
                                        cmd.argument()));
                        }
                        break;
@@ -2810,8 +2814,10 @@ bool GuiView::dispatch(FuncRequest const & cmd)
                                        theBufferList().getBuffer(FileName(to_utf8(cmd.argument())));
                                if (buffer)
                                        setBuffer(buffer);
-                               else
-                                       message(_("Document not loaded"));
+                               else {
+                                       dr.setError(true);
+                                       dr.setMessage(_("Document not loaded"));
+                               }
                        }
                        break;
 
@@ -2922,6 +2928,7 @@ bool GuiView::dispatch(FuncRequest const & cmd)
                                // FIXME: get rid of this indirection; GuiView ask the inset
                                // if he is kind enough to update itself...
                                FuncRequest fr(LFUN_INSET_DIALOG_UPDATE, cmd.argument());
+                               //FIXME: pass DispatchResult here?
                                inset->dispatch(currentBufferView()->cursor(), fr);
                        } else if (name == "paragraph") {
                                lyx::dispatch(FuncRequest(LFUN_PARAGRAPH_UPDATE));
@@ -2933,9 +2940,9 @@ bool GuiView::dispatch(FuncRequest const & cmd)
 
                case LFUN_DIALOG_TOGGLE: {
                        if (isDialogVisible(cmd.getArg(0)))
-                               dispatch(FuncRequest(LFUN_DIALOG_HIDE, cmd.argument()));
+                               dispatch(FuncRequest(LFUN_DIALOG_HIDE, cmd.argument()), dr);
                        else
-                               dispatch(FuncRequest(LFUN_DIALOG_SHOW, cmd.argument()));
+                               dispatch(FuncRequest(LFUN_DIALOG_SHOW, cmd.argument()), dr);
                        break;
                }
 
@@ -3088,7 +3095,7 @@ bool GuiView::dispatch(FuncRequest const & cmd)
                        break;
 
                default:
-                       dispatched = false;
+                       dr.dispatched(false);
                        break;
        }
 
@@ -3100,7 +3107,7 @@ bool GuiView::dispatch(FuncRequest const & cmd)
                        statusBar()->hide();
        }
 
-       return dispatched;
+       return;
 }
 
 
index 2b9a0eee6f2b297e3fc3bca9320c668d3e6cba1b..061060a8c30dba2c7110976352352f1148c04f89 100644 (file)
@@ -79,7 +79,7 @@ public:
        void updateMessage(QString const & str);
 
        bool getStatus(FuncRequest const & cmd, FuncStatus & flag);
-       bool dispatch(FuncRequest const & cmd);
+       void dispatch(FuncRequest const & cmd, DispatchResult & dr);
        void restartCursor();
        void updateCompletion(Cursor & cur, bool start, bool keep);
        void setFocus();
index 1af30982de8043dae0399e340e04918c66768bbe..dde2d710cae292ed2cb0cdf1aa14b75d2f8dc220 100644 (file)
@@ -466,7 +466,8 @@ void GuiWorkArea::dispatch(FuncRequest const & cmd0, KeyModifier mod)
 {
        // Handle drag&drop
        if (cmd0.action == LFUN_FILE_OPEN) {
-               lyx_view_->dispatch(cmd0);
+               DispatchResult dr;
+               lyx_view_->dispatch(cmd0, dr);
                return;
        }