]> git.lyx.org Git - lyx.git/blobdiff - src/lyxfunc.h
* src/text2.C: deleteEmptyParagraphMechanism(): fix a crash in
[lyx.git] / src / lyxfunc.h
index 9f72d2c406e12ce607312015f81a2e9b5f581c58..4fce15e67865b2e7e7ef1e53f890165f0f294f9a 100644 (file)
@@ -1,25 +1,36 @@
 // -*- C++ -*-
+/**
+ * \file lyxfunc.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Lars Gullik Bjønnes
+ * \author Jean-Marc Lasgouttes
+ * \author John Levon
+ * \author André Pönitz
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
 #ifndef LYXFUNC_H
 #define LYXFUNC_H
 
-#ifdef __GNUG__
-#pragma interface
-#endif
-
-
-#include "commandtags.h" // for kb_action enum
-#include "FuncStatus.h"
 #include "kbsequence.h"
-#include "LString.h"
+#include "lfuns.h"
 
-#include "frontends/mouse_state.h"
-#include "frontends/key_state.h"
-#include "frontends/LyXKeySym.h"
+#include "support/docstring.h"
 
+#include <boost/scoped_ptr.hpp>
 #include <boost/signals/trackable.hpp>
 
-class LyXView;
+namespace lyx {
+
+class BufferView;
+class FuncRequest;
+class FuncStatus;
+class LyXKeySym;
 class LyXText;
+class LyXView;
 
 
 /** This class encapsulates all the LyX command operations.
@@ -31,39 +42,25 @@ class LyXText;
 class LyXFunc : public boost::signals::trackable {
 public:
        ///
-       explicit
-       LyXFunc(LyXView *);
+       explicit LyXFunc();
 
        /// LyX dispatcher, executes lyx actions.
-       string const dispatch(kb_action ac, string argument = string());
-
-       /// The same as dispatch, but also shows shortcuts and command
-       /// name in minibuffer if show_sc is true (more to come?)
-       void verboseDispatch(kb_action action,
-                            string const & argument,
-                            bool show_sc);
-
-       /// Same as above, using a pseudoaction as argument
-       void verboseDispatch(int ac, bool show_sc);
-
-       /// Same as above, when the command is provided as a string
-       void verboseDispatch(string const & s, bool show_sc);
+       void dispatch(FuncRequest const &);
 
        ///
-       void miniDispatch(string const & s);
+       void setLyXView(LyXView * lv);
 
        ///
-       void initMiniBuffer();
+       void initKeySequences(kb_keymap * kb);
+
+       /// return the status bar state string
+       docstring const viewStatusMessage();
 
        ///
        void processKeySym(LyXKeySymPtr key, key_modifier::state state);
 
-       /// we need one internal which is called from inside LyXAction and
-       /// can contain the string argument.
-       FuncStatus getStatus(int ac) const;
        ///
-       FuncStatus getStatus(kb_action action,
-                            string const & argument = string()) const;
+       FuncStatus getStatus(FuncRequest const & action) const;
 
        /// The last key was meta
        bool wasMetaKey() const;
@@ -71,80 +68,72 @@ public:
        /// True if lyxfunc reports an error
        bool errorStat() const { return errorstat; }
        /// Buffer to store result messages
-       void setMessage(string const & m) const;
+       void setMessage(docstring const & m) const;
        /// Buffer to store result messages
-       void setErrorMessage(string const &) const;
-       /// Buffer to store result messages from getStatus
-       void setStatusMessage(string const &) const;
+       void setErrorMessage(docstring const &) const;
        /// Buffer to store result messages
-       string const getMessage() const { return dispatch_buffer; }
-       /// Buffer to store result messages
-       string const getStatusMessage() const { return status_buffer; }
+       docstring const getMessage() const { return dispatch_buffer; }
        /// Handle a accented char key sequence
        void handleKeyFunc(kb_action action);
+       /// goto a bookmark
+       /// openFile: whether or not open a file if the file is not opened
+       /// switchToBuffer: whether or not switch to buffer if the buffer is 
+       ///             not the current buffer
+       void gotoBookmark(unsigned int idx, bool openFile, bool switchToBuffer);
 
 private:
        ///
-       LyXView * owner;
+       BufferView * view() const;
+
        ///
-       static int psd_idx;
+       LyXView * lyx_view_;
+
+       /// the last character added to the key sequence, in UCS4 encoded form
+       char_type encoded_last_key;
+
        ///
-       kb_sequence keyseq;
+       boost::scoped_ptr<kb_sequence> keyseq;
        ///
-       kb_sequence cancel_meta_seq;
+       boost::scoped_ptr<kb_sequence> cancel_meta_seq;
        ///
        key_modifier::state meta_fake_bit;
-       ///
-       void moveCursorUpdate(bool flag = true, bool selecting = false);
-       ///
-       void setupLocalKeymap();
-       ///
-       kb_action lyx_dead_action;
-       ///
-       kb_action lyx_calling_dead_action;
+
        /// Error status, only Dispatch can change this flag
        mutable bool errorstat;
 
        /** Buffer to store messages and result data. Is there a
            good reason to have this one as static in Dispatch? (Ale)
        */
-       mutable string dispatch_buffer;
-       /** Buffer to store messages and result data from getStatus
-       */
-       mutable string status_buffer;
-       /// Command name and shortcut information
-       string commandshortcut;
+       mutable docstring dispatch_buffer;
 
-       // I think the following should be moved to BufferView. (Asger)
+       /// send a post-dispatch status message
+       void sendDispatchMessage(docstring const & msg,
+               FuncRequest const & ev);
 
+       // I think the following should be moved to BufferView. (Asger)
        ///
-       void menuNew(bool fromTemplate);
-
+       void menuNew(std::string const & argument, bool fromTemplate);
        ///
-       void open(string const &);
-
+       void open(std::string const &);
        ///
-       void doImport(string const &);
-
+       void doImport(std::string const &);
        ///
        void closeBuffer();
        ///
        void reloadBuffer();
        ///
-       //  This return or directly text (default) of getLyXText()
-       ///
-       LyXText * TEXT(bool) const;
-       ///
+       bool ensureBufferClean(BufferView * bv);
 };
 
+/// Implementation is in lyx_main.C
+extern LyXFunc & theLyXFunc();
 
-/*--------------------  inlines  --------------------------*/
+/// Implementation is in lyx_main.C
+extern FuncStatus getStatus(FuncRequest const & action);
 
-inline
-bool LyXFunc::wasMetaKey() const
-{
-       return (meta_fake_bit != key_modifier::none);
-}
+/// Implementation is in lyx_main.C
+extern void dispatch(FuncRequest const & action);
 
+} // namespace lyx
 
 #endif