// -*- C++ -*-
-#ifndef LYXFUNC_H_
-#define LYXFUNC_H_
+#ifndef LYXFUNC_H
+#define LYXFUNC_H
#ifdef __GNUG__
#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 "func_status.h"
+#include "kbsequence.h"
#include "LString.h"
+
class LyXView;
+class LyXText;
/** This class encapsulates all the LyX command operations.
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);
+ /// 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 Dispatch(string const &cmd, string const &arg = string());
-
-
- /// A keyboard event is processed to execute a lyx action.
- int processKeyEvent(XEvent *ev);
-
- /// The last key was meta
- bool wasMetaKey();
-
- // These can't be global because are part of the internat state (ale970227)
- /// Get the current keyseq string
- string keyseqStr(int l=190);
-
- /// Is the key sequence uncomplete?
- bool keyseqUncomplete();
+ string const dispatch(string const & cmd);
- /// get options for the current keyseq
- string keyseqOptions(int l=190);
+ ///
+ void miniDispatch(string const & cmd);
- /// 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 internall which is called from inside LyXAction and
+ /// can contain the string argument.
+ func_status::value_type 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;
/// 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);
/// Buffer to store result messages
- void setErrorMessage(string const &);
+ 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:
///
- string 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;
///
///
unsigned meta_fake_bit;
///
- void moveCursorUpdate(bool selecting = false);
+ void moveCursorUpdate(bool flag = true, bool selecting = false);
///
void setupLocalKeymap();
///
///
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;
/// 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()
///
- void reloadBuffer();
- /// This is the same for all lyxfunc objects
+ LyXText * TEXT(bool) const;
+ ///
+ // 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)
{