/* vim:set et ts=4 sts=4:
*
- * ibus-pinyin - The Chinese PinYin engine for IBus
+ * ibus-libpinyin - Intelligent Pinyin engine based on libpinyin for IBus
*
* Copyright (c) 2011 Peng Wu <alexepico@gmail.com>
*
*
* 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#ifndef __PY_LIB_PINYIN_H_
#define __PY_LIB_PINYIN_H_
+#include <memory>
+#include <glib.h>
+
typedef struct _pinyin_context_t pinyin_context_t;
+typedef struct _pinyin_instance_t pinyin_instance_t;
namespace PY {
+
+class Config;
+
class LibPinyinBackEnd{
+
public:
+ LibPinyinBackEnd();
+ ~LibPinyinBackEnd();
+
+ gboolean setPinyinOptions (Config *config);
+ gboolean setChewingOptions (Config *config);
+
+ pinyin_context_t * initPinyinContext (Config *config);
+ pinyin_context_t * initChewingContext (Config *config);
+
+ pinyin_instance_t *allocPinyinInstance ();
+ void freePinyinInstance (pinyin_instance_t *instance);
+ pinyin_instance_t *allocChewingInstance ();
+ void freeChewingInstance (pinyin_instance_t *instance);
+ void modified (void);
+
/* use static initializer in C++. */
static LibPinyinBackEnd & instance (void) { return *m_instance; }
+ static void init (void);
+ static void finalize (void);
+
+
private:
- pinyin_context_t *m_pinyin_context; /* libpinyin context */
+ gboolean saveUserDB (void);
+ static gboolean timeoutCallback (gpointer data);
+
+private:
+ /* libpinyin context */
+ pinyin_context_t *m_pinyin_context;
+ pinyin_context_t *m_chewing_context;
+
+ guint m_timeout_id;
+ GTimer *m_timer;
private:
static std::unique_ptr<LibPinyinBackEnd> m_instance;
};
+
};
#endif