X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxfunc.h;h=f8a85d0f18beb5ea73d24bc2d691ef7511abad59;hb=53c5edb99e5566fd7c0a1192a697b7b7796919d8;hp=1e4c37cdb2277d0bb2fb8a02dcbb23ebe79cf5ab;hpb=27de1486ca34aaad446adb798d71a77d6f6304da;p=lyx.git diff --git a/src/lyxfunc.h b/src/lyxfunc.h index 1e4c37cdb2..f8a85d0f18 100644 --- a/src/lyxfunc.h +++ b/src/lyxfunc.h @@ -1,17 +1,19 @@ // -*- C++ -*- -#ifndef _LYXFUNC_H_ -#define _LYXFUNC_H_ +#ifndef LYXFUNC_H +#define LYXFUNC_H + +#include #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(fs | f); +} + #endif