summaryrefslogtreecommitdiffstats
path: root/src/ZYEditor.h
diff options
context:
space:
mode:
authorPeng Wu <alexepico@gmail.com>2014-02-17 16:08:19 +0800
committerPeng Wu <alexepico@gmail.com>2014-02-17 16:08:19 +0800
commit65e24b060e868f336ed8ec1496ed4fd1d1bb9d3f (patch)
tree286d9a44201d67fd1b3c671478e144a4a4fb559d /src/ZYEditor.h
parent9788d4160c3c47108d8232b322ab773b6fff9219 (diff)
downloadibus-libzhuyin-65e24b060e868f336ed8ec1496ed4fd1d1bb9d3f.tar.gz
ibus-libzhuyin-65e24b060e868f336ed8ec1496ed4fd1d1bb9d3f.tar.xz
ibus-libzhuyin-65e24b060e868f336ed8ec1496ed4fd1d1bb9d3f.zip
import ZYEditor.h
Diffstat (limited to 'src/ZYEditor.h')
-rw-r--r--src/ZYEditor.h164
1 files changed, 164 insertions, 0 deletions
diff --git a/src/ZYEditor.h b/src/ZYEditor.h
new file mode 100644
index 0000000..9873ccf
--- /dev/null
+++ b/src/ZYEditor.h
@@ -0,0 +1,164 @@
+/* vim:set et ts=4 sts=4:
+ *
+ * ibus-libzhuyin - New Zhuyin engine based on libzhuyin for IBus
+ *
+ * Copyright (c) 2008-2010 Peng Huang <shawn.p.huang@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+#ifndef __ZY_EDITOR_H_
+#define __ZY_EDITOR_H_
+
+#include <glib.h>
+#include "ZYSignal.h"
+#include "ZYString.h"
+#include "ZYUtil.h"
+
+namespace ZY {
+
+class Text;
+class LookupTable;
+class ZhuyinProperties;
+class Config;
+
+class Editor;
+typedef std::shared_ptr<Editor> EditorPtr;
+
+class Editor {
+public:
+ Editor (ZhuyinProperties & prop, Config & config);
+ virtual ~Editor (void);
+
+ virtual gboolean processKeyEvent (guint keyval, guint keycode, guint modifiers);
+ virtual void pageUp (void);
+ virtual void pageDown (void);
+ virtual void cursorUp (void);
+ virtual void cursorDown (void);
+ virtual void update (void);
+ virtual void reset (void);
+ virtual void candidateClicked (guint index, guint button, guint state);
+
+ const String & text (void) const
+ {
+ return m_text;
+ }
+
+ void setText (const String & text, guint cursor)
+ {
+ m_text = text;
+ m_cursor = cursor;
+ }
+
+ /* signals */
+ signal <void (Text &)> & signalCommitText (void) { return m_signal_commit_text; }
+
+ signal <void (Text &, guint, gboolean)> & signalUpdatePreeditText (void)
+ { return m_signal_update_preedit_text; }
+ signal <void ()> & signalShowPreeditText (void) { return m_signal_show_preedit_text; }
+ signal <void ()> & signalHidePreeditText (void) { return m_signal_hide_preedit_text; }
+
+ signal <void (Text &, gboolean)> & signalUpdateAuxiliaryText (void)
+ { return m_signal_update_auxiliary_text; }
+ signal <void ()> & signalShowAuxiliaryText (void) { return m_signal_show_auxiliary_text; }
+ signal <void ()> & signalHideAuxiliaryText (void) { return m_signal_hide_auxiliary_text; }
+
+ signal <void (LookupTable &, gboolean)> & signalUpdateLookupTable (void)
+ { return m_signal_update_lookup_table; }
+ signal <void (LookupTable &, gboolean)> & signalUpdateLookupTableFast (void)
+ { return m_signal_update_lookup_table_fast; }
+ signal <void ()> & signalShowLookupTable (void) { return m_signal_show_lookup_table; }
+ signal <void ()> & signalHideLookupTable (void) { return m_signal_hide_lookup_table; }
+
+protected:
+ /* methods */
+ void commitText (Text & text) const
+ {
+ m_signal_commit_text (text);
+ }
+
+ void updatePreeditText (Text & text, guint cursor, gboolean visible) const
+ {
+ m_signal_update_preedit_text (text, cursor, visible);
+ }
+
+ void showPreeditText (void) const
+ {
+ m_signal_show_preedit_text ();
+ }
+
+ void hidePreeditText (void) const
+ {
+ m_signal_hide_preedit_text ();
+ }
+
+ void updateAuxiliaryText (Text & text, gboolean visible) const
+ {
+ m_signal_update_auxiliary_text (text, visible);
+ }
+
+ void showAuxiliaryText (void) const
+ {
+ m_signal_show_auxiliary_text ();
+ }
+
+ void hideAuxiliaryText (void) const
+ {
+ m_signal_hide_auxiliary_text ();
+ }
+
+ void updateLookupTable (LookupTable & table, gboolean visible) const
+ {
+ m_signal_update_lookup_table (table, visible);
+ }
+
+ void updateLookupTableFast (LookupTable & table, gboolean visible) const
+ {
+ m_signal_update_lookup_table_fast (table, visible);
+ }
+
+ void showLookupTable (void) const
+ {
+ m_signal_show_lookup_table ();
+ }
+
+ void hideLookupTable (void) const
+ {
+ m_signal_hide_lookup_table ();
+ }
+
+protected:
+ /* signals */
+ signal <void (Text &)> m_signal_commit_text;
+ signal <void ( Text &, guint, gboolean)> m_signal_update_preedit_text;
+ signal <void ()> m_signal_show_preedit_text;
+ signal <void ()> m_signal_hide_preedit_text;
+ signal <void (Text &, gboolean)> m_signal_update_auxiliary_text;
+ signal <void ()> m_signal_show_auxiliary_text;
+ signal <void ()> m_signal_hide_auxiliary_text;
+ signal <void (LookupTable &, gboolean)> m_signal_update_lookup_table;
+ signal <void (LookupTable &, gboolean)> m_signal_update_lookup_table_fast;
+ signal <void ()> m_signal_show_lookup_table;
+ signal <void ()> m_signal_hide_lookup_table;
+
+protected:
+ String m_text;
+ guint m_cursor;
+ ZhuyinProperties & m_props;
+ Config & m_config;
+};
+
+};
+
+#endif