// -*- 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 "kbsequence.h"
#include "insets/lyxinset.h"
#include "LString.h"
-class LyXView;
+class LyXView;
+class auto_mem_buffer;
/** This class encapsulates all the LyX command operations.
This is the class of the LyX's "high level event handler".
*/
class LyXFunc {
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 Dispatch(int action, char const * arg = 0);
/// The same but uses the name of a lyx command.
- LString Dispatch(LString const &cmd, LString const &arg = LString());
+ string Dispatch(string const & cmd);
+
+ /// Same again but for xtl buffers. Still looking for better idea.
+ bool Dispatch(int action, auto_mem_buffer &);
-
/// A keyboard event is processed to execute a lyx action.
- int processKeyEvent(XEvent *ev);
-
+ int processKeyEvent(XEvent * ev);
+
+ ///
+ func_status getStatus(int ac) const;
+
/// 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 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 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; }
+ string getMessage() const { return dispatch_buffer; }
/// Get next inset of this class from current cursor position
- Inset* getInsetByCode(Inset::Code);
+ Inset * getInsetByCode(Inset::Code);
/// 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;
///
///
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)
void MenuOpen();
///
- void doImportLaTeX(bool);
-
+ void doImport(string const &);
///
- void doImportASCII(bool);
+ void doImportHelper(string const &, string const &, string const &,
+ bool func(BufferView *, string const &) );
///
- void MenuInsertLyXFile(LString const &);
+ void MenuInsertLyXFile(string const &);
///
void CloseBuffer();
/*-------------------- inlines --------------------------*/
inline
-bool LyXFunc::wasMetaKey()
+bool LyXFunc::wasMetaKey() const
{
return (meta_fake_bit != 0);
}
inline
-LString LyXFunc::keyseqStr(int l)
+string 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 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