]> git.lyx.org Git - lyx.git/blobdiff - src/lyxfunc.h
fix compilation pb ; update eu.po
[lyx.git] / src / lyxfunc.h
index 1e4c37cdb2277d0bb2fb8a02dcbb23ebe79cf5ab..f8a85d0f18beb5ea73d24bc2d691ef7511abad59 100644 (file)
@@ -1,17 +1,19 @@
 // -*- C++ -*-
-#ifndef _LYXFUNC_H_
-#define _LYXFUNC_H_
+#ifndef LYXFUNC_H
+#define LYXFUNC_H
+
+#include <sigc++/signal_system.h>
 
 #ifdef __GNUG__
 #pragma interface
 #endif
 
+#include FORMS_H_LOCATION
 #include "commandtags.h"
-#include "kbmap.h"
-#include "tex-accent.h"
-#include "LyXAction.h"
+#include "kbsequence.h"
 #include "insets/lyxinset.h"
 #include "LString.h"
+
 class LyXView;
 
 
@@ -21,67 +23,74 @@ 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();
+       /// 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 distpatcher, executes lyx actions.
-       LString Dispatch(int action, char const* arg = 0);
+       /// LyX dispatcher, executes lyx actions.
+       string const Dispatch(int action, string const & arg = string());
                         
        /// The same but uses the name of a lyx command.
-       LString Dispatch(LString const &cmd, LString const &arg = LString());
+       string const Dispatch(string const & cmd);
 
+       ///
+       void miniDispatch(string const & cmd);
+
+       ///
+       void initMiniBuffer();
+               
+       ///
+       int processKeySym(KeySym k, unsigned int state);
+
+       /// we need one internall which is called from inside LyXAction and
+       /// can contain the string argument.
+       func_status getStatus(int ac) const;
+       func_status getStatus(int ac, string const & not_to_use_arg) const;
        
-       /// A keyboard event is processed to execute a lyx action. 
-       int  processKeyEvent(XEvent *ev);
-     
        /// The last key was meta
-       bool wasMetaKey();
+       bool wasMetaKey() const;
 
-       // These can't be global because are part of the internat state (ale970227)
+       // These can't be global because are part of the
+       // internal state (ale970227)
        /// Get the current keyseq string
-       LString keyseqStr(int l=190);
+       string const keyseqStr() const;
 
        /// Is the key sequence uncomplete?
-       bool keyseqUncomplete();
+       bool keyseqUncomplete() const;
 
        /// get options for the current keyseq
-       LString keyseqOptions(int l=190);
-
-       /// Returns the name of a funcion given a keyseq
-       char const* getFunc(char*) 
-       { /* unimplemented */ return 0; }
-
-       /// Return a string with the keybind to an action, if any
-       char const* getKeybind(int) 
-       { /* unimplemented */ return 0; }
+       string const keyseqOptions() const;
 
         /// True if lyxfunc reports an error
         bool errorStat() const { return errorstat; }
         /// Buffer to store result messages
-        void setMessage(LString const &m);
+        void setMessage(string const & m);
         /// Buffer to store result messages
-        void setErrorMessage(LString const &)
+        void setErrorMessage(string const &) const
         /// Buffer to store result messages
-        LString 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:
        ///
-       LString argAsString(char const *const argument);
-       ///
-       LyXView *owner;
-       ///
-       static kb_func_table* lyx_func_table;
-       ///
-       static kb_func_table *lyx_func_args;
+       LyXView * owner;
        ///
        static int psd_idx;
        ///
@@ -91,7 +100,7 @@ private:
        ///
        unsigned meta_fake_bit;
        ///
-       void moveCursorUpdate(bool selecting = false);
+       void moveCursorUpdate(bool flag = true, bool selecting = false);
        ///
        void setupLocalKeymap();
         ///
@@ -99,14 +108,14 @@ 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)
-         */
-        LString dispatch_buffer;
+           good reason to have this one as static in Dispatch? (Ale)
+       */
+        mutable string dispatch_buffer;
        /// Command name and shortcut information
-       LString commandshortcut;
+       string commandshortcut;
 
        // I think the following should be moved to BufferView. (Asger)
 
@@ -114,22 +123,21 @@ private:
        void MenuNew(bool fromTemplate);
 
        ///
-       void MenuOpen();
-
-       ///
-       void doImportLaTeX(bool);
+       void Open(string const &);
 
        ///
-       void doImportASCII(bool);
-
-       ///
-       void MenuInsertLyXFile(LString const &);
+       void doImport(string const &);
 
        ///
        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;
 };
      
@@ -137,42 +145,50 @@ private:
 /*--------------------  inlines  --------------------------*/
 
 inline
-bool LyXFunc::wasMetaKey() 
+bool LyXFunc::wasMetaKey() const 
 { 
        return (meta_fake_bit != 0);
 }
      
 
 inline
-LString LyXFunc::keyseqStr(int l)
+string const LyXFunc::keyseqStr() const
 {
-       char text[200];
-       keyseq.print(text, l, true);
-       LString tmp(text);
-       return tmp;
+       // Why not just remove this function
+       string text;
+       keyseq.print(text, true);
+       return text;
 } 
 
 
 inline
-LString LyXFunc::keyseqOptions(int l)
+string const LyXFunc::keyseqOptions() const
 {
-       char text[200];
-       keyseq.printOptions(text, l);
-       LString tmp(text);
-       return tmp;
+       // Why not just remove this function
+       string text;
+       keyseq.printOptions(text);
+       return text;
 } 
 
 
 inline
-bool LyXFunc::keyseqUncomplete() 
+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