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_;
52 KmodException comb_info_;
54 TransState * init_state_;
56 TransState * deadkey_state_;
58 TransState * combined_state_;
64 TransState * currentState;
69 class TransInitState : virtual public TransFSMData, public TransState {
75 virtual string const normalkey(char, string const &);
78 virtual string const normalkey(char);
81 virtual bool backspace() { return true; }
83 virtual string const deadkey(char, KmodInfo);
88 class TransDeadkeyState : virtual public TransFSMData, public TransState {
94 virtual string const normalkey(char, string const &);
97 virtual string const normalkey(char);
100 virtual bool backspace() {
101 currentState = init_state_;
105 virtual string const deadkey(char, KmodInfo);
110 class TransCombinedState : virtual public TransFSMData, public TransState {
113 TransCombinedState();
116 virtual string const normalkey(char, string const &);
119 virtual string const normalkey(char);
122 virtual bool backspace() {
123 // cancel the second deadkey
125 deadkey2_info_.accent = TEX_NOACCENT;
126 currentState = deadkey_state_;
131 virtual string const deadkey(char, KmodInfo);
136 class TransFSM : virtual public TransFSMData,
137 public TransInitState,
138 public TransDeadkeyState,
139 public TransCombinedState {
158 static Trans default_;
162 void insert(string const &, LyXText *);
164 void insertVerbatim(string const &, LyXText *);
169 virtual ~TransManager();
171 int SetPrimary(string const &);
173 int SetSecondary(string const &);
175 void EnablePrimary();
177 void EnableSecondary();
179 void DisableKeymap();
181 bool setCharset(string const &);
184 return trans_fsm_.currentState->backspace();
187 void TranslateAndInsert(char, LyXText *);
189 string const deadkey(char, KmodInfo);
192 string const normalkey(char, string const &);
195 string const normalkey(char);
198 void deadkey(char, tex_accent, LyXText *);
204 string const TransManager::normalkey(char c, string const & t)
206 return trans_fsm_.currentState->normalkey(c, t);
210 string const TransManager::normalkey(char c)
212 return trans_fsm_.currentState->normalkey(c);
218 string const TransManager::deadkey(char c, KmodInfo t)
220 return trans_fsm_.currentState->deadkey(c, t);