#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;
+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.
- string 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.
- string Dispatch(string const &cmd, string const &arg = string());
+ string Dispatch(string const & cmd);
-
+ /// Same again but for xtl buffers. Still looking for better idea.
+ bool Dispatch(int action, auto_mem_buffer &);
+
+#if 0
/// A keyboard event is processed to execute a lyx action.
- int processKeyEvent(XEvent *ev);
-
+ int processKeyEvent(XEvent * ev);
+#else
+ ///
+ int processKeySym(KeySym k, unsigned int state);
+#endif
+ ///
+ 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
- string keyseqStr(int l=190);
+ string keyseqStr() const;
/// Is the key sequence uncomplete?
- bool keyseqUncomplete();
+ bool keyseqUncomplete() const;
/// 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; }
-
- /// 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(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);
+ Inset * getInsetByCode(Inset::Code);
/// Should a hint message be displayed?
void setHintMessage(bool);
-
private:
///
- 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)
- */
- 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;
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(string const &);
/*-------------------- inlines --------------------------*/
inline
-bool LyXFunc::wasMetaKey()
+bool LyXFunc::wasMetaKey() const
{
return (meta_fake_bit != 0);
}
inline
-string LyXFunc::keyseqStr(int l)
+string LyXFunc::keyseqStr() const
{
- char text[200];
- keyseq.print(text, l, true);
- string tmp(text);
- return tmp;
+ // Why not just remove this function
+ string text;
+ keyseq.print(text, true);
+ return text;
}
inline
-string LyXFunc::keyseqOptions(int l)
+string LyXFunc::keyseqOptions() const
{
- char text[200];
- keyseq.printOptions(text, l);
- string 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