fixes compile
[platform/upstream/ibus-libpinyin.git] / src / PYEditor.h
1 /* vim:set et ts=4 sts=4:
2  *
3  * ibus-libpinyin - Intelligent Pinyin engine based on libpinyin for IBus
4  *
5  * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2, or (at your option)
10  * any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
20  */
21 #ifndef __PY_EDITOR_H_
22 #define __PY_EDITOR_H_
23
24 #include <glib.h>
25 #include "PYSignal.h"
26 #include "PYString.h"
27 #include "PYUtil.h"
28
29 namespace PY {
30
31 class Text;
32 class LookupTable;
33 class PinyinProperties;
34 class Config;
35
36 class Editor;
37 typedef std::shared_ptr<Editor> EditorPtr;
38
39 class Editor {
40 public:
41     Editor (PinyinProperties & prop, Config & config);
42     virtual ~Editor (void);
43
44     virtual gboolean processKeyEvent (guint keyval, guint keycode, guint modifiers);
45     virtual void pageUp (void);
46     virtual void pageDown (void);
47     virtual void cursorUp (void);
48     virtual void cursorDown (void);
49     virtual void update (void);
50     virtual void reset (void);
51     virtual void candidateClicked (guint index, guint button, guint state);
52
53     const String & text (void) const
54     {
55         return m_text;
56     }
57
58     void setText (const String & text, guint cursor)
59     {
60         m_text = text;
61         m_cursor = cursor;
62     }
63
64     /* signals */
65     signal <void (Text &)> & signalCommitText (void)    { return m_signal_commit_text; }
66
67     signal <void (Text &, guint, gboolean)> & signalUpdatePreeditText (void)
68                                                         { return m_signal_update_preedit_text; }
69     signal <void ()> & signalShowPreeditText (void)     { return m_signal_show_preedit_text; }
70     signal <void ()> & signalHidePreeditText (void)     { return m_signal_hide_preedit_text; }
71
72     signal <void (Text &, gboolean)> & signalUpdateAuxiliaryText (void)
73                                                         { return m_signal_update_auxiliary_text; }
74     signal <void ()> & signalShowAuxiliaryText (void)   { return m_signal_show_auxiliary_text; }
75     signal <void ()> & signalHideAuxiliaryText (void)   { return m_signal_hide_auxiliary_text; }
76
77     signal <void (LookupTable &, gboolean)> & signalUpdateLookupTable (void)
78                                                         { return m_signal_update_lookup_table; }
79     signal <void (LookupTable &, gboolean)> & signalUpdateLookupTableFast (void)
80                                                         { return m_signal_update_lookup_table_fast; }
81     signal <void ()> & signalShowLookupTable (void)     { return m_signal_show_lookup_table; }
82     signal <void ()> & signalHideLookupTable (void)     { return m_signal_hide_lookup_table; }
83
84 protected:
85     /* methods */
86     void commitText (Text & text) const
87     {
88         m_signal_commit_text (text);
89     }
90
91     void updatePreeditText (Text & text, guint cursor, gboolean visible) const
92     {
93         m_signal_update_preedit_text (text, cursor, visible);
94     }
95
96     void showPreeditText (void) const
97     {
98         m_signal_show_preedit_text ();
99     }
100
101     void hidePreeditText (void) const
102     {
103         m_signal_hide_preedit_text ();
104     }
105
106     void updateAuxiliaryText (Text & text, gboolean visible) const
107     {
108         m_signal_update_auxiliary_text (text, visible);
109     }
110
111     void showAuxiliaryText (void) const
112     {
113         m_signal_show_auxiliary_text ();
114     }
115
116     void hideAuxiliaryText (void) const
117     {
118         m_signal_hide_auxiliary_text ();
119     }
120
121     void updateLookupTable (LookupTable & table, gboolean visible) const
122     {
123         m_signal_update_lookup_table (table, visible);
124     }
125
126     void updateLookupTableFast (LookupTable & table, gboolean visible) const
127     {
128         m_signal_update_lookup_table_fast (table, visible);
129     }
130
131     void showLookupTable (void) const
132     {
133         m_signal_show_lookup_table ();
134     }
135
136     void hideLookupTable (void) const
137     {
138         m_signal_hide_lookup_table ();
139     }
140
141 protected:
142     /* signals */
143     signal <void (Text &)> m_signal_commit_text;
144     signal <void ( Text &, guint, gboolean)> m_signal_update_preedit_text;
145     signal <void ()> m_signal_show_preedit_text;
146     signal <void ()> m_signal_hide_preedit_text;
147     signal <void (Text &, gboolean)> m_signal_update_auxiliary_text;
148     signal <void ()> m_signal_show_auxiliary_text;
149     signal <void ()> m_signal_hide_auxiliary_text;
150     signal <void (LookupTable &, gboolean)> m_signal_update_lookup_table;
151     signal <void (LookupTable &, gboolean)> m_signal_update_lookup_table_fast;
152     signal <void ()> m_signal_show_lookup_table;
153     signal <void ()> m_signal_hide_lookup_table;
154
155 protected:
156     String m_text;
157     guint  m_cursor;
158     PinyinProperties & m_props;
159     Config & m_config;
160 };
161
162 };
163
164 #endif