X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxfunc.h;h=4fce15e67865b2e7e7ef1e53f890165f0f294f9a;hb=89b422b320a352e503c0625820da1073805d74a9;hp=9f72d2c406e12ce607312015f81a2e9b5f581c58;hpb=f1c24d100985c6df2eb5ec390017b69c78fe49c7;p=lyx.git diff --git a/src/lyxfunc.h b/src/lyxfunc.h index 9f72d2c406..4fce15e678 100644 --- a/src/lyxfunc.h +++ b/src/lyxfunc.h @@ -1,25 +1,36 @@ // -*- C++ -*- +/** + * \file lyxfunc.h + * This file is part of LyX, the document processor. + * Licence details can be found in the file COPYING. + * + * \author Lars Gullik Bjønnes + * \author Jean-Marc Lasgouttes + * \author John Levon + * \author André Pönitz + * + * Full author contact details are available in file CREDITS. + */ + #ifndef LYXFUNC_H #define LYXFUNC_H -#ifdef __GNUG__ -#pragma interface -#endif - - -#include "commandtags.h" // for kb_action enum -#include "FuncStatus.h" #include "kbsequence.h" -#include "LString.h" +#include "lfuns.h" -#include "frontends/mouse_state.h" -#include "frontends/key_state.h" -#include "frontends/LyXKeySym.h" +#include "support/docstring.h" +#include #include -class LyXView; +namespace lyx { + +class BufferView; +class FuncRequest; +class FuncStatus; +class LyXKeySym; class LyXText; +class LyXView; /** This class encapsulates all the LyX command operations. @@ -31,39 +42,25 @@ class LyXText; class LyXFunc : public boost::signals::trackable { public: /// - explicit - LyXFunc(LyXView *); + explicit LyXFunc(); /// LyX dispatcher, executes lyx actions. - string const dispatch(kb_action ac, string argument = string()); - - /// The same as dispatch, but also shows shortcuts and command - /// name in minibuffer if show_sc is true (more to come?) - void verboseDispatch(kb_action action, - string const & argument, - bool show_sc); - - /// Same as above, using a pseudoaction as argument - void verboseDispatch(int ac, bool show_sc); - - /// Same as above, when the command is provided as a string - void verboseDispatch(string const & s, bool show_sc); + void dispatch(FuncRequest const &); /// - void miniDispatch(string const & s); + void setLyXView(LyXView * lv); /// - void initMiniBuffer(); + void initKeySequences(kb_keymap * kb); + + /// return the status bar state string + docstring const viewStatusMessage(); /// void processKeySym(LyXKeySymPtr key, key_modifier::state state); - /// we need one internal which is called from inside LyXAction and - /// can contain the string argument. - FuncStatus getStatus(int ac) const; /// - FuncStatus getStatus(kb_action action, - string const & argument = string()) const; + FuncStatus getStatus(FuncRequest const & action) const; /// The last key was meta bool wasMetaKey() const; @@ -71,80 +68,72 @@ public: /// True if lyxfunc reports an error bool errorStat() const { return errorstat; } /// Buffer to store result messages - void setMessage(string const & m) const; + void setMessage(docstring const & m) const; /// Buffer to store result messages - void setErrorMessage(string const &) const; - /// Buffer to store result messages from getStatus - void setStatusMessage(string const &) const; + void setErrorMessage(docstring const &) const; /// Buffer to store result messages - string const getMessage() const { return dispatch_buffer; } - /// Buffer to store result messages - string const getStatusMessage() const { return status_buffer; } + docstring const getMessage() const { return dispatch_buffer; } /// Handle a accented char key sequence void handleKeyFunc(kb_action action); + /// goto a bookmark + /// openFile: whether or not open a file if the file is not opened + /// switchToBuffer: whether or not switch to buffer if the buffer is + /// not the current buffer + void gotoBookmark(unsigned int idx, bool openFile, bool switchToBuffer); private: /// - LyXView * owner; + BufferView * view() const; + /// - static int psd_idx; + LyXView * lyx_view_; + + /// the last character added to the key sequence, in UCS4 encoded form + char_type encoded_last_key; + /// - kb_sequence keyseq; + boost::scoped_ptr keyseq; /// - kb_sequence cancel_meta_seq; + boost::scoped_ptr cancel_meta_seq; /// key_modifier::state meta_fake_bit; - /// - void moveCursorUpdate(bool flag = true, bool selecting = false); - /// - void setupLocalKeymap(); - /// - kb_action lyx_dead_action; - /// - kb_action lyx_calling_dead_action; + /// Error status, only Dispatch can change this flag mutable bool errorstat; /** Buffer to store messages and result data. Is there a good reason to have this one as static in Dispatch? (Ale) */ - mutable string dispatch_buffer; - /** Buffer to store messages and result data from getStatus - */ - mutable string status_buffer; - /// Command name and shortcut information - string commandshortcut; + mutable docstring dispatch_buffer; - // I think the following should be moved to BufferView. (Asger) + /// send a post-dispatch status message + void sendDispatchMessage(docstring const & msg, + FuncRequest const & ev); + // I think the following should be moved to BufferView. (Asger) /// - void menuNew(bool fromTemplate); - + void menuNew(std::string const & argument, bool fromTemplate); /// - void open(string const &); - + void open(std::string const &); /// - void doImport(string const &); - + void doImport(std::string const &); /// void closeBuffer(); /// void reloadBuffer(); /// - // This return or directly text (default) of getLyXText() - /// - LyXText * TEXT(bool) const; - /// + bool ensureBufferClean(BufferView * bv); }; +/// Implementation is in lyx_main.C +extern LyXFunc & theLyXFunc(); -/*-------------------- inlines --------------------------*/ +/// Implementation is in lyx_main.C +extern FuncStatus getStatus(FuncRequest const & action); -inline -bool LyXFunc::wasMetaKey() const -{ - return (meta_fake_bit != key_modifier::none); -} +/// Implementation is in lyx_main.C +extern void dispatch(FuncRequest const & action); +} // namespace lyx #endif