2 #ifndef Trans_Manager_h
3 #define Trans_Manager_h
9 #include "tex-accent.h"
10 #include "trans_decl.h"
21 virtual ~TransState() {}
23 virtual string normalkey(char, char *) = 0;
25 virtual bool backspace() = 0;
27 virtual string deadkey(char, KmodInfo) = 0;
29 static char const TOKEN_SEP;
37 virtual ~TransFSMData() {}
41 KmodInfo deadkey_info_;
45 KmodInfo deadkey2_info_;
47 KmodException comb_info_;
49 TransState * init_state_;
51 TransState * deadkey_state_;
53 TransState * combined_state_;
59 TransState * currentState;
65 virtual public TransFSMData,
71 virtual string normalkey(char, char *);
73 virtual bool backspace() { return true; }
75 virtual string deadkey(char, KmodInfo);
80 class TransDeadkeyState:
81 virtual public TransFSMData,
87 virtual string normalkey(char, char *);
89 virtual bool backspace()
91 currentState = init_state_;
95 virtual string deadkey(char, KmodInfo);
100 class TransCombinedState:
101 virtual public TransFSMData,
105 TransCombinedState();
107 virtual string normalkey(char, char *);
109 virtual bool backspace()
111 // cancel the second deadkey
113 deadkey2_info_.accent = TEX_NOACCENT;
114 currentState = deadkey_state_;
119 virtual string deadkey(char, KmodInfo);
125 virtual public TransFSMData,
126 public TransInitState,
127 public TransDeadkeyState,
128 public TransCombinedState
148 static Trans * default_;
152 void insert(string, LyXText *);
154 void insertVerbatim(string const &, LyXText *);
159 virtual ~TransManager();
161 int SetPrimary(string const &);
163 int SetSecondary(string const &);
165 void EnablePrimary();
167 void EnableSecondary();
169 void DisableKeymap();
171 bool setCharset(const char *);
175 return trans_fsm_.currentState->backspace();
178 void TranslateAndInsert(char, LyXText *);
180 inline string deadkey(char, KmodInfo);
182 inline string normalkey(char, char *);
184 void deadkey(char, tex_accent, LyXText *);
188 string TransManager::normalkey(char c, char * t)
190 return trans_fsm_.currentState->normalkey(c, t);
194 string TransManager::deadkey(char c, KmodInfo t)
196 return trans_fsm_.currentState->deadkey(c, t);