2 #ifndef TRANS_MANAGER_H
3 #define TRANS_MANAGER_H
5 #include "tex-accent.h"
6 #include "trans_decl.h"
17 virtual ~TransState() {}
19 virtual string const normalkey(char) = 0;
21 virtual bool backspace() = 0;
23 virtual string const deadkey(char, KmodInfo) = 0;
25 static char const TOKEN_SEP;
33 virtual ~TransFSMData() {}
37 KmodInfo deadkey_info_;
41 KmodInfo deadkey2_info_;
45 TransState * init_state_;
47 TransState * deadkey_state_;
49 TransState * combined_state_;
55 TransState * currentState;
60 class TransInitState : virtual public TransFSMData, public TransState {
65 virtual string const normalkey(char);
67 virtual bool backspace() { return true; }
69 virtual string const deadkey(char, KmodInfo);
74 class TransDeadkeyState : virtual public TransFSMData, public TransState {
79 virtual string const normalkey(char);
81 virtual bool backspace() {
82 currentState = init_state_;
86 virtual string const deadkey(char, KmodInfo);
91 class TransCombinedState : virtual public TransFSMData, public TransState {
96 virtual string const normalkey(char);
98 virtual bool backspace() {
99 // cancel the second deadkey
101 deadkey2_info_.accent = TEX_NOACCENT;
102 currentState = deadkey_state_;
107 virtual string const deadkey(char, KmodInfo);
112 class TransFSM : virtual public TransFSMData,
113 public TransInitState,
114 public TransDeadkeyState,
115 public TransCombinedState {
134 static Trans default_;
138 void insert(string const &, LyXText *);
140 void insertVerbatim(string const &, LyXText *);
145 virtual ~TransManager();
147 int SetPrimary(string const &);
149 int SetSecondary(string const &);
151 void EnablePrimary();
153 void EnableSecondary();
155 void DisableKeymap();
157 bool setCharset(string const &);
160 return trans_fsm_.currentState->backspace();
163 void TranslateAndInsert(char, LyXText *);
165 string const deadkey(char, KmodInfo);
167 string const normalkey(char);
169 void deadkey(char, tex_accent, LyXText *);
174 string const TransManager::normalkey(char c)
176 return trans_fsm_.currentState->normalkey(c);
181 string const TransManager::deadkey(char c, KmodInfo t)
183 return trans_fsm_.currentState->deadkey(c, t);
186 #endif // TRANS_MANAGER_H