2 #ifndef Trans_Manager_h
3 #define Trans_Manager_h
9 #include "tex-accent.h"
10 #include "trans_decl.h"
21 virtual ~TransState() {}
24 virtual string const normalkey(char, string const &) = 0;
27 virtual string const normalkey(char) = 0;
30 virtual bool backspace() = 0;
32 virtual string const deadkey(char, KmodInfo) = 0;
34 static char const TOKEN_SEP;
42 virtual ~TransFSMData() {}
46 KmodInfo deadkey_info_;
50 KmodInfo deadkey2_info_;
53 KmodException comb_info_;
59 TransState * init_state_;
61 TransState * deadkey_state_;
63 TransState * combined_state_;
69 TransState * currentState;
74 class TransInitState : virtual public TransFSMData, public TransState {
80 virtual string const normalkey(char, string const &);
83 virtual string const normalkey(char);
86 virtual bool backspace() { return true; }
88 virtual string const deadkey(char, KmodInfo);
93 class TransDeadkeyState : virtual public TransFSMData, public TransState {
99 virtual string const normalkey(char, string const &);
102 virtual string const normalkey(char);
105 virtual bool backspace() {
106 currentState = init_state_;
110 virtual string const deadkey(char, KmodInfo);
115 class TransCombinedState : virtual public TransFSMData, public TransState {
118 TransCombinedState();
121 virtual string const normalkey(char, string const &);
124 virtual string const normalkey(char);
127 virtual bool backspace() {
128 // cancel the second deadkey
130 deadkey2_info_.accent = TEX_NOACCENT;
131 currentState = deadkey_state_;
136 virtual string const deadkey(char, KmodInfo);
141 class TransFSM : virtual public TransFSMData,
142 public TransInitState,
143 public TransDeadkeyState,
144 public TransCombinedState {
163 static Trans default_;
167 void insert(string const &, LyXText *);
169 void insertVerbatim(string const &, LyXText *);
174 virtual ~TransManager();
176 int SetPrimary(string const &);
178 int SetSecondary(string const &);
180 void EnablePrimary();
182 void EnableSecondary();
184 void DisableKeymap();
186 bool setCharset(string const &);
189 return trans_fsm_.currentState->backspace();
192 void TranslateAndInsert(char, LyXText *);
194 string const deadkey(char, KmodInfo);
197 string const normalkey(char, string const &);
200 string const normalkey(char);
203 void deadkey(char, tex_accent, LyXText *);
209 string const TransManager::normalkey(char c, string const & t)
211 return trans_fsm_.currentState->normalkey(c, t);
215 string const TransManager::normalkey(char c)
217 return trans_fsm_.currentState->normalkey(c);
223 string const TransManager::deadkey(char c, KmodInfo t)
225 return trans_fsm_.currentState->deadkey(c, t);