]> git.lyx.org Git - lyx.git/blobdiff - src/lyxfunc.h
Fix fuer #209
[lyx.git] / src / lyxfunc.h
index 3abd7ce1ff968ef609c2358670552abe818e687e..9cd6458def1c9d28723a9a2fd1e2c71166595594 100644 (file)
@@ -6,13 +6,17 @@
 #pragma interface
 #endif
 
-#include "commandtags.h"
-#include "kbmap.h"
-#include "tex-accent.h"
-#include "LyXAction.h"
-#include "insets/lyxinset.h"
+#include <X11/Xlib.h>
+#include <sigc++/signal_system.h>
+
+#include "commandtags.h" // for kb_action enum
+#include "FuncStatus.h"
+#include "kbsequence.h"
 #include "LString.h"
+
 class LyXView;
+class LyXText;
+
 
 /** This class encapsulates all the LyX command operations. 
     This is the class of the LyX's "high level event handler".
@@ -20,65 +24,64 @@ class LyXView;
     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:
        ///
-       LyXFunc(LyXView*);
-       ///
-       ~LyXFunc();
+       explicit
+       LyXFunc(LyXView *);
     
-       /// LyX distpatcher, executes lyx actions.
-       string Dispatch(int action, char const* arg = 0);
-                        
-       /// The same but uses the name of a lyx command.
-       string Dispatch(string const &cmd, string const &arg = string());
-
+       /// 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);
        
-       /// A keyboard event is processed to execute a lyx action. 
-       int  processKeyEvent(XEvent *ev);
-     
-       /// The last key was meta
-       bool wasMetaKey();
+       /// Same as above, using a pseudoaction as argument
+       void verboseDispatch(int ac, bool show_sc);
 
-       // These can't be global because are part of the internat state (ale970227)
-       /// Get the current keyseq string
-       string keyseqStr(int l=190);
+       /// Same as above, when the command is provided as a string
+       void verboseDispatch(string const & s, bool show_sc);
 
-       /// Is the key sequence uncomplete?
-       bool keyseqUncomplete();
+       /// 
+       void miniDispatch(string const & s);
 
-       /// get options for the current keyseq
-       string keyseqOptions(int l=190);
-
-       /// Returns the name of a funcion given a keyseq
-       char const* getFunc(char*) 
-       { /* unimplemented */ return 0; }
+       ///
+       void initMiniBuffer();
+               
+       ///
+       void processKeySym(KeySym k, unsigned int state);
 
-       /// Return a string with the keybind to an action, if any
-       char const* getKeybind(int) 
-       { /* unimplemented */ return 0; }
+       /// 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;
+       
+       /// The last key was meta
+       bool wasMetaKey() const;
 
         /// True if lyxfunc reports an error
         bool errorStat() const { return errorstat; }
         /// Buffer to store result messages
-        void setMessage(string const &m);
+        void setMessage(string const & m) const;
         /// Buffer to store result messages
-        void setErrorMessage(string const &); 
+        void setErrorMessage(string const &) const; 
+        /// Buffer to store result messages from getStatus
+        void setStatusMessage(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);
-       
-       /// Should a hint message be displayed?
-       void setHintMessage(bool);
+        string const getMessage() const { return dispatch_buffer; }
+        /// Buffer to store result messages
+        string const getStatusMessage() const { return status_buffer; }
+       /// Handle a accented char keysequenze
+       void handleKeyFunc(kb_action action);
 
 private:
        ///
-       LyXView *owner;
-       ///
-       static kb_func_table* lyx_func_table;
-       ///
-       static kb_func_table *lyx_func_args;
+       LyXView * owner;
        ///
        static int psd_idx;
        ///
@@ -88,7 +91,7 @@ private:
        ///
        unsigned meta_fake_bit;
        ///
-       void moveCursorUpdate(bool selecting = false);
+       void moveCursorUpdate(bool flag = true, bool selecting = false);
        ///
        void setupLocalKeymap();
         ///
@@ -96,80 +99,48 @@ private:
         ///
         kb_action lyx_calling_dead_action;
         /// Error status, only Dispatch can change this flag
-        bool errorstat;
+        mutable bool errorstat;
 
         /** Buffer to store messages and result data. Is there a
-         good reason to have this one as static in Dispatch? (Ale)
-         */
-        string dispatch_buffer;
+           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;
 
        // 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 doImportLaTeX(bool);
+       void doImport(string const &);
 
        ///
-       void doImportASCII(bool);
-
+       void closeBuffer();
        ///
-       void MenuInsertLyXFile(string const &);
-
+       void reloadBuffer();
        ///
-       void CloseBuffer();
+       //  This return or directly text (default) of getLyXText()
+       ///
+       LyXText * TEXT(bool) const;
        ///
-       void reloadBuffer();
-       /// This is the same for all lyxfunc objects
-       static bool show_sc;
 };
      
      
 /*--------------------  inlines  --------------------------*/
 
 inline
-bool LyXFunc::wasMetaKey() 
+bool LyXFunc::wasMetaKey() const 
 { 
        return (meta_fake_bit != 0);
 }
      
 
-inline
-string LyXFunc::keyseqStr(int l)
-{
-       char text[200];
-       keyseq.print(text, l, true);
-       string tmp(text);
-       return tmp;
-} 
-
-
-inline
-string LyXFunc::keyseqOptions(int l)
-{
-       char text[200];
-       keyseq.printOptions(text, l);
-       string tmp(text);
-       return tmp;
-} 
-
-
-inline
-bool LyXFunc::keyseqUncomplete() 
-{ 
-       return (keyseq.length > 0);
-}
-
-inline
-void LyXFunc::setHintMessage(bool hm) 
-{ 
-       show_sc = hm;
-}
-
 #endif