From eb856444389fb7650294302138e24b121746b323 Mon Sep 17 00:00:00 2001 From: Kan-Ru Chen Date: Mar 03 2024 03:06:58 +0000 Subject: Upstream 2.0.0 release --- diff --git a/.gitignore b/.gitignore index 57c40d7..e9edac9 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,6 @@ ibus-chewing-1.3.6.20100730-Source.tar.gz /ibus-chewing-1.5.1-Source.tar.gz /ibus-chewing-1.6.0-Source.tar.gz /ibus-chewing-1.6.1-Source.tar.gz +/ibus-chewing-2.0.0-Source.tar.xz +/ibus-chewing-2.0.0-Source.tar.xz.minisig +/ibus-chewing-2.0.0-Source.tar.xz.sha256 diff --git a/ibus-chewing-1799517-no-gob2.patch b/ibus-chewing-1799517-no-gob2.patch deleted file mode 100644 index 8d24917..0000000 --- a/ibus-chewing-1799517-no-gob2.patch +++ /dev/null @@ -1,2365 +0,0 @@ -From d218a3536bc2e2b03dfca03163f7fad5d87c571a Mon Sep 17 00:00:00 2001 -From: rpm-build -Date: Thu, 20 Feb 2020 17:30:20 +0900 -Subject: [PATCH] Generate source files without GOB2 dependency - ---- - bin/ibus-chewing-engine-private.h | 113 ++++ - bin/ibus-chewing-engine.c | 1052 +++++++++++++++++++++++++++++ - bin/ibus-chewing-engine.h | 187 +++++ - bin/maker-dialog-private.h | 60 ++ - bin/maker-dialog.c | 646 ++++++++++++++++++ - bin/maker-dialog.h | 159 +++++ - src/CMakeLists.txt | 31 +- - test/CMakeLists.txt | 9 +- - 8 files changed, 2226 insertions(+), 31 deletions(-) - create mode 100644 bin/ibus-chewing-engine-private.h - create mode 100644 bin/ibus-chewing-engine.c - create mode 100644 bin/ibus-chewing-engine.h - create mode 100644 bin/maker-dialog-private.h - create mode 100644 bin/maker-dialog.c - create mode 100644 bin/maker-dialog.h - -diff --git a/bin/ibus-chewing-engine-private.h b/bin/ibus-chewing-engine-private.h -new file mode 100644 -index 0000000..980cf97 ---- /dev/null -+++ b/bin/ibus-chewing-engine-private.h -@@ -0,0 +1,113 @@ -+/* Generated by GOB (v2.0.19) (do not edit directly) */ -+ -+ -+ -+/* -+ * Copyright © 2009,2010 Red Hat, Inc. All rights reserved. -+ * Copyright © 2009,2010 Ding-Yi Chen -+ * -+ * This file is part of the ibus-chewing Project. -+ * -+ * 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 -+ * of the License, or (at your option) any later version. -+ * -+ * This program is distributed in the hope that ill 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. -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+#define GETTEXT_PACKAGE "gtk20" -+#include -+#include -+#include -+#include -+#include "IBusChewingUtil.h" -+#include "IBusChewingProperties.h" -+#include "IBusChewingPreEdit.h" -+#include "IBusChewingSystray.h" -+#ifdef USE_GSETTINGS -+#include "GSettingsBackend.h" -+#endif -+#ifdef USE_GCONF2 -+#include "GConf2Backend.h" -+#endif -+ -+#line 2 "/root/rpmbuild/BUILD/ibus-chewing-1.6.1-Source/src/IBusChewingEngine.gob" -+#line 49 "ibus-chewing-engine-private.h" -+#ifndef __IBUS_CHEWING_ENGINE_PRIVATE_H__ -+#define __IBUS_CHEWING_ENGINE_PRIVATE_H__ -+ -+#include "ibus-chewing-engine.h" -+ -+#ifdef __cplusplus -+extern "C" { -+#endif /* __cplusplus */ -+ -+ -+#line 110 "/root/rpmbuild/BUILD/ibus-chewing-1.6.1-Source/src/IBusChewingEngine.gob" -+ -+#include "maker-dialog.h" -+void ibus_chewing_engine_handle_Default(IBusChewingEngine * self, -+ guint keyval, -+ gboolean shiftPressed); -+#define self_handle_Default ibus_chewing_engine_handle_Default -+ -+void ibus_chewing_engine_candidate_clicked(IBusEngine * engine, -+ guint index, guint button, -+ guint state); -+void ibus_chewing_engine_property_activate(IBusEngine * engine, -+ const gchar * prop_name, -+ guint prop_state); -+void ibus_chewing_engine_set_content_type(IBusEngine * engine, -+ guint purpose, guint hints); -+ -+void refresh_pre_edit_text(IBusChewingEngine * self); -+void update_pre_edit_text(IBusChewingEngine * self); -+void refresh_aux_text(IBusChewingEngine * self); -+void update_aux_text(IBusChewingEngine * self); -+void update_lookup_table(IBusChewingEngine * self); -+void refresh_outgoing_text(IBusChewingEngine * self); -+void commit_text(IBusChewingEngine * self); -+ -+#line 85 "ibus-chewing-engine-private.h" -+struct _IBusChewingEnginePrivate { -+#line 191 "/root/rpmbuild/BUILD/ibus-chewing-1.6.1-Source/src/IBusChewingEngine.gob" -+ EngineFlag statusFlags; -+#line 193 "/root/rpmbuild/BUILD/ibus-chewing-1.6.1-Source/src/IBusChewingEngine.gob" -+ IBusCapabilite capabilite; -+#line 195 "/root/rpmbuild/BUILD/ibus-chewing-1.6.1-Source/src/IBusChewingEngine.gob" -+ ChewingInputStyle inputStyle; -+#line 221 "/root/rpmbuild/BUILD/ibus-chewing-1.6.1-Source/src/IBusChewingEngine.gob" -+ Display * pDisplay; -+#line 95 "ibus-chewing-engine-private.h" -+}; -+#line 345 "/root/rpmbuild/BUILD/ibus-chewing-1.6.1-Source/src/IBusChewingEngine.gob" -+void ibus_chewing_engine_use_setting (IBusChewingEngine * self); -+#line 99 "ibus-chewing-engine-private.h" -+#line 359 "/root/rpmbuild/BUILD/ibus-chewing-1.6.1-Source/src/IBusChewingEngine.gob" -+void ibus_chewing_engine_restore_mode (IBusChewingEngine * self); -+#line 102 "ibus-chewing-engine-private.h" -+#line 377 "/root/rpmbuild/BUILD/ibus-chewing-1.6.1-Source/src/IBusChewingEngine.gob" -+void ibus_chewing_engine_update (IBusChewingEngine * self); -+#line 105 "ibus-chewing-engine-private.h" -+#line 391 "/root/rpmbuild/BUILD/ibus-chewing-1.6.1-Source/src/IBusChewingEngine.gob" -+void ibus_chewing_engine_refresh_property (IBusChewingEngine * self, const gchar * prop_name); -+#line 108 "ibus-chewing-engine-private.h" -+ -+#ifdef __cplusplus -+} -+#endif /* __cplusplus */ -+ -+#endif -diff --git a/bin/ibus-chewing-engine.c b/bin/ibus-chewing-engine.c -new file mode 100644 -index 0000000..fc2394c ---- /dev/null -+++ b/bin/ibus-chewing-engine.c -@@ -0,0 +1,1052 @@ -+/* Generated by GOB (v2.0.19) (do not edit directly) */ -+ -+/* End world hunger, donate to the World Food Programme, http://www.wfp.org */ -+ -+ -+#line 2 "../src/IBusChewingEngine.gob" -+ -+/* -+ * Copyright © 2009,2010 Red Hat, Inc. All rights reserved. -+ * Copyright © 2009,2010 Ding-Yi Chen -+ * -+ * This file is part of the ibus-chewing Project. -+ * -+ * 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 -+ * of the License, or (at your option) any later version. -+ * -+ * This program is distributed in the hope that ill 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. -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+#define GETTEXT_PACKAGE "gtk20" -+#include -+#include -+#include -+#include -+#include "IBusChewingUtil.h" -+#include "IBusChewingProperties.h" -+#include "IBusChewingPreEdit.h" -+#include "IBusChewingSystray.h" -+#ifdef USE_GSETTINGS -+#include "GSettingsBackend.h" -+#endif -+#ifdef USE_GCONF2 -+#include "GConf2Backend.h" -+#endif -+ -+#line 51 "ibus-chewing-engine.c" -+#define GOB_VERSION_MAJOR 2 -+#define GOB_VERSION_MINOR 0 -+#define GOB_VERSION_PATCHLEVEL 19 -+ -+#define selfp (self->_priv) -+ -+#include /* memset() */ -+ -+#include "ibus-chewing-engine.h" -+ -+#include "ibus-chewing-engine-private.h" -+ -+#ifdef G_LIKELY -+#define ___GOB_LIKELY(expr) G_LIKELY(expr) -+#define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) -+#else /* ! G_LIKELY */ -+#define ___GOB_LIKELY(expr) (expr) -+#define ___GOB_UNLIKELY(expr) (expr) -+#endif /* G_LIKELY */ -+static const GEnumValue _chewing_input_style_values[] = { -+ { CHEWING_INPUT_STYLE_IN_APPLICATION, (char *)"CHEWING_INPUT_STYLE_IN_APPLICATION", (char *)"in-application" }, -+ { CHEWING_INPUT_STYLE_IN_CANDIDATE, (char *)"CHEWING_INPUT_STYLE_IN_CANDIDATE", (char *)"in-candidate" }, -+ { 0, NULL, NULL } -+}; -+ -+GType -+chewing_input_style_get_type (void) -+{ -+ static GType type = 0; -+ if ___GOB_UNLIKELY(type == 0) -+ type = g_enum_register_static ("ChewingInputStyle", _chewing_input_style_values); -+ return type; -+} -+ -+static const GEnumValue _engine_flag_values[] = { -+ { ENGINE_FLAG_INITIALIZED, (char *)"ENGINE_FLAG_INITIALIZED", (char *)"initialized" }, -+ { ENGINE_FLAG_ENABLED, (char *)"ENGINE_FLAG_ENABLED", (char *)"enabled" }, -+ { ENGINE_FLAG_FOCUS_IN, (char *)"ENGINE_FLAG_FOCUS_IN", (char *)"focus-in" }, -+ { ENGINE_FLAG_IS_PASSWORD, (char *)"ENGINE_FLAG_IS_PASSWORD", (char *)"is-password" }, -+ { ENGINE_FLAG_PROPERTIES_REGISTERED, (char *)"ENGINE_FLAG_PROPERTIES_REGISTERED", (char *)"properties-registered" }, -+ { 0, NULL, NULL } -+}; -+ -+GType -+engine_flag_get_type (void) -+{ -+ static GType type = 0; -+ if ___GOB_UNLIKELY(type == 0) -+ type = g_enum_register_static ("EngineFlag", _engine_flag_values); -+ return type; -+} -+ -+ -+#line 135 "../src/IBusChewingEngine.gob" -+ -+extern gint ibus_chewing_verbose; -+ -+#define IBUS_CHEWING_MAIN -+#include "IBusConfigBackend.h" -+ -+#line 112 "ibus-chewing-engine.c" -+/* self casting macros */ -+#define SELF(x) IBUS_CHEWING_ENGINE(x) -+#define SELF_CONST(x) IBUS_CHEWING_ENGINE_CONST(x) -+#define IS_SELF(x) IBUS_IS_CHEWING_ENGINE(x) -+#define TYPE_SELF IBUS_TYPE_CHEWING_ENGINE -+#define SELF_CLASS(x) IBUS_CHEWING_ENGINE_CLASS(x) -+ -+#define SELF_GET_CLASS(x) IBUS_CHEWING_ENGINE_GET_CLASS(x) -+ -+/* self typedefs */ -+typedef IBusChewingEngine Self; -+typedef IBusChewingEngineClass SelfClass; -+ -+/* here are local prototypes */ -+#line 269 "../src/IBusChewingEngine.gob" -+static void ibus_chewing_engine_init (IBusChewingEngine * self) G_GNUC_UNUSED; -+#line 129 "ibus-chewing-engine.c" -+#line 328 "../src/IBusChewingEngine.gob" -+static void ibus_chewing_engine_class_init (IBusChewingEngineClass * klass) G_GNUC_UNUSED; -+#line 132 "ibus-chewing-engine.c" -+#line 341 "../src/IBusChewingEngine.gob" -+static void ibus_chewing_engine_constructor (IBusChewingEngine * self) G_GNUC_UNUSED; -+#line 135 "ibus-chewing-engine.c" -+#line 482 "../src/IBusChewingEngine.gob" -+static IBusProperty * ibus_chewing_engine_get_ibus_property_by_name (IBusChewingEngine * self, const gchar * prop_name) G_GNUC_UNUSED; -+#line 138 "ibus-chewing-engine.c" -+#line 496 "../src/IBusChewingEngine.gob" -+static void ___b_ibus_chewing_engine_reset (IBusEngine * engine) G_GNUC_UNUSED; -+#line 141 "ibus-chewing-engine.c" -+#line 501 "../src/IBusChewingEngine.gob" -+static void ___c_ibus_chewing_engine_page_up (IBusEngine * engine) G_GNUC_UNUSED; -+#line 144 "ibus-chewing-engine.c" -+#line 509 "../src/IBusChewingEngine.gob" -+static void ___d_ibus_chewing_engine_page_down (IBusEngine * engine) G_GNUC_UNUSED; -+#line 147 "ibus-chewing-engine.c" -+#line 517 "../src/IBusChewingEngine.gob" -+static void ___e_ibus_chewing_engine_cursor_up (IBusEngine * engine) G_GNUC_UNUSED; -+#line 150 "ibus-chewing-engine.c" -+#line 525 "../src/IBusChewingEngine.gob" -+static void ___f_ibus_chewing_engine_cursor_down (IBusEngine * engine) G_GNUC_UNUSED; -+#line 153 "ibus-chewing-engine.c" -+#line 533 "../src/IBusChewingEngine.gob" -+static void ___10_ibus_chewing_engine_enable (IBusEngine * engine) G_GNUC_UNUSED; -+#line 156 "ibus-chewing-engine.c" -+#line 538 "../src/IBusChewingEngine.gob" -+static void ___11_ibus_chewing_engine_disable (IBusEngine * engine) G_GNUC_UNUSED; -+#line 159 "ibus-chewing-engine.c" -+#line 543 "../src/IBusChewingEngine.gob" -+static void ___12_ibus_chewing_engine_focus_in (IBusEngine * engine) G_GNUC_UNUSED; -+#line 162 "ibus-chewing-engine.c" -+#line 548 "../src/IBusChewingEngine.gob" -+static void ___13_ibus_chewing_engine_focus_out (IBusEngine * engine) G_GNUC_UNUSED; -+#line 165 "ibus-chewing-engine.c" -+#line 553 "../src/IBusChewingEngine.gob" -+static void ___14_ibus_chewing_engine_set_capabilities (IBusEngine * engine, guint caps) G_GNUC_UNUSED; -+#line 168 "ibus-chewing-engine.c" -+#line 560 "../src/IBusChewingEngine.gob" -+static void ___15_ibus_chewing_engine_property_show (IBusEngine * engine, const gchar * prop_name) G_GNUC_UNUSED; -+#line 171 "ibus-chewing-engine.c" -+#line 567 "../src/IBusChewingEngine.gob" -+static void ___16_ibus_chewing_engine_property_hide (IBusEngine * engine, const gchar * prop_name) G_GNUC_UNUSED; -+#line 174 "ibus-chewing-engine.c" -+ -+/* pointer to the class of our parent */ -+static IBusEngineClass *parent_class = NULL; -+ -+/* Short form macros */ -+#define self_use_setting ibus_chewing_engine_use_setting -+#define self_restore_mode ibus_chewing_engine_restore_mode -+#define self_update ibus_chewing_engine_update -+#define self_refresh_property ibus_chewing_engine_refresh_property -+#define self_refresh_property_list ibus_chewing_engine_refresh_property_list -+#define self_hide_property_list ibus_chewing_engine_hide_property_list -+#define self_get_ibus_property_by_name ibus_chewing_engine_get_ibus_property_by_name -+GType -+ibus_chewing_engine_get_type (void) -+{ -+ static GType type = 0; -+ -+ if ___GOB_UNLIKELY(type == 0) { -+ static const GTypeInfo info = { -+ sizeof (IBusChewingEngineClass), -+ (GBaseInitFunc) NULL, -+ (GBaseFinalizeFunc) NULL, -+ (GClassInitFunc) ibus_chewing_engine_class_init, -+ (GClassFinalizeFunc) NULL, -+ NULL /* class_data */, -+ sizeof (IBusChewingEngine), -+ 0 /* n_preallocs */, -+ (GInstanceInitFunc) ibus_chewing_engine_init, -+ NULL -+ }; -+ -+ type = g_type_register_static (IBUS_TYPE_ENGINE, "IBusChewingEngine", &info, (GTypeFlags)0); -+ } -+ -+ return type; -+} -+ -+/* a macro for creating a new object of our type */ -+#define GET_NEW ((IBusChewingEngine *)g_object_new(ibus_chewing_engine_get_type(), NULL)) -+ -+/* a function for creating a new object of our type */ -+#include -+static IBusChewingEngine * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; -+static IBusChewingEngine * -+GET_NEW_VARG (const char *first, ...) -+{ -+ IBusChewingEngine *ret; -+ va_list ap; -+ va_start (ap, first); -+ ret = (IBusChewingEngine *)g_object_new_valist (ibus_chewing_engine_get_type (), first, ap); -+ va_end (ap); -+ return ret; -+} -+ -+ -+static GObject * -+___constructor (GType type, guint n_construct_properties, GObjectConstructParam *construct_properties) -+{ -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::constructor" -+ GObject *obj_self; -+ IBusChewingEngine *self; -+ obj_self = G_OBJECT_CLASS (parent_class)->constructor (type, n_construct_properties, construct_properties); -+ self = IBUS_CHEWING_ENGINE (obj_self); -+#line 341 "../src/IBusChewingEngine.gob" -+ ibus_chewing_engine_constructor (self); -+#line 240 "ibus-chewing-engine.c" -+ return obj_self; -+} -+#undef __GOB_FUNCTION__ -+ -+ -+static void -+___finalize(GObject *obj_self) -+{ -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::finalize" -+ IBusChewingEngine *self G_GNUC_UNUSED = IBUS_CHEWING_ENGINE (obj_self); -+ gpointer priv G_GNUC_UNUSED = self->_priv; -+#line 144 "../src/IBusChewingEngine.gob" -+ if(self->icPreEdit) { ibus_chewing_pre_edit_free ((gpointer) self->icPreEdit); self->icPreEdit = NULL; } -+#line 254 "ibus-chewing-engine.c" -+#line 180 "../src/IBusChewingEngine.gob" -+ if(self->iChiEngSystrayIcon) { ibus_chewing_systray_icon_free ((gpointer) self->iChiEngSystrayIcon); self->iChiEngSystrayIcon = NULL; } -+#line 257 "ibus-chewing-engine.c" -+#line 205 "../src/IBusChewingEngine.gob" -+ if(self->chieng_prop) { g_object_unref ((gpointer) self->chieng_prop); self->chieng_prop = NULL; } -+#line 260 "ibus-chewing-engine.c" -+#line 213 "../src/IBusChewingEngine.gob" -+ if(self->alnumSize_prop) { g_object_unref ((gpointer) self->alnumSize_prop); self->alnumSize_prop = NULL; } -+#line 263 "ibus-chewing-engine.c" -+#line 217 "../src/IBusChewingEngine.gob" -+ if(self->prop_list) { g_object_unref ((gpointer) self->prop_list); self->prop_list = NULL; } -+#line 266 "ibus-chewing-engine.c" -+#line 223 "../src/IBusChewingEngine.gob" -+ if(self->_priv->pDisplay) { XCloseDisplay ((gpointer) self->_priv->pDisplay); self->_priv->pDisplay = NULL; } -+#line 269 "ibus-chewing-engine.c" -+ if(G_OBJECT_CLASS(parent_class)->finalize) \ -+ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); -+} -+#undef __GOB_FUNCTION__ -+ -+#line 269 "../src/IBusChewingEngine.gob" -+static void -+ibus_chewing_engine_init (IBusChewingEngine * self G_GNUC_UNUSED) -+{ -+#line 279 "ibus-chewing-engine.c" -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::init" -+ self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,IBUS_TYPE_CHEWING_ENGINE,IBusChewingEnginePrivate); -+#line 135 "../src/IBusChewingEngine.gob" -+ self->icPreEdit = NULL; -+#line 284 "ibus-chewing-engine.c" -+#line 135 "../src/IBusChewingEngine.gob" -+ self->sDialog = NULL; -+#line 287 "ibus-chewing-engine.c" -+#line 135 "../src/IBusChewingEngine.gob" -+ self->preEditText = NULL; -+#line 290 "ibus-chewing-engine.c" -+#line 135 "../src/IBusChewingEngine.gob" -+ self->auxText = NULL; -+#line 293 "ibus-chewing-engine.c" -+#line 135 "../src/IBusChewingEngine.gob" -+ self->outgoingText = NULL; -+#line 296 "ibus-chewing-engine.c" -+#line 135 "../src/IBusChewingEngine.gob" -+ self->iChiEngSystrayIcon = NULL; -+#line 299 "ibus-chewing-engine.c" -+#line 135 "../src/IBusChewingEngine.gob" -+ self->logFile = NULL; -+#line 302 "ibus-chewing-engine.c" -+#line 135 "../src/IBusChewingEngine.gob" -+ self->_priv->statusFlags = 0; -+#line 305 "ibus-chewing-engine.c" -+#line 135 "../src/IBusChewingEngine.gob" -+ self->_priv->capabilite = 0; -+#line 308 "ibus-chewing-engine.c" -+#line 197 "../src/IBusChewingEngine.gob" -+ self->chieng_prop = -+ g_object_ref_sink(ibus_property_new -+ ("InputMode", PROP_TYPE_NORMAL, -+ SELF_GET_CLASS(self)->chieng_prop_label_chi, -+ NULL, -+ SELF_GET_CLASS(self)->chieng_prop_tooltip_chi, -+ TRUE, TRUE, -+ PROP_STATE_UNCHECKED, NULL)) -+ ; -+#line 319 "ibus-chewing-engine.c" -+#line 207 "../src/IBusChewingEngine.gob" -+ self->alnumSize_prop = -+ g_object_ref_sink(ibus_property_new -+ ("chewing_alnumSize_prop", PROP_TYPE_NORMAL, -+ SELF_GET_CLASS(self)->alnumSize_prop_label_half, -+ NULL, NULL, TRUE, TRUE, -+ PROP_STATE_UNCHECKED, NULL)) -+ ; -+#line 328 "ibus-chewing-engine.c" -+#line 215 "../src/IBusChewingEngine.gob" -+ self->prop_list = -+ g_object_ref_sink(ibus_prop_list_new()) -+ ; -+#line 333 "ibus-chewing-engine.c" -+#line 219 "../src/IBusChewingEngine.gob" -+ self->keymap_us = ibus_keymap_get("us") ; -+#line 336 "ibus-chewing-engine.c" -+#line 221 "../src/IBusChewingEngine.gob" -+ self->_priv->pDisplay = -+ XOpenDisplay(NULL) -+ ; -+#line 341 "ibus-chewing-engine.c" -+ { -+#line 269 "../src/IBusChewingEngine.gob" -+ -+ /* initialize the object here */ -+ IBUS_CHEWING_LOG(INFO, "init() %sinitialized", -+ (self->_priv->statusFlags & ENGINE_FLAG_INITIALIZED) ? "" : "un"); -+ if (self->_priv->statusFlags & ENGINE_FLAG_INITIALIZED) { -+ return; -+ } -+ -+ IBUS_CHEWING_LOG(INFO, "init() CHEWING_DATADIR_REAL=%s", -+ QUOTE_ME(CHEWING_DATADIR_REAL)); -+ -+ gchar *logFilename = getenv("IBUS_CHEWING_LOGFILE"); -+ -+ if (logFilename != NULL) { -+ self->logFile = fopen(logFilename, "w+"); -+ if (self->logFile == NULL) { -+ IBUS_CHEWING_LOG(WARN, "init() Cannot write to logfile %s, ignored", -+ logFilename); -+ } else { -+ mkdg_log_set_file(self->logFile); -+ } -+ } -+ -+ if (self->icPreEdit == NULL) { -+ -+#ifdef USE_GSETTINGS -+ MkdgBackend *backend = -+ mkdg_g_settings_backend_new(QUOTE_ME(PROJECT_SCHEMA_ID), -+ QUOTE_ME(PROJECT_SCHEMA_DIR), NULL); -+#elif defined USE_GCONF2 -+ MkdgBackend *backend = -+ gconf2_backend_new(QUOTE_ME(PROJECT_SCHEMA_BASE), NULL); -+#else -+ MkdgBackend *backend = NULL; -+ g_error("Flag GSETTINGS_SUPPORT or GCONF2_SUPPORT are required!"); -+ return; -+#endif /* USE_GSETTINGS */ -+ -+ self->icPreEdit = ibus_chewing_pre_edit_new(backend); -+ } -+ -+ g_assert(self->icPreEdit); -+ -+ self->icPreEdit->engine = IBUS_ENGINE(self); -+ -+ /* init properties */ -+ ibus_prop_list_append(self->prop_list, self->chieng_prop); -+ ibus_prop_list_append(self->prop_list, self->alnumSize_prop); -+ -+ ibus_chewing_engine_set_status_flag(self, ENGINE_FLAG_INITIALIZED); -+ -+ /* In case we cannot open X display */ -+ if (self->_priv->pDisplay == NULL) { -+ IBUS_CHEWING_LOG(WARN, "init() XOpenDisplay return NULL"); -+ } -+ -+ IBUS_CHEWING_LOG(DEBUG, "init() Done"); -+ -+#line 402 "ibus-chewing-engine.c" -+ } -+} -+#undef __GOB_FUNCTION__ -+#line 328 "../src/IBusChewingEngine.gob" -+static void -+ibus_chewing_engine_class_init (IBusChewingEngineClass * klass G_GNUC_UNUSED) -+{ -+#line 410 "ibus-chewing-engine.c" -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::class_init" -+ GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) klass; -+ IBusEngineClass *ibus_engine_class = (IBusEngineClass *)klass; -+ -+ g_type_class_add_private(klass,sizeof(IBusChewingEnginePrivate)); -+#line 225 "../src/IBusChewingEngine.gob" -+ klass->chieng_prop_label_chi = -+ g_object_ref_sink(ibus_text_new_from_static_string(_("Chi"))) -+ ; -+#line 420 "ibus-chewing-engine.c" -+#line 228 "../src/IBusChewingEngine.gob" -+ klass->chieng_prop_label_eng = -+ g_object_ref_sink(ibus_text_new_from_static_string(_("Eng"))) -+ ; -+#line 425 "ibus-chewing-engine.c" -+#line 231 "../src/IBusChewingEngine.gob" -+ klass->chieng_prop_tooltip_chi = -+ g_object_ref_sink(ibus_text_new_from_static_string -+ (_("Click to switch to English"))) -+ ; -+#line 431 "ibus-chewing-engine.c" -+#line 235 "../src/IBusChewingEngine.gob" -+ klass->chieng_prop_tooltip_eng = -+ g_object_ref_sink(ibus_text_new_from_static_string -+ (_("Click to switch to Chinese"))) -+ ; -+#line 437 "ibus-chewing-engine.c" -+#line 239 "../src/IBusChewingEngine.gob" -+ klass->chieng_prop_symbol_chi = -+ g_object_ref_sink(ibus_text_new_from_static_string("中")) -+ ; -+#line 442 "ibus-chewing-engine.c" -+#line 242 "../src/IBusChewingEngine.gob" -+ klass->chieng_prop_symbol_eng = -+ g_object_ref_sink(ibus_text_new_from_static_string("英")) -+ ; -+#line 447 "ibus-chewing-engine.c" -+#line 245 "../src/IBusChewingEngine.gob" -+ klass->alnumSize_prop_label_full = -+ g_object_ref_sink(ibus_text_new_from_static_string(_("Full"))) -+ ; -+#line 452 "ibus-chewing-engine.c" -+#line 248 "../src/IBusChewingEngine.gob" -+ klass->alnumSize_prop_label_half = -+ g_object_ref_sink(ibus_text_new_from_static_string(_("Half"))) -+ ; -+#line 457 "ibus-chewing-engine.c" -+#line 251 "../src/IBusChewingEngine.gob" -+ klass->alnumSize_prop_tooltip_full = -+ g_object_ref_sink(ibus_text_new_from_static_string -+ (_("Click to switch to Half"))) -+ ; -+#line 463 "ibus-chewing-engine.c" -+#line 255 "../src/IBusChewingEngine.gob" -+ klass->alnumSize_prop_tooltip_half = -+ g_object_ref_sink(ibus_text_new_from_static_string -+ (_("Click to switch to Full"))) -+ ; -+#line 469 "ibus-chewing-engine.c" -+#line 259 "../src/IBusChewingEngine.gob" -+ klass->alnumSize_prop_symbol_full = -+ g_object_ref_sink(ibus_text_new_from_static_string("全")) -+ ; -+#line 474 "ibus-chewing-engine.c" -+#line 262 "../src/IBusChewingEngine.gob" -+ klass->alnumSize_prop_symbol_half = -+ g_object_ref_sink(ibus_text_new_from_static_string("半")) -+ ; -+#line 479 "ibus-chewing-engine.c" -+#line 265 "../src/IBusChewingEngine.gob" -+ klass->emptyText = -+ g_object_ref_sink(ibus_text_new_from_static_string("")) -+ ; -+#line 484 "ibus-chewing-engine.c" -+ -+ parent_class = g_type_class_ref (IBUS_TYPE_ENGINE); -+ -+#line 496 "../src/IBusChewingEngine.gob" -+ ibus_engine_class->reset = ___b_ibus_chewing_engine_reset; -+#line 501 "../src/IBusChewingEngine.gob" -+ ibus_engine_class->page_up = ___c_ibus_chewing_engine_page_up; -+#line 509 "../src/IBusChewingEngine.gob" -+ ibus_engine_class->page_down = ___d_ibus_chewing_engine_page_down; -+#line 517 "../src/IBusChewingEngine.gob" -+ ibus_engine_class->cursor_up = ___e_ibus_chewing_engine_cursor_up; -+#line 525 "../src/IBusChewingEngine.gob" -+ ibus_engine_class->cursor_down = ___f_ibus_chewing_engine_cursor_down; -+#line 533 "../src/IBusChewingEngine.gob" -+ ibus_engine_class->enable = ___10_ibus_chewing_engine_enable; -+#line 538 "../src/IBusChewingEngine.gob" -+ ibus_engine_class->disable = ___11_ibus_chewing_engine_disable; -+#line 543 "../src/IBusChewingEngine.gob" -+ ibus_engine_class->focus_in = ___12_ibus_chewing_engine_focus_in; -+#line 548 "../src/IBusChewingEngine.gob" -+ ibus_engine_class->focus_out = ___13_ibus_chewing_engine_focus_out; -+#line 553 "../src/IBusChewingEngine.gob" -+ ibus_engine_class->set_capabilities = ___14_ibus_chewing_engine_set_capabilities; -+#line 560 "../src/IBusChewingEngine.gob" -+ ibus_engine_class->property_show = ___15_ibus_chewing_engine_property_show; -+#line 567 "../src/IBusChewingEngine.gob" -+ ibus_engine_class->property_hide = ___16_ibus_chewing_engine_property_hide; -+#line 512 "ibus-chewing-engine.c" -+ g_object_class->constructor = ___constructor; -+ g_object_class->finalize = ___finalize; -+ { -+#line 328 "../src/IBusChewingEngine.gob" -+ -+ ibus_engine_class->property_activate = -+ ibus_chewing_engine_property_activate; -+ ibus_engine_class->process_key_event = -+ ibus_chewing_engine_process_key_event; -+ ibus_engine_class->candidate_clicked = -+ ibus_chewing_engine_candidate_clicked; -+#if IBUS_CHECK_VERSION(1, 5, 4) -+ ibus_engine_class->set_content_type = -+ ibus_chewing_engine_set_content_type; -+#endif -+ -+#line 529 "ibus-chewing-engine.c" -+ } -+} -+#undef __GOB_FUNCTION__ -+ -+ -+ -+#line 341 "../src/IBusChewingEngine.gob" -+static void -+ibus_chewing_engine_constructor (IBusChewingEngine * self G_GNUC_UNUSED) -+{ -+#line 540 "ibus-chewing-engine.c" -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::constructor" -+{ -+#line 341 "../src/IBusChewingEngine.gob" -+ -+ /* GOB need this for generating constructor */ -+ }} -+#line 547 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+ -+#line 345 "../src/IBusChewingEngine.gob" -+void -+ibus_chewing_engine_use_setting (IBusChewingEngine * self) -+{ -+#line 554 "ibus-chewing-engine.c" -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::use_setting" -+#line 345 "../src/IBusChewingEngine.gob" -+ g_return_if_fail (self != NULL); -+#line 345 "../src/IBusChewingEngine.gob" -+ g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self)); -+#line 560 "ibus-chewing-engine.c" -+{ -+#line 345 "../src/IBusChewingEngine.gob" -+ -+ IBUS_CHEWING_LOG(INFO, "use_setting()"); -+ -+ ibus_chewing_pre_edit_use_all_configure(self->icPreEdit); -+ -+ /* Input style */ -+ if (ibus_chewing_properties_read_boolean_general(self->icPreEdit->iProperties, -+ "ibus/general", "embed-preedit-text", NULL)) { -+ self->_priv->inputStyle = CHEWING_INPUT_STYLE_IN_APPLICATION; -+ } else { -+ self->_priv->inputStyle = CHEWING_INPUT_STYLE_IN_CANDIDATE; -+ } -+ }} -+#line 576 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+ -+#line 359 "../src/IBusChewingEngine.gob" -+void -+ibus_chewing_engine_restore_mode (IBusChewingEngine * self) -+{ -+#line 583 "ibus-chewing-engine.c" -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::restore_mode" -+#line 359 "../src/IBusChewingEngine.gob" -+ g_return_if_fail (self != NULL); -+#line 359 "../src/IBusChewingEngine.gob" -+ g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self)); -+#line 589 "ibus-chewing-engine.c" -+{ -+#line 359 "../src/IBusChewingEngine.gob" -+ -+ IBUS_CHEWING_LOG(DEBUG, "restore_mode() statusFlags=%x", self->_priv->statusFlags); -+ if (self->_priv->pDisplay != NULL) { -+ /* Restore Led Mode only make sense if pDisplay is available */ -+ if (ibus_chewing_pre_edit_has_flag(self->icPreEdit, FLAG_SYNC_FROM_IM)) { -+ IBUS_CHEWING_LOG(DEBUG, "restore_mode() FLAG_SYNC_FROM_IM"); -+ if (ibus_chewing_engine_is_chinese_mode(self) == is_caps_lock(self)) { -+ /* ChiEng mode does not agree each other */ -+ set_caps_led(!ibus_chewing_engine_is_chinese_mode(self), self->_priv->pDisplay); -+ } -+ } else if (ibus_chewing_pre_edit_has_flag(self->icPreEdit, FLAG_SYNC_FROM_KEYBOARD)) { -+ IBUS_CHEWING_LOG(DEBUG, "restore_mode() FLAG_SYNC_FROM_KEYBOARD"); -+ chewing_set_ChiEngMode(self->icPreEdit->context, (is_caps_lock(self))? 0: CHINESE_MODE); -+ } -+ self_refresh_property(self, "InputMode"); -+ } -+ }} -+#line 609 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+ -+#line 377 "../src/IBusChewingEngine.gob" -+void -+ibus_chewing_engine_update (IBusChewingEngine * self) -+{ -+#line 616 "ibus-chewing-engine.c" -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::update" -+#line 377 "../src/IBusChewingEngine.gob" -+ g_return_if_fail (self != NULL); -+#line 377 "../src/IBusChewingEngine.gob" -+ g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self)); -+#line 622 "ibus-chewing-engine.c" -+{ -+#line 377 "../src/IBusChewingEngine.gob" -+ -+ IBUS_CHEWING_LOG(DEBUG, "update() statusFlags=%x", self->_priv->statusFlags); -+ update_pre_edit_text(self); -+ update_aux_text(self); -+ commit_text(self); -+ -+ IBUS_CHEWING_LOG(DEBUG, -+ "update() nPhoneSeq=%d statusFlags=%x", -+ chewing_get_phoneSeqLen(self->icPreEdit->context), -+ self->_priv->statusFlags); -+ update_lookup_table(self); -+ self_refresh_property_list(self); -+ }} -+#line 638 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+ -+#line 391 "../src/IBusChewingEngine.gob" -+void -+ibus_chewing_engine_refresh_property (IBusChewingEngine * self, const gchar * prop_name) -+{ -+#line 645 "ibus-chewing-engine.c" -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::refresh_property" -+#line 391 "../src/IBusChewingEngine.gob" -+ g_return_if_fail (self != NULL); -+#line 391 "../src/IBusChewingEngine.gob" -+ g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self)); -+#line 651 "ibus-chewing-engine.c" -+{ -+#line 391 "../src/IBusChewingEngine.gob" -+ -+#ifndef UNIT_TEST -+ IBUS_CHEWING_LOG(DEBUG, "refresh_property(%s) status=%x", -+ prop_name, self->_priv->statusFlags); -+ -+ if (ibus_chewing_systray_chi_eng_icon_create_or_hide(self)) { -+ ibus_chewing_systray_chi_eng_icon_refresh_value(self); -+ } -+ -+ if (STRING_EQUALS(prop_name, "InputMode")) { -+ -+ if (ibus_chewing_pre_edit_get_chi_eng_mode(self->icPreEdit)) { -+ /* Chinese */ -+ ibus_property_set_label(self->chieng_prop, -+ SELF_GET_CLASS(self)->chieng_prop_label_chi); -+ ibus_property_set_tooltip(self->chieng_prop, -+ SELF_GET_CLASS(self)->chieng_prop_tooltip_chi); -+#if IBUS_CHECK_VERSION(1, 5, 0) -+ ibus_property_set_symbol(self->chieng_prop, -+ SELF_GET_CLASS(self)->chieng_prop_symbol_chi); -+#endif -+ } else { -+ /* English */ -+ ibus_property_set_label(self->chieng_prop, -+ SELF_GET_CLASS(self)->chieng_prop_label_eng); -+ ibus_property_set_tooltip(self->chieng_prop, -+ SELF_GET_CLASS(self)->chieng_prop_tooltip_eng); -+#if IBUS_CHECK_VERSION(1, 5, 0) -+ ibus_property_set_symbol(self->chieng_prop, -+ SELF_GET_CLASS(self)->chieng_prop_symbol_eng); -+#endif -+ } -+ -+ ibus_engine_update_property(IBUS_ENGINE(self), self->chieng_prop); -+ -+ } else if (STRING_EQUALS(prop_name, "chewing_alnumSize_prop")) { -+ -+ if (chewing_get_ShapeMode(self->icPreEdit->context)) { -+ /* Full-Sized Shape */ -+ ibus_property_set_label(self->alnumSize_prop, -+ SELF_GET_CLASS(self)->alnumSize_prop_label_full); -+ ibus_property_set_tooltip(self->alnumSize_prop, -+ SELF_GET_CLASS(self)->alnumSize_prop_tooltip_full); -+#if IBUS_CHECK_VERSION(1, 5, 0) -+ ibus_property_set_symbol(self->alnumSize_prop, -+ SELF_GET_CLASS(self)->alnumSize_prop_symbol_full); -+#endif -+ } else { -+ /* Half-Sized Shape */ -+ ibus_property_set_label(self->alnumSize_prop, -+ SELF_GET_CLASS(self)->alnumSize_prop_label_half); -+ ibus_property_set_tooltip(self->alnumSize_prop, -+ SELF_GET_CLASS(self)->alnumSize_prop_tooltip_half); -+#if IBUS_CHECK_VERSION(1, 5, 0) -+ ibus_property_set_symbol(self->alnumSize_prop, -+ SELF_GET_CLASS(self)->alnumSize_prop_symbol_half); -+#endif -+ } -+ -+ if (self->_priv->statusFlags & ENGINE_FLAG_PROPERTIES_REGISTERED) -+ ibus_engine_update_property(IBUS_ENGINE(self),self->alnumSize_prop); -+ } -+#endif -+ }} -+#line 718 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+ -+/** -+ * ibus_chewing_engine_refresh_property_list: -+ * @self: this instances. -+ * -+ * Refresh the property list (language bar). -+ **/ -+#line 462 "../src/IBusChewingEngine.gob" -+void -+ibus_chewing_engine_refresh_property_list (IBusChewingEngine * self) -+{ -+#line 731 "ibus-chewing-engine.c" -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::refresh_property_list" -+#line 462 "../src/IBusChewingEngine.gob" -+ g_return_if_fail (self != NULL); -+#line 462 "../src/IBusChewingEngine.gob" -+ g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self)); -+#line 737 "ibus-chewing-engine.c" -+{ -+#line 462 "../src/IBusChewingEngine.gob" -+ -+#ifndef UNIT_TEST -+ self_refresh_property(self, "InputMode"); -+ self_refresh_property(self, "chewing_alnumSize_prop"); -+#endif -+ }} -+#line 746 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+ -+/** -+ * ibus_chewing_engine_hide_property_list: -+ * @self: this instances. -+ * -+ * Hide the property list (language bar). -+ **/ -+#line 475 "../src/IBusChewingEngine.gob" -+void -+ibus_chewing_engine_hide_property_list (IBusChewingEngine * self) -+{ -+#line 759 "ibus-chewing-engine.c" -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::hide_property_list" -+#line 475 "../src/IBusChewingEngine.gob" -+ g_return_if_fail (self != NULL); -+#line 475 "../src/IBusChewingEngine.gob" -+ g_return_if_fail (IBUS_IS_CHEWING_ENGINE (self)); -+#line 765 "ibus-chewing-engine.c" -+{ -+#line 475 "../src/IBusChewingEngine.gob" -+ -+#ifndef UNIT_TEST -+ IBUS_ENGINE_GET_CLASS(self)->property_hide(IBUS_ENGINE(self), -+ "chewing_alnumSize_prop"); -+#endif -+ }} -+#line 774 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+ -+#line 482 "../src/IBusChewingEngine.gob" -+static IBusProperty * -+ibus_chewing_engine_get_ibus_property_by_name (IBusChewingEngine * self, const gchar * prop_name) -+{ -+#line 781 "ibus-chewing-engine.c" -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::get_ibus_property_by_name" -+#line 482 "../src/IBusChewingEngine.gob" -+ g_return_val_if_fail (self != NULL, (IBusProperty * )0); -+#line 482 "../src/IBusChewingEngine.gob" -+ g_return_val_if_fail (IBUS_IS_CHEWING_ENGINE (self), (IBusProperty * )0); -+#line 787 "ibus-chewing-engine.c" -+{ -+#line 482 "../src/IBusChewingEngine.gob" -+ -+ if (STRING_EQUALS(prop_name, "InputMode")) { -+ return self->chieng_prop; -+ } else if (STRING_EQUALS(prop_name, "chewing_alnumSize_prop")) { -+ return self->alnumSize_prop; -+ } -+ IBUS_CHEWING_LOG(MSG, "get_ibus_property_by_name(%s): NULL is returned", prop_name); -+ return NULL; -+ }} -+#line 799 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+ -+#line 496 "../src/IBusChewingEngine.gob" -+static void -+___b_ibus_chewing_engine_reset (IBusEngine * engine G_GNUC_UNUSED) -+#line 805 "ibus-chewing-engine.c" -+#define PARENT_HANDLER(___engine) \ -+ { if(IBUS_ENGINE_CLASS(parent_class)->reset) \ -+ (* IBUS_ENGINE_CLASS(parent_class)->reset)(___engine); } -+{ -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::reset" -+{ -+#line 496 "../src/IBusChewingEngine.gob" -+ -+ Self *self = SELF(engine); -+ ibus_chewing_engine_reset(self); -+ }} -+#line 817 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+#undef PARENT_HANDLER -+ -+#line 501 "../src/IBusChewingEngine.gob" -+static void -+___c_ibus_chewing_engine_page_up (IBusEngine * engine G_GNUC_UNUSED) -+#line 824 "ibus-chewing-engine.c" -+#define PARENT_HANDLER(___engine) \ -+ { if(IBUS_ENGINE_CLASS(parent_class)->page_up) \ -+ (* IBUS_ENGINE_CLASS(parent_class)->page_up)(___engine); } -+{ -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::page_up" -+{ -+#line 501 "../src/IBusChewingEngine.gob" -+ -+ Self *self = SELF(engine); -+ if (is_password(self)) -+ return; -+ ibus_chewing_pre_edit_process_key(self->icPreEdit, IBUS_KEY_Page_Up, 0); -+ self_update(self); -+ }} -+#line 839 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+#undef PARENT_HANDLER -+ -+#line 509 "../src/IBusChewingEngine.gob" -+static void -+___d_ibus_chewing_engine_page_down (IBusEngine * engine G_GNUC_UNUSED) -+#line 846 "ibus-chewing-engine.c" -+#define PARENT_HANDLER(___engine) \ -+ { if(IBUS_ENGINE_CLASS(parent_class)->page_down) \ -+ (* IBUS_ENGINE_CLASS(parent_class)->page_down)(___engine); } -+{ -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::page_down" -+{ -+#line 509 "../src/IBusChewingEngine.gob" -+ -+ Self *self = SELF(engine); -+ if (is_password(self)) -+ return; -+ ibus_chewing_pre_edit_process_key(self->icPreEdit, IBUS_KEY_Page_Down, 0); -+ self_update(self); -+ }} -+#line 861 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+#undef PARENT_HANDLER -+ -+#line 517 "../src/IBusChewingEngine.gob" -+static void -+___e_ibus_chewing_engine_cursor_up (IBusEngine * engine G_GNUC_UNUSED) -+#line 868 "ibus-chewing-engine.c" -+#define PARENT_HANDLER(___engine) \ -+ { if(IBUS_ENGINE_CLASS(parent_class)->cursor_up) \ -+ (* IBUS_ENGINE_CLASS(parent_class)->cursor_up)(___engine); } -+{ -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::cursor_up" -+{ -+#line 517 "../src/IBusChewingEngine.gob" -+ -+ Self *self = SELF(engine); -+ if (is_password(self)) -+ return; -+ ibus_chewing_pre_edit_process_key(self->icPreEdit, IBUS_KEY_Up, 0); -+ self_update(self); -+ }} -+#line 883 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+#undef PARENT_HANDLER -+ -+#line 525 "../src/IBusChewingEngine.gob" -+static void -+___f_ibus_chewing_engine_cursor_down (IBusEngine * engine G_GNUC_UNUSED) -+#line 890 "ibus-chewing-engine.c" -+#define PARENT_HANDLER(___engine) \ -+ { if(IBUS_ENGINE_CLASS(parent_class)->cursor_down) \ -+ (* IBUS_ENGINE_CLASS(parent_class)->cursor_down)(___engine); } -+{ -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::cursor_down" -+{ -+#line 525 "../src/IBusChewingEngine.gob" -+ -+ Self *self = SELF(engine); -+ if (is_password(self)) -+ return; -+ ibus_chewing_pre_edit_process_key(self->icPreEdit, IBUS_KEY_Down, 0); -+ self_update(self); -+ }} -+#line 905 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+#undef PARENT_HANDLER -+ -+#line 533 "../src/IBusChewingEngine.gob" -+static void -+___10_ibus_chewing_engine_enable (IBusEngine * engine G_GNUC_UNUSED) -+#line 912 "ibus-chewing-engine.c" -+#define PARENT_HANDLER(___engine) \ -+ { if(IBUS_ENGINE_CLASS(parent_class)->enable) \ -+ (* IBUS_ENGINE_CLASS(parent_class)->enable)(___engine); } -+{ -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::enable" -+{ -+#line 533 "../src/IBusChewingEngine.gob" -+ -+ Self *self = SELF(engine); -+ ibus_chewing_engine_enable(self); -+ }} -+#line 924 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+#undef PARENT_HANDLER -+ -+#line 538 "../src/IBusChewingEngine.gob" -+static void -+___11_ibus_chewing_engine_disable (IBusEngine * engine G_GNUC_UNUSED) -+#line 931 "ibus-chewing-engine.c" -+#define PARENT_HANDLER(___engine) \ -+ { if(IBUS_ENGINE_CLASS(parent_class)->disable) \ -+ (* IBUS_ENGINE_CLASS(parent_class)->disable)(___engine); } -+{ -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::disable" -+{ -+#line 538 "../src/IBusChewingEngine.gob" -+ -+ Self *self = SELF(engine); -+ ibus_chewing_engine_disable(self); -+ }} -+#line 943 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+#undef PARENT_HANDLER -+ -+#line 543 "../src/IBusChewingEngine.gob" -+static void -+___12_ibus_chewing_engine_focus_in (IBusEngine * engine G_GNUC_UNUSED) -+#line 950 "ibus-chewing-engine.c" -+#define PARENT_HANDLER(___engine) \ -+ { if(IBUS_ENGINE_CLASS(parent_class)->focus_in) \ -+ (* IBUS_ENGINE_CLASS(parent_class)->focus_in)(___engine); } -+{ -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::focus_in" -+{ -+#line 543 "../src/IBusChewingEngine.gob" -+ -+ Self *self = SELF(engine); -+ ibus_chewing_engine_focus_in(self); -+ }} -+#line 962 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+#undef PARENT_HANDLER -+ -+#line 548 "../src/IBusChewingEngine.gob" -+static void -+___13_ibus_chewing_engine_focus_out (IBusEngine * engine G_GNUC_UNUSED) -+#line 969 "ibus-chewing-engine.c" -+#define PARENT_HANDLER(___engine) \ -+ { if(IBUS_ENGINE_CLASS(parent_class)->focus_out) \ -+ (* IBUS_ENGINE_CLASS(parent_class)->focus_out)(___engine); } -+{ -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::focus_out" -+{ -+#line 548 "../src/IBusChewingEngine.gob" -+ -+ Self *self = SELF(engine); -+ ibus_chewing_engine_focus_out(self); -+ }} -+#line 981 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+#undef PARENT_HANDLER -+ -+#line 553 "../src/IBusChewingEngine.gob" -+static void -+___14_ibus_chewing_engine_set_capabilities (IBusEngine * engine G_GNUC_UNUSED, guint caps) -+#line 988 "ibus-chewing-engine.c" -+#define PARENT_HANDLER(___engine,___caps) \ -+ { if(IBUS_ENGINE_CLASS(parent_class)->set_capabilities) \ -+ (* IBUS_ENGINE_CLASS(parent_class)->set_capabilities)(___engine,___caps); } -+{ -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::set_capabilities" -+{ -+#line 553 "../src/IBusChewingEngine.gob" -+ -+ Self *self = SELF(engine); -+ self->_priv->capabilite = caps; -+ IBUS_CHEWING_LOG(MSG, "***** set_capabilities(%x): statusFlags=%x", -+ caps, self->_priv->statusFlags); -+ }} -+#line 1002 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+#undef PARENT_HANDLER -+ -+#line 560 "../src/IBusChewingEngine.gob" -+static void -+___15_ibus_chewing_engine_property_show (IBusEngine * engine G_GNUC_UNUSED, const gchar * prop_name) -+#line 1009 "ibus-chewing-engine.c" -+#define PARENT_HANDLER(___engine,___prop_name) \ -+ { if(IBUS_ENGINE_CLASS(parent_class)->property_show) \ -+ (* IBUS_ENGINE_CLASS(parent_class)->property_show)(___engine,___prop_name); } -+{ -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::property_show" -+{ -+#line 560 "../src/IBusChewingEngine.gob" -+ -+ IBUS_CHEWING_LOG(INFO, "property_show(-, %s)", prop_name); -+ Self *self = SELF(engine); -+ IBusProperty *prop = self_get_ibus_property_by_name(self, prop_name); -+ ibus_property_set_visible(prop, TRUE); -+ }} -+#line 1023 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+#undef PARENT_HANDLER -+ -+#line 567 "../src/IBusChewingEngine.gob" -+static void -+___16_ibus_chewing_engine_property_hide (IBusEngine * engine G_GNUC_UNUSED, const gchar * prop_name) -+#line 1030 "ibus-chewing-engine.c" -+#define PARENT_HANDLER(___engine,___prop_name) \ -+ { if(IBUS_ENGINE_CLASS(parent_class)->property_hide) \ -+ (* IBUS_ENGINE_CLASS(parent_class)->property_hide)(___engine,___prop_name); } -+{ -+#define __GOB_FUNCTION__ "IBus:Chewing:Engine::property_hide" -+{ -+#line 567 "../src/IBusChewingEngine.gob" -+ -+ IBUS_CHEWING_LOG(INFO, "property_hide(-, %s)", prop_name); -+ Self *self = SELF(engine); -+ IBusProperty *prop = self_get_ibus_property_by_name(self, prop_name); -+ ibus_property_set_visible(prop, FALSE); -+ }} -+#line 1044 "ibus-chewing-engine.c" -+#undef __GOB_FUNCTION__ -+#undef PARENT_HANDLER -+ -+#line 587 "../src/IBusChewingEngine.gob" -+ -+#include "IBusChewingEngine-signal.c" -+#include "IBusChewingEngine-input-events.c" -+ -+#line 1053 "ibus-chewing-engine.c" -diff --git a/bin/ibus-chewing-engine.h b/bin/ibus-chewing-engine.h -new file mode 100644 -index 0000000..89289b2 ---- /dev/null -+++ b/bin/ibus-chewing-engine.h -@@ -0,0 +1,187 @@ -+/* Generated by GOB (v2.0.19) (do not edit directly) */ -+ -+ -+ -+/* -+ * Copyright © 2009,2010 Red Hat, Inc. All rights reserved. -+ * Copyright © 2009,2010 Ding-Yi Chen -+ * -+ * This file is part of the ibus-chewing Project. -+ * -+ * 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 -+ * of the License, or (at your option) any later version. -+ * -+ * This program is distributed in the hope that ill 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. -+ */ -+#include -+#include -+#include -+#include -+#include -+#include -+#define GETTEXT_PACKAGE "gtk20" -+#include -+#include -+#include -+#include -+#include "IBusChewingUtil.h" -+#include "IBusChewingProperties.h" -+#include "IBusChewingPreEdit.h" -+#include "IBusChewingSystray.h" -+#ifdef USE_GSETTINGS -+#include "GSettingsBackend.h" -+#endif -+#ifdef USE_GCONF2 -+#include "GConf2Backend.h" -+#endif -+ -+#include -+#include -+#ifndef __IBUS_CHEWING_ENGINE_H__ -+#define __IBUS_CHEWING_ENGINE_H__ -+ -+#ifdef __cplusplus -+extern "C" { -+#endif /* __cplusplus */ -+ -+ -+typedef enum { -+ CHEWING_INPUT_STYLE_IN_APPLICATION, -+ CHEWING_INPUT_STYLE_IN_CANDIDATE -+} ChewingInputStyle; -+#define CHEWING_TYPE_INPUT_STYLE chewing_input_style_get_type() -+GType chewing_input_style_get_type (void) G_GNUC_CONST; -+ -+ -+typedef enum { -+ ENGINE_FLAG_INITIALIZED = 0x1, -+ ENGINE_FLAG_ENABLED = 0x2, -+ ENGINE_FLAG_FOCUS_IN = 0x4, -+ ENGINE_FLAG_IS_PASSWORD = 0x8, -+ ENGINE_FLAG_PROPERTIES_REGISTERED = 0x10 -+} EngineFlag; -+#define ENGINE_TYPE_FLAG engine_flag_get_type() -+GType engine_flag_get_type (void) G_GNUC_CONST; -+ -+ -+ -+extern MkdgPropertySpec propSpecs[]; -+extern const gchar *page_labels[]; -+extern const gchar *button_labels[]; -+extern GtkResponseType button_responses[]; -+ -+#define ibus_chewing_engine_has_status_flag(self, f) mkdg_has_flag(self->_priv->statusFlags, f) -+#define ibus_chewing_engine_set_status_flag(self, f) mkdg_set_flag(self->_priv->statusFlags, f) -+#define ibus_chewing_engine_clear_status_flag(self, f) mkdg_clear_flag(self->_priv->statusFlags, f) -+ -+#define ibus_chewing_engine_has_capabilite(self, f) mkdg_has_flag(self->_priv->capabilite, f) -+#define ibus_chewing_engine_set_capabilite(self, f) mkdg_set_flag(self->_priv->capabilite, f) -+#define ibus_chewing_engine_clear_capabilite(self, f) mkdg_clear_flag(self->_priv->capabilite, f) -+ -+#define is_password(self) ibus_chewing_engine_has_status_flag(self, ENGINE_FLAG_IS_PASSWORD) -+#define ibus_chewing_engine_is_chinese_mode(self) ibus_chewing_pre_edit_get_chi_eng_mode(self->icPreEdit) -+#define is_caps_lock(self) (is_caps_led_on(self->_priv->pDisplay)) -+ -+#define ibus_text_is_empty(iText) ((iText == NULL) || STRING_IS_EMPTY(iText->text)) -+#define is_plain_chewing ibus_chewing_pre_edit_get_property_boolean(self->icPreEdit, "plain-zhuyin") -+#define cursor_current chewing_cursor_Current(self->icPreEdit->context) -+ -+ -+/* -+ * Type checking and casting macros -+ */ -+#define IBUS_TYPE_CHEWING_ENGINE (ibus_chewing_engine_get_type()) -+#define IBUS_CHEWING_ENGINE(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), ibus_chewing_engine_get_type(), IBusChewingEngine) -+#define IBUS_CHEWING_ENGINE_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), ibus_chewing_engine_get_type(), IBusChewingEngine const) -+#define IBUS_CHEWING_ENGINE_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), ibus_chewing_engine_get_type(), IBusChewingEngineClass) -+#define IBUS_IS_CHEWING_ENGINE(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), ibus_chewing_engine_get_type ()) -+ -+#define IBUS_CHEWING_ENGINE_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), ibus_chewing_engine_get_type(), IBusChewingEngineClass) -+ -+/* Private structure type */ -+typedef struct _IBusChewingEnginePrivate IBusChewingEnginePrivate; -+ -+/* -+ * Main object structure -+ */ -+#ifndef __TYPEDEF_IBUS_CHEWING_ENGINE__ -+#define __TYPEDEF_IBUS_CHEWING_ENGINE__ -+typedef struct _IBusChewingEngine IBusChewingEngine; -+#endif -+struct _IBusChewingEngine { -+ IBusEngine __parent__; -+ /*< public >*/ -+ IBusChewingPreEdit * icPreEdit; -+ GtkWidget * sDialog; -+ IBusText * preEditText; -+ IBusText * auxText; -+ IBusText * outgoingText; -+ IBusProperty * chieng_prop; -+ IBusProperty * alnumSize_prop; -+ IBusPropList * prop_list; -+ /*< private >*/ -+ IBusChewingSystrayIcon * iChiEngSystrayIcon; /* protected */ -+ FILE * logFile; /* protected */ -+ IBusKeymap * keymap_us; /* protected */ -+ IBusChewingEnginePrivate *_priv; -+}; -+ -+/* -+ * Class definition -+ */ -+typedef struct _IBusChewingEngineClass IBusChewingEngineClass; -+struct _IBusChewingEngineClass { -+ IBusEngineClass __parent__; -+ IBusText * chieng_prop_label_chi; -+ IBusText * chieng_prop_label_eng; -+ IBusText * chieng_prop_tooltip_chi; -+ IBusText * chieng_prop_tooltip_eng; -+ IBusText * chieng_prop_symbol_chi; -+ IBusText * chieng_prop_symbol_eng; -+ IBusText * alnumSize_prop_label_full; -+ IBusText * alnumSize_prop_label_half; -+ IBusText * alnumSize_prop_tooltip_full; -+ IBusText * alnumSize_prop_tooltip_half; -+ IBusText * alnumSize_prop_symbol_full; -+ IBusText * alnumSize_prop_symbol_half; -+ IBusText * emptyText; -+}; -+ -+ -+/* -+ * Public methods -+ */ -+GType ibus_chewing_engine_get_type (void) G_GNUC_CONST; -+#line 462 "../src/IBusChewingEngine.gob" -+void ibus_chewing_engine_refresh_property_list (IBusChewingEngine * self); -+#line 167 "ibus-chewing-engine.h" -+#line 475 "../src/IBusChewingEngine.gob" -+void ibus_chewing_engine_hide_property_list (IBusChewingEngine * self); -+#line 170 "ibus-chewing-engine.h" -+ -+ -+void ibus_chewing_engine_reset(IBusChewingEngine *self); -+void ibus_chewing_engine_enable(IBusChewingEngine *self); -+void ibus_chewing_engine_disable(IBusChewingEngine *self); -+void ibus_chewing_engine_focus_in(IBusChewingEngine *self); -+void ibus_chewing_engine_focus_out(IBusChewingEngine *self); -+gboolean ibus_chewing_engine_process_key_event(IBusEngine *self, -+ guint key_sym, -+ guint keycode, -+ guint modifiers); -+ -+ -+#ifdef __cplusplus -+} -+#endif /* __cplusplus */ -+ -+#endif -diff --git a/bin/maker-dialog-private.h b/bin/maker-dialog-private.h -new file mode 100644 -index 0000000..ca0ede3 ---- /dev/null -+++ b/bin/maker-dialog-private.h -@@ -0,0 +1,60 @@ -+/* Generated by GOB (v2.0.19) (do not edit directly) */ -+ -+ -+ -+/* -+ * Copyright © 2009 Red Hat, Inc. All rights reserved. -+ * Copyright © 2009 Ding-Yi Chen -+ * -+ * This file is part of the ibus-chewing Project. -+ * -+ * 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 -+ * of the License, 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. -+ */ -+ -+#line 2 "../src/MakerDialog.gob" -+#line 28 "maker-dialog-private.h" -+#ifndef __MAKER_DIALOG_PRIVATE_H__ -+#define __MAKER_DIALOG_PRIVATE_H__ -+ -+#include "maker-dialog.h" -+ -+#ifdef __cplusplus -+extern "C" { -+#endif /* __cplusplus */ -+ -+struct _MakerDialogPrivate { -+#line 62 "../src/MakerDialog.gob" -+ GHashTable * containerTable; -+#line 66 "../src/MakerDialog.gob" -+ GHashTable * widgetTable; -+#line 69 "../src/MakerDialog.gob" -+ GHashTable * notebookContentTable; -+#line 72 "../src/MakerDialog.gob" -+ GStringChunk * widgetIds; -+#line 75 "../src/MakerDialog.gob" -+ GPtrArray * pageLabels; -+#line 82 "../src/MakerDialog.gob" -+ MkdgProperties * properties; -+#line 51 "maker-dialog-private.h" -+}; -+#line 211 "../src/MakerDialog.gob" -+gboolean maker_dialog_prepare (MakerDialog * self); -+#line 55 "maker-dialog-private.h" -+ -+#ifdef __cplusplus -+} -+#endif /* __cplusplus */ -+ -+#endif -diff --git a/bin/maker-dialog.c b/bin/maker-dialog.c -new file mode 100644 -index 0000000..bf72b63 ---- /dev/null -+++ b/bin/maker-dialog.c -@@ -0,0 +1,646 @@ -+/* Generated by GOB (v2.0.19) (do not edit directly) */ -+ -+/* End world hunger, donate to the World Food Programme, http://www.wfp.org */ -+ -+ -+#line 2 "../src/MakerDialog.gob" -+ -+/* -+ * Copyright © 2009 Red Hat, Inc. All rights reserved. -+ * Copyright © 2009 Ding-Yi Chen -+ * -+ * This file is part of the ibus-chewing Project. -+ * -+ * 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 -+ * of the License, 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. -+ */ -+ -+#line 30 "maker-dialog.c" -+#define GOB_VERSION_MAJOR 2 -+#define GOB_VERSION_MINOR 0 -+#define GOB_VERSION_PATCHLEVEL 19 -+ -+#define selfp (self->_priv) -+ -+#include /* memset() */ -+ -+#include "maker-dialog.h" -+ -+#include "maker-dialog-private.h" -+ -+#ifdef G_LIKELY -+#define ___GOB_LIKELY(expr) G_LIKELY(expr) -+#define ___GOB_UNLIKELY(expr) G_UNLIKELY(expr) -+#else /* ! G_LIKELY */ -+#define ___GOB_LIKELY(expr) (expr) -+#define ___GOB_UNLIKELY(expr) (expr) -+#endif /* G_LIKELY */ -+ -+#line 51 "../src/MakerDialog.gob" -+ -+#define GETTEXT_PACKAGE "gtk20" -+#include -+ -+#line 56 "maker-dialog.c" -+/* self casting macros */ -+#define SELF(x) MAKER_DIALOG(x) -+#define SELF_CONST(x) MAKER_DIALOG_CONST(x) -+#define IS_SELF(x) MAKER_IS_DIALOG(x) -+#define TYPE_SELF MAKER_TYPE_DIALOG -+#define SELF_CLASS(x) MAKER_DIALOG_CLASS(x) -+ -+#define SELF_GET_CLASS(x) MAKER_DIALOG_GET_CLASS(x) -+ -+/* self typedefs */ -+typedef MakerDialog Self; -+typedef MakerDialogClass SelfClass; -+ -+/* here are local prototypes */ -+static void maker_dialog_class_init (MakerDialogClass * c) G_GNUC_UNUSED; -+#line 89 "../src/MakerDialog.gob" -+static void maker_dialog_init (MakerDialog * self) G_GNUC_UNUSED; -+#line 74 "maker-dialog.c" -+ -+/* pointer to the class of our parent */ -+static GtkDialogClass *parent_class = NULL; -+ -+/* Short form macros */ -+#define self_new maker_dialog_new -+#define self_new_full maker_dialog_new_full -+#define self_add_property maker_dialog_add_property -+#define self_add_all_properties maker_dialog_add_all_properties -+#define self_prepare maker_dialog_prepare -+#define self_assign_widget_value maker_dialog_assign_widget_value -+#define self_assign_all_widgets_values maker_dialog_assign_all_widgets_values -+#define self_save_all_widgets_values maker_dialog_save_all_widgets_values -+#define self_get_widget_value maker_dialog_get_widget_value -+#define self_set_widget_value maker_dialog_set_widget_value -+#define self_show maker_dialog_show -+#define self_get_widget_by_key maker_dialog_get_widget_by_key -+GType -+maker_dialog_get_type (void) -+{ -+ static GType type = 0; -+ -+ if ___GOB_UNLIKELY(type == 0) { -+ static const GTypeInfo info = { -+ sizeof (MakerDialogClass), -+ (GBaseInitFunc) NULL, -+ (GBaseFinalizeFunc) NULL, -+ (GClassInitFunc) maker_dialog_class_init, -+ (GClassFinalizeFunc) NULL, -+ NULL /* class_data */, -+ sizeof (MakerDialog), -+ 0 /* n_preallocs */, -+ (GInstanceInitFunc) maker_dialog_init, -+ NULL -+ }; -+ -+ type = g_type_register_static (GTK_TYPE_DIALOG, "MakerDialog", &info, (GTypeFlags)0); -+ } -+ -+ return type; -+} -+ -+/* a macro for creating a new object of our type */ -+#define GET_NEW ((MakerDialog *)g_object_new(maker_dialog_get_type(), NULL)) -+ -+/* a function for creating a new object of our type */ -+#include -+static MakerDialog * GET_NEW_VARG (const char *first, ...) G_GNUC_UNUSED; -+static MakerDialog * -+GET_NEW_VARG (const char *first, ...) -+{ -+ MakerDialog *ret; -+ va_list ap; -+ va_start (ap, first); -+ ret = (MakerDialog *)g_object_new_valist (maker_dialog_get_type (), first, ap); -+ va_end (ap); -+ return ret; -+} -+ -+ -+static void -+___finalize(GObject *obj_self) -+{ -+#define __GOB_FUNCTION__ "Maker:Dialog::finalize" -+ MakerDialog *self G_GNUC_UNUSED = MAKER_DIALOG (obj_self); -+ gpointer priv G_GNUC_UNUSED = self->_priv; -+#line 58 "../src/MakerDialog.gob" -+ if(self->notebookWgt) { mkdg_wgt_destroy ((gpointer) self->notebookWgt); self->notebookWgt = NULL; } -+#line 143 "maker-dialog.c" -+#line 64 "../src/MakerDialog.gob" -+ if(self->_priv->containerTable) { g_hash_table_destroy ((gpointer) self->_priv->containerTable); self->_priv->containerTable = NULL; } -+#line 146 "maker-dialog.c" -+#line 68 "../src/MakerDialog.gob" -+ if(self->_priv->widgetTable) { g_hash_table_destroy ((gpointer) self->_priv->widgetTable); self->_priv->widgetTable = NULL; } -+#line 149 "maker-dialog.c" -+#line 71 "../src/MakerDialog.gob" -+ if(self->_priv->notebookContentTable) { g_hash_table_destroy ((gpointer) self->_priv->notebookContentTable); self->_priv->notebookContentTable = NULL; } -+#line 152 "maker-dialog.c" -+#line 74 "../src/MakerDialog.gob" -+ if(self->_priv->widgetIds) { g_string_chunk_free ((gpointer) self->_priv->widgetIds); self->_priv->widgetIds = NULL; } -+#line 155 "maker-dialog.c" -+#define pageLabels (self->_priv->pageLabels) -+#define VAR pageLabels -+ { -+#line 76 "../src/MakerDialog.gob" -+ -+ if (VAR) { -+ g_ptr_array_free(VAR, TRUE); -+ } -+ } -+#line 165 "maker-dialog.c" -+ memset(&(pageLabels), 0, sizeof(pageLabels)); -+#undef VAR -+#undef pageLabels -+#define properties (self->_priv->properties) -+#define VAR properties -+ { -+#line 83 "../src/MakerDialog.gob" -+ -+ if (VAR) { -+ mkdg_properties_free(VAR); -+ } -+ } -+#line 178 "maker-dialog.c" -+ memset(&(properties), 0, sizeof(properties)); -+#undef VAR -+#undef properties -+ if(G_OBJECT_CLASS(parent_class)->finalize) \ -+ (* G_OBJECT_CLASS(parent_class)->finalize)(obj_self); -+} -+#undef __GOB_FUNCTION__ -+ -+static void -+maker_dialog_class_init (MakerDialogClass * c G_GNUC_UNUSED) -+{ -+#define __GOB_FUNCTION__ "Maker:Dialog::class_init" -+ GObjectClass *g_object_class G_GNUC_UNUSED = (GObjectClass*) c; -+ -+ g_type_class_add_private(c,sizeof(MakerDialogPrivate)); -+ -+ parent_class = g_type_class_ref (GTK_TYPE_DIALOG); -+ -+ g_object_class->finalize = ___finalize; -+} -+#undef __GOB_FUNCTION__ -+#line 89 "../src/MakerDialog.gob" -+static void -+maker_dialog_init (MakerDialog * self G_GNUC_UNUSED) -+{ -+#line 204 "maker-dialog.c" -+#define __GOB_FUNCTION__ "Maker:Dialog::init" -+ self->_priv = G_TYPE_INSTANCE_GET_PRIVATE(self,MAKER_TYPE_DIALOG,MakerDialogPrivate); -+#line 51 "../src/MakerDialog.gob" -+ self->notebookWgt = NULL; -+#line 209 "maker-dialog.c" -+#line 63 "../src/MakerDialog.gob" -+ self->_priv->containerTable = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL) ; -+#line 212 "maker-dialog.c" -+#line 67 "../src/MakerDialog.gob" -+ self->_priv->widgetTable = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL) ; -+#line 215 "maker-dialog.c" -+#line 70 "../src/MakerDialog.gob" -+ self->_priv->notebookContentTable = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, NULL) ; -+#line 218 "maker-dialog.c" -+#line 73 "../src/MakerDialog.gob" -+ self->_priv->widgetIds = g_string_chunk_new(MAKER_DIALOG_ID_LENGTH) ; -+#line 221 "maker-dialog.c" -+#line 73 "../src/MakerDialog.gob" -+ self->_priv->pageLabels = NULL; -+#line 224 "maker-dialog.c" -+#line 76 "../src/MakerDialog.gob" -+ self->_priv->properties = NULL; -+#line 227 "maker-dialog.c" -+ { -+#line 89 "../src/MakerDialog.gob" -+ -+ /* initialize the object here */ -+ -+#line 233 "maker-dialog.c" -+ } -+} -+#undef __GOB_FUNCTION__ -+ -+ -+ -+#line 93 "../src/MakerDialog.gob" -+MakerDialog * -+maker_dialog_new (void) -+{ -+#line 244 "maker-dialog.c" -+#define __GOB_FUNCTION__ "Maker:Dialog::new" -+{ -+#line 93 "../src/MakerDialog.gob" -+ -+ Self * self = GET_NEW; -+ return self; -+ }} -+#line 252 "maker-dialog.c" -+#undef __GOB_FUNCTION__ -+ -+#line 98 "../src/MakerDialog.gob" -+MakerDialog * -+maker_dialog_new_full (MkdgProperties * properties, const gchar * title, MkdgWidgetFlag wFlags, MkdgButtonFlag bFlags) -+{ -+#line 259 "maker-dialog.c" -+#define __GOB_FUNCTION__ "Maker:Dialog::new_full" -+{ -+#line 101 "../src/MakerDialog.gob" -+ -+ Self * self = GET_NEW; -+ GtkDialog * dialog = GTK_DIALOG(self); -+ gtk_window_set_title(GTK_WINDOW(dialog), title); -+ gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE); -+ gtk_window_set_type_hint(GTK_WINDOW(dialog), GDK_WINDOW_TYPE_HINT_DIALOG); -+ self->wFlags = wFlags; -+ self->_priv->properties = properties; -+ -+ gint i; -+ /* Create Buttons */ -+ for (i = MKDG_BUTTON_INDEX_INVALID -1; i >= 0; i--) { -+ if ( bFlags & (1 << i)) { -+ const gchar *buttonText = mkdg_button_get_text(i); -+ mkdg_log(DEBUG, "new_full(-,%s,%X,%X) i=%d, buttonText=%s", -+ title, wFlags, bFlags, i, buttonText); -+ MkdgButtonResponse response = mkdg_button_get_response(i); -+ gtk_dialog_add_button(dialog, buttonText, response); -+ } -+ } -+ -+ /* Create Notebook */ -+ self->notebookWgt = gtk_notebook_new(); -+ mkdg_wgt_show(self->notebookWgt); -+ GtkWidget *dialogVboxWgt = GTK_DIALOG(self)->vbox; -+ mkdg_wgt_show(dialogVboxWgt); -+ gtk_box_pack_start(GTK_BOX(dialogVboxWgt), self->notebookWgt, TRUE, TRUE, 0); -+ -+ self_prepare(self); -+ return self; -+ }} -+#line 294 "maker-dialog.c" -+#undef __GOB_FUNCTION__ -+ -+/** -+ * maker_dialog_add_property: -+ * @self: A MakerDialog -+ * @ctx: A PropertyContext which contain the value to be set. -+ * @returns: TRUE if the property adding succeed; FALSE otherwise. -+ * -+ * Add a property to the dialog and corresponding Gtk widget will also be -+ * set. -+ **/ -+#line 142 "../src/MakerDialog.gob" -+gboolean -+maker_dialog_add_property (MakerDialog * self, PropertyContext * ctx) -+{ -+#line 310 "maker-dialog.c" -+#define __GOB_FUNCTION__ "Maker:Dialog::add_property" -+#line 142 "../src/MakerDialog.gob" -+ g_return_val_if_fail (self != NULL, (gboolean )0); -+#line 142 "../src/MakerDialog.gob" -+ g_return_val_if_fail (MAKER_IS_DIALOG (self), (gboolean )0); -+#line 316 "maker-dialog.c" -+{ -+#line 142 "../src/MakerDialog.gob" -+ -+ -+ if (ctx == NULL) { -+ return FALSE; -+ } -+ mkdg_log(INFO, "add_property(%s) %s", ctx->spec->key, -+ property_context_to_string(ctx)); -+ -+ /* Create the widget */ -+ MkdgWidget * mWidget = mkdg_widget_new(ctx, self->wFlags); -+ if (mWidget == NULL) -+ return FALSE; -+ -+ /* Find the container */ -+ const gchar *pageName = (STRING_IS_EMPTY(ctx->spec->pageName)) ? -+ MKDG_PAGE_NAME_DEFAULT : ctx->spec->pageName; -+ MkdgWidgetContainer *container = -+ MKDG_CONTAINER_TABLE_LOOKUP(self->_priv->containerTable, pageName); -+ -+ /* Do we need a new container/page? */ -+ if (container == NULL) { -+ MkdgWgt * vboxWgt = gtk_vbox_new(FALSE, MKDG_VBOX_SPACING_DEFAULT); -+ mkdg_wgt_show(vboxWgt); -+ container = mkdg_widget_container_new(vboxWgt); -+ g_hash_table_insert(self->_priv->containerTable, (gpointer) pageName, -+ (gpointer) container); -+ -+ /* new notebook page */ -+ MkdgWgt * pageLabelWgt = gtk_label_new(_(pageName)); -+ mkdg_wgt_show(pageLabelWgt); -+ gtk_notebook_append_page(GTK_NOTEBOOK(self->notebookWgt), vboxWgt, -+ pageLabelWgt); -+ } -+ -+ /* Add the widget to container */ -+ mkdg_widget_container_add_widget(container, mWidget); -+ g_hash_table_insert(self->_priv->widgetTable, (gpointer) ctx->spec->key, -+ (gpointer) mWidget); -+ return TRUE; -+ }} -+#line 359 "maker-dialog.c" -+#undef __GOB_FUNCTION__ -+ -+/** -+ * maker_dialog_add_all_properties: -+ * @self: A MakerDialog -+ * @returns: TRUE if all properties added successfully; FALSE otherwise. -+ * -+ * Add all properties to the dialog and corresponding Gtk widget will also be -+ * set. -+ * -+ **/ -+#line 192 "../src/MakerDialog.gob" -+gboolean -+maker_dialog_add_all_properties (MakerDialog * self) -+{ -+#line 375 "maker-dialog.c" -+#define __GOB_FUNCTION__ "Maker:Dialog::add_all_properties" -+#line 192 "../src/MakerDialog.gob" -+ g_return_val_if_fail (self != NULL, (gboolean )0); -+#line 192 "../src/MakerDialog.gob" -+ g_return_val_if_fail (MAKER_IS_DIALOG (self), (gboolean )0); -+#line 381 "maker-dialog.c" -+{ -+#line 192 "../src/MakerDialog.gob" -+ -+ gint i; -+ gboolean result = TRUE; -+ for(i = 0; i < mkdg_properties_size(self->_priv->properties); i++) { -+ PropertyContext * ctx = mkdg_properties_index(self->_priv->properties, i); -+ GValue * ret = property_context_load(ctx, NULL); -+ if (ret == NULL) -+ result = FALSE; -+ self_add_property(self, ctx); -+ } -+ return result; -+ }} -+#line 396 "maker-dialog.c" -+#undef __GOB_FUNCTION__ -+ -+/** -+ * maker_dialog_prepare: -+ * @returns: TRUE if success; FALSE otherwise. -+ * -+ * Prepare the MakerDialog after new. This includes add_all_properties. -+ **/ -+#line 211 "../src/MakerDialog.gob" -+gboolean -+maker_dialog_prepare (MakerDialog * self) -+{ -+#line 409 "maker-dialog.c" -+#define __GOB_FUNCTION__ "Maker:Dialog::prepare" -+#line 211 "../src/MakerDialog.gob" -+ g_return_val_if_fail (self != NULL, (gboolean )0); -+#line 211 "../src/MakerDialog.gob" -+ g_return_val_if_fail (MAKER_IS_DIALOG (self), (gboolean )0); -+#line 415 "maker-dialog.c" -+{ -+#line 211 "../src/MakerDialog.gob" -+ -+ gboolean success; -+ success = self_add_all_properties(self); -+ if (!success) { -+ return FALSE; -+ } -+ -+ GList * containerList = g_hash_table_get_values(self->_priv->containerTable); -+ GList * node; -+ for(node = g_list_first(containerList); node != NULL; node = g_list_next(node)) { -+ MkdgWidgetContainer *container = (MkdgWidgetContainer *) node->data; -+ mkdg_widget_container_align_all_children(container, 1.0f, 0.5f, 0.0f, 0.5f); -+ } -+ g_list_free(containerList); -+ return TRUE; -+ }} -+#line 434 "maker-dialog.c" -+#undef __GOB_FUNCTION__ -+ -+/** -+ * maker_dialog_assign_widget_value: -+ * @self: A MakerDialog. -+ * @ctx: The PropertyContext -+ * @userData: userData that pass through applyFunc. -+ * -+ * Assign the value shown in widget to the property. -+ * That is firstly save the value, then apply the value. -+ * -+ * @see_also: set_widget_value() -+ **/ -+#line 239 "../src/MakerDialog.gob" -+void -+maker_dialog_assign_widget_value (MakerDialog * self, PropertyContext * ctx, gpointer userData) -+{ -+#line 452 "maker-dialog.c" -+#define __GOB_FUNCTION__ "Maker:Dialog::assign_widget_value" -+#line 239 "../src/MakerDialog.gob" -+ g_return_if_fail (self != NULL); -+#line 239 "../src/MakerDialog.gob" -+ g_return_if_fail (MAKER_IS_DIALOG (self)); -+#line 458 "maker-dialog.c" -+{ -+#line 239 "../src/MakerDialog.gob" -+ -+ mkdg_log(INFO, "assign_widget_value(%s)", ctx->spec->key); -+ GValue gValue = { 0 }; -+ mkdg_g_value_reset(&gValue, ctx->spec->valueType, TRUE); -+ self_get_widget_value(self, ctx->spec->key, &gValue); -+ property_context_save(ctx, &gValue, userData); -+ property_context_apply(ctx, userData); -+ g_value_unset(&gValue); -+ }} -+#line 470 "maker-dialog.c" -+#undef __GOB_FUNCTION__ -+ -+/** -+ * maker_dialog_assign_all_widgets_values: -+ * @self: A MakerDialog. -+ * @userData: userData that pass through applyFunc. -+ * -+ * Invoke assign_widget_value for all widgets. -+ * -+ * @see_also: assign_widget_value(), set_widget_value() -+ **/ -+#line 258 "../src/MakerDialog.gob" -+void -+maker_dialog_assign_all_widgets_values (MakerDialog * self, gpointer userData) -+{ -+#line 486 "maker-dialog.c" -+#define __GOB_FUNCTION__ "Maker:Dialog::assign_all_widgets_values" -+#line 258 "../src/MakerDialog.gob" -+ g_return_if_fail (self != NULL); -+#line 258 "../src/MakerDialog.gob" -+ g_return_if_fail (MAKER_IS_DIALOG (self)); -+#line 492 "maker-dialog.c" -+{ -+#line 258 "../src/MakerDialog.gob" -+ -+ gint i; -+ for (i = 0; i < mkdg_properties_size(self->_priv->properties); i++) { -+ PropertyContext *ctx = mkdg_properties_index(self->_priv->properties, i); -+ self_assign_widget_value(self, ctx, userData); -+ } -+ }} -+#line 502 "maker-dialog.c" -+#undef __GOB_FUNCTION__ -+ -+/** -+ * maker_dialog_save_all_widgets_values: -+ * @self: A MakerDialog. -+ * @userData: userData that pass through property_context_save. -+ * -+ * Save all widget values to configuration backend. -+ * -+ **/ -+#line 274 "../src/MakerDialog.gob" -+void -+maker_dialog_save_all_widgets_values (MakerDialog * self, gpointer userData) -+{ -+#line 517 "maker-dialog.c" -+#define __GOB_FUNCTION__ "Maker:Dialog::save_all_widgets_values" -+#line 274 "../src/MakerDialog.gob" -+ g_return_if_fail (self != NULL); -+#line 274 "../src/MakerDialog.gob" -+ g_return_if_fail (MAKER_IS_DIALOG (self)); -+#line 523 "maker-dialog.c" -+{ -+#line 274 "../src/MakerDialog.gob" -+ -+ gint i; -+ for (i = 0; i < mkdg_properties_size(self->_priv->properties); i++) { -+ PropertyContext *ctx = mkdg_properties_index(self->_priv->properties,i); -+ GValue gValue= { 0 }; -+ mkdg_g_value_reset(&gValue, ctx->spec->valueType, TRUE); -+ self_get_widget_value(self, ctx->spec->key, &gValue); -+ property_context_save(ctx, &gValue, userData); -+ g_value_reset(&gValue); -+ } -+ }} -+#line 537 "maker-dialog.c" -+#undef __GOB_FUNCTION__ -+ -+/** -+ * maker_dialog_get_widget_value: -+ * @self: A MakerDialog. -+ * @key: The key of a property. -+ * @value: GValue that store output. -+ * @returns: The address of value if success, NULL if failed. -+ * -+ * Get value as display in widget. -+ **/ -+#line 296 "../src/MakerDialog.gob" -+GValue * -+maker_dialog_get_widget_value (MakerDialog * self, const gchar * key, GValue * value) -+{ -+#line 553 "maker-dialog.c" -+#define __GOB_FUNCTION__ "Maker:Dialog::get_widget_value" -+#line 296 "../src/MakerDialog.gob" -+ g_return_val_if_fail (self != NULL, (GValue * )0); -+#line 296 "../src/MakerDialog.gob" -+ g_return_val_if_fail (MAKER_IS_DIALOG (self), (GValue * )0); -+#line 559 "maker-dialog.c" -+{ -+#line 296 "../src/MakerDialog.gob" -+ -+ mkdg_log(INFO, "get_widget_value(%s)", key); -+ MkdgWidget * mWidget = self_get_widget_by_key(self, key); -+ if (mWidget == NULL) { -+ /* Not fount */ -+ return NULL; -+ } -+ return mkdg_widget_get_widget_value(mWidget, value); -+ }} -+#line 571 "maker-dialog.c" -+#undef __GOB_FUNCTION__ -+ -+/** -+ * maker_dialog_set_widget_value: -+ * @self: A MakerDialog. -+ * @key: The key of a property. -+ * @value: Value to be shown in widget. -+ * -+ * Set value for widget display. -+ * However, value in PropertyContext is not changed. -+ * Use assign_widget_value() to do it. -+ * @see_also: assign_widget_value() -+ **/ -+#line 317 "../src/MakerDialog.gob" -+void -+maker_dialog_set_widget_value (MakerDialog * self, const gchar * key, GValue * value) -+{ -+#line 589 "maker-dialog.c" -+#define __GOB_FUNCTION__ "Maker:Dialog::set_widget_value" -+#line 317 "../src/MakerDialog.gob" -+ g_return_if_fail (self != NULL); -+#line 317 "../src/MakerDialog.gob" -+ g_return_if_fail (MAKER_IS_DIALOG (self)); -+#line 595 "maker-dialog.c" -+{ -+#line 317 "../src/MakerDialog.gob" -+ -+ mkdg_log(INFO, "set_widget_value(%s, %s)", key, mkdg_g_value_to_string(value)); -+ MkdgWidget * mWidget = self_get_widget_by_key(self, key); -+ mkdg_widget_set_widget_value(mWidget, value); -+ }} -+#line 603 "maker-dialog.c" -+#undef __GOB_FUNCTION__ -+ -+/** -+ * maker_dialog_show: -+ * @self: A MakerDialog. -+ * -+ **/ -+#line 328 "../src/MakerDialog.gob" -+void -+maker_dialog_show (MakerDialog * self) -+{ -+#line 615 "maker-dialog.c" -+#define __GOB_FUNCTION__ "Maker:Dialog::show" -+#line 328 "../src/MakerDialog.gob" -+ g_return_if_fail (self != NULL); -+#line 328 "../src/MakerDialog.gob" -+ g_return_if_fail (MAKER_IS_DIALOG (self)); -+#line 621 "maker-dialog.c" -+{ -+#line 328 "../src/MakerDialog.gob" -+ -+ mkdg_wgt_show_all(GTK_WIDGET(self)); -+ }} -+#line 627 "maker-dialog.c" -+#undef __GOB_FUNCTION__ -+ -+#line 332 "../src/MakerDialog.gob" -+MkdgWidget * -+maker_dialog_get_widget_by_key (MakerDialog * self, const gchar * key) -+{ -+#line 634 "maker-dialog.c" -+#define __GOB_FUNCTION__ "Maker:Dialog::get_widget_by_key" -+#line 332 "../src/MakerDialog.gob" -+ g_return_val_if_fail (self != NULL, (MkdgWidget * )0); -+#line 332 "../src/MakerDialog.gob" -+ g_return_val_if_fail (MAKER_IS_DIALOG (self), (MkdgWidget * )0); -+#line 640 "maker-dialog.c" -+{ -+#line 332 "../src/MakerDialog.gob" -+ -+ return (MkdgWidget *) g_hash_table_lookup(self->_priv->widgetTable, key); -+ }} -+#line 646 "maker-dialog.c" -+#undef __GOB_FUNCTION__ -diff --git a/bin/maker-dialog.h b/bin/maker-dialog.h -new file mode 100644 -index 0000000..624a43b ---- /dev/null -+++ b/bin/maker-dialog.h -@@ -0,0 +1,159 @@ -+/* Generated by GOB (v2.0.19) (do not edit directly) */ -+ -+ -+ -+/* -+ * Copyright © 2009 Red Hat, Inc. All rights reserved. -+ * Copyright © 2009 Ding-Yi Chen -+ * -+ * This file is part of the ibus-chewing Project. -+ * -+ * 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 -+ * of the License, 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. -+ */ -+ -+#include -+#include -+ -+ -+#ifndef MAKER_DIALOG_H_ -+#define MAKER_DIALOG_H_ -+#include -+#include -+#include -+#include -+#include -+#include -+#include "MakerDialogProperty.h" -+#include "MakerDialogWidget.h" -+ -+ -+ -+#define MKDG_PAGE_NAME_DEFAULT "..." -+#ifndef WIDGET_ID_PREFIX -+#define WIDGET_ID_PREFIX "+" -+#endif -+ -+#ifndef MAKER_DIALOG_ID_LENGTH -+#define MAKER_DIALOG_ID_LENGTH 200 -+#endif -+ -+#define MKDG_CONTAINER_TABLE_LOOKUP(table,key) (MkdgWidgetContainer *) g_hash_table_lookup(table, (gconstpointer) key) -+ -+ -+ -+#endif /* MAKER_DIALOG_H_ */ -+ -+#ifndef __MAKER_DIALOG_H__ -+#define __MAKER_DIALOG_H__ -+ -+#ifdef __cplusplus -+extern "C" { -+#endif /* __cplusplus */ -+ -+ -+/* -+ * Type checking and casting macros -+ */ -+#define MAKER_TYPE_DIALOG (maker_dialog_get_type()) -+#define MAKER_DIALOG(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), maker_dialog_get_type(), MakerDialog) -+#define MAKER_DIALOG_CONST(obj) G_TYPE_CHECK_INSTANCE_CAST((obj), maker_dialog_get_type(), MakerDialog const) -+#define MAKER_DIALOG_CLASS(klass) G_TYPE_CHECK_CLASS_CAST((klass), maker_dialog_get_type(), MakerDialogClass) -+#define MAKER_IS_DIALOG(obj) G_TYPE_CHECK_INSTANCE_TYPE((obj), maker_dialog_get_type ()) -+ -+#define MAKER_DIALOG_GET_CLASS(obj) G_TYPE_INSTANCE_GET_CLASS((obj), maker_dialog_get_type(), MakerDialogClass) -+ -+/* Private structure type */ -+typedef struct _MakerDialogPrivate MakerDialogPrivate; -+ -+/* -+ * Main object structure -+ */ -+#ifndef __TYPEDEF_MAKER_DIALOG__ -+#define __TYPEDEF_MAKER_DIALOG__ -+typedef struct _MakerDialog MakerDialog; -+#endif -+struct _MakerDialog { -+ GtkDialog __parent__; -+ /*< private >*/ -+ MkdgWgt * notebookWgt; /* protected */ -+ MkdgWidgetFlag wFlags; /* protected */ -+ MakerDialogPrivate *_priv; -+}; -+ -+/* -+ * Class definition -+ */ -+typedef struct _MakerDialogClass MakerDialogClass; -+struct _MakerDialogClass { -+ GtkDialogClass __parent__; -+}; -+ -+ -+/* -+ * Public methods -+ */ -+GType maker_dialog_get_type (void) G_GNUC_CONST; -+#line 93 "../src/MakerDialog.gob" -+MakerDialog * maker_dialog_new (void); -+#line 111 "maker-dialog.h" -+#line 98 "../src/MakerDialog.gob" -+MakerDialog * maker_dialog_new_full (MkdgProperties * properties, -+ const gchar * title, -+ MkdgWidgetFlag wFlags, -+ MkdgButtonFlag bFlags); -+#line 117 "maker-dialog.h" -+#line 142 "../src/MakerDialog.gob" -+gboolean maker_dialog_add_property (MakerDialog * self, -+ PropertyContext * ctx); -+#line 121 "maker-dialog.h" -+#line 192 "../src/MakerDialog.gob" -+gboolean maker_dialog_add_all_properties (MakerDialog * self); -+#line 124 "maker-dialog.h" -+#line 239 "../src/MakerDialog.gob" -+void maker_dialog_assign_widget_value (MakerDialog * self, -+ PropertyContext * ctx, -+ gpointer userData); -+#line 129 "maker-dialog.h" -+#line 258 "../src/MakerDialog.gob" -+void maker_dialog_assign_all_widgets_values (MakerDialog * self, -+ gpointer userData); -+#line 133 "maker-dialog.h" -+#line 274 "../src/MakerDialog.gob" -+void maker_dialog_save_all_widgets_values (MakerDialog * self, -+ gpointer userData); -+#line 137 "maker-dialog.h" -+#line 296 "../src/MakerDialog.gob" -+GValue * maker_dialog_get_widget_value (MakerDialog * self, -+ const gchar * key, -+ GValue * value); -+#line 142 "maker-dialog.h" -+#line 317 "../src/MakerDialog.gob" -+void maker_dialog_set_widget_value (MakerDialog * self, -+ const gchar * key, -+ GValue * value); -+#line 147 "maker-dialog.h" -+#line 328 "../src/MakerDialog.gob" -+void maker_dialog_show (MakerDialog * self); -+#line 150 "maker-dialog.h" -+#line 332 "../src/MakerDialog.gob" -+MkdgWidget * maker_dialog_get_widget_by_key (MakerDialog * self, -+ const gchar * key); -+#line 154 "maker-dialog.h" -+ -+#ifdef __cplusplus -+} -+#endif /* __cplusplus */ -+ -+#endif -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index c7fcb5a..7462a9f 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt -@@ -66,33 +66,9 @@ MACRO(GOB_GENERATE name gobFile) - CACHE INTERNAL "GOB_GENERATED_${name}" - ) - -- ADD_CUSTOM_COMMAND(OUTPUT ${GOB_GENERATED_${name}} -- COMMAND ${GOB2_EXECUTABLE} "${gobFile}" -- -o "${GOB2_OUTPUT_DIR}/" -- DEPENDS ${gobFile} ${ARGN} -- ) - ENDMACRO(GOB_GENERATE name gobFile) - - --GOB_GENERATE(ibus-chewing-engine -- ${CMAKE_CURRENT_SOURCE_DIR}/IBusChewingEngine.gob -- ${IBUS_CHEWING_ENGINE_SOURCE_INCLUDED_C_FILES} -- ) --GOB_GENERATE(maker-dialog -- ${CMAKE_CURRENT_SOURCE_DIR}/MakerDialog.gob -- ) -- --ADD_CUSTOM_TARGET(gob2 -- DEPENDS ${GOB_GENERATED_ibus-chewing-engine} -- ${GOB_GENERATED_maker-dialog} -- COMMENT "Preprocess with gob2." -- ) -- -- --SET_SOURCE_FILES_PROPERTIES(${GOB_GENERATED_ibus-chewing-engine} -- ${GOB_GENERATED_maker-dialog} PROPERTIES GENERATED true -- ) -- - SET(COMMON_SOURCE_C_FILES - ${CMAKE_CURRENT_SOURCE_DIR}/IBusChewingApplier.c - ${CMAKE_CURRENT_SOURCE_DIR}/IBusChewingLookupTable.c -@@ -242,7 +218,9 @@ SET(BACKEND_LIBRARIES "${BACKEND_LIBRARIES}" CACHE INTERNAL "Backend Libraries") - - SET(GUI_CORE_SOURCE_FILES ${COMMON_SOURCE_FILES} - ${BACKEND_SOURCE_FILES} -- ${GOB_GENERATED_maker-dialog} -+ ${GOB2_OUTPUT_DIR}/maker-dialog.c -+ ${GOB2_OUTPUT_DIR}/maker-dialog.h -+ ${GOB2_OUTPUT_DIR}/maker-dialog-private.h - ${CMAKE_CURRENT_SOURCE_DIR}/IBusConfigBackend.c - ${CMAKE_CURRENT_SOURCE_DIR}/IBusConfigBackend.h - ${CMAKE_CURRENT_SOURCE_DIR}/MakerDialogWidget.c -@@ -290,7 +268,8 @@ SET(IBUS_ENGINE_CHEWING_LIBRARIES ${COMMON_LIBRARIES} - - ADD_EXECUTABLE(${IBUS_ENGINE_CHEWING} - ${GUI_CORE_SOURCE_FILES} -- ${GOB_GENERATED_ibus-chewing-engine} -+ ${GOB2_OUTPUT_DIR}/ibus-chewing-engine.c -+ ${GOB2_OUTPUT_DIR}/ibus-chewing-engine.h - ${CMAKE_CURRENT_SOURCE_DIR}/IBusChewingLookupTable.c - ${CMAKE_CURRENT_SOURCE_DIR}/IBusChewingLookupTable.h - ${CMAKE_CURRENT_SOURCE_DIR}/IBusChewingPreEdit.c -diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt -index acb8450..15364e7 100644 ---- a/test/CMakeLists.txt -+++ b/test/CMakeLists.txt -@@ -17,10 +17,6 @@ ENDIF() - - ADD_DEFINITIONS("-DUNIT_TEST=1") - --SET_SOURCE_FILES_PROPERTIES(${GOB_GENERATED_ibus-chewing-engine} -- ${GOB_GENERATED_maker-dialog} PROPERTIES GENERATED true -- ) -- - #================================================================== - # Dependencies - # -@@ -107,8 +103,11 @@ ADD_SOURCE_TEST(IBusChewingPreEdit - LIBRARIES ${COMMON_LIBRARIES} ${BACKEND_LIBRARIES} ${X11_LIBRARIES} - ) - -+SET(GOB2_OUTPUT_DIR "${PROJECT_BINARY_DIR}/bin") - ADD_SOURCE_TEST(ibus-chewing-engine NO_DEFAULT_SOURCE -- SOURCES ${GUI_CORE_SOURCE_FILES} ${GOB_GENERATED_ibus-chewing-engine} -+ SOURCES ${GUI_CORE_SOURCE_FILES} -+ ${GOB2_OUTPUT_DIR}/ibus-chewing-engine.c -+ ${GOB2_OUTPUT_DIR}/ibus-chewing-engine.h - ${CMAKE_SOURCE_DIR}/src/IBusChewingLookupTable.c - ${CMAKE_SOURCE_DIR}/src/IBusChewingLookupTable.h - ${CMAKE_SOURCE_DIR}/src/IBusChewingPreEdit.c --- -2.23.0.rc1 - diff --git a/ibus-chewing-1863869-cmake-build.patch b/ibus-chewing-1863869-cmake-build.patch deleted file mode 100644 index 4f797b0..0000000 --- a/ibus-chewing-1863869-cmake-build.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 12128c34db6f3a3755c5c5de980c9a787a4465eb Mon Sep 17 00:00:00 2001 -From: rpm-build -Date: Thu, 13 Aug 2020 21:28:01 +0900 -Subject: [PATCH] ibus-chewing-1863869-cmake-build.patch - ---- - src/CMakeLists.txt | 14 ++++++++------ - test/CMakeLists.txt | 7 ++++--- - 2 files changed, 12 insertions(+), 9 deletions(-) - -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 7462a9f..1959d3f 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt -@@ -10,6 +10,7 @@ SET_COMPILE_ENV(LIB_INSTALL_DIR "${LIB_INSTALL_DIR}" - ##== Location of library include files - INCLUDE_DIRECTORIES( - ${CMAKE_CURRENT_SOURCE_DIR} -+ ${CMAKE_SOURCE_DIR}/bin - ${CMAKE_CURRENT_BINARY_DIR} - ) - -@@ -55,6 +56,7 @@ SET(IBUS_CHEWING_ENGINE_SOURCE_INCLUDED_C_FILES - ${CMAKE_CURRENT_SOURCE_DIR}/IBusChewingEngine-input-events.c - ) - -+SET(GOB2_INPUT_DIR "${CMAKE_SOURCE_DIR}/bin") - SET(GOB2_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}") - MACRO(GOB_GENERATE name gobFile) - SET(GOB_GENERATED_C_${name} -@@ -88,7 +90,7 @@ SET(COMMON_SOURCE_FILES - ${CMAKE_CURRENT_SOURCE_DIR}/MakerDialogProperty.h - ${CMAKE_CURRENT_SOURCE_DIR}/MakerDialogPropertySpec.h - ${CMAKE_CURRENT_SOURCE_DIR}/MakerDialogUtil.h -- ${GOB2_OUTPUT_DIR}/ibus-chewing-engine.h -+ ${GOB2_INPUT_DIR}/ibus-chewing-engine.h - CACHE INTERNAL "COMMON_SOURCE_FILES" - ) - -@@ -218,9 +220,9 @@ SET(BACKEND_LIBRARIES "${BACKEND_LIBRARIES}" CACHE INTERNAL "Backend Libraries") - - SET(GUI_CORE_SOURCE_FILES ${COMMON_SOURCE_FILES} - ${BACKEND_SOURCE_FILES} -- ${GOB2_OUTPUT_DIR}/maker-dialog.c -- ${GOB2_OUTPUT_DIR}/maker-dialog.h -- ${GOB2_OUTPUT_DIR}/maker-dialog-private.h -+ ${GOB2_INPUT_DIR}/maker-dialog.c -+ ${GOB2_INPUT_DIR}/maker-dialog.h -+ ${GOB2_INPUT_DIR}/maker-dialog-private.h - ${CMAKE_CURRENT_SOURCE_DIR}/IBusConfigBackend.c - ${CMAKE_CURRENT_SOURCE_DIR}/IBusConfigBackend.h - ${CMAKE_CURRENT_SOURCE_DIR}/MakerDialogWidget.c -@@ -268,8 +270,8 @@ SET(IBUS_ENGINE_CHEWING_LIBRARIES ${COMMON_LIBRARIES} - - ADD_EXECUTABLE(${IBUS_ENGINE_CHEWING} - ${GUI_CORE_SOURCE_FILES} -- ${GOB2_OUTPUT_DIR}/ibus-chewing-engine.c -- ${GOB2_OUTPUT_DIR}/ibus-chewing-engine.h -+ ${GOB2_INPUT_DIR}/ibus-chewing-engine.c -+ ${GOB2_INPUT_DIR}/ibus-chewing-engine.h - ${CMAKE_CURRENT_SOURCE_DIR}/IBusChewingLookupTable.c - ${CMAKE_CURRENT_SOURCE_DIR}/IBusChewingLookupTable.h - ${CMAKE_CURRENT_SOURCE_DIR}/IBusChewingPreEdit.c -diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt -index 15364e7..5982eb6 100644 ---- a/test/CMakeLists.txt -+++ b/test/CMakeLists.txt -@@ -6,6 +6,7 @@ - INCLUDE_DIRECTORIES( - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_SOURCE_DIR}/src -+ ${CMAKE_SOURCE_DIR}/bin - ${CMAKE_BINARY_DIR}/bin - ) - -@@ -103,11 +104,11 @@ ADD_SOURCE_TEST(IBusChewingPreEdit - LIBRARIES ${COMMON_LIBRARIES} ${BACKEND_LIBRARIES} ${X11_LIBRARIES} - ) - --SET(GOB2_OUTPUT_DIR "${PROJECT_BINARY_DIR}/bin") -+SET(GOB2_INPUT_DIR "${PROJECT_SOURCE_DIR}/bin") - ADD_SOURCE_TEST(ibus-chewing-engine NO_DEFAULT_SOURCE - SOURCES ${GUI_CORE_SOURCE_FILES} -- ${GOB2_OUTPUT_DIR}/ibus-chewing-engine.c -- ${GOB2_OUTPUT_DIR}/ibus-chewing-engine.h -+ ${GOB2_INPUT_DIR}/ibus-chewing-engine.c -+ ${GOB2_INPUT_DIR}/ibus-chewing-engine.h - ${CMAKE_SOURCE_DIR}/src/IBusChewingLookupTable.c - ${CMAKE_SOURCE_DIR}/src/IBusChewingLookupTable.h - ${CMAKE_SOURCE_DIR}/src/IBusChewingPreEdit.c --- -2.25.1 - diff --git a/ibus-chewing-backport-ignore-mod4.patch b/ibus-chewing-backport-ignore-mod4.patch deleted file mode 100644 index 3a8a6c0..0000000 --- a/ibus-chewing-backport-ignore-mod4.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 13fe5fa09d97994f591f6549f4a82afd56a218f6 Mon Sep 17 00:00:00 2001 -From: rpm-build -Date: Sun, 11 Feb 2024 21:45:28 +0900 -Subject: [PATCH] ibus-chewing-backport-ignore-mod4.patch - ---- - src/IBusChewingEngine-input-events.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/src/IBusChewingEngine-input-events.c b/src/IBusChewingEngine-input-events.c -index f170f3e..c86d29a 100644 ---- a/src/IBusChewingEngine-input-events.c -+++ b/src/IBusChewingEngine-input-events.c -@@ -10,6 +10,9 @@ gboolean ibus_chewing_engine_process_key_event(IBusEngine * engine, - - IBusChewingEngine *self = IBUS_CHEWING_ENGINE(engine); - -+ if (unmaskedMod & IBUS_MOD4_MASK) -+ return FALSE; -+ - if (is_password(self)) - return FALSE; - --- -2.43.0 - diff --git a/ibus-chewing.spec b/ibus-chewing.spec index 2664ed4..e5ebb38 100644 --- a/ibus-chewing.spec +++ b/ibus-chewing.spec @@ -1,51 +1,25 @@ -%if 0%{?el6} -%bcond_with gsettings -%bcond_without gconf2 -%else -%bcond_without gsettings -%bcond_with gconf2 -%endif - -%if %{with gsettings} -%global gsettings_support ON -%else -%global gsettings_support OFF -%endif - -%if %{with gconf2} -%global gconf2_support ON -%else -%global gconf2_support OFF -%endif +%global public_key RWRzJFnXiLZleAyCIv1talBjyRewelcy9gzYQq9pd3SKSFBPoy57sf5s + Name: ibus-chewing -Version: 1.6.1 +Version: 2.0.0 Release: %autorelease Summary: The Chewing engine for IBus input platform Summary(zh_TW): IBus新酷音輸入法 License: GPL-2.0-or-later -URL: https://github.com/definite/ibus-chewing -Source0: https://github.com/definite/%{name}/releases/download/%{version}/%{name}-%{version}-Source.tar.gz -Patch1: %{name}-1799517-no-gob2.patch -Patch2: %{name}-1863869-cmake-build.patch -# https://src.fedoraproject.org/rpms/ibus-chewing/pull-request/2 -Patch3: %{name}-backport-ignore-mod4.patch - -BuildRequires: cmake >= 2.6.2 -BuildRequires: pkgconfig -BuildRequires: ibus-devel >= 1.3 -BuildRequires: libchewing-devel >= 0.3.3 -BuildRequires: glib2-devel -BuildRequires: gtk2-devel -BuildRequires: libX11-devel -BuildRequires: gettext-runtime -BuildRequires: findutils -BuildRequires: gcc -BuildRequires: gcc-c++ -BuildRequires: git -Requires: ibus >= 1.3 -Requires: libchewing >= 0.3.3 -Requires: gtk2 +URL: https://github.com/chewing/ibus-chewing +Source0: %{url}/releases/download/v%{version}/%{name}-%{version}-Source.tar.xz +Source1: %{url}/releases/download/v%{version}/%{name}-%{version}-Source.tar.xz.minisig +BuildRequires: cmake >= 3.21.0 +BuildRequires: gcc +BuildRequires: pkgconf +BuildRequires: minisign +BuildRequires: pkgconfig(ibus-1.0) +BuildRequires: pkgconfig(chewing) +BuildRequires: pkgconfig(glib-2.0) +BuildRequires: pkgconfig(gtk4) +BuildRequires: pkgconfig(libadwaita-1) +BuildRequires: gettext-runtime %description @@ -67,11 +41,11 @@ IBus-chewing 是新酷音輸入法的IBus前端。 %prep -%autosetup -S git -n %{name}-%{version}-Source +/usr/bin/minisign -V -m %{SOURCE0} -x %{SOURCE1} -P %{public_key} +%autosetup -n %{name}-%{version}-Source %build -# $RPM_OPT_FLAGS should be loaded from cmake macro. -%cmake -DCMAKE_FEDORA_ENABLE_FEDORA_BUILD=1 -DGSETTINGS_SUPPORT=%{gsettings_support} -DGCONF2_SUPPORT=%{gconf2_support} . +%cmake --preset default %cmake_build %install @@ -83,57 +57,9 @@ rm -fr %{buildroot}%{_docdir}/* %find_lang %{name} -%pre -%if "%{gconf2_support}" == "ON" -if [ "$1" -gt 1 ] ; then - export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` - [ -r %{_sysconfdir}/gconf/schemas/%{name}.schemas ] && - gconftool-2 --makefile-uninstall-rule %{_sysconfdir}/gconf/schemas/%{name}.schemas >/dev/null || : - - # Upgrading 1.0.2.20090302-1.fc11 or older? - [ -r %{_sysconfdir}/gconf/schemas/%{name}.schema ] && - gconftool-2 --makefile-uninstall-rule %{_sysconfdir}/gconf/schemas/%{name}.schema >/dev/null || : -fi -%endif - - -%preun -%if "%{gconf2_support}" == "ON" -if [ "$1" -eq 0 ] ; then - export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` - gconftool-2 --makefile-uninstall-rule %{_sysconfdir}/gconf/schemas/%{name}.schemas > /dev/null || : -fi -%endif - - -%post -%if "%{gconf2_support}" == "ON" -if [ $1 -gt 1 ] ; then - export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` - [ -r %{_sysconfdir}/gconf/schemas/%{name}.schemas ] && gconftool-2 --makefile-install-rule %{_sysconfdir}/gconf/schemas/%{name}.schemas >/dev/null || : -fi -%endif - - -%postun -%if "%{gconf2_support}" == "ON" -if [ $1 -gt 1 ] ; then - export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` - [ -r %{_sysconfdir}/gconf/schemas/%{name}.schemas ] && - gconftool-2 --makefile-uninstall-rule %{_sysconfdir}/gconf/schemas/%{name}.schemas >/dev/null || : -fi -%endif - - %files -f %{name}.lang -%doc AUTHORS README.md ChangeLog USER-GUIDE +%doc AUTHORS README.md ChangeLog-1.x CHANGELOG.md USER-GUIDE %license COPYING -%{_datadir}/%{name}/icons/%{name}-chi-full.svg -%{_datadir}/%{name}/icons/%{name}-chi-half.svg -%{_datadir}/%{name}/icons/%{name}-eng-full.svg -%{_datadir}/%{name}/icons/%{name}-eng-half.svg -%{_datadir}/%{name}/icons/%{name}-orig.png -%{_datadir}/%{name}/icons/%{name}-template.svg %{_datadir}/%{name}/icons/%{name}.png %{_datadir}/%{name}/icons/ibus-setup-chewing.png %{_datadir}/applications/ibus-setup-chewing.desktop diff --git a/sources b/sources index d7922b7..8fa3ccd 100644 --- a/sources +++ b/sources @@ -1 +1,3 @@ -SHA512 (ibus-chewing-1.6.1-Source.tar.gz) = e693e7cdab0a9a2fb44e57b7f19e04276b229c9478e250e24cb03cbd9520afda835c690299ee9cc197efae7b3369f8700a19a1bec089137783f9e53f03434dfa +SHA512 (ibus-chewing-2.0.0-Source.tar.xz) = 23449ac67c06e63442f859e0c0883d9f55c0de9ccf9c97f8dda4aab1066e0be9dc9f3964989c992c95d8fce17714a624d430a422c6d866646f0f0102165b6190 +SHA512 (ibus-chewing-2.0.0-Source.tar.xz.minisig) = a3898a5a84a83e86213760101e753bdcab7111255f0823d878223c534eb39c9443a84d9b3996d098725ff186e0c306bb08eb1f4a0819d0208b3169dffdedcb3d +SHA512 (ibus-chewing-2.0.0-Source.tar.xz.sha256) = 56c5e2875f7b9f04acb8310f7690f3966787cf54ea5c2d665cc720834c1165b2486be69d8fe18687345246887f0194a9310c586f4cac4b83b5b1d011736ba9c7