X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fminibuffer.h;h=394f9429cf6dd78b5f7b6f59eaca4f62561a137f;hb=8283e978f8d621041c432b9b88a476bfd567385c;hp=27b802c5b0b45a5fbe283cc386b68f9fe0d155b0;hpb=0eccdd1c3613e5170deb77b22174dd0afde833e9;p=lyx.git diff --git a/src/minibuffer.h b/src/minibuffer.h index 27b802c5b0..394f9429cf 100644 --- a/src/minibuffer.h +++ b/src/minibuffer.h @@ -1,93 +1,114 @@ // -*- C++ -*- -#ifndef _MINIBUFFER_H -#define _MINIBUFFER_H +#ifndef MINIBUFFER_H +#define MINIBUFFER_H + +#include +#include #include FORMS_H_LOCATION #include "LString.h" -#include "gettext.h" #ifdef __GNUG__ #pragma interface #endif class LyXView; +class DropDown; +class Timeout; /// -class MiniBuffer { +class MiniBuffer : public SigC::Object { public: + enum State { + spaces, + nospaces + }; + + /// + MiniBuffer(LyXView * o, + FL_Coord x, FL_Coord y, FL_Coord h, FL_Coord w); + + /// destructor + ~MiniBuffer(); + + /// create drop down + void dd_init(); + /// - MiniBuffer(LyXView *o, FL_Coord x, FL_Coord y, FL_Coord h, FL_Coord w) - : owner(o) - { - text = _("Welcome to LyX!"); - shows_no_match = true; - history_idx = history_cnt = 0; - add(FL_NORMAL_INPUT, x, y, h, w); - } + void addSet(string const &, + string const & = string()); + /// - bool shows_no_match; + void message(string const & str); /// - void setTimer(int a) { - fl_set_timer(timer, a); - } + void messagePush(string const & str); /// - void Set(string const& = string(), - string const& = string(), - string const& = string(), - int delay_secs=6); - /// - string GetText() const { return text; } + void messagePop(); + + /** Makes the minibuffer wait for a string to be inserted. + Waits for a string to be inserted into the minibuffer, when + the string has been inserted the signal stringReady is + emitted. + */ + void getString(State space, + std::vector const & completion, + std::vector & history); /// - void Init(); + void redraw(); /// - void ExecCommand(); - /** allows to store and reset the contents one time. Usefull - for status messages like "load font" (Matthias) - */ - void Store(); + int peek_event(FL_OBJECT *, int, int); /// - void Reset(); + SigC::Signal1 stringReady; /// - void Activate(); + //SigC::Signal0 escape; /// - void Deactivate(); + SigC::Signal0 timeout; private: /// - LyXView *owner; + void activate(); + /// + void deactivate(); + /// + void prepare(); + /// + void stored_slot(); + /// + void stored_set(string const &); + /// set the minibuffer content if str non-empty + void set_complete_input(string const &); + /// append c to the current contents + void append_char(char c); + /// set the minibuffer content + void set_input(string const &); + /// + void init(); + /// + string stored_input; + /// + bool stored_; + /// + LyXView * owner_; /// string text; /// string text_stored; /// - FL_OBJECT *add(int, FL_Coord, FL_Coord, FL_Coord, FL_Coord); - /// - static void ExecutingCB(FL_OBJECT *ob, long); - /// - static void TimerCB(FL_OBJECT *ob, long); - /// - static int peek_event(FL_OBJECT *, int, FL_Coord, FL_Coord, - int, void *); - /// - FL_OBJECT *timer; - /// - FL_OBJECT *the_buffer; - /// - string cur_cmd; - /// - enum{ MAX_HISTORY = 10 }; - /// - string history[MAX_HISTORY]; - /// - int history_idx, history_cnt; - /// - void addHistory(string const &cmd) { - if (history_cnt==0 || (history_cnt>0 && cmd!=history[(history_cnt-1) % MAX_HISTORY])) { - history[history_cnt % MAX_HISTORY] = cmd; - history_cnt++; - } - history_idx = history_cnt; - } - /// - string getHistory() { return history[history_idx % MAX_HISTORY]; } + FL_OBJECT * add(int, FL_Coord, FL_Coord, FL_Coord, FL_Coord); + /// + Timeout * timer; + /// + Timeout * stored_timer; + /// the dropdown menu + DropDown * dropdown_; + /// + FL_OBJECT * the_buffer; + /// + std::vector completion_; + /// + std::vector * history_; + /// + std::vector::iterator hist_iter; + /// + State state_; }; #endif