]> git.lyx.org Git - lyx.git/blobdiff - src/lyxfunc.h
form para crash fix from John
[lyx.git] / src / lyxfunc.h
index ec0685a265b850ba2411f1f066db3e51caf3d55b..6942650e1906291412a33bab54609e0619353d68 100644 (file)
@@ -6,13 +6,17 @@
 #pragma interface
 #endif
 
-#include "commandtags.h"
+#include <X11/Xlib.h>
+#include <sigc++/signal_system.h>
+
+#include "commandtags.h" // for kb_action enum
+#include "func_status.h"
 #include "kbsequence.h"
-#include "insets/lyxinset.h"
 #include "LString.h"
 
 class LyXView;
-class auto_mem_buffer;
+class LyXText;
+
 
 /** This class encapsulates all the LyX command operations. 
     This is the class of the LyX's "high level event handler".
@@ -20,39 +24,33 @@ class auto_mem_buffer;
     keyboard or from the GUI. All GUI objects, including buttons and
     menus should use this class and never call kernel functions directly.
 */
-class LyXFunc {
+class LyXFunc : public SigC::Object {
 public:
-       /// The status of a function.
-       enum func_status {
-               /// No problem
-               OK = 0,
-               ///
-               Unknown = 1,
-               /// Command cannot be executed
-               Disabled = 2,
-               ///
-               ToggleOn = 4,
-               ///
-               ToggleOff = 8
-       };
        ///
        explicit
        LyXFunc(LyXView *);
     
        /// LyX dispatcher, executes lyx actions.
-       string Dispatch(int action, char const * arg = 0);
+       string const dispatch(int action, string const & arg = string());
                         
        /// The same but uses the name of a lyx command.
-       string Dispatch(string const & cmd);
+       string const dispatch(string const & cmd);
 
-       /// Same again but for xtl buffers.  Still looking for better idea.
-       bool Dispatch(int action, auto_mem_buffer &);
+       ///
+       void miniDispatch(string const & cmd);
 
-       /// A keyboard event is processed to execute a lyx action. 
-       int processKeyEvent(XEvent * ev);
+       ///
+       void initMiniBuffer();
+               
+       ///
+       void processKeySym(KeySym k, unsigned int state);
 
+       /// we need one internall which is called from inside LyXAction and
+       /// can contain the string argument.
+       func_status::value_type getStatus(int ac) const;
        ///
-       func_status getStatus(int ac) const;
+       func_status::value_type getStatus(int ac, 
+                                         string const & not_to_use_arg) const;
        
        /// The last key was meta
        bool wasMetaKey() const;
@@ -60,13 +58,13 @@ public:
        // These can't be global because are part of the
        // internal state (ale970227)
        /// Get the current keyseq string
-       string keyseqStr() const;
+       string const keyseqStr() const;
 
        /// Is the key sequence uncomplete?
        bool keyseqUncomplete() const;
 
        /// get options for the current keyseq
-       string keyseqOptions() const;
+       string const keyseqOptions() const;
 
         /// True if lyxfunc reports an error
         bool errorStat() const { return errorstat; }
@@ -75,10 +73,9 @@ public:
         /// Buffer to store result messages
         void setErrorMessage(string const &) const; 
         /// Buffer to store result messages
-        string getMessage() const { return dispatch_buffer; }
-        /// Get next inset of this class from current cursor position  
-        Inset * getInsetByCode(Inset::Code);
-       
+        string const getMessage() const { return dispatch_buffer; }
+       /// Handle a accented char keysequenze
+       void handleKeyFunc(kb_action action);
        /// Should a hint message be displayed?
        void setHintMessage(bool);
 private:
@@ -93,7 +90,7 @@ private:
        ///
        unsigned meta_fake_bit;
        ///
-       void moveCursorUpdate(bool selecting = false);
+       void moveCursorUpdate(bool flag = true, bool selecting = false);
        ///
        void setupLocalKeymap();
         ///
@@ -113,25 +110,24 @@ private:
        // I think the following should be moved to BufferView. (Asger)
 
        ///
-       void MenuNew(bool fromTemplate);
+       void menuNew(bool fromTemplate);
 
        ///
-       void MenuOpen();
+       void open(string const &);
 
        ///
        void doImport(string const &);
-       ///
-       void doImportHelper(string const &, string const &, string const &,
-               bool func(BufferView *, string const &) );
-
-       ///
-       void MenuInsertLyXFile(string const &);
 
        ///
-       void CloseBuffer();
+       void closeBuffer();
        ///
        void reloadBuffer();
-       /// This is the same for all lyxfunc objects
+       ///
+       //  This return or directly text (default) of getLyXText()
+       ///
+       LyXText * TEXT(bool) const;
+       ///
+       //  This is the same for all lyxfunc objects
        static bool show_sc;
 };
      
@@ -146,7 +142,7 @@ bool LyXFunc::wasMetaKey() const
      
 
 inline
-string LyXFunc::keyseqStr() const
+string const LyXFunc::keyseqStr() const
 {
        // Why not just remove this function
        string text;
@@ -156,7 +152,7 @@ string LyXFunc::keyseqStr() const
 
 
 inline
-string LyXFunc::keyseqOptions() const
+string const LyXFunc::keyseqOptions() const
 {
        // Why not just remove this function
        string text;
@@ -178,11 +174,4 @@ void LyXFunc::setHintMessage(bool hm)
        show_sc = hm;
 }
 
-///
-inline
-void operator|=(LyXFunc::func_status & fs, LyXFunc::func_status f)
-{
-       fs = static_cast<LyXFunc::func_status>(fs | f);
-}
-
 #endif