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;
64 class TransInitState :
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() {
90 currentState = init_state_;
94 virtual string deadkey(char, KmodInfo);
99 class TransCombinedState:
100 virtual public TransFSMData,
104 TransCombinedState();
106 virtual string normalkey(char, char *);
108 virtual bool backspace() {
109 // cancel the second deadkey
111 deadkey2_info_.accent = TEX_NOACCENT;
112 currentState = deadkey_state_;
117 virtual string deadkey(char, KmodInfo);
123 virtual public TransFSMData,
124 public TransInitState,
125 public TransDeadkeyState,
126 public TransCombinedState
146 static Trans * default_;
150 void insert(string, LyXText *);
152 void insertVerbatim(string const &, LyXText *);
157 virtual ~TransManager();
159 int SetPrimary(string const &);
161 int SetSecondary(string const &);
163 void EnablePrimary();
165 void EnableSecondary();
167 void DisableKeymap();
169 bool setCharset(const char *);
172 return trans_fsm_.currentState->backspace();
175 void TranslateAndInsert(char, LyXText *);
177 inline string deadkey(char, KmodInfo);
179 inline string normalkey(char, char *);
181 void deadkey(char, tex_accent, LyXText *);
185 string TransManager::normalkey(char c, char * t)
187 return trans_fsm_.currentState->normalkey(c, t);
191 string TransManager::deadkey(char c, KmodInfo t)
193 return trans_fsm_.currentState->deadkey(c, t);