#ifndef LYXFUNC_H
#define LYXFUNC_H
-#include "FuncStatus.h"
#include "kbsequence.h"
#include "lfuns.h"
-#include "LString.h"
+#include "support/docstring.h"
+
+#include <boost/scoped_ptr.hpp>
#include <boost/signals/trackable.hpp>
-class LyXView;
-class LyXText;
-class FuncRequest;
+namespace lyx {
+
class BufferView;
+class FuncRequest;
+class FuncStatus;
+class LyXKeySym;
+class LyXText;
+class LyXView;
/** This class encapsulates all the LyX command operations.
class LyXFunc : public boost::signals::trackable {
public:
///
- explicit
- LyXFunc(LyXView *);
+ explicit LyXFunc();
/// LyX dispatcher, executes lyx actions.
- void dispatch(FuncRequest const &, bool verbose = false);
+ void dispatch(FuncRequest const &);
- /// Dispatch via a string argument
- void dispatch(string const & s, bool verbose = false);
+ ///
+ void setLyXView(LyXView * lv);
- /// Dispatch via a pseudo action, also displaying shortcut/command name
- void dispatch(int ac, bool verbose = false);
+ ///
+ void initKeySequences(kb_keymap * kb);
/// return the status bar state string
- string const view_status_message();
+ 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(FuncRequest const & action) const;
/// 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:
///
BufferView * view() const;
///
- LyXView * owner;
+ LyXView * lyx_view_;
- /// the last character added to the key sequence, in ISO encoded form
- char encoded_last_key;
+ /// the last character added to the key sequence, in UCS4 encoded form
+ char_type encoded_last_key;
///
- kb_sequence keyseq;
+ boost::scoped_ptr<kb_sequence> keyseq;
///
- kb_sequence cancel_meta_seq;
+ boost::scoped_ptr<kb_sequence> cancel_meta_seq;
///
key_modifier::state meta_fake_bit;
- ///
- void moveCursorUpdate();
- ///
- void setupLocalKeymap();
+
/// 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;
+ mutable docstring dispatch_buffer;
/// send a post-dispatch status message
- void sendDispatchMessage(string const & msg, FuncRequest const & ev, bool verbose);
+ void sendDispatchMessage(docstring const & msg,
+ FuncRequest const & ev);
// I think the following should be moved to BufferView. (Asger)
-
///
- void menuNew(string const & argument, 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();
+ ///
+ bool ensureBufferClean(BufferView * bv);
};
+/// Implementation is in lyx_main.C
+extern LyXFunc & theLyXFunc();
+
+/// Implementation is in lyx_main.C
+extern FuncStatus getStatus(FuncRequest const & action);
+
+/// Implementation is in lyx_main.C
+extern void dispatch(FuncRequest const & action);
+
+} // namespace lyx
+
#endif