]> git.lyx.org Git - lyx.git/blobdiff - src/lyxfunc.h
Fix fuer #209
[lyx.git] / src / lyxfunc.h
index 6a52fd7e67b73f0968f0f2077b614ea5189f608c..9cd6458def1c9d28723a9a2fd1e2c71166595594 100644 (file)
@@ -6,14 +6,17 @@
 #pragma interface
 #endif
 
-#include FORMS_H_LOCATION
-#include "commandtags.h"
+#include <X11/Xlib.h>
+#include <sigc++/signal_system.h>
+
+#include "commandtags.h" // for kb_action enum
+#include "FuncStatus.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".
@@ -21,66 +24,61 @@ 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 const Dispatch(int action, string const & arg = string());
-                        
-       /// The same but uses the name of a lyx command.
-       string const Dispatch(string const & cmd);
+       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 again but for xtl buffers.  Still looking for better idea.
-       bool Dispatch(int action, auto_mem_buffer &);
+       /// Same as above, when the command is provided as a string
+       void verboseDispatch(string const & s, bool show_sc);
 
+       /// 
+       void miniDispatch(string const & s);
+
+       ///
+       void initMiniBuffer();
+               
        ///
-       int processKeySym(KeySym k, unsigned int state);
+       void processKeySym(KeySym k, unsigned int state);
 
+       /// we need one internal which is called from inside LyXAction and
+       /// can contain the string argument.
+       FuncStatus getStatus(int ac) const;
        ///
-       func_status getStatus(int ac) const;
+       FuncStatus getStatus(kb_action action, 
+                            string const & argument = string()) const;
        
        /// The last key was meta
        bool wasMetaKey() const;
 
-       // These can't be global because are part of the
-       // internal state (ale970227)
-       /// Get the current keyseq string
-       string const keyseqStr() const;
-
-       /// Is the key sequence uncomplete?
-       bool keyseqUncomplete() const;
-
-       /// get options for the current keyseq
-       string const keyseqOptions() 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 &) const; 
+        /// Buffer to store result messages from getStatus
+        void setStatusMessage(string 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; }
        /// Handle a accented char keysequenze
        void handleKeyFunc(kb_action action);
-       /// Should a hint message be displayed?
-       void setHintMessage(bool);
+
 private:
        ///
        LyXView * owner;
@@ -107,22 +105,25 @@ private:
            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 doImport(string const &);
 
        ///
-       void CloseBuffer();
+       void closeBuffer();
        ///
        void reloadBuffer();
        ///
@@ -130,8 +131,6 @@ private:
        ///
        LyXText * TEXT(bool) const;
        ///
-       //  This is the same for all lyxfunc objects
-       static bool show_sc;
 };
      
      
@@ -144,44 +143,4 @@ bool LyXFunc::wasMetaKey() const
 }
      
 
-inline
-string const LyXFunc::keyseqStr() const
-{
-       // Why not just remove this function
-       string text;
-       keyseq.print(text, true);
-       return text;
-} 
-
-
-inline
-string const LyXFunc::keyseqOptions() const
-{
-       // Why not just remove this function
-       string text;
-       keyseq.printOptions(text);
-       return text;
-} 
-
-
-inline
-bool LyXFunc::keyseqUncomplete() const
-{ 
-       return (keyseq.length > 0);
-}
-
-
-inline
-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