diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch index 8b13789..d1acc7f 100644 --- a/ibus-HEAD.patch +++ b/ibus-HEAD.patch @@ -1 +1,4922 @@ - +diff --git a/autogen.sh b/autogen.sh +index c34acab..addc0bd 100755 +--- a/autogen.sh ++++ b/autogen.sh +@@ -2,13 +2,13 @@ + set -e + set -x + +-autopoint --force +-libtoolize --automake --copy --force +-gtkdocize --copy #--flavour=no-tmpl +-aclocal -I m4 --force +-autoheader --force +-automake --add-missing --copy --force +-autoconf --force ++autopoint --force || exit 1 ++libtoolize --automake --copy --force || exit 1 ++gtkdocize --copy || exit 1 #--flavour=no-tmpl ++aclocal -I m4 --force || exit 1 ++autoheader --force || exit 1 ++automake --add-missing --copy --force || exit 1 ++autoconf --force || exit 1 + export CFLAGS="-Wall -g -O0 -Wl,--no-undefined" + export CXXFLAGS="$CFLAGS" +-./configure --enable-maintainer-mode $* ++./configure --enable-maintainer-mode $* || exit 1 +diff --git a/bus/engineproxy.c b/bus/engineproxy.c +index 647845b..e78fbcf 100644 +--- a/bus/engineproxy.c ++++ b/bus/engineproxy.c +@@ -541,7 +541,11 @@ bus_engine_proxy_process_key_event_reply_cb (IBusPendingCall *pending, + + reply_message = dbus_pending_call_steal_reply (pending); + +- if ((error = ibus_error_new_from_message (reply_message)) != NULL) { ++ if (reply_message == NULL) { ++ call_data->func(FALSE, call_data->user_data); ++ return; ++ } ++ else if ((error = ibus_error_new_from_message (reply_message)) != NULL) { + g_warning ("%s: %s", error->name, error->message); + ibus_message_unref (reply_message); + ibus_error_free (error); +diff --git a/bus/inputcontext.c b/bus/inputcontext.c +index 4d66232..723f3af 100644 +--- a/bus/inputcontext.c ++++ b/bus/inputcontext.c +@@ -1472,7 +1472,7 @@ bus_input_context_update_lookup_table (BusInputContext *context, + if (priv->capabilities & IBUS_CAP_LOOKUP_TABLE) { + bus_input_context_send_signal (context, + "UpdateLookupTable", +- IBUS_TYPE_TEXT, &(priv->lookup_table), ++ IBUS_TYPE_LOOKUP_TABLE, &(priv->lookup_table), + G_TYPE_BOOLEAN, &(priv->lookup_table_visible), + G_TYPE_INVALID); + } +diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c +index 29e7753..4483696 100644 +--- a/client/gtk2/ibusimcontext.c ++++ b/client/gtk2/ibusimcontext.c +@@ -569,7 +569,6 @@ _ibus_context_commit_text_cb (IBusInputContext *ibus_context, + static void + _ibus_context_forward_key_event_cb (IBusInputContext *ibus_context, + guint keyval, +- gboolean is_press, + guint state, + IBusIMContext *context) + { +@@ -579,7 +578,7 @@ _ibus_context_forward_key_event_cb (IBusInputContext *ibus_context, + IBusIMContextPrivate *priv; + + priv = context->priv; +- event = (GdkEventKey *)gdk_event_new (is_press ? GDK_KEY_PRESS : GDK_KEY_RELEASE); ++ event = (GdkEventKey *)gdk_event_new (state & IBUS_RELEASE_MASK ? GDK_KEY_RELEASE : GDK_KEY_PRESS); + + event->time = GDK_CURRENT_TIME; + event->window = g_object_ref (priv->client_window); +diff --git a/configure.ac b/configure.ac +index 2b6f0d8..263b83f 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -49,6 +49,13 @@ AC_ISC_POSIX + AC_HEADER_STDC + AM_PROG_LIBTOOL + ++# For dislpay Date ++m4_define(ibus_maybe_datedisplay, ++ m4_esyscmd([if test x]ibus_released[ != x1; then date '+%a %b %d %Y' | tr -d '\n\r'; fi])) ++m4_define([ibus_datedisplay], ibus_maybe_datedisplay) ++DATE_DISPLAY="ibus_datedisplay" ++AC_SUBST(DATE_DISPLAY) ++ + # If only source code changed, lt_revision + 1 + # If any interface added, lt_age + 1 + # If any interfaces changed or removed, lt_current + 1 +diff --git a/docs/reference/ibus/Makefile.am b/docs/reference/ibus/Makefile.am +index c1991f1..310bdef 100644 +--- a/docs/reference/ibus/Makefile.am ++++ b/docs/reference/ibus/Makefile.am +@@ -25,7 +25,8 @@ SCANGOBJ_OPTIONS= + + # Extra options to supply to gtkdoc-scan. + # e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" +-SCAN_OPTIONS=--rebuild-sections ++# SCAN_OPTIONS=--rebuild-sections ++SCAN_OPTIONS= + + # Extra options to supply to gtkdoc-mkdb. + # e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml +@@ -42,7 +43,7 @@ FIXXREF_OPTIONS= + # Used for dependencies. The docs will be rebuilt if any of these change. + # e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h + # e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c +-HFILE_GLOB= ++HFILE_GLOB=$(top_srcdir)/src/*.h + CFILE_GLOB= + + # Header files to ignore when scanning. +@@ -97,4 +98,10 @@ EXTRA_DIST += + + # Comment this out if you want your docs-status tested during 'make check' + #TESTS = $(GTKDOC_CHECK) +-# CLEANFILES += ibus* ++ ++clean-local: ++ rm -rf tmpl ++ ++CLEANFILES+= *.stamp ++ ++ +diff --git a/docs/reference/ibus/ibus-docs.sgml b/docs/reference/ibus/ibus-docs.sgml +index 35d0bea..043890c 100644 +--- a/docs/reference/ibus/ibus-docs.sgml ++++ b/docs/reference/ibus/ibus-docs.sgml +@@ -3,46 +3,76 @@ + "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"> + + +- IBus Reference Manual ++ iBus Reference Manual + +- for ibus 1.1.0 ++ iBus 1.1.0 reference manual. + The latest version of this documentation can be found on-line at + http://code.google.com/p/ibus. + + + + +- API Reference +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- +- ++ API Overviews ++ The iBus API consists 3 parts: ++ User interfaces for objects and services which ++ are relateed to iBus UI such as language bar; ++ Input method engine for input method main logic and input/output handling; ++ Configure for services for save, load and listening configures. ++ ++ ++ ++ User Interfaces ++ These APIs directly related to User interfaces, such as ++ pre-edit buffer, auxiliary text, language bar, button, ++ radio boxes, and so on. ++ ++ ++ ++ ++ ++ ++ ++ Input method engine ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ Configure ++ ++ ++ ++ ++ ++ ++ ++ Others ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ + + ++ +diff --git a/docs/reference/ibus/ibus-sections.txt b/docs/reference/ibus/ibus-sections.txt +new file mode 100644 +index 0000000..201a536 +--- /dev/null ++++ b/docs/reference/ibus/ibus-sections.txt +@@ -0,0 +1,2710 @@ ++
++ibusproperty ++IBUS_TYPE_PROP_LIST ++IBUS_PROP_LIST ++IBUS_PROP_LIST_CLASS ++IBUS_IS_PROP_LIST ++IBUS_IS_PROP_LIST_CLASS ++IBUS_PROP_LIST_GET_CLASS ++IBusPropType ++IBusPropState ++IBusProperty ++IBusProperty ++IBusPropList ++IBusPropList ++ibus_property_new ++ibus_property_set_label ++ibus_property_set_visible ++ibus_property_set_sub_props ++ibus_property_update ++ibus_prop_list_get_type ++ibus_prop_list_new ++ibus_prop_list_append ++ibus_prop_list_get ++ibus_prop_list_update_property ++ ++IBUS_PROPERTY ++IBUS_IS_PROPERTY ++IBUS_TYPE_PROPERTY ++ibus_property_get_type ++IBUS_PROPERTY_CLASS ++IBUS_IS_PROPERTY_CLASS ++IBUS_PROPERTY_GET_CLASS ++
++ ++
++ibusproxy ++IBusProxy ++IBusProxy ++ibus_proxy_new ++ibus_proxy_send ++ibus_proxy_call ++ibus_proxy_call_with_reply ++ibus_proxy_call_with_reply_and_block ++ibus_proxy_send_with_reply ++ibus_proxy_send_with_reply_and_block ++ibus_proxy_handle_signal ++ibus_proxy_get_name ++ibus_proxy_get_unique_name ++ibus_proxy_get_path ++ibus_proxy_get_interface ++ibus_proxy_get_connection ++ ++IBUS_PROXY ++IBUS_IS_PROXY ++IBUS_TYPE_PROXY ++ibus_proxy_get_type ++IBUS_PROXY_CLASS ++IBUS_IS_PROXY_CLASS ++IBUS_PROXY_GET_CLASS ++
++ ++
++ibusconfig ++IBusConfig ++IBusConfig ++ibus_config_new ++ibus_config_get_value ++ibus_config_set_value ++ ++IBUS_CONFIG ++IBUS_IS_CONFIG ++IBUS_TYPE_CONFIG ++ibus_config_get_type ++IBUS_CONFIG_CLASS ++IBUS_IS_CONFIG_CLASS ++IBUS_CONFIG_GET_CLASS ++
++ ++
++ibushotkey ++IBusHotkeyProfile ++IBusHotkeyProfile ++ibus_hotkey_profile_add_hotkey ++ibus_hotkey_profile_add_hotkey_from_string ++ibus_hotkey_profile_remove_hotkey ++ibus_hotkey_profile_remove_hotkey_by_event ++ibus_hotkey_profile_filter_key_event ++ ++IBUS_HOTKEY_PROFILE ++IBUS_IS_HOTKEY_PROFILE ++IBUS_TYPE_HOTKEY_PROFILE ++ibus_hotkey_profile_get_type ++IBUS_HOTKEY_PROFILE_CLASS ++IBUS_IS_HOTKEY_PROFILE_CLASS ++IBUS_HOTKEY_PROFILE_GET_CLASS ++
++ ++
++ibusenginedesc ++BusComponent ++IBusEngineDesc ++IBusEngineDesc ++ibus_engine_desc_new ++ibus_engine_desc_new_from_xml_node ++ibus_engine_desc_output ++ ++IBUS_ENGINE_DESC ++IBUS_IS_ENGINE_DESC ++IBUS_TYPE_ENGINE_DESC ++ibus_engine_desc_get_type ++IBUS_ENGINE_DESC_CLASS ++IBUS_IS_ENGINE_DESC_CLASS ++IBUS_ENGINE_DESC_GET_CLASS ++
++ ++
++ibusfactory ++IBUS_TYPE_FACTORY_INFO ++IBUS_FACTORY_INFO ++IBUS_FACTORY_INFO_CLASS ++IBUS_IS_FACTORY_INFO ++IBUS_IS_FACTORY_INFO_CLASS ++IBUS_FACTORY_INFO_GET_CLASS ++IBusFactory ++IBusFactory ++IBusFactoryInfo ++IBusFactoryInfo ++ibus_factory_new ++ibus_factory_add_engine ++ibus_factory_get_info ++ibus_factory_info_get_type ++ibus_factory_info_new ++ ++IBUS_FACTORY ++IBUS_IS_FACTORY ++IBUS_TYPE_FACTORY ++ibus_factory_get_type ++IBUS_FACTORY_CLASS ++IBUS_IS_FACTORY_CLASS ++IBUS_FACTORY_GET_CLASS ++
++ ++
++ibusobject ++IBusObjectFlags ++IBUS_OBJECT_FLAGS ++IBUS_OBJECT_SET_FLAGS ++IBUS_OBJECT_UNSET_FLAGS ++IBUS_OBJECT_DESTROYED ++IBusObject ++IBusObject ++ibus_object_new ++ibus_object_destroy ++ ++IBUS_OBJECT ++IBUS_IS_OBJECT ++IBUS_TYPE_OBJECT ++ibus_object_get_type ++IBUS_OBJECT_CLASS ++IBUS_IS_OBJECT_CLASS ++IBUS_OBJECT_GET_CLASS ++
++ ++
++ibusbus ++IBusBus ++IBusBus ++ibus_bus_new ++ibus_bus_is_connected ++ibus_bus_hello ++ibus_bus_request_name ++ibus_bus_release_name ++ibus_bus_name_has_owner ++ibus_bus_list_names ++ibus_bus_add_match ++ibus_bus_remove_match ++ibus_bus_get_name_owner ++ibus_bus_exit ++ibus_bus_register_component ++ibus_bus_list_engines ++ibus_bus_list_active_engines ++ibus_bus_get_config ++ ++IBUS_BUS ++IBUS_IS_BUS ++IBUS_TYPE_BUS ++ibus_bus_get_type ++IBUS_BUS_CLASS ++IBUS_IS_BUS_CLASS ++IBUS_BUS_GET_CLASS ++
++ ++
++ibusattribute ++IBUS_TYPE_ATTR_LIST ++IBUS_ATTR_LIST ++IBUS_ATTR_LIST_CLASS ++IBUS_IS_ATTR_LIST ++IBUS_IS_ATTR_LIST_CLASS ++IBUS_ATTR_LIST_GET_CLASS ++IBusAttrType ++IBusAttrUnderline ++IBusAttribute ++IBusAttribute ++IBusAttrList ++IBusAttrList ++ibus_attribute_new ++ibus_attr_underline_new ++ibus_attr_foreground_new ++ibus_attr_background_new ++ibus_attr_list_get_type ++ibus_attr_list_new ++ibus_attr_list_append ++ibus_attr_list_get ++ ++IBUS_ATTRIBUTE ++IBUS_IS_ATTRIBUTE ++IBUS_TYPE_ATTRIBUTE ++ibus_attribute_get_type ++IBUS_ATTRIBUTE_CLASS ++IBUS_IS_ATTRIBUTE_CLASS ++IBUS_ATTRIBUTE_GET_CLASS ++
++ ++
++ibusservice ++ServiceIBusMessageFunc ++ServiceIBusSignalFunc ++IBusService ++IBusService ++ibus_service_new ++ibus_service_get_path ++ibus_service_handle_message ++ibus_service_add_to_connection ++ibus_service_get_connections ++ibus_service_remove_from_connection ++ibus_service_remove_from_all_connections ++ibus_service_send_signal ++ ++IBUS_SERVICE ++IBUS_IS_SERVICE ++IBUS_TYPE_SERVICE ++ibus_service_get_type ++IBUS_SERVICE_CLASS ++IBUS_IS_SERVICE_CLASS ++IBUS_SERVICE_GET_CLASS ++
++ ++
++ibusserializable ++ibus_serializable_set_attachment ++ibus_serializable_get_attachment ++ibus_serializable_remove_attachment ++IBusSerializableSerializeFunc ++IBusSerializableDeserializeFunc ++IBusSerializableCopyFunc ++IBusSerializable ++IBusSerializable ++ibus_serializable_new ++ibus_serializable_set_qattachment ++ibus_serializable_get_qattachment ++ibus_serializable_remove_qattachment ++ibus_serializable_copy ++ibus_serializable_serialize ++ibus_serializable_deserialize ++ ++IBUS_SERIALIZABLE ++IBUS_IS_SERIALIZABLE ++IBUS_TYPE_SERIALIZABLE ++ibus_serializable_get_type ++IBUS_SERIALIZABLE_CLASS ++IBUS_IS_SERIALIZABLE_CLASS ++IBUS_SERIALIZABLE_GET_CLASS ++
++ ++
++ibuslookuptable ++IBusLookupTable ++IBusLookupTable ++ibus_lookup_table_new ++ibus_lookup_table_append_candidate ++ibus_lookup_table_get_candidate ++ibus_lookup_table_set_cursor_pos ++ibus_lookup_table_get_cursor_pos ++ibus_lookup_table_set_cursor_visible ++ibus_lookup_table_is_cursor_visible ++ibus_lookup_table_get_cursor_in_page ++ibus_lookup_table_set_page_size ++ibus_lookup_table_get_page_size ++ibus_lookup_table_clear ++ibus_lookup_table_page_up ++ibus_lookup_table_page_down ++ibus_lookup_table_cursor_up ++ibus_lookup_table_cursor_down ++ ++IBUS_LOOKUP_TABLE ++IBUS_IS_LOOKUP_TABLE ++IBUS_TYPE_LOOKUP_TABLE ++ibus_lookup_table_get_type ++IBUS_LOOKUP_TABLE_CLASS ++IBUS_IS_LOOKUP_TABLE_CLASS ++IBUS_LOOKUP_TABLE_GET_CLASS ++
++ ++
++ibustext ++IBusText ++IBusText ++ibus_text_new_from_string ++ibus_text_new_from_ucs4 ++ibus_text_new_from_static_string ++ibus_text_new_from_printf ++ibus_text_new_from_unichar ++ibus_text_append_attribute ++ibus_text_get_length ++ ++IBUS_TEXT ++IBUS_IS_TEXT ++IBUS_TYPE_TEXT ++ibus_text_get_type ++IBUS_TEXT_CLASS ++IBUS_IS_TEXT_CLASS ++IBUS_TEXT_GET_CLASS ++
++ ++
++ibusconnection ++IBusIBusMessageFunc ++IBusIBusSignalFunc ++IBusMessageFunc ++IBusConnection ++IBusConnection ++ibus_connection_new ++ibus_connection_set_connection ++ibus_connection_open ++ibus_connection_open_private ++ibus_connection_close ++ibus_connection_is_connected ++ibus_connection_get_connection ++ibus_connection_read_write_dispatch ++ibus_connection_send ++ibus_connection_send_signal ++ibus_connection_send_signal_valist ++ibus_connection_send_valist ++ibus_connection_send_with_reply ++ibus_connection_send_with_reply_and_block ++ibus_connection_call ++ibus_connection_flush ++ibus_connection_register_object_path ++ibus_connection_unregister_object_path ++ ++IBUS_CONNECTION ++IBUS_IS_CONNECTION ++IBUS_TYPE_CONNECTION ++ibus_connection_get_type ++IBUS_CONNECTION_CLASS ++IBUS_IS_CONNECTION_CLASS ++IBUS_CONNECTION_GET_CLASS ++
++ ++
++ibuscomponent ++IBusComponent ++IBusComponent ++ibus_component_new ++ibus_component_new_from_xml_node ++ibus_component_new_from_file ++ibus_component_add_observed_path ++ibus_component_add_engine ++ibus_component_get_engines ++ibus_component_output ++ibus_component_output_engines ++ibus_component_check_modification ++ibus_component_start ++ibus_component_stop ++ibus_component_is_running ++ibus_component_get_from_engine ++ ++IBUS_COMPONENT ++IBUS_IS_COMPONENT ++IBUS_TYPE_COMPONENT ++ibus_component_get_type ++IBUS_COMPONENT_CLASS ++IBUS_IS_COMPONENT_CLASS ++IBUS_COMPONENT_GET_CLASS ++
++ ++
++ibusobservedpath ++IBusObservedPath ++IBusObservedPath ++ibus_observed_path_new_from_xml_node ++ibus_observed_path_new ++ibus_observed_path_traverse ++ibus_observed_path_check_modification ++ibus_observed_path_output ++ ++IBUS_OBSERVED_PATH ++IBUS_IS_OBSERVED_PATH ++IBUS_TYPE_OBSERVED_PATH ++ibus_observed_path_get_type ++IBUS_OBSERVED_PATH_CLASS ++IBUS_IS_OBSERVED_PATH_CLASS ++IBUS_OBSERVED_PATH_GET_CLASS ++
++ ++
++ibusserver ++IBusNewConnectionFunc ++IBusServer ++IBusServer ++ibus_server_new ++ibus_server_listen ++ibus_server_disconnect ++ibus_server_get_address ++ibus_server_get_id ++ibus_server_is_connected ++ ++IBUS_SERVER ++IBUS_IS_SERVER ++IBUS_TYPE_SERVER ++ibus_server_get_type ++IBUS_SERVER_CLASS ++IBUS_IS_SERVER_CLASS ++IBUS_SERVER_GET_CLASS ++
++ ++
++ibusengine ++IBusEngine ++IBusEngine ++ibus_engine_new ++ibus_engine_commit_text ++ibus_engine_update_preedit_text ++ibus_engine_show_preedit_text ++ibus_engine_hide_preedit_text ++ibus_engine_update_auxiliary_text ++ibus_engine_show_auxiliary_text ++ibus_engine_hide_auxiliary_text ++ibus_engine_update_lookup_table ++ibus_engine_update_lookup_table_fast ++ibus_engine_show_lookup_table ++ibus_engine_hide_lookup_table ++ibus_engine_forward_key_event ++ibus_engine_register_properties ++ibus_engine_update_property ++ibus_engine_get_name ++ ++IBUS_ENGINE ++IBUS_IS_ENGINE ++IBUS_TYPE_ENGINE ++ibus_engine_get_type ++IBUS_ENGINE_CLASS ++IBUS_IS_ENGINE_CLASS ++IBUS_ENGINE_GET_CLASS ++
++ ++
++ibusconfigservice ++IBusConfigService ++IBusConfigService ++ibus_config_service_new ++ibus_config_service_value_changed ++ ++IBUS_CONFIG_SERVICE ++IBUS_IS_CONFIG_SERVICE ++IBUS_TYPE_CONFIG_SERVICE ++ibus_config_service_get_type ++IBUS_CONFIG_SERVICE_CLASS ++IBUS_IS_CONFIG_SERVICE_CLASS ++IBUS_CONFIG_SERVICE_GET_CLASS ++
++ ++
++ibusinputcontext ++IBusInputContext ++IBusInputContext ++ibus_input_context_process_key_event ++ibus_input_context_set_cursor_location ++ibus_input_context_set_capabilities ++ibus_input_context_focus_in ++ibus_input_context_focus_out ++ibus_input_context_reset ++ibus_input_context_enable ++ibus_input_context_disable ++ ++IBUS_INPUT_CONTEXT ++IBUS_IS_INPUT_CONTEXT ++IBUS_TYPE_INPUT_CONTEXT ++ibus_input_context_get_type ++IBUS_INPUT_CONTEXT_CLASS ++IBUS_IS_INPUT_CONTEXT_CLASS ++IBUS_INPUT_CONTEXT_GET_CLASS ++
++ ++
++ibuspendingcall ++IBusPendingCall ++IBusPendingCallNotifyFunction ++ibus_pending_call_ref ++ibus_pending_call_unref ++ibus_pending_call_set_notify ++ibus_pending_call_cancel ++ibus_pending_call_get_completed ++ibus_pending_call_steal_reply ++ibus_pending_call_block ++ibus_pending_call_wait ++ibus_pending_call_allocate_data_slot ++ibus_pending_call_free_data_slot ++ibus_pending_call_set_data ++ibus_pending_call_get_data ++
++ ++
++ibusxml ++XMLNode ++ibus_xml_parse_file ++ibus_xml_parse_buffer ++ibus_xml_free ++ibus_xml_output ++
++ ++
++ibustypes ++IBusModifierType ++IBusCapabilite ++IBusRectangle ++IBusFreeFunc ++
++ ++
++ibusmessage ++IBUS_TYPE_OBJECT_PATH ++IBUS_TYPE_ARRAY ++IBUS_TYPE_STRUCT ++IBUS_TYPE_DICT_ENTRY ++IBUS_TYPE_VARIANT ++IBusMessage ++IBusMessageIter ++ibus_type_get_object_path ++ibus_type_get_array ++ibus_type_get_struct ++ibus_type_get_dict_entry ++ibus_type_get_variant ++ibus_message_new ++ibus_message_ref ++ibus_message_unref ++ibus_message_new_method_call ++ibus_message_new_method_return ++ibus_message_new_error ++ibus_message_new_error_printf ++ibus_message_new_signal ++ibus_message_is_method_call ++ibus_message_is_error ++ibus_message_is_signal ++ibus_message_set_destination ++ibus_message_set_sender ++ibus_message_set_error_name ++ibus_message_set_interface ++ibus_message_set_member ++ibus_message_set_path ++ibus_message_set_no_reply ++ibus_message_set_reply_serial ++ibus_message_get_type ++ibus_message_get_destination ++ibus_message_get_sender ++ibus_message_get_error_name ++ibus_message_get_error_message ++ibus_message_get_interface ++ibus_message_get_member ++ibus_message_get_path ++ibus_message_get_no_reply ++ibus_message_get_reply_serial ++ibus_message_get_serial ++ibus_message_append_args ++ibus_message_append_args_valist ++ibus_message_get_args ++ibus_message_get_args_valist ++ibus_message_iter_init_append ++ibus_message_iter_append ++ibus_message_iter_init ++ibus_message_iter_peek ++ibus_message_iter_get_basic ++ibus_message_iter_get ++ibus_message_iter_next ++ibus_message_iter_has_next ++ibus_message_iter_open_container ++ibus_message_iter_close_container ++ibus_message_iter_recurse ++ibus_message_iter_get_arg_type ++ibus_message_iter_get_element_type ++ibus_message_to_string ++
++ ++
++stamp-ibusenumtypes ++
++ ++
++ibuserror ++IBusError ++ibus_error_new ++ibus_error_new_from_text ++ibus_error_new_from_printf ++ibus_error_new_from_message ++ibus_error_free ++
++ ++
++ibusenumtypes ++ibus_object_flags_get_type ++IBUS_TYPE_OBJECT_FLAGS ++ibus_attr_type_get_type ++IBUS_TYPE_ATTR_TYPE ++ibus_attr_underline_get_type ++IBUS_TYPE_ATTR_UNDERLINE ++ibus_prop_type_get_type ++IBUS_TYPE_PROP_TYPE ++ibus_prop_state_get_type ++IBUS_TYPE_PROP_STATE ++ibus_modifier_type_get_type ++IBUS_TYPE_MODIFIER_TYPE ++ibus_capabilite_get_type ++IBUS_TYPE_CAPABILITE ++
++ ++
++ibusshare ++IBUS_SERVICE_IBUS ++IBUS_SERVICE_PANEL ++IBUS_SERVICE_CONFIG ++IBUS_SERVICE_NOTIFICATIONS ++IBUS_PATH_IBUS ++IBUS_PATH_FACTORY ++IBUS_PATH_PANEL ++IBUS_PATH_CONFIG ++IBUS_PATH_NOTIFICATIONS ++IBUS_PATH_INPUT_CONTEXT ++IBUS_INTERFACE_IBUS ++IBUS_INTERFACE_INPUT_CONTEXT ++IBUS_INTERFACE_FACTORY ++IBUS_INTERFACE_ENGINE ++IBUS_INTERFACE_PANEL ++IBUS_INTERFACE_CONFIG ++IBUS_INTERFACE_NOTIFICATIONS ++ibus_get_address ++ibus_get_user_name ++ibus_get_socket_path ++ibus_keyval_name ++ibus_keyval_from_name ++ibus_free_strv ++ibus_key_event_to_string ++ibus_key_event_from_string ++ibus_init ++ibus_main ++ibus_quit ++
++ ++
++ibusconfigprivate ++
++ ++
++stamp-ibusmarshalers ++
++ ++
++keyname-table ++gdk_key ++
++ ++
++ibusmarshalers ++ibus_marshal_VOID__VOID ++ibus_marshal_VOID__NONE ++ibus_marshal_VOID__OBJECT ++ibus_marshal_VOID__POINTER ++ibus_marshal_VOID__STRING ++ibus_marshal_VOID__STRING_INT ++ibus_marshal_VOID__STRING_UINT ++ibus_marshal_BOOLEAN__POINTER ++ibus_marshal_BOOL__POINTER ++ibus_marshal_BOOLEAN__POINTER_POINTER ++ibus_marshal_BOOL__POINTER_POINTER ++ibus_marshal_BOOLEAN__UINT_UINT ++ibus_marshal_BOOL__UINT_UINT ++ibus_marshal_VOID__INT_INT_INT_INT ++ibus_marshal_VOID__UINT_UINT ++ibus_marshal_VOID__OBJECT_UINT_BOOLEAN ++ibus_marshal_VOID__OBJECT_UINT_BOOL ++ibus_marshal_VOID__OBJECT_BOOLEAN ++ibus_marshal_VOID__OBJECT_BOOL ++ibus_marshal_VOID__BOXED_BOOLEAN ++ibus_marshal_VOID__BOXED_BOOL ++ibus_marshal_VOID__BOXED ++ibus_marshal_VOID__STRING_STRING_BOXED ++ibus_marshal_VOID__STRING_STRING_STRING ++ibus_marshal_VOID__UINT ++ibus_marshal_VOID__UINT_POINTER ++
++ ++
++ibus ++
++ ++
++ibuskeysyms ++IBUS_VoidSymbol ++IBUS_BackSpace ++IBUS_Tab ++IBUS_Linefeed ++IBUS_Clear ++IBUS_Return ++IBUS_Pause ++IBUS_Scroll_Lock ++IBUS_Sys_Req ++IBUS_Escape ++IBUS_Delete ++IBUS_Multi_key ++IBUS_Codeinput ++IBUS_SingleCandidate ++IBUS_MultipleCandidate ++IBUS_PreviousCandidate ++IBUS_Kanji ++IBUS_Muhenkan ++IBUS_Henkan_Mode ++IBUS_Henkan ++IBUS_Romaji ++IBUS_Hiragana ++IBUS_Katakana ++IBUS_Hiragana_Katakana ++IBUS_Zenkaku ++IBUS_Hankaku ++IBUS_Zenkaku_Hankaku ++IBUS_Touroku ++IBUS_Massyo ++IBUS_Kana_Lock ++IBUS_Kana_Shift ++IBUS_Eisu_Shift ++IBUS_Eisu_toggle ++IBUS_Kanji_Bangou ++IBUS_Zen_Koho ++IBUS_Mae_Koho ++IBUS_Home ++IBUS_Left ++IBUS_Up ++IBUS_Right ++IBUS_Down ++IBUS_Prior ++IBUS_Page_Up ++IBUS_Next ++IBUS_Page_Down ++IBUS_End ++IBUS_Begin ++IBUS_Select ++IBUS_Print ++IBUS_Execute ++IBUS_Insert ++IBUS_Undo ++IBUS_Redo ++IBUS_Menu ++IBUS_Find ++IBUS_Cancel ++IBUS_Help ++IBUS_Break ++IBUS_Mode_switch ++IBUS_script_switch ++IBUS_Num_Lock ++IBUS_KP_Space ++IBUS_KP_Tab ++IBUS_KP_Enter ++IBUS_KP_F1 ++IBUS_KP_F2 ++IBUS_KP_F3 ++IBUS_KP_F4 ++IBUS_KP_Home ++IBUS_KP_Left ++IBUS_KP_Up ++IBUS_KP_Right ++IBUS_KP_Down ++IBUS_KP_Prior ++IBUS_KP_Page_Up ++IBUS_KP_Next ++IBUS_KP_Page_Down ++IBUS_KP_End ++IBUS_KP_Begin ++IBUS_KP_Insert ++IBUS_KP_Delete ++IBUS_KP_Equal ++IBUS_KP_Multiply ++IBUS_KP_Add ++IBUS_KP_Separator ++IBUS_KP_Subtract ++IBUS_KP_Decimal ++IBUS_KP_Divide ++IBUS_KP_0 ++IBUS_KP_1 ++IBUS_KP_2 ++IBUS_KP_3 ++IBUS_KP_4 ++IBUS_KP_5 ++IBUS_KP_6 ++IBUS_KP_7 ++IBUS_KP_8 ++IBUS_KP_9 ++IBUS_F1 ++IBUS_F2 ++IBUS_F3 ++IBUS_F4 ++IBUS_F5 ++IBUS_F6 ++IBUS_F7 ++IBUS_F8 ++IBUS_F9 ++IBUS_F10 ++IBUS_F11 ++IBUS_L1 ++IBUS_F12 ++IBUS_L2 ++IBUS_F13 ++IBUS_L3 ++IBUS_F14 ++IBUS_L4 ++IBUS_F15 ++IBUS_L5 ++IBUS_F16 ++IBUS_L6 ++IBUS_F17 ++IBUS_L7 ++IBUS_F18 ++IBUS_L8 ++IBUS_F19 ++IBUS_L9 ++IBUS_F20 ++IBUS_L10 ++IBUS_F21 ++IBUS_R1 ++IBUS_F22 ++IBUS_R2 ++IBUS_F23 ++IBUS_R3 ++IBUS_F24 ++IBUS_R4 ++IBUS_F25 ++IBUS_R5 ++IBUS_F26 ++IBUS_R6 ++IBUS_F27 ++IBUS_R7 ++IBUS_F28 ++IBUS_R8 ++IBUS_F29 ++IBUS_R9 ++IBUS_F30 ++IBUS_R10 ++IBUS_F31 ++IBUS_R11 ++IBUS_F32 ++IBUS_R12 ++IBUS_F33 ++IBUS_R13 ++IBUS_F34 ++IBUS_R14 ++IBUS_F35 ++IBUS_R15 ++IBUS_Shift_L ++IBUS_Shift_R ++IBUS_Control_L ++IBUS_Control_R ++IBUS_Caps_Lock ++IBUS_Shift_Lock ++IBUS_Meta_L ++IBUS_Meta_R ++IBUS_Alt_L ++IBUS_Alt_R ++IBUS_Super_L ++IBUS_Super_R ++IBUS_Hyper_L ++IBUS_Hyper_R ++IBUS_ISO_Lock ++IBUS_ISO_Level2_Latch ++IBUS_ISO_Level3_Shift ++IBUS_ISO_Level3_Latch ++IBUS_ISO_Level3_Lock ++IBUS_ISO_Level5_Shift ++IBUS_ISO_Level5_Latch ++IBUS_ISO_Level5_Lock ++IBUS_ISO_Group_Shift ++IBUS_ISO_Group_Latch ++IBUS_ISO_Group_Lock ++IBUS_ISO_Next_Group ++IBUS_ISO_Next_Group_Lock ++IBUS_ISO_Prev_Group ++IBUS_ISO_Prev_Group_Lock ++IBUS_ISO_First_Group ++IBUS_ISO_First_Group_Lock ++IBUS_ISO_Last_Group ++IBUS_ISO_Last_Group_Lock ++IBUS_ISO_Left_Tab ++IBUS_ISO_Move_Line_Up ++IBUS_ISO_Move_Line_Down ++IBUS_ISO_Partial_Line_Up ++IBUS_ISO_Partial_Line_Down ++IBUS_ISO_Partial_Space_Left ++IBUS_ISO_Partial_Space_Right ++IBUS_ISO_Set_Margin_Left ++IBUS_ISO_Set_Margin_Right ++IBUS_ISO_Release_Margin_Left ++IBUS_ISO_Release_Margin_Right ++IBUS_ISO_Release_Both_Margins ++IBUS_ISO_Fast_Cursor_Left ++IBUS_ISO_Fast_Cursor_Right ++IBUS_ISO_Fast_Cursor_Up ++IBUS_ISO_Fast_Cursor_Down ++IBUS_ISO_Continuous_Underline ++IBUS_ISO_Discontinuous_Underline ++IBUS_ISO_Emphasize ++IBUS_ISO_Center_Object ++IBUS_ISO_Enter ++IBUS_dead_grave ++IBUS_dead_acute ++IBUS_dead_circumflex ++IBUS_dead_tilde ++IBUS_dead_perispomeni ++IBUS_dead_macron ++IBUS_dead_breve ++IBUS_dead_abovedot ++IBUS_dead_diaeresis ++IBUS_dead_abovering ++IBUS_dead_doubleacute ++IBUS_dead_caron ++IBUS_dead_cedilla ++IBUS_dead_ogonek ++IBUS_dead_iota ++IBUS_dead_voiced_sound ++IBUS_dead_semivoiced_sound ++IBUS_dead_belowdot ++IBUS_dead_hook ++IBUS_dead_horn ++IBUS_dead_stroke ++IBUS_dead_abovecomma ++IBUS_dead_psili ++IBUS_dead_abovereversedcomma ++IBUS_dead_dasia ++IBUS_dead_belowring ++IBUS_dead_belowmacron ++IBUS_dead_belowcircumflex ++IBUS_dead_belowtilde ++IBUS_dead_belowbreve ++IBUS_dead_belowdiaeresis ++IBUS_First_Virtual_Screen ++IBUS_Prev_Virtual_Screen ++IBUS_Next_Virtual_Screen ++IBUS_Last_Virtual_Screen ++IBUS_Terminate_Server ++IBUS_AccessX_Enable ++IBUS_AccessX_Feedback_Enable ++IBUS_RepeatKeys_Enable ++IBUS_SlowKeys_Enable ++IBUS_BounceKeys_Enable ++IBUS_StickyKeys_Enable ++IBUS_MouseKeys_Enable ++IBUS_MouseKeys_Accel_Enable ++IBUS_Overlay1_Enable ++IBUS_Overlay2_Enable ++IBUS_AudibleBell_Enable ++IBUS_Pointer_Left ++IBUS_Pointer_Right ++IBUS_Pointer_Up ++IBUS_Pointer_Down ++IBUS_Pointer_UpLeft ++IBUS_Pointer_UpRight ++IBUS_Pointer_DownLeft ++IBUS_Pointer_DownRight ++IBUS_Pointer_Button_Dflt ++IBUS_Pointer_Button1 ++IBUS_Pointer_Button2 ++IBUS_Pointer_Button3 ++IBUS_Pointer_Button4 ++IBUS_Pointer_Button5 ++IBUS_Pointer_DblClick_Dflt ++IBUS_Pointer_DblClick1 ++IBUS_Pointer_DblClick2 ++IBUS_Pointer_DblClick3 ++IBUS_Pointer_DblClick4 ++IBUS_Pointer_DblClick5 ++IBUS_Pointer_Drag_Dflt ++IBUS_Pointer_Drag1 ++IBUS_Pointer_Drag2 ++IBUS_Pointer_Drag3 ++IBUS_Pointer_Drag4 ++IBUS_Pointer_Drag5 ++IBUS_Pointer_EnableKeys ++IBUS_Pointer_Accelerate ++IBUS_Pointer_DfltBtnNext ++IBUS_Pointer_DfltBtnPrev ++IBUS_3270_Duplicate ++IBUS_3270_FieldMark ++IBUS_3270_Right2 ++IBUS_3270_Left2 ++IBUS_3270_BackTab ++IBUS_3270_EraseEOF ++IBUS_3270_EraseInput ++IBUS_3270_Reset ++IBUS_3270_Quit ++IBUS_3270_PA1 ++IBUS_3270_PA2 ++IBUS_3270_PA3 ++IBUS_3270_Test ++IBUS_3270_Attn ++IBUS_3270_CursorBlink ++IBUS_3270_AltCursor ++IBUS_3270_KeyClick ++IBUS_3270_Jump ++IBUS_3270_Ident ++IBUS_3270_Rule ++IBUS_3270_Copy ++IBUS_3270_Play ++IBUS_3270_Setup ++IBUS_3270_Record ++IBUS_3270_ChangeScreen ++IBUS_3270_DeleteWord ++IBUS_3270_ExSelect ++IBUS_3270_CursorSelect ++IBUS_3270_PrintScreen ++IBUS_3270_Enter ++IBUS_space ++IBUS_exclam ++IBUS_quotedbl ++IBUS_numbersign ++IBUS_dollar ++IBUS_percent ++IBUS_ampersand ++IBUS_apostrophe ++IBUS_quoteright ++IBUS_parenleft ++IBUS_parenright ++IBUS_asterisk ++IBUS_plus ++IBUS_comma ++IBUS_minus ++IBUS_period ++IBUS_slash ++IBUS_0 ++IBUS_1 ++IBUS_2 ++IBUS_3 ++IBUS_4 ++IBUS_5 ++IBUS_6 ++IBUS_7 ++IBUS_8 ++IBUS_9 ++IBUS_colon ++IBUS_semicolon ++IBUS_less ++IBUS_equal ++IBUS_greater ++IBUS_question ++IBUS_at ++IBUS_A ++IBUS_B ++IBUS_C ++IBUS_D ++IBUS_E ++IBUS_F ++IBUS_G ++IBUS_H ++IBUS_I ++IBUS_J ++IBUS_K ++IBUS_L ++IBUS_M ++IBUS_N ++IBUS_O ++IBUS_P ++IBUS_Q ++IBUS_R ++IBUS_S ++IBUS_T ++IBUS_U ++IBUS_V ++IBUS_W ++IBUS_X ++IBUS_Y ++IBUS_Z ++IBUS_bracketleft ++IBUS_backslash ++IBUS_bracketright ++IBUS_asciicircum ++IBUS_underscore ++IBUS_grave ++IBUS_quoteleft ++IBUS_a ++IBUS_b ++IBUS_c ++IBUS_d ++IBUS_e ++IBUS_f ++IBUS_g ++IBUS_h ++IBUS_i ++IBUS_j ++IBUS_k ++IBUS_l ++IBUS_m ++IBUS_n ++IBUS_o ++IBUS_p ++IBUS_q ++IBUS_r ++IBUS_s ++IBUS_t ++IBUS_u ++IBUS_v ++IBUS_w ++IBUS_x ++IBUS_y ++IBUS_z ++IBUS_braceleft ++IBUS_bar ++IBUS_braceright ++IBUS_asciitilde ++IBUS_nobreakspace ++IBUS_exclamdown ++IBUS_cent ++IBUS_sterling ++IBUS_currency ++IBUS_yen ++IBUS_brokenbar ++IBUS_section ++IBUS_diaeresis ++IBUS_copyright ++IBUS_ordfeminine ++IBUS_guillemotleft ++IBUS_notsign ++IBUS_hyphen ++IBUS_registered ++IBUS_macron ++IBUS_degree ++IBUS_plusminus ++IBUS_twosuperior ++IBUS_threesuperior ++IBUS_acute ++IBUS_mu ++IBUS_paragraph ++IBUS_periodcentered ++IBUS_cedilla ++IBUS_onesuperior ++IBUS_masculine ++IBUS_guillemotright ++IBUS_onequarter ++IBUS_onehalf ++IBUS_threequarters ++IBUS_questiondown ++IBUS_Agrave ++IBUS_Aacute ++IBUS_Acircumflex ++IBUS_Atilde ++IBUS_Adiaeresis ++IBUS_Aring ++IBUS_AE ++IBUS_Ccedilla ++IBUS_Egrave ++IBUS_Eacute ++IBUS_Ecircumflex ++IBUS_Ediaeresis ++IBUS_Igrave ++IBUS_Iacute ++IBUS_Icircumflex ++IBUS_Idiaeresis ++IBUS_ETH ++IBUS_Eth ++IBUS_Ntilde ++IBUS_Ograve ++IBUS_Oacute ++IBUS_Ocircumflex ++IBUS_Otilde ++IBUS_Odiaeresis ++IBUS_multiply ++IBUS_Oslash ++IBUS_Ooblique ++IBUS_Ugrave ++IBUS_Uacute ++IBUS_Ucircumflex ++IBUS_Udiaeresis ++IBUS_Yacute ++IBUS_THORN ++IBUS_Thorn ++IBUS_ssharp ++IBUS_agrave ++IBUS_aacute ++IBUS_acircumflex ++IBUS_atilde ++IBUS_adiaeresis ++IBUS_aring ++IBUS_ae ++IBUS_ccedilla ++IBUS_egrave ++IBUS_eacute ++IBUS_ecircumflex ++IBUS_ediaeresis ++IBUS_igrave ++IBUS_iacute ++IBUS_icircumflex ++IBUS_idiaeresis ++IBUS_eth ++IBUS_ntilde ++IBUS_ograve ++IBUS_oacute ++IBUS_ocircumflex ++IBUS_otilde ++IBUS_odiaeresis ++IBUS_division ++IBUS_oslash ++IBUS_ooblique ++IBUS_ugrave ++IBUS_uacute ++IBUS_ucircumflex ++IBUS_udiaeresis ++IBUS_yacute ++IBUS_thorn ++IBUS_ydiaeresis ++IBUS_Aogonek ++IBUS_breve ++IBUS_Lstroke ++IBUS_Lcaron ++IBUS_Sacute ++IBUS_Scaron ++IBUS_Scedilla ++IBUS_Tcaron ++IBUS_Zacute ++IBUS_Zcaron ++IBUS_Zabovedot ++IBUS_aogonek ++IBUS_ogonek ++IBUS_lstroke ++IBUS_lcaron ++IBUS_sacute ++IBUS_caron ++IBUS_scaron ++IBUS_scedilla ++IBUS_tcaron ++IBUS_zacute ++IBUS_doubleacute ++IBUS_zcaron ++IBUS_zabovedot ++IBUS_Racute ++IBUS_Abreve ++IBUS_Lacute ++IBUS_Cacute ++IBUS_Ccaron ++IBUS_Eogonek ++IBUS_Ecaron ++IBUS_Dcaron ++IBUS_Dstroke ++IBUS_Nacute ++IBUS_Ncaron ++IBUS_Odoubleacute ++IBUS_Rcaron ++IBUS_Uring ++IBUS_Udoubleacute ++IBUS_Tcedilla ++IBUS_racute ++IBUS_abreve ++IBUS_lacute ++IBUS_cacute ++IBUS_ccaron ++IBUS_eogonek ++IBUS_ecaron ++IBUS_dcaron ++IBUS_dstroke ++IBUS_nacute ++IBUS_ncaron ++IBUS_odoubleacute ++IBUS_udoubleacute ++IBUS_rcaron ++IBUS_uring ++IBUS_tcedilla ++IBUS_abovedot ++IBUS_Hstroke ++IBUS_Hcircumflex ++IBUS_Iabovedot ++IBUS_Gbreve ++IBUS_Jcircumflex ++IBUS_hstroke ++IBUS_hcircumflex ++IBUS_idotless ++IBUS_gbreve ++IBUS_jcircumflex ++IBUS_Cabovedot ++IBUS_Ccircumflex ++IBUS_Gabovedot ++IBUS_Gcircumflex ++IBUS_Ubreve ++IBUS_Scircumflex ++IBUS_cabovedot ++IBUS_ccircumflex ++IBUS_gabovedot ++IBUS_gcircumflex ++IBUS_ubreve ++IBUS_scircumflex ++IBUS_kra ++IBUS_kappa ++IBUS_Rcedilla ++IBUS_Itilde ++IBUS_Lcedilla ++IBUS_Emacron ++IBUS_Gcedilla ++IBUS_Tslash ++IBUS_rcedilla ++IBUS_itilde ++IBUS_lcedilla ++IBUS_emacron ++IBUS_gcedilla ++IBUS_tslash ++IBUS_ENG ++IBUS_eng ++IBUS_Amacron ++IBUS_Iogonek ++IBUS_Eabovedot ++IBUS_Imacron ++IBUS_Ncedilla ++IBUS_Omacron ++IBUS_Kcedilla ++IBUS_Uogonek ++IBUS_Utilde ++IBUS_Umacron ++IBUS_amacron ++IBUS_iogonek ++IBUS_eabovedot ++IBUS_imacron ++IBUS_ncedilla ++IBUS_omacron ++IBUS_kcedilla ++IBUS_uogonek ++IBUS_utilde ++IBUS_umacron ++IBUS_Babovedot ++IBUS_babovedot ++IBUS_Dabovedot ++IBUS_Wgrave ++IBUS_Wacute ++IBUS_dabovedot ++IBUS_Ygrave ++IBUS_Fabovedot ++IBUS_fabovedot ++IBUS_Mabovedot ++IBUS_mabovedot ++IBUS_Pabovedot ++IBUS_wgrave ++IBUS_pabovedot ++IBUS_wacute ++IBUS_Sabovedot ++IBUS_ygrave ++IBUS_Wdiaeresis ++IBUS_wdiaeresis ++IBUS_sabovedot ++IBUS_Wcircumflex ++IBUS_Tabovedot ++IBUS_Ycircumflex ++IBUS_wcircumflex ++IBUS_tabovedot ++IBUS_ycircumflex ++IBUS_OE ++IBUS_oe ++IBUS_Ydiaeresis ++IBUS_overline ++IBUS_kana_fullstop ++IBUS_kana_openingbracket ++IBUS_kana_closingbracket ++IBUS_kana_comma ++IBUS_kana_conjunctive ++IBUS_kana_middledot ++IBUS_kana_WO ++IBUS_kana_a ++IBUS_kana_i ++IBUS_kana_u ++IBUS_kana_e ++IBUS_kana_o ++IBUS_kana_ya ++IBUS_kana_yu ++IBUS_kana_yo ++IBUS_kana_tsu ++IBUS_kana_tu ++IBUS_prolongedsound ++IBUS_kana_A ++IBUS_kana_I ++IBUS_kana_U ++IBUS_kana_E ++IBUS_kana_O ++IBUS_kana_KA ++IBUS_kana_KI ++IBUS_kana_KU ++IBUS_kana_KE ++IBUS_kana_KO ++IBUS_kana_SA ++IBUS_kana_SHI ++IBUS_kana_SU ++IBUS_kana_SE ++IBUS_kana_SO ++IBUS_kana_TA ++IBUS_kana_CHI ++IBUS_kana_TI ++IBUS_kana_TSU ++IBUS_kana_TU ++IBUS_kana_TE ++IBUS_kana_TO ++IBUS_kana_NA ++IBUS_kana_NI ++IBUS_kana_NU ++IBUS_kana_NE ++IBUS_kana_NO ++IBUS_kana_HA ++IBUS_kana_HI ++IBUS_kana_FU ++IBUS_kana_HU ++IBUS_kana_HE ++IBUS_kana_HO ++IBUS_kana_MA ++IBUS_kana_MI ++IBUS_kana_MU ++IBUS_kana_ME ++IBUS_kana_MO ++IBUS_kana_YA ++IBUS_kana_YU ++IBUS_kana_YO ++IBUS_kana_RA ++IBUS_kana_RI ++IBUS_kana_RU ++IBUS_kana_RE ++IBUS_kana_RO ++IBUS_kana_WA ++IBUS_kana_N ++IBUS_voicedsound ++IBUS_semivoicedsound ++IBUS_kana_switch ++IBUS_Farsi_0 ++IBUS_Farsi_1 ++IBUS_Farsi_2 ++IBUS_Farsi_3 ++IBUS_Farsi_4 ++IBUS_Farsi_5 ++IBUS_Farsi_6 ++IBUS_Farsi_7 ++IBUS_Farsi_8 ++IBUS_Farsi_9 ++IBUS_Arabic_percent ++IBUS_Arabic_superscript_alef ++IBUS_Arabic_tteh ++IBUS_Arabic_peh ++IBUS_Arabic_tcheh ++IBUS_Arabic_ddal ++IBUS_Arabic_rreh ++IBUS_Arabic_comma ++IBUS_Arabic_fullstop ++IBUS_Arabic_0 ++IBUS_Arabic_1 ++IBUS_Arabic_2 ++IBUS_Arabic_3 ++IBUS_Arabic_4 ++IBUS_Arabic_5 ++IBUS_Arabic_6 ++IBUS_Arabic_7 ++IBUS_Arabic_8 ++IBUS_Arabic_9 ++IBUS_Arabic_semicolon ++IBUS_Arabic_question_mark ++IBUS_Arabic_hamza ++IBUS_Arabic_maddaonalef ++IBUS_Arabic_hamzaonalef ++IBUS_Arabic_hamzaonwaw ++IBUS_Arabic_hamzaunderalef ++IBUS_Arabic_hamzaonyeh ++IBUS_Arabic_alef ++IBUS_Arabic_beh ++IBUS_Arabic_tehmarbuta ++IBUS_Arabic_teh ++IBUS_Arabic_theh ++IBUS_Arabic_jeem ++IBUS_Arabic_hah ++IBUS_Arabic_khah ++IBUS_Arabic_dal ++IBUS_Arabic_thal ++IBUS_Arabic_ra ++IBUS_Arabic_zain ++IBUS_Arabic_seen ++IBUS_Arabic_sheen ++IBUS_Arabic_sad ++IBUS_Arabic_dad ++IBUS_Arabic_tah ++IBUS_Arabic_zah ++IBUS_Arabic_ain ++IBUS_Arabic_ghain ++IBUS_Arabic_tatweel ++IBUS_Arabic_feh ++IBUS_Arabic_qaf ++IBUS_Arabic_kaf ++IBUS_Arabic_lam ++IBUS_Arabic_meem ++IBUS_Arabic_noon ++IBUS_Arabic_ha ++IBUS_Arabic_heh ++IBUS_Arabic_waw ++IBUS_Arabic_alefmaksura ++IBUS_Arabic_yeh ++IBUS_Arabic_fathatan ++IBUS_Arabic_dammatan ++IBUS_Arabic_kasratan ++IBUS_Arabic_fatha ++IBUS_Arabic_damma ++IBUS_Arabic_kasra ++IBUS_Arabic_shadda ++IBUS_Arabic_sukun ++IBUS_Arabic_madda_above ++IBUS_Arabic_hamza_above ++IBUS_Arabic_hamza_below ++IBUS_Arabic_jeh ++IBUS_Arabic_veh ++IBUS_Arabic_keheh ++IBUS_Arabic_gaf ++IBUS_Arabic_noon_ghunna ++IBUS_Arabic_heh_doachashmee ++IBUS_Farsi_yeh ++IBUS_Arabic_farsi_yeh ++IBUS_Arabic_yeh_baree ++IBUS_Arabic_heh_goal ++IBUS_Arabic_switch ++IBUS_Cyrillic_GHE_bar ++IBUS_Cyrillic_ghe_bar ++IBUS_Cyrillic_ZHE_descender ++IBUS_Cyrillic_zhe_descender ++IBUS_Cyrillic_KA_descender ++IBUS_Cyrillic_ka_descender ++IBUS_Cyrillic_KA_vertstroke ++IBUS_Cyrillic_ka_vertstroke ++IBUS_Cyrillic_EN_descender ++IBUS_Cyrillic_en_descender ++IBUS_Cyrillic_U_straight ++IBUS_Cyrillic_u_straight ++IBUS_Cyrillic_U_straight_bar ++IBUS_Cyrillic_u_straight_bar ++IBUS_Cyrillic_HA_descender ++IBUS_Cyrillic_ha_descender ++IBUS_Cyrillic_CHE_descender ++IBUS_Cyrillic_che_descender ++IBUS_Cyrillic_CHE_vertstroke ++IBUS_Cyrillic_che_vertstroke ++IBUS_Cyrillic_SHHA ++IBUS_Cyrillic_shha ++IBUS_Cyrillic_SCHWA ++IBUS_Cyrillic_schwa ++IBUS_Cyrillic_I_macron ++IBUS_Cyrillic_i_macron ++IBUS_Cyrillic_O_bar ++IBUS_Cyrillic_o_bar ++IBUS_Cyrillic_U_macron ++IBUS_Cyrillic_u_macron ++IBUS_Serbian_dje ++IBUS_Macedonia_gje ++IBUS_Cyrillic_io ++IBUS_Ukrainian_ie ++IBUS_Ukranian_je ++IBUS_Macedonia_dse ++IBUS_Ukrainian_i ++IBUS_Ukranian_i ++IBUS_Ukrainian_yi ++IBUS_Ukranian_yi ++IBUS_Cyrillic_je ++IBUS_Serbian_je ++IBUS_Cyrillic_lje ++IBUS_Serbian_lje ++IBUS_Cyrillic_nje ++IBUS_Serbian_nje ++IBUS_Serbian_tshe ++IBUS_Macedonia_kje ++IBUS_Ukrainian_ghe_with_upturn ++IBUS_Byelorussian_shortu ++IBUS_Cyrillic_dzhe ++IBUS_Serbian_dze ++IBUS_numerosign ++IBUS_Serbian_DJE ++IBUS_Macedonia_GJE ++IBUS_Cyrillic_IO ++IBUS_Ukrainian_IE ++IBUS_Ukranian_JE ++IBUS_Macedonia_DSE ++IBUS_Ukrainian_I ++IBUS_Ukranian_I ++IBUS_Ukrainian_YI ++IBUS_Ukranian_YI ++IBUS_Cyrillic_JE ++IBUS_Serbian_JE ++IBUS_Cyrillic_LJE ++IBUS_Serbian_LJE ++IBUS_Cyrillic_NJE ++IBUS_Serbian_NJE ++IBUS_Serbian_TSHE ++IBUS_Macedonia_KJE ++IBUS_Ukrainian_GHE_WITH_UPTURN ++IBUS_Byelorussian_SHORTU ++IBUS_Cyrillic_DZHE ++IBUS_Serbian_DZE ++IBUS_Cyrillic_yu ++IBUS_Cyrillic_a ++IBUS_Cyrillic_be ++IBUS_Cyrillic_tse ++IBUS_Cyrillic_de ++IBUS_Cyrillic_ie ++IBUS_Cyrillic_ef ++IBUS_Cyrillic_ghe ++IBUS_Cyrillic_ha ++IBUS_Cyrillic_i ++IBUS_Cyrillic_shorti ++IBUS_Cyrillic_ka ++IBUS_Cyrillic_el ++IBUS_Cyrillic_em ++IBUS_Cyrillic_en ++IBUS_Cyrillic_o ++IBUS_Cyrillic_pe ++IBUS_Cyrillic_ya ++IBUS_Cyrillic_er ++IBUS_Cyrillic_es ++IBUS_Cyrillic_te ++IBUS_Cyrillic_u ++IBUS_Cyrillic_zhe ++IBUS_Cyrillic_ve ++IBUS_Cyrillic_softsign ++IBUS_Cyrillic_yeru ++IBUS_Cyrillic_ze ++IBUS_Cyrillic_sha ++IBUS_Cyrillic_e ++IBUS_Cyrillic_shcha ++IBUS_Cyrillic_che ++IBUS_Cyrillic_hardsign ++IBUS_Cyrillic_YU ++IBUS_Cyrillic_A ++IBUS_Cyrillic_BE ++IBUS_Cyrillic_TSE ++IBUS_Cyrillic_DE ++IBUS_Cyrillic_IE ++IBUS_Cyrillic_EF ++IBUS_Cyrillic_GHE ++IBUS_Cyrillic_HA ++IBUS_Cyrillic_I ++IBUS_Cyrillic_SHORTI ++IBUS_Cyrillic_KA ++IBUS_Cyrillic_EL ++IBUS_Cyrillic_EM ++IBUS_Cyrillic_EN ++IBUS_Cyrillic_O ++IBUS_Cyrillic_PE ++IBUS_Cyrillic_YA ++IBUS_Cyrillic_ER ++IBUS_Cyrillic_ES ++IBUS_Cyrillic_TE ++IBUS_Cyrillic_U ++IBUS_Cyrillic_ZHE ++IBUS_Cyrillic_VE ++IBUS_Cyrillic_SOFTSIGN ++IBUS_Cyrillic_YERU ++IBUS_Cyrillic_ZE ++IBUS_Cyrillic_SHA ++IBUS_Cyrillic_E ++IBUS_Cyrillic_SHCHA ++IBUS_Cyrillic_CHE ++IBUS_Cyrillic_HARDSIGN ++IBUS_Greek_ALPHAaccent ++IBUS_Greek_EPSILONaccent ++IBUS_Greek_ETAaccent ++IBUS_Greek_IOTAaccent ++IBUS_Greek_IOTAdieresis ++IBUS_Greek_IOTAdiaeresis ++IBUS_Greek_OMICRONaccent ++IBUS_Greek_UPSILONaccent ++IBUS_Greek_UPSILONdieresis ++IBUS_Greek_OMEGAaccent ++IBUS_Greek_accentdieresis ++IBUS_Greek_horizbar ++IBUS_Greek_alphaaccent ++IBUS_Greek_epsilonaccent ++IBUS_Greek_etaaccent ++IBUS_Greek_iotaaccent ++IBUS_Greek_iotadieresis ++IBUS_Greek_iotaaccentdieresis ++IBUS_Greek_omicronaccent ++IBUS_Greek_upsilonaccent ++IBUS_Greek_upsilondieresis ++IBUS_Greek_upsilonaccentdieresis ++IBUS_Greek_omegaaccent ++IBUS_Greek_ALPHA ++IBUS_Greek_BETA ++IBUS_Greek_GAMMA ++IBUS_Greek_DELTA ++IBUS_Greek_EPSILON ++IBUS_Greek_ZETA ++IBUS_Greek_ETA ++IBUS_Greek_THETA ++IBUS_Greek_IOTA ++IBUS_Greek_KAPPA ++IBUS_Greek_LAMDA ++IBUS_Greek_LAMBDA ++IBUS_Greek_MU ++IBUS_Greek_NU ++IBUS_Greek_XI ++IBUS_Greek_OMICRON ++IBUS_Greek_PI ++IBUS_Greek_RHO ++IBUS_Greek_SIGMA ++IBUS_Greek_TAU ++IBUS_Greek_UPSILON ++IBUS_Greek_PHI ++IBUS_Greek_CHI ++IBUS_Greek_PSI ++IBUS_Greek_OMEGA ++IBUS_Greek_alpha ++IBUS_Greek_beta ++IBUS_Greek_gamma ++IBUS_Greek_delta ++IBUS_Greek_epsilon ++IBUS_Greek_zeta ++IBUS_Greek_eta ++IBUS_Greek_theta ++IBUS_Greek_iota ++IBUS_Greek_kappa ++IBUS_Greek_lamda ++IBUS_Greek_lambda ++IBUS_Greek_mu ++IBUS_Greek_nu ++IBUS_Greek_xi ++IBUS_Greek_omicron ++IBUS_Greek_pi ++IBUS_Greek_rho ++IBUS_Greek_sigma ++IBUS_Greek_finalsmallsigma ++IBUS_Greek_tau ++IBUS_Greek_upsilon ++IBUS_Greek_phi ++IBUS_Greek_chi ++IBUS_Greek_psi ++IBUS_Greek_omega ++IBUS_Greek_switch ++IBUS_leftradical ++IBUS_topleftradical ++IBUS_horizconnector ++IBUS_topintegral ++IBUS_botintegral ++IBUS_vertconnector ++IBUS_topleftsqbracket ++IBUS_botleftsqbracket ++IBUS_toprightsqbracket ++IBUS_botrightsqbracket ++IBUS_topleftparens ++IBUS_botleftparens ++IBUS_toprightparens ++IBUS_botrightparens ++IBUS_leftmiddlecurlybrace ++IBUS_rightmiddlecurlybrace ++IBUS_topleftsummation ++IBUS_botleftsummation ++IBUS_topvertsummationconnector ++IBUS_botvertsummationconnector ++IBUS_toprightsummation ++IBUS_botrightsummation ++IBUS_rightmiddlesummation ++IBUS_lessthanequal ++IBUS_notequal ++IBUS_greaterthanequal ++IBUS_integral ++IBUS_therefore ++IBUS_variation ++IBUS_infinity ++IBUS_nabla ++IBUS_approximate ++IBUS_similarequal ++IBUS_ifonlyif ++IBUS_implies ++IBUS_identical ++IBUS_radical ++IBUS_includedin ++IBUS_includes ++IBUS_intersection ++IBUS_union ++IBUS_logicaland ++IBUS_logicalor ++IBUS_partialderivative ++IBUS_function ++IBUS_leftarrow ++IBUS_uparrow ++IBUS_rightarrow ++IBUS_downarrow ++IBUS_blank ++IBUS_soliddiamond ++IBUS_checkerboard ++IBUS_ht ++IBUS_ff ++IBUS_cr ++IBUS_lf ++IBUS_nl ++IBUS_vt ++IBUS_lowrightcorner ++IBUS_uprightcorner ++IBUS_upleftcorner ++IBUS_lowleftcorner ++IBUS_crossinglines ++IBUS_horizlinescan1 ++IBUS_horizlinescan3 ++IBUS_horizlinescan5 ++IBUS_horizlinescan7 ++IBUS_horizlinescan9 ++IBUS_leftt ++IBUS_rightt ++IBUS_bott ++IBUS_topt ++IBUS_vertbar ++IBUS_emspace ++IBUS_enspace ++IBUS_em3space ++IBUS_em4space ++IBUS_digitspace ++IBUS_punctspace ++IBUS_thinspace ++IBUS_hairspace ++IBUS_emdash ++IBUS_endash ++IBUS_signifblank ++IBUS_ellipsis ++IBUS_doubbaselinedot ++IBUS_onethird ++IBUS_twothirds ++IBUS_onefifth ++IBUS_twofifths ++IBUS_threefifths ++IBUS_fourfifths ++IBUS_onesixth ++IBUS_fivesixths ++IBUS_careof ++IBUS_figdash ++IBUS_leftanglebracket ++IBUS_decimalpoint ++IBUS_rightanglebracket ++IBUS_marker ++IBUS_oneeighth ++IBUS_threeeighths ++IBUS_fiveeighths ++IBUS_seveneighths ++IBUS_trademark ++IBUS_signaturemark ++IBUS_trademarkincircle ++IBUS_leftopentriangle ++IBUS_rightopentriangle ++IBUS_emopencircle ++IBUS_emopenrectangle ++IBUS_leftsinglequotemark ++IBUS_rightsinglequotemark ++IBUS_leftdoublequotemark ++IBUS_rightdoublequotemark ++IBUS_prescription ++IBUS_minutes ++IBUS_seconds ++IBUS_latincross ++IBUS_hexagram ++IBUS_filledrectbullet ++IBUS_filledlefttribullet ++IBUS_filledrighttribullet ++IBUS_emfilledcircle ++IBUS_emfilledrect ++IBUS_enopencircbullet ++IBUS_enopensquarebullet ++IBUS_openrectbullet ++IBUS_opentribulletup ++IBUS_opentribulletdown ++IBUS_openstar ++IBUS_enfilledcircbullet ++IBUS_enfilledsqbullet ++IBUS_filledtribulletup ++IBUS_filledtribulletdown ++IBUS_leftpointer ++IBUS_rightpointer ++IBUS_club ++IBUS_diamond ++IBUS_heart ++IBUS_maltesecross ++IBUS_dagger ++IBUS_doubledagger ++IBUS_checkmark ++IBUS_ballotcross ++IBUS_musicalsharp ++IBUS_musicalflat ++IBUS_malesymbol ++IBUS_femalesymbol ++IBUS_telephone ++IBUS_telephonerecorder ++IBUS_phonographcopyright ++IBUS_caret ++IBUS_singlelowquotemark ++IBUS_doublelowquotemark ++IBUS_cursor ++IBUS_leftcaret ++IBUS_rightcaret ++IBUS_downcaret ++IBUS_upcaret ++IBUS_overbar ++IBUS_downtack ++IBUS_upshoe ++IBUS_downstile ++IBUS_underbar ++IBUS_jot ++IBUS_quad ++IBUS_uptack ++IBUS_circle ++IBUS_upstile ++IBUS_downshoe ++IBUS_rightshoe ++IBUS_leftshoe ++IBUS_lefttack ++IBUS_righttack ++IBUS_hebrew_doublelowline ++IBUS_hebrew_aleph ++IBUS_hebrew_bet ++IBUS_hebrew_beth ++IBUS_hebrew_gimel ++IBUS_hebrew_gimmel ++IBUS_hebrew_dalet ++IBUS_hebrew_daleth ++IBUS_hebrew_he ++IBUS_hebrew_waw ++IBUS_hebrew_zain ++IBUS_hebrew_zayin ++IBUS_hebrew_chet ++IBUS_hebrew_het ++IBUS_hebrew_tet ++IBUS_hebrew_teth ++IBUS_hebrew_yod ++IBUS_hebrew_finalkaph ++IBUS_hebrew_kaph ++IBUS_hebrew_lamed ++IBUS_hebrew_finalmem ++IBUS_hebrew_mem ++IBUS_hebrew_finalnun ++IBUS_hebrew_nun ++IBUS_hebrew_samech ++IBUS_hebrew_samekh ++IBUS_hebrew_ayin ++IBUS_hebrew_finalpe ++IBUS_hebrew_pe ++IBUS_hebrew_finalzade ++IBUS_hebrew_finalzadi ++IBUS_hebrew_zade ++IBUS_hebrew_zadi ++IBUS_hebrew_qoph ++IBUS_hebrew_kuf ++IBUS_hebrew_resh ++IBUS_hebrew_shin ++IBUS_hebrew_taw ++IBUS_hebrew_taf ++IBUS_Hebrew_switch ++IBUS_Thai_kokai ++IBUS_Thai_khokhai ++IBUS_Thai_khokhuat ++IBUS_Thai_khokhwai ++IBUS_Thai_khokhon ++IBUS_Thai_khorakhang ++IBUS_Thai_ngongu ++IBUS_Thai_chochan ++IBUS_Thai_choching ++IBUS_Thai_chochang ++IBUS_Thai_soso ++IBUS_Thai_chochoe ++IBUS_Thai_yoying ++IBUS_Thai_dochada ++IBUS_Thai_topatak ++IBUS_Thai_thothan ++IBUS_Thai_thonangmontho ++IBUS_Thai_thophuthao ++IBUS_Thai_nonen ++IBUS_Thai_dodek ++IBUS_Thai_totao ++IBUS_Thai_thothung ++IBUS_Thai_thothahan ++IBUS_Thai_thothong ++IBUS_Thai_nonu ++IBUS_Thai_bobaimai ++IBUS_Thai_popla ++IBUS_Thai_phophung ++IBUS_Thai_fofa ++IBUS_Thai_phophan ++IBUS_Thai_fofan ++IBUS_Thai_phosamphao ++IBUS_Thai_moma ++IBUS_Thai_yoyak ++IBUS_Thai_rorua ++IBUS_Thai_ru ++IBUS_Thai_loling ++IBUS_Thai_lu ++IBUS_Thai_wowaen ++IBUS_Thai_sosala ++IBUS_Thai_sorusi ++IBUS_Thai_sosua ++IBUS_Thai_hohip ++IBUS_Thai_lochula ++IBUS_Thai_oang ++IBUS_Thai_honokhuk ++IBUS_Thai_paiyannoi ++IBUS_Thai_saraa ++IBUS_Thai_maihanakat ++IBUS_Thai_saraaa ++IBUS_Thai_saraam ++IBUS_Thai_sarai ++IBUS_Thai_saraii ++IBUS_Thai_saraue ++IBUS_Thai_sarauee ++IBUS_Thai_sarau ++IBUS_Thai_sarauu ++IBUS_Thai_phinthu ++IBUS_Thai_maihanakat_maitho ++IBUS_Thai_baht ++IBUS_Thai_sarae ++IBUS_Thai_saraae ++IBUS_Thai_sarao ++IBUS_Thai_saraaimaimuan ++IBUS_Thai_saraaimaimalai ++IBUS_Thai_lakkhangyao ++IBUS_Thai_maiyamok ++IBUS_Thai_maitaikhu ++IBUS_Thai_maiek ++IBUS_Thai_maitho ++IBUS_Thai_maitri ++IBUS_Thai_maichattawa ++IBUS_Thai_thanthakhat ++IBUS_Thai_nikhahit ++IBUS_Thai_leksun ++IBUS_Thai_leknung ++IBUS_Thai_leksong ++IBUS_Thai_leksam ++IBUS_Thai_leksi ++IBUS_Thai_lekha ++IBUS_Thai_lekhok ++IBUS_Thai_lekchet ++IBUS_Thai_lekpaet ++IBUS_Thai_lekkao ++IBUS_Hangul ++IBUS_Hangul_Start ++IBUS_Hangul_End ++IBUS_Hangul_Hanja ++IBUS_Hangul_Jamo ++IBUS_Hangul_Romaja ++IBUS_Hangul_Codeinput ++IBUS_Hangul_Jeonja ++IBUS_Hangul_Banja ++IBUS_Hangul_PreHanja ++IBUS_Hangul_PostHanja ++IBUS_Hangul_SingleCandidate ++IBUS_Hangul_MultipleCandidate ++IBUS_Hangul_PreviousCandidate ++IBUS_Hangul_Special ++IBUS_Hangul_switch ++IBUS_Hangul_Kiyeog ++IBUS_Hangul_SsangKiyeog ++IBUS_Hangul_KiyeogSios ++IBUS_Hangul_Nieun ++IBUS_Hangul_NieunJieuj ++IBUS_Hangul_NieunHieuh ++IBUS_Hangul_Dikeud ++IBUS_Hangul_SsangDikeud ++IBUS_Hangul_Rieul ++IBUS_Hangul_RieulKiyeog ++IBUS_Hangul_RieulMieum ++IBUS_Hangul_RieulPieub ++IBUS_Hangul_RieulSios ++IBUS_Hangul_RieulTieut ++IBUS_Hangul_RieulPhieuf ++IBUS_Hangul_RieulHieuh ++IBUS_Hangul_Mieum ++IBUS_Hangul_Pieub ++IBUS_Hangul_SsangPieub ++IBUS_Hangul_PieubSios ++IBUS_Hangul_Sios ++IBUS_Hangul_SsangSios ++IBUS_Hangul_Ieung ++IBUS_Hangul_Jieuj ++IBUS_Hangul_SsangJieuj ++IBUS_Hangul_Cieuc ++IBUS_Hangul_Khieuq ++IBUS_Hangul_Tieut ++IBUS_Hangul_Phieuf ++IBUS_Hangul_Hieuh ++IBUS_Hangul_A ++IBUS_Hangul_AE ++IBUS_Hangul_YA ++IBUS_Hangul_YAE ++IBUS_Hangul_EO ++IBUS_Hangul_E ++IBUS_Hangul_YEO ++IBUS_Hangul_YE ++IBUS_Hangul_O ++IBUS_Hangul_WA ++IBUS_Hangul_WAE ++IBUS_Hangul_OE ++IBUS_Hangul_YO ++IBUS_Hangul_U ++IBUS_Hangul_WEO ++IBUS_Hangul_WE ++IBUS_Hangul_WI ++IBUS_Hangul_YU ++IBUS_Hangul_EU ++IBUS_Hangul_YI ++IBUS_Hangul_I ++IBUS_Hangul_J_Kiyeog ++IBUS_Hangul_J_SsangKiyeog ++IBUS_Hangul_J_KiyeogSios ++IBUS_Hangul_J_Nieun ++IBUS_Hangul_J_NieunJieuj ++IBUS_Hangul_J_NieunHieuh ++IBUS_Hangul_J_Dikeud ++IBUS_Hangul_J_Rieul ++IBUS_Hangul_J_RieulKiyeog ++IBUS_Hangul_J_RieulMieum ++IBUS_Hangul_J_RieulPieub ++IBUS_Hangul_J_RieulSios ++IBUS_Hangul_J_RieulTieut ++IBUS_Hangul_J_RieulPhieuf ++IBUS_Hangul_J_RieulHieuh ++IBUS_Hangul_J_Mieum ++IBUS_Hangul_J_Pieub ++IBUS_Hangul_J_PieubSios ++IBUS_Hangul_J_Sios ++IBUS_Hangul_J_SsangSios ++IBUS_Hangul_J_Ieung ++IBUS_Hangul_J_Jieuj ++IBUS_Hangul_J_Cieuc ++IBUS_Hangul_J_Khieuq ++IBUS_Hangul_J_Tieut ++IBUS_Hangul_J_Phieuf ++IBUS_Hangul_J_Hieuh ++IBUS_Hangul_RieulYeorinHieuh ++IBUS_Hangul_SunkyeongeumMieum ++IBUS_Hangul_SunkyeongeumPieub ++IBUS_Hangul_PanSios ++IBUS_Hangul_KkogjiDalrinIeung ++IBUS_Hangul_SunkyeongeumPhieuf ++IBUS_Hangul_YeorinHieuh ++IBUS_Hangul_AraeA ++IBUS_Hangul_AraeAE ++IBUS_Hangul_J_PanSios ++IBUS_Hangul_J_KkogjiDalrinIeung ++IBUS_Hangul_J_YeorinHieuh ++IBUS_Korean_Won ++IBUS_Armenian_ligature_ew ++IBUS_Armenian_full_stop ++IBUS_Armenian_verjaket ++IBUS_Armenian_separation_mark ++IBUS_Armenian_but ++IBUS_Armenian_hyphen ++IBUS_Armenian_yentamna ++IBUS_Armenian_exclam ++IBUS_Armenian_amanak ++IBUS_Armenian_accent ++IBUS_Armenian_shesht ++IBUS_Armenian_question ++IBUS_Armenian_paruyk ++IBUS_Armenian_AYB ++IBUS_Armenian_ayb ++IBUS_Armenian_BEN ++IBUS_Armenian_ben ++IBUS_Armenian_GIM ++IBUS_Armenian_gim ++IBUS_Armenian_DA ++IBUS_Armenian_da ++IBUS_Armenian_YECH ++IBUS_Armenian_yech ++IBUS_Armenian_ZA ++IBUS_Armenian_za ++IBUS_Armenian_E ++IBUS_Armenian_e ++IBUS_Armenian_AT ++IBUS_Armenian_at ++IBUS_Armenian_TO ++IBUS_Armenian_to ++IBUS_Armenian_ZHE ++IBUS_Armenian_zhe ++IBUS_Armenian_INI ++IBUS_Armenian_ini ++IBUS_Armenian_LYUN ++IBUS_Armenian_lyun ++IBUS_Armenian_KHE ++IBUS_Armenian_khe ++IBUS_Armenian_TSA ++IBUS_Armenian_tsa ++IBUS_Armenian_KEN ++IBUS_Armenian_ken ++IBUS_Armenian_HO ++IBUS_Armenian_ho ++IBUS_Armenian_DZA ++IBUS_Armenian_dza ++IBUS_Armenian_GHAT ++IBUS_Armenian_ghat ++IBUS_Armenian_TCHE ++IBUS_Armenian_tche ++IBUS_Armenian_MEN ++IBUS_Armenian_men ++IBUS_Armenian_HI ++IBUS_Armenian_hi ++IBUS_Armenian_NU ++IBUS_Armenian_nu ++IBUS_Armenian_SHA ++IBUS_Armenian_sha ++IBUS_Armenian_VO ++IBUS_Armenian_vo ++IBUS_Armenian_CHA ++IBUS_Armenian_cha ++IBUS_Armenian_PE ++IBUS_Armenian_pe ++IBUS_Armenian_JE ++IBUS_Armenian_je ++IBUS_Armenian_RA ++IBUS_Armenian_ra ++IBUS_Armenian_SE ++IBUS_Armenian_se ++IBUS_Armenian_VEV ++IBUS_Armenian_vev ++IBUS_Armenian_TYUN ++IBUS_Armenian_tyun ++IBUS_Armenian_RE ++IBUS_Armenian_re ++IBUS_Armenian_TSO ++IBUS_Armenian_tso ++IBUS_Armenian_VYUN ++IBUS_Armenian_vyun ++IBUS_Armenian_PYUR ++IBUS_Armenian_pyur ++IBUS_Armenian_KE ++IBUS_Armenian_ke ++IBUS_Armenian_O ++IBUS_Armenian_o ++IBUS_Armenian_FE ++IBUS_Armenian_fe ++IBUS_Armenian_apostrophe ++IBUS_Georgian_an ++IBUS_Georgian_ban ++IBUS_Georgian_gan ++IBUS_Georgian_don ++IBUS_Georgian_en ++IBUS_Georgian_vin ++IBUS_Georgian_zen ++IBUS_Georgian_tan ++IBUS_Georgian_in ++IBUS_Georgian_kan ++IBUS_Georgian_las ++IBUS_Georgian_man ++IBUS_Georgian_nar ++IBUS_Georgian_on ++IBUS_Georgian_par ++IBUS_Georgian_zhar ++IBUS_Georgian_rae ++IBUS_Georgian_san ++IBUS_Georgian_tar ++IBUS_Georgian_un ++IBUS_Georgian_phar ++IBUS_Georgian_khar ++IBUS_Georgian_ghan ++IBUS_Georgian_qar ++IBUS_Georgian_shin ++IBUS_Georgian_chin ++IBUS_Georgian_can ++IBUS_Georgian_jil ++IBUS_Georgian_cil ++IBUS_Georgian_char ++IBUS_Georgian_xan ++IBUS_Georgian_jhan ++IBUS_Georgian_hae ++IBUS_Georgian_he ++IBUS_Georgian_hie ++IBUS_Georgian_we ++IBUS_Georgian_har ++IBUS_Georgian_hoe ++IBUS_Georgian_fi ++IBUS_Xabovedot ++IBUS_Ibreve ++IBUS_Zstroke ++IBUS_Gcaron ++IBUS_Ocaron ++IBUS_Obarred ++IBUS_xabovedot ++IBUS_ibreve ++IBUS_zstroke ++IBUS_gcaron ++IBUS_ocaron ++IBUS_obarred ++IBUS_SCHWA ++IBUS_schwa ++IBUS_Lbelowdot ++IBUS_lbelowdot ++IBUS_Abelowdot ++IBUS_abelowdot ++IBUS_Ahook ++IBUS_ahook ++IBUS_Acircumflexacute ++IBUS_acircumflexacute ++IBUS_Acircumflexgrave ++IBUS_acircumflexgrave ++IBUS_Acircumflexhook ++IBUS_acircumflexhook ++IBUS_Acircumflextilde ++IBUS_acircumflextilde ++IBUS_Acircumflexbelowdot ++IBUS_acircumflexbelowdot ++IBUS_Abreveacute ++IBUS_abreveacute ++IBUS_Abrevegrave ++IBUS_abrevegrave ++IBUS_Abrevehook ++IBUS_abrevehook ++IBUS_Abrevetilde ++IBUS_abrevetilde ++IBUS_Abrevebelowdot ++IBUS_abrevebelowdot ++IBUS_Ebelowdot ++IBUS_ebelowdot ++IBUS_Ehook ++IBUS_ehook ++IBUS_Etilde ++IBUS_etilde ++IBUS_Ecircumflexacute ++IBUS_ecircumflexacute ++IBUS_Ecircumflexgrave ++IBUS_ecircumflexgrave ++IBUS_Ecircumflexhook ++IBUS_ecircumflexhook ++IBUS_Ecircumflextilde ++IBUS_ecircumflextilde ++IBUS_Ecircumflexbelowdot ++IBUS_ecircumflexbelowdot ++IBUS_Ihook ++IBUS_ihook ++IBUS_Ibelowdot ++IBUS_ibelowdot ++IBUS_Obelowdot ++IBUS_obelowdot ++IBUS_Ohook ++IBUS_ohook ++IBUS_Ocircumflexacute ++IBUS_ocircumflexacute ++IBUS_Ocircumflexgrave ++IBUS_ocircumflexgrave ++IBUS_Ocircumflexhook ++IBUS_ocircumflexhook ++IBUS_Ocircumflextilde ++IBUS_ocircumflextilde ++IBUS_Ocircumflexbelowdot ++IBUS_ocircumflexbelowdot ++IBUS_Ohornacute ++IBUS_ohornacute ++IBUS_Ohorngrave ++IBUS_ohorngrave ++IBUS_Ohornhook ++IBUS_ohornhook ++IBUS_Ohorntilde ++IBUS_ohorntilde ++IBUS_Ohornbelowdot ++IBUS_ohornbelowdot ++IBUS_Ubelowdot ++IBUS_ubelowdot ++IBUS_Uhook ++IBUS_uhook ++IBUS_Uhornacute ++IBUS_uhornacute ++IBUS_Uhorngrave ++IBUS_uhorngrave ++IBUS_Uhornhook ++IBUS_uhornhook ++IBUS_Uhorntilde ++IBUS_uhorntilde ++IBUS_Uhornbelowdot ++IBUS_uhornbelowdot ++IBUS_Ybelowdot ++IBUS_ybelowdot ++IBUS_Yhook ++IBUS_yhook ++IBUS_Ytilde ++IBUS_ytilde ++IBUS_Ohorn ++IBUS_ohorn ++IBUS_Uhorn ++IBUS_uhorn ++IBUS_EcuSign ++IBUS_ColonSign ++IBUS_CruzeiroSign ++IBUS_FFrancSign ++IBUS_LiraSign ++IBUS_MillSign ++IBUS_NairaSign ++IBUS_PesetaSign ++IBUS_RupeeSign ++IBUS_WonSign ++IBUS_NewSheqelSign ++IBUS_DongSign ++IBUS_EuroSign ++IBUS_zerosuperior ++IBUS_foursuperior ++IBUS_fivesuperior ++IBUS_sixsuperior ++IBUS_sevensuperior ++IBUS_eightsuperior ++IBUS_ninesuperior ++IBUS_zerosubscript ++IBUS_onesubscript ++IBUS_twosubscript ++IBUS_threesubscript ++IBUS_foursubscript ++IBUS_fivesubscript ++IBUS_sixsubscript ++IBUS_sevensubscript ++IBUS_eightsubscript ++IBUS_ninesubscript ++IBUS_partdifferential ++IBUS_emptyset ++IBUS_elementof ++IBUS_notelementof ++IBUS_containsas ++IBUS_squareroot ++IBUS_cuberoot ++IBUS_fourthroot ++IBUS_dintegral ++IBUS_tintegral ++IBUS_because ++IBUS_approxeq ++IBUS_notapproxeq ++IBUS_notidentical ++IBUS_stricteq ++IBUS_braille_dot_1 ++IBUS_braille_dot_2 ++IBUS_braille_dot_3 ++IBUS_braille_dot_4 ++IBUS_braille_dot_5 ++IBUS_braille_dot_6 ++IBUS_braille_dot_7 ++IBUS_braille_dot_8 ++IBUS_braille_dot_9 ++IBUS_braille_dot_10 ++IBUS_braille_blank ++IBUS_braille_dots_1 ++IBUS_braille_dots_2 ++IBUS_braille_dots_12 ++IBUS_braille_dots_3 ++IBUS_braille_dots_13 ++IBUS_braille_dots_23 ++IBUS_braille_dots_123 ++IBUS_braille_dots_4 ++IBUS_braille_dots_14 ++IBUS_braille_dots_24 ++IBUS_braille_dots_124 ++IBUS_braille_dots_34 ++IBUS_braille_dots_134 ++IBUS_braille_dots_234 ++IBUS_braille_dots_1234 ++IBUS_braille_dots_5 ++IBUS_braille_dots_15 ++IBUS_braille_dots_25 ++IBUS_braille_dots_125 ++IBUS_braille_dots_35 ++IBUS_braille_dots_135 ++IBUS_braille_dots_235 ++IBUS_braille_dots_1235 ++IBUS_braille_dots_45 ++IBUS_braille_dots_145 ++IBUS_braille_dots_245 ++IBUS_braille_dots_1245 ++IBUS_braille_dots_345 ++IBUS_braille_dots_1345 ++IBUS_braille_dots_2345 ++IBUS_braille_dots_12345 ++IBUS_braille_dots_6 ++IBUS_braille_dots_16 ++IBUS_braille_dots_26 ++IBUS_braille_dots_126 ++IBUS_braille_dots_36 ++IBUS_braille_dots_136 ++IBUS_braille_dots_236 ++IBUS_braille_dots_1236 ++IBUS_braille_dots_46 ++IBUS_braille_dots_146 ++IBUS_braille_dots_246 ++IBUS_braille_dots_1246 ++IBUS_braille_dots_346 ++IBUS_braille_dots_1346 ++IBUS_braille_dots_2346 ++IBUS_braille_dots_12346 ++IBUS_braille_dots_56 ++IBUS_braille_dots_156 ++IBUS_braille_dots_256 ++IBUS_braille_dots_1256 ++IBUS_braille_dots_356 ++IBUS_braille_dots_1356 ++IBUS_braille_dots_2356 ++IBUS_braille_dots_12356 ++IBUS_braille_dots_456 ++IBUS_braille_dots_1456 ++IBUS_braille_dots_2456 ++IBUS_braille_dots_12456 ++IBUS_braille_dots_3456 ++IBUS_braille_dots_13456 ++IBUS_braille_dots_23456 ++IBUS_braille_dots_123456 ++IBUS_braille_dots_7 ++IBUS_braille_dots_17 ++IBUS_braille_dots_27 ++IBUS_braille_dots_127 ++IBUS_braille_dots_37 ++IBUS_braille_dots_137 ++IBUS_braille_dots_237 ++IBUS_braille_dots_1237 ++IBUS_braille_dots_47 ++IBUS_braille_dots_147 ++IBUS_braille_dots_247 ++IBUS_braille_dots_1247 ++IBUS_braille_dots_347 ++IBUS_braille_dots_1347 ++IBUS_braille_dots_2347 ++IBUS_braille_dots_12347 ++IBUS_braille_dots_57 ++IBUS_braille_dots_157 ++IBUS_braille_dots_257 ++IBUS_braille_dots_1257 ++IBUS_braille_dots_357 ++IBUS_braille_dots_1357 ++IBUS_braille_dots_2357 ++IBUS_braille_dots_12357 ++IBUS_braille_dots_457 ++IBUS_braille_dots_1457 ++IBUS_braille_dots_2457 ++IBUS_braille_dots_12457 ++IBUS_braille_dots_3457 ++IBUS_braille_dots_13457 ++IBUS_braille_dots_23457 ++IBUS_braille_dots_123457 ++IBUS_braille_dots_67 ++IBUS_braille_dots_167 ++IBUS_braille_dots_267 ++IBUS_braille_dots_1267 ++IBUS_braille_dots_367 ++IBUS_braille_dots_1367 ++IBUS_braille_dots_2367 ++IBUS_braille_dots_12367 ++IBUS_braille_dots_467 ++IBUS_braille_dots_1467 ++IBUS_braille_dots_2467 ++IBUS_braille_dots_12467 ++IBUS_braille_dots_3467 ++IBUS_braille_dots_13467 ++IBUS_braille_dots_23467 ++IBUS_braille_dots_123467 ++IBUS_braille_dots_567 ++IBUS_braille_dots_1567 ++IBUS_braille_dots_2567 ++IBUS_braille_dots_12567 ++IBUS_braille_dots_3567 ++IBUS_braille_dots_13567 ++IBUS_braille_dots_23567 ++IBUS_braille_dots_123567 ++IBUS_braille_dots_4567 ++IBUS_braille_dots_14567 ++IBUS_braille_dots_24567 ++IBUS_braille_dots_124567 ++IBUS_braille_dots_34567 ++IBUS_braille_dots_134567 ++IBUS_braille_dots_234567 ++IBUS_braille_dots_1234567 ++IBUS_braille_dots_8 ++IBUS_braille_dots_18 ++IBUS_braille_dots_28 ++IBUS_braille_dots_128 ++IBUS_braille_dots_38 ++IBUS_braille_dots_138 ++IBUS_braille_dots_238 ++IBUS_braille_dots_1238 ++IBUS_braille_dots_48 ++IBUS_braille_dots_148 ++IBUS_braille_dots_248 ++IBUS_braille_dots_1248 ++IBUS_braille_dots_348 ++IBUS_braille_dots_1348 ++IBUS_braille_dots_2348 ++IBUS_braille_dots_12348 ++IBUS_braille_dots_58 ++IBUS_braille_dots_158 ++IBUS_braille_dots_258 ++IBUS_braille_dots_1258 ++IBUS_braille_dots_358 ++IBUS_braille_dots_1358 ++IBUS_braille_dots_2358 ++IBUS_braille_dots_12358 ++IBUS_braille_dots_458 ++IBUS_braille_dots_1458 ++IBUS_braille_dots_2458 ++IBUS_braille_dots_12458 ++IBUS_braille_dots_3458 ++IBUS_braille_dots_13458 ++IBUS_braille_dots_23458 ++IBUS_braille_dots_123458 ++IBUS_braille_dots_68 ++IBUS_braille_dots_168 ++IBUS_braille_dots_268 ++IBUS_braille_dots_1268 ++IBUS_braille_dots_368 ++IBUS_braille_dots_1368 ++IBUS_braille_dots_2368 ++IBUS_braille_dots_12368 ++IBUS_braille_dots_468 ++IBUS_braille_dots_1468 ++IBUS_braille_dots_2468 ++IBUS_braille_dots_12468 ++IBUS_braille_dots_3468 ++IBUS_braille_dots_13468 ++IBUS_braille_dots_23468 ++IBUS_braille_dots_123468 ++IBUS_braille_dots_568 ++IBUS_braille_dots_1568 ++IBUS_braille_dots_2568 ++IBUS_braille_dots_12568 ++IBUS_braille_dots_3568 ++IBUS_braille_dots_13568 ++IBUS_braille_dots_23568 ++IBUS_braille_dots_123568 ++IBUS_braille_dots_4568 ++IBUS_braille_dots_14568 ++IBUS_braille_dots_24568 ++IBUS_braille_dots_124568 ++IBUS_braille_dots_34568 ++IBUS_braille_dots_134568 ++IBUS_braille_dots_234568 ++IBUS_braille_dots_1234568 ++IBUS_braille_dots_78 ++IBUS_braille_dots_178 ++IBUS_braille_dots_278 ++IBUS_braille_dots_1278 ++IBUS_braille_dots_378 ++IBUS_braille_dots_1378 ++IBUS_braille_dots_2378 ++IBUS_braille_dots_12378 ++IBUS_braille_dots_478 ++IBUS_braille_dots_1478 ++IBUS_braille_dots_2478 ++IBUS_braille_dots_12478 ++IBUS_braille_dots_3478 ++IBUS_braille_dots_13478 ++IBUS_braille_dots_23478 ++IBUS_braille_dots_123478 ++IBUS_braille_dots_578 ++IBUS_braille_dots_1578 ++IBUS_braille_dots_2578 ++IBUS_braille_dots_12578 ++IBUS_braille_dots_3578 ++IBUS_braille_dots_13578 ++IBUS_braille_dots_23578 ++IBUS_braille_dots_123578 ++IBUS_braille_dots_4578 ++IBUS_braille_dots_14578 ++IBUS_braille_dots_24578 ++IBUS_braille_dots_124578 ++IBUS_braille_dots_34578 ++IBUS_braille_dots_134578 ++IBUS_braille_dots_234578 ++IBUS_braille_dots_1234578 ++IBUS_braille_dots_678 ++IBUS_braille_dots_1678 ++IBUS_braille_dots_2678 ++IBUS_braille_dots_12678 ++IBUS_braille_dots_3678 ++IBUS_braille_dots_13678 ++IBUS_braille_dots_23678 ++IBUS_braille_dots_123678 ++IBUS_braille_dots_4678 ++IBUS_braille_dots_14678 ++IBUS_braille_dots_24678 ++IBUS_braille_dots_124678 ++IBUS_braille_dots_34678 ++IBUS_braille_dots_134678 ++IBUS_braille_dots_234678 ++IBUS_braille_dots_1234678 ++IBUS_braille_dots_5678 ++IBUS_braille_dots_15678 ++IBUS_braille_dots_25678 ++IBUS_braille_dots_125678 ++IBUS_braille_dots_35678 ++IBUS_braille_dots_135678 ++IBUS_braille_dots_235678 ++IBUS_braille_dots_1235678 ++IBUS_braille_dots_45678 ++IBUS_braille_dots_145678 ++IBUS_braille_dots_245678 ++IBUS_braille_dots_1245678 ++IBUS_braille_dots_345678 ++IBUS_braille_dots_1345678 ++IBUS_braille_dots_2345678 ++IBUS_braille_dots_12345678 ++
++ ++
++ibusdebug ++ibus_warning ++
++ ++
++ibusinternal ++I_ ++dbus_server_setup ++dbus_connection_setup ++
++ +diff --git a/ibus.spec.in b/ibus.spec.in +index 908ddbd..641ec86 100644 +--- a/ibus.spec.in ++++ b/ibus.spec.in +@@ -1,6 +1,8 @@ + %{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} + %{!?gtk_binary_version: %define gtk_binary_version %(pkg-config --variable=gtk_binary_version gtk+-2.0)} + %define mod_path ibus-@PACKAGE_VERSION_MAJOR@.@PACKAGE_VERSION_MINOR@ ++%define host_vendor %(if [[ "%{_host_vendor}" == "unknown" ]]; then echo redhat; else echo %{_host_vendor}; fi) ++%define host %{_host_cpu}-%{host_vendor}-%{_host_os} + Name: ibus + Version: @PACKAGE_VERSION@ + Release: 1%{?dist} +@@ -108,13 +110,32 @@ desktop-file-install --delete-original \ + %clean + rm -rf $RPM_BUILD_ROOT + ++%pre ++if [ "$1" -gt 1 ] ; then ++export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` ++gconftool-2 --makefile-uninstall-rule \ ++%{_sysconfdir}/gconf/schemas/%{name}.schemas >/dev/null || : ++fi ++ ++%post ++export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source` ++gconftool-2 --makefile-install-rule \ ++%{_sysconfdir}/gconf/schemas/%{name}.schemas > /dev/null || : ++ ++%preun ++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 ++ + %post libs + /sbin/ldconfig + update-desktop-database -q + %{_sbindir}/alternatives --install %{_sysconfdir}/X11/xinit/xinputrc xinputrc %{_xinputconf} 83 || : + + %post gtk +-%{_bindir}/update-gtk-immodules %{_host} || : ++%{_bindir}/update-gtk-immodules %{host} || : + + %postun libs + /sbin/ldconfig +@@ -126,7 +147,7 @@ if [ "$1" = "0" ]; then + fi + + %postun gtk +-%{_bindir}/update-gtk-immodules %{_host} || : ++%{_bindir}/update-gtk-immodules %{host} || : + + %files -f %{name}.lang + %defattr(-,root,root,-) +@@ -140,8 +161,9 @@ fi + %{_libexecdir}/ibus-gconf + %{_libexecdir}/ibus-ui-gtk + %{_libexecdir}/ibus-x11 +-%config %{_xinputconf} +- ++%config(noreplace) %{_xinputconf} ++%config(noreplace) %{_sysconfdir}/gconf/schemas/%{name}.schemas ++%config(noreplace) %{_sysconfdir}/xdg/autostart/ibus.desktop + + %files libs + %defattr(-,root,root,-) +@@ -163,5 +185,9 @@ fi + %{_libdir}/pkgconfig/* + + %changelog +-* Thu Aug 07 2008 Huang Peng - @VERSION@-1 ++* @DATE_DISPLAY@ Huang Peng - @VERSION@-1 ++- Current version. ++ ++* Thu Aug 07 2008 Huang Peng - 0.1.0.20080810-1 + - The first version. ++ +diff --git a/po/fr.po b/po/fr.po +index 4b1850c..3f5e188 100644 +--- a/po/fr.po ++++ b/po/fr.po +@@ -8,8 +8,8 @@ msgid "" + msgstr "" + "Project-Id-Version: ibus VERSION\n" + "Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/entry\n" +-"POT-Creation-Date: 2009-03-11 14:31+0800\n" +-"PO-Revision-Date: 2009-02-06 01:55+0100\n" ++"POT-Creation-Date: 2009-03-20 09:52+0800\n" ++"PO-Revision-Date: 2009-03-11 17:30+0100\n" + "Last-Translator: Julroy67 \n" + "Language-Team: French \n" + "MIME-Version: 1.0\n" +@@ -25,15 +25,15 @@ msgstr "Autre" + + #: ui/gtk/panel.py:97 + msgid "IBus input method framework" +-msgstr "" ++msgstr "Framework de méthode d'entrée IBus" + + #: ui/gtk/panel.py:282 + msgid "Restart" +-msgstr "" ++msgstr "Redémarrer" + + #: ui/gtk/panel.py:337 + msgid "No input method" +-msgstr "" ++msgstr "Aucune méthode d'entrée" + + #: ui/gtk/panel.py:383 + msgid "IBus is an intelligent input bus for Linux/Unix." +@@ -92,7 +92,6 @@ msgid "Key code:" + msgstr "Code touche :" + + #: setup/keyboardshortcut.py:76 +-#, fuzzy + msgid "Modifiers:" + msgstr "Modificateurs :" + +@@ -110,35 +109,33 @@ msgstr "Veuillez presser une touche (ou une combinaison de touches)" + + #: setup/enginecombobox.py:99 + msgid "Select an input method" +-msgstr "" ++msgstr "Sélectionnez une méthode d'entrée" + + #: setup/setup.glade:7 + msgid "IBus Preferences" +-msgstr "" +- +-#: setup/setup.glade:51 +-msgid "Enable or disable:" +-msgstr "" ++msgstr "Préférences d'IBus" + +-#: setup/setup.glade:62 +-#, fuzzy +-msgid "Next input method:" +-msgstr "Moteur suivant :" ++#: setup/setup.glade:64 setup/setup.glade:96 setup/setup.glade:128 ++msgid "..." ++msgstr "…" + +-#: setup/setup.glade:76 ++#: setup/setup.glade:148 + msgid "previous input method:" +-msgstr "" ++msgstr "méthode d'entrée précédente :" + +-#: setup/setup.glade:100 setup/setup.glade:130 setup/setup.glade:164 +-msgid "..." +-msgstr "…" ++#: setup/setup.glade:161 ++msgid "Next input method:" ++msgstr "Méthode d'entrée suivante :" ++ ++#: setup/setup.glade:174 ++msgid "Enable or disable:" ++msgstr "Activer ou désactiver :" + + #: setup/setup.glade:188 + msgid "Keyboard Shortcuts" + msgstr "Raccourcis claviers" + + #: setup/setup.glade:222 +-#, fuzzy + msgid "Candidates orientation:" + msgstr "Orientation de la table :" + +@@ -152,27 +149,29 @@ msgstr "" + + #: setup/setup.glade:249 + msgid "Show language panel:" +-msgstr "" ++msgstr "Afficher la barre de langue :" + + #: setup/setup.glade:259 + msgid "" + "Never\n" +-"Dynamically\n" ++"When active\n" + "Always" + msgstr "" ++"Jamais\n" ++"Dynamiquement\n" ++"Toujours" + + #: setup/setup.glade:276 + msgid "Use custom font" + msgstr "Utiliser une police personnalisée" + + #: setup/setup.glade:292 +-#, fuzzy + msgid "Custom font:" +-msgstr "Utiliser une police personnalisée" ++msgstr "Police personnalisée :" + + #: setup/setup.glade:317 + msgid "Font and Style" +-msgstr "" ++msgstr "Police et Style" + + #: setup/setup.glade:337 + msgid "General" +@@ -180,7 +179,7 @@ msgstr "Général" + + #: setup/setup.glade:465 + msgid "Input Methods" +-msgstr "" ++msgstr "Méthodes d'entrées" + + #: setup/setup.glade:482 + msgid "" +@@ -199,50 +198,13 @@ msgstr "" + "\n" + + #: setup/setup.glade:510 +-#, fuzzy + msgid "Start ibus on login" +-msgstr "Démarrer automatiquement IBus lors de la connexion" ++msgstr "Démarrer IBus lors de la connexion" + + #: setup/setup.glade:521 +-#, fuzzy + msgid "Startup" +-msgstr "Interface Utilisateur" ++msgstr "Démarrage" + + #: setup/setup.glade:543 + msgid "About" + msgstr "À propos" +- +-#~ msgid "Trigger:" +-#~ msgstr "Déclencheur :" +- +-#, fuzzy +-#~ msgid "Previous IME:" +-#~ msgstr "Moteur précédent :" +- +-#~ msgid "gtk-add" +-#~ msgstr "gtk-add" +- +-#~ msgid "gtk-remove" +-#~ msgstr "gtk-remove" +- +-#~ msgid "gtk-go-up" +-#~ msgstr "gtk-go-up" +- +-#~ msgid "gtk-go-down" +-#~ msgstr "gtk-go-down" +- +-#~ msgid "gtk-close" +-#~ msgstr "gtk-close" +- +-#~ msgid "Auto hide language bar" +-#~ msgstr "Cacher automatiquement la barre de langue" +- +-#, fuzzy +-#~ msgid "IBus - Running" +-#~ msgstr "IBus - Démarré" +- +-#~ msgid "IBus - Setup" +-#~ msgstr "IBus - Configuration" +- +-#~ msgid "Engine" +-#~ msgstr "Moteur" +diff --git a/po/ja.po b/po/ja.po +index 185f58e..eeb2117 100644 +--- a/po/ja.po ++++ b/po/ja.po +@@ -8,9 +8,9 @@ msgid "" + msgstr "" + "Project-Id-Version: ibus VERSION\n" + "Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/entry\n" +-"POT-Creation-Date: 2009-03-11 14:31+0800\n" +-"PO-Revision-Date: 2008-08-28 17:31+0900\n" +-"Last-Translator: UTUMI Hirosi \n" ++"POT-Creation-Date: 2009-03-20 09:52+0800\n" ++"PO-Revision-Date: 2009-03-19 16:12+0900\n" ++"Last-Translator: IWAI, Masaharu \n" + "Language-Team: Japanese \n" + "MIME-Version: 1.0\n" + "Content-Type: text/plain; charset=UTF-8\n" +@@ -19,31 +19,33 @@ msgstr "" + #: ibus/lang.py:40 ui/gtk/panel.py:307 ui/gtk/panel.py:308 ui/gtk/panel.py:309 + #: ui/gtk/panel.py:310 + msgid "Other" +-msgstr "" ++msgstr "その他" + + #: ui/gtk/panel.py:97 + msgid "IBus input method framework" +-msgstr "" ++msgstr "IBus インプットメソッドフレームワーク" + + #: ui/gtk/panel.py:282 + msgid "Restart" +-msgstr "" ++msgstr "再起動" + + #: ui/gtk/panel.py:337 + msgid "No input method" +-msgstr "" ++msgstr "インプットメソッドがありません" + + #: ui/gtk/panel.py:383 + msgid "IBus is an intelligent input bus for Linux/Unix." +-msgstr "" ++msgstr "IBus は、Linux/Unix のためのインテリジェントなインプットバスです。" + + #: ui/gtk/panel.py:387 + msgid "translator-credits" +-msgstr "UTUMI Hirosi " ++msgstr "" ++"UTUMI Hirosi \n" ++"IWAI, Masaharu " + + #: ui/gtk/languagebar.py:84 + msgid "Switch engine" +-msgstr "" ++msgstr "エンジンの変更" + + #: setup/main.py:103 + msgid "trigger" +@@ -106,35 +108,33 @@ msgstr "キーもしくはキーの組み合わせを入力してください" + + #: setup/enginecombobox.py:99 + msgid "Select an input method" +-msgstr "" ++msgstr "インプットメソッドの選択" + + #: setup/setup.glade:7 + msgid "IBus Preferences" +-msgstr "" +- +-#: setup/setup.glade:51 +-msgid "Enable or disable:" +-msgstr "" ++msgstr "IBus の設定" + +-#: setup/setup.glade:62 +-#, fuzzy +-msgid "Next input method:" +-msgstr "次のエンジン:" ++#: setup/setup.glade:64 setup/setup.glade:96 setup/setup.glade:128 ++msgid "..." ++msgstr "..." + +-#: setup/setup.glade:76 ++#: setup/setup.glade:148 + msgid "previous input method:" +-msgstr "" ++msgstr "ひとつ前のインプットメソッド:" + +-#: setup/setup.glade:100 setup/setup.glade:130 setup/setup.glade:164 +-msgid "..." +-msgstr "..." ++#: setup/setup.glade:161 ++msgid "Next input method:" ++msgstr "次のインプットメソッド:" ++ ++#: setup/setup.glade:174 ++msgid "Enable or disable:" ++msgstr "切り替え" + + #: setup/setup.glade:188 + msgid "Keyboard Shortcuts" + msgstr "キーボードショートカット" + + #: setup/setup.glade:222 +-#, fuzzy + msgid "Candidates orientation:" + msgstr "候補ウィンドウの向き:" + +@@ -148,27 +148,29 @@ msgstr "" + + #: setup/setup.glade:249 + msgid "Show language panel:" +-msgstr "" ++msgstr "言語パネルの表示:" + + #: setup/setup.glade:259 + msgid "" + "Never\n" +-"Dynamically\n" ++"When active\n" + "Always" + msgstr "" ++"表示しない\n" ++"有効なときだけ表示する\n" ++"常に表示する" + + #: setup/setup.glade:276 + msgid "Use custom font" + msgstr "カスタムフォントを使う" + + #: setup/setup.glade:292 +-#, fuzzy + msgid "Custom font:" +-msgstr "カスタムフォントを使う" ++msgstr "カスタムフォント:" + + #: setup/setup.glade:317 + msgid "Font and Style" +-msgstr "" ++msgstr "フォントとスタイル" + + #: setup/setup.glade:337 + msgid "General" +@@ -176,7 +178,7 @@ msgstr "一般" + + #: setup/setup.glade:465 + msgid "Input Methods" +-msgstr "" ++msgstr "インプットメソッド" + + #: setup/setup.glade:482 + msgid "" +@@ -187,48 +189,21 @@ msgid "" + "\n" + "\n" + msgstr "" ++"IBus\n" ++"インテリジェントなインプットバス\n" ++"ホームページ: http://code.google.com/p/ibus\n" ++"\n" ++"\n" ++"\n" + + #: setup/setup.glade:510 +-#, fuzzy + msgid "Start ibus on login" +-msgstr "セッションログイン時に IBus を自動的に起動" ++msgstr "ログイン時に IBus を起動" + + #: setup/setup.glade:521 + msgid "Startup" +-msgstr "" ++msgstr "スタートアップ" + + #: setup/setup.glade:543 + msgid "About" + msgstr "About" +- +-#~ msgid "Trigger:" +-#~ msgstr "トリガー:" +- +-#, fuzzy +-#~ msgid "Previous IME:" +-#~ msgstr "前のエンジン:" +- +-#, fuzzy +-#~ msgid "gtk-remove" +-#~ msgstr "gtk-close" +- +-#~ msgid "gtk-close" +-#~ msgstr "gtk-close" +- +-#~ msgid "Auto hide language bar" +-#~ msgstr "言語バーを自動で隠す" +- +-#~ msgid "IBus - Running" +-#~ msgstr "IBus - 実行中" +- +-#~ msgid "IBus - Setup" +-#~ msgstr "IBus - セットアップ" +- +-#~ msgid "Engine" +-#~ msgstr "エンジン" +- +-#~ msgid "Started" +-#~ msgstr "開始" +- +-#~ msgid "Preload" +-#~ msgstr "プリロード" +diff --git a/po/pa.po b/po/pa.po +index 425a788..0bb12ce 100644 +--- a/po/pa.po ++++ b/po/pa.po +@@ -6,7 +6,7 @@ msgid "" + msgstr "" + "Project-Id-Version: ibus\n" + "Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/entry\n" +-"POT-Creation-Date: 2009-03-11 14:31+0800\n" ++"POT-Creation-Date: 2009-03-20 09:52+0800\n" + "PO-Revision-Date: 2008-10-17 14:15+0530\n" + "Last-Translator: Amanpreet Singh \n" + "Language-Team: Punjabi/Panjabi \n" +@@ -111,23 +111,23 @@ msgstr "" + msgid "IBus Preferences" + msgstr "" + +-#: setup/setup.glade:51 +-msgid "Enable or disable:" ++#: setup/setup.glade:64 setup/setup.glade:96 setup/setup.glade:128 ++msgid "..." ++msgstr "..." ++ ++#: setup/setup.glade:148 ++msgid "previous input method:" + msgstr "" + +-#: setup/setup.glade:62 ++#: setup/setup.glade:161 + #, fuzzy + msgid "Next input method:" + msgstr "ਅਗਲਾ ਇੰਜਣ:" + +-#: setup/setup.glade:76 +-msgid "previous input method:" ++#: setup/setup.glade:174 ++msgid "Enable or disable:" + msgstr "" + +-#: setup/setup.glade:100 setup/setup.glade:130 setup/setup.glade:164 +-msgid "..." +-msgstr "..." +- + #: setup/setup.glade:188 + msgid "Keyboard Shortcuts" + msgstr "ਕੀਬੋਰਡ ਸ਼ਾਰਟਕੱਟ" +@@ -152,7 +152,7 @@ msgstr "" + #: setup/setup.glade:259 + msgid "" + "Never\n" +-"Dynamically\n" ++"When active\n" + "Always" + msgstr "" + +diff --git a/po/zh_CN.po b/po/zh_CN.po +index eb95e2f..6713459 100644 +--- a/po/zh_CN.po ++++ b/po/zh_CN.po +@@ -7,7 +7,7 @@ msgid "" + msgstr "" + "Project-Id-Version: 0.1.1.20080813\n" + "Report-Msgid-Bugs-To: http://code.google.com/p/ibus/issues/entry\n" +-"POT-Creation-Date: 2009-03-11 14:31+0800\n" ++"POT-Creation-Date: 2009-03-20 09:52+0800\n" + "PO-Revision-Date: 2008-08-13 21:59+0800\n" + "Last-Translator: Huang Peng \n" + "Language-Team: Huang Peng \n" +@@ -111,21 +111,21 @@ msgstr "选择输入法" + msgid "IBus Preferences" + msgstr "IBus设置" + +-#: setup/setup.glade:51 +-msgid "Enable or disable:" +-msgstr "开关" +- +-#: setup/setup.glade:62 +-msgid "Next input method:" +-msgstr "下一入法" ++#: setup/setup.glade:64 setup/setup.glade:96 setup/setup.glade:128 ++msgid "..." ++msgstr "" + +-#: setup/setup.glade:76 ++#: setup/setup.glade:148 + msgid "previous input method:" + msgstr "前一入法" + +-#: setup/setup.glade:100 setup/setup.glade:130 setup/setup.glade:164 +-msgid "..." +-msgstr "" ++#: setup/setup.glade:161 ++msgid "Next input method:" ++msgstr "下一入法" ++ ++#: setup/setup.glade:174 ++msgid "Enable or disable:" ++msgstr "开关" + + #: setup/setup.glade:188 + msgid "Keyboard Shortcuts" +@@ -150,11 +150,11 @@ msgstr "显示语言栏:" + #: setup/setup.glade:259 + msgid "" + "Never\n" +-"Dynamically\n" ++"When active\n" + "Always" + msgstr "" + "从不\n" +-"动态\n" ++"活动时\n" + "总是" + + #: setup/setup.glade:276 +diff --git a/setup/main.py b/setup/main.py +index 42c3233..3ba6495 100644 +--- a/setup/main.py ++++ b/setup/main.py +@@ -244,7 +244,7 @@ class Setup(object): + dialog.destroy() + if id != gtk.RESPONSE_OK: + return +- self.__config.set_value(section, _name, shortcuts) ++ self.__config.set_list(section, _name, shortcuts, "s") + entry.set_text("; ".join(shortcuts)) + + +diff --git a/setup/setup.glade b/setup/setup.glade +index a50efd1..ab7b061 100644 +--- a/setup/setup.glade ++++ b/setup/setup.glade +@@ -45,57 +45,21 @@ + 12 + 6 + +- +- True +- 0 +- Enable or disable: +- +- +- GTK_FILL +- GTK_FILL +- +- +- +- +- True +- 0 +- Next input method: +- +- +- 1 +- 2 +- GTK_FILL +- GTK_FILL +- +- +- +- +- True +- False +- 0 +- previous input method: +- +- +- 2 +- 3 +- GTK_FILL +- GTK_FILL +- +- +- +- ++ + True + 6 + +- ++ + True ++ False + True + False + + + +- ++ + True ++ False + True + ... + True +@@ -110,6 +74,8 @@ + + 1 + 2 ++ 2 ++ 3 + + + +@@ -145,21 +111,19 @@ + + + +- ++ + True + 6 + +- ++ + True +- False + True + False + + + +- ++ + True +- False + True + ... + True +@@ -174,8 +138,44 @@ + + 1 + 2 ++ ++ ++ ++ ++ True ++ False ++ 0 ++ previous input method: ++ ++ + 2 + 3 ++ GTK_FILL ++ GTK_FILL ++ ++ ++ ++ ++ True ++ 0 ++ Next input method: ++ ++ ++ 1 ++ 2 ++ GTK_FILL ++ GTK_FILL ++ ++ ++ ++ ++ True ++ 0 ++ Enable or disable: ++ ++ ++ GTK_FILL ++ GTK_FILL + + + +@@ -257,7 +257,7 @@ Vertical + + True + Never +-Dynamically ++When active + Always + + +diff --git a/src/ibusattribute.h b/src/ibusattribute.h +index 3a0ff7f..a3907c7 100644 +--- a/src/ibusattribute.h ++++ b/src/ibusattribute.h +@@ -17,11 +17,19 @@ + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ ++/** ++ * SECTION: ibusattribute ++ * @short_description: Attributes of IBusText. ++ * @stability: Stable ++ * @see_also: #IBusText ++ * ++ * An IBusAttribute represents an attribute that associate to IBusText. ++ * It decorates preedit buffer and auxiliary text with underline, foreground and background colors. ++ */ + #ifndef __IBUS_ATTRIBUTE_H_ + #define __IBUS_ATTRIBUTE_H_ + + #include "ibusserializable.h" +- + /* + * Type macros. + */ +@@ -53,12 +61,29 @@ + #define IBUS_ATTR_LIST_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_ATTR_LIST, IBusAttrListClass)) + ++/** ++ * IBusAttrType: ++ * @IBUS_ATTR_TYPE_UNDERLINE: Decorate with underline. ++ * @IBUS_ATTR_TYPE_FOREGROUND: Foreground color. ++ * @IBUS_ATTR_TYPE_BACKGROUND: Background color. ++ * ++ * Type of IBusText attribute. ++ */ + typedef enum { + IBUS_ATTR_TYPE_UNDERLINE = 1, + IBUS_ATTR_TYPE_FOREGROUND = 2, + IBUS_ATTR_TYPE_BACKGROUND = 3, + } IBusAttrType; + ++/** ++ * IBusAttrUnderline: ++ * @IBUS_ATTR_UNDERLINE_NONE: No underline. ++ * @IBUS_ATTR_UNDERLINE_SINGLE: Single underline. ++ * @IBUS_ATTR_UNDERLINE_DOUBLE: Double underline. ++ * @IBUS_ATTR_UNDERLINE_LOW: Low underline ? %FIXME ++ * ++ * Type of IBusText attribute. ++ */ + typedef enum { + IBUS_ATTR_UNDERLINE_NONE = 0, + IBUS_ATTR_UNDERLINE_SINGLE = 1, +@@ -73,10 +98,21 @@ typedef struct _IBusAttributeClass IBusAttributeClass; + typedef struct _IBusAttrList IBusAttrList; + typedef struct _IBusAttrListClass IBusAttrListClass; + ++ ++/** ++ * IBusAttribute: ++ * @type: IBusAttributeType ++ * @value: Value for the type. ++ * @start_index: The starting index, inclusive. ++ * @end_index: The ending index, exclusive. ++ * ++ * Signify the type, value and scope of the attribute. ++ * The scope starts from @start_index till the @end_index-1. ++ */ + struct _IBusAttribute { + IBusSerializable parent; + +- /* members */ ++ /*< public >*/ + guint type; + guint value; + guint start_index; +@@ -87,10 +123,16 @@ struct _IBusAttributeClass { + IBusSerializableClass parent; + }; + ++/** ++ * IBusAttrList: ++ * @attributes: GArray that holds #IBusAttribute. ++ * ++ * Array of IBusAttribute. ++ */ + struct _IBusAttrList { + IBusSerializable parent; + +- /* members */ ++ /*< public >*/ + GArray *attributes; + }; + +@@ -98,26 +140,99 @@ struct _IBusAttrListClass { + IBusSerializableClass parent; + }; + ++/** ++ * ibus_attribute_get_type: ++ * @returns: GType of IBusAttribute. ++ * ++ * Returns GType of IBusAttribute. ++ */ + GType ibus_attribute_get_type (); ++ ++/** ++ * ibus_attribute_new: ++ * @type: Type of the attribute. ++ * @value: Value of the attribute. ++ * @start_index: Where attribute starts. ++ * @end_index: Where attribute ends. ++ * @returns: A newly allocated IBusAttribute. ++ * ++ * New an IBusAttribute. ++ */ + IBusAttribute *ibus_attribute_new (guint type, + guint value, + guint start_index, + guint end_index); ++/** ++ * ibus_attr_underline_new: ++ * @underline_type: Type of underline. ++ * @start_index: Where attribute starts. ++ * @end_index: Where attribute ends. ++ * @returns: A newly allocated IBusAttribute. ++ * ++ * New an underline IBusAttribute. ++ */ + IBusAttribute *ibus_attr_underline_new (guint underline_type, + guint start_index, + guint end_index); ++/** ++ * ibus_attr_foreground_new: ++ * @color: Color in RGB. ++ * @start_index: Where attribute starts. ++ * @end_index: Where attribute ends. ++ * @returns: A newly allocated IBusAttribute. ++ * ++ * New an foreground IBusAttribute. ++ */ + IBusAttribute *ibus_attr_foreground_new (guint color, + guint start_index, + guint end_index); ++/** ++ * ibus_attr_background_new: ++ * @color: Color in RGB. ++ * @start_index: Where attribute starts. ++ * @end_index: Where attribute ends. ++ * @returns: A newly allocated IBusAttribute. ++ * ++ * New an background IBusAttribute. ++ */ + IBusAttribute *ibus_attr_background_new (guint color, + guint start_index, + guint end_index); + + ++/** ++ * ibus_attr_list_get_type: ++ * @returns: GType of IBusAttrList. ++ * ++ * Returns GType of IBusAttrList. ++ */ + GType ibus_attr_list_get_type (); ++ ++/** ++ * ibus_attr_list_new: ++ * @returns: A newly allocated IBusAttrList. ++ * ++ * New an IBusAttrList. ++ */ + IBusAttrList *ibus_attr_list_new (); ++ ++/** ++ * ibus_attr_list_append: ++ * @attr_list: An IBusAttrList instance. ++ * @attr: The IBusAttribute instance to be appended. ++ * ++ * Append an IBusAttribute to IBusAttrList. ++ */ + void ibus_attr_list_append (IBusAttrList *attr_list, + IBusAttribute *attr); ++/** ++ * ibus_attr_list_get: ++ * @attr_list: An IBusAttrList instance. ++ * @index: Index of the @attr_list. ++ * @returns: IBusAttribute at given index, NULL if no such IBusAttribute. ++ * ++ * Returns IBusAttribute at given index. ++ */ + IBusAttribute *ibus_attr_list_get (IBusAttrList *attr_list, + guint index); + +diff --git a/src/ibusconnection.h b/src/ibusconnection.h +index 5a8e099..7ebf6e6 100644 +--- a/src/ibusconnection.h ++++ b/src/ibusconnection.h +@@ -17,6 +17,15 @@ + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ ++/** ++ * SECTION: ibusconnection ++ * @short_description: DBusConnection wrapper. ++ * @see_also: DBusConnection ++ * ++ * An IBusConnection provides DBusConnection wrapper. ++ * It can be used to connect to either dBus or iBus daemon. ++ */ ++ + #ifndef __IBUS_CONNECTION_H_ + #define __IBUS_CONNECTION_H_ + +diff --git a/src/ibusengine.c b/src/ibusengine.c +index d924e25..13ec52e 100644 +--- a/src/ibusengine.c ++++ b/src/ibusengine.c +@@ -190,6 +190,11 @@ ibus_engine_class_init (IBusEngineClass *klass) + + + /* install properties */ ++ /** ++ * IBusEngine:name: ++ * ++ * Name of this IBusEngine. ++ */ + g_object_class_install_property (gobject_class, + PROP_NAME, + g_param_spec_string ("name", +@@ -198,7 +203,11 @@ ibus_engine_class_init (IBusEngineClass *klass) + "noname", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + +- ++ /** ++ * IBusEngine:connection: ++ * ++ * Connection for this IBusEngine. ++ */ + g_object_class_install_property (gobject_class, + PROP_CONNECTION, + g_param_spec_object ("connection", +@@ -208,6 +217,15 @@ ibus_engine_class_init (IBusEngineClass *klass) + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + /* install signals */ ++ /** ++ * IBusEngine::process-key-event: ++ * @engine: An IBusEngine. ++ * @keyval: KeySym of the key press. ++ * @state: Key modifier flags ++ * ++ * This signal is emitted whenever a key event is received. ++ * Implement process_key_event() in extend class to receive this signal. ++ */ + engine_signals[PROCESS_KEY_EVENT] = + g_signal_new (I_("process-key-event"), + G_TYPE_FROM_CLASS (gobject_class), +@@ -220,6 +238,13 @@ ibus_engine_class_init (IBusEngineClass *klass) + G_TYPE_UINT, + G_TYPE_UINT); + ++ /** ++ * IBusEngine::focus-in: ++ * @engine: An IBusEngine. ++ * ++ * This signal is emitted whenever the client application get the focus. ++ * Implement focus_in() in extend class to receive this signal. ++ */ + engine_signals[FOCUS_IN] = + g_signal_new (I_("focus-in"), + G_TYPE_FROM_CLASS (gobject_class), +@@ -230,6 +255,13 @@ ibus_engine_class_init (IBusEngineClass *klass) + G_TYPE_NONE, + 0); + ++ /** ++ * IBusEngine::focus-out: ++ * @engine: An IBusEngine. ++ * ++ * This signal is emitted whenever the client application lost the focus. ++ * Implement focus_out() in extend class to receive this signal. ++ */ + engine_signals[FOCUS_OUT] = + g_signal_new (I_("focus-out"), + G_TYPE_FROM_CLASS (gobject_class), +@@ -240,6 +272,13 @@ ibus_engine_class_init (IBusEngineClass *klass) + G_TYPE_NONE, + 0); + ++ /** ++ * IBusEngine::reset: ++ * @engine: An IBusEngine. ++ * ++ * This signal is emitted whenever the IME is reset. ++ * Implement reset() in extend class to receive this signal. ++ */ + engine_signals[RESET] = + g_signal_new (I_("reset"), + G_TYPE_FROM_CLASS (gobject_class), +@@ -250,6 +289,13 @@ ibus_engine_class_init (IBusEngineClass *klass) + G_TYPE_NONE, + 0); + ++ /** ++ * IBusEngine::enable: ++ * @engine: An IBusEngine. ++ * ++ * This signal is emitted whenever the IME is enabled. ++ * Implement enable() in extend class to receive this signal. ++ */ + engine_signals[ENABLE] = + g_signal_new (I_("enable"), + G_TYPE_FROM_CLASS (gobject_class), +@@ -260,6 +306,13 @@ ibus_engine_class_init (IBusEngineClass *klass) + G_TYPE_NONE, + 0); + ++ /** ++ * IBusEngine::disable: ++ * @engine: An IBusEngine. ++ * ++ * This signal is emitted whenever the IME is disabled. ++ * Implement disable() in extend class to receive this signal. ++ */ + engine_signals[DISABLE] = + g_signal_new (I_("disable"), + G_TYPE_FROM_CLASS (gobject_class), +@@ -270,6 +323,13 @@ ibus_engine_class_init (IBusEngineClass *klass) + G_TYPE_NONE, + 0); + ++ /** ++ * IBusEngine::set-cursor-location: ++ * @engine: An IBusEngine. ++ * ++ * This signal is emitted whenever the location of IME is set. ++ * Implement set_cursor_location() in extend class to receive this signal. ++ */ + engine_signals[SET_CURSOR_LOCATION] = + g_signal_new (I_("set-cursor-location"), + G_TYPE_FROM_CLASS (gobject_class), +@@ -284,6 +344,13 @@ ibus_engine_class_init (IBusEngineClass *klass) + G_TYPE_INT, + G_TYPE_INT); + ++ /** ++ * IBusEngine::set-capabilities: ++ * @engine: An IBusEngine. ++ * ++ * This signal is emitted whenever the client application capabilities is set. ++ * Implement set_cursor_location() in extend class to receive this signal. ++ */ + engine_signals[SET_CAPABILITIES] = + g_signal_new (I_("set-capabilities"), + G_TYPE_FROM_CLASS (gobject_class), +@@ -295,6 +362,13 @@ ibus_engine_class_init (IBusEngineClass *klass) + 1, + G_TYPE_UINT); + ++ /** ++ * IBusEngine::page-up: ++ * @engine: An IBusEngine. ++ * ++ * This signal is emitted whenever the page-up key is pressed. ++ * Implement page_up() in extend class to receive this signal. ++ */ + engine_signals[PAGE_UP] = + g_signal_new (I_("page-up"), + G_TYPE_FROM_CLASS (gobject_class), +@@ -305,6 +379,13 @@ ibus_engine_class_init (IBusEngineClass *klass) + G_TYPE_NONE, + 0); + ++ /** ++ * IBusEngine::page-down: ++ * @engine: An IBusEngine. ++ * ++ * This signal is emitted whenever the page-down key is pressed. ++ * Implement page_down() in extend class to receive this signal. ++ */ + engine_signals[PAGE_DOWN] = + g_signal_new (I_("page-down"), + G_TYPE_FROM_CLASS (gobject_class), +@@ -315,6 +396,13 @@ ibus_engine_class_init (IBusEngineClass *klass) + G_TYPE_NONE, + 0); + ++ /** ++ * IBusEngine::cursor-up: ++ * @engine: An IBusEngine. ++ * ++ * This signal is emitted whenever the up cursor key is pressed. ++ * Implement cursor_up() in extend class to receive this signal. ++ */ + engine_signals[CURSOR_UP] = + g_signal_new (I_("cursor-up"), + G_TYPE_FROM_CLASS (gobject_class), +@@ -325,6 +413,13 @@ ibus_engine_class_init (IBusEngineClass *klass) + G_TYPE_NONE, + 0); + ++ /** ++ * IBusEngine::cursor-down: ++ * @engine: An IBusEngine. ++ * ++ * This signal is emitted whenever the down cursor key is pressed. ++ * Implement cursor_down() in extend class to receive this signal. ++ */ + engine_signals[CURSOR_DOWN] = + g_signal_new (I_("cursor-down"), + G_TYPE_FROM_CLASS (gobject_class), +@@ -335,6 +430,13 @@ ibus_engine_class_init (IBusEngineClass *klass) + G_TYPE_NONE, + 0); + ++ /** ++ * IBusEngine::property-activate: ++ * @engine: An IBusEngine. ++ * ++ * This signal is emitted whenever a property is activated or change changed. ++ * Implement property_activate() in extend class to receive this signal. ++ */ + engine_signals[PROPERTY_ACTIVATE] = + g_signal_new (I_("property-activate"), + G_TYPE_FROM_CLASS (gobject_class), +@@ -347,6 +449,13 @@ ibus_engine_class_init (IBusEngineClass *klass) + G_TYPE_STRING, + G_TYPE_UINT); + ++ /** ++ * IBusEngine::property-show: ++ * @engine: An IBusEngine. ++ * ++ * This signal is emitted whenever a property is shown. ++ * Implement property_show() in extend class to receive this signal. ++ */ + engine_signals[PROPERTY_SHOW] = + g_signal_new (I_("property-show"), + G_TYPE_FROM_CLASS (gobject_class), +@@ -358,6 +467,13 @@ ibus_engine_class_init (IBusEngineClass *klass) + 1, + G_TYPE_STRING); + ++ /** ++ * IBusEngine::property-hide: ++ * @engine: An IBusEngine. ++ * ++ * This signal is emitted whenever a property is hidden. ++ * Implement property_hide() in extend class to receive this signal. ++ */ + engine_signals[PROPERTY_HIDE] = + g_signal_new (I_("property-hide"), + G_TYPE_FROM_CLASS (gobject_class), +@@ -915,9 +1031,10 @@ ibus_engine_hide_auxiliary_text (IBusEngine *engine) + G_TYPE_INVALID); + } + +-void ibus_engine_update_lookup_table (IBusEngine *engine, +- IBusLookupTable *table, +- gboolean visible) ++void ++ibus_engine_update_lookup_table (IBusEngine *engine, ++ IBusLookupTable *table, ++ gboolean visible) + { + _send_signal (engine, + "UpdateLookupTable", +@@ -926,6 +1043,35 @@ void ibus_engine_update_lookup_table (IBusEngine *engine, + G_TYPE_INVALID); + } + ++void ++ibus_engine_update_lookup_table_fast (IBusEngine *engine, ++ IBusLookupTable *table, ++ gboolean visible) ++{ ++ IBusLookupTable *new_table; ++ gint page_begin; ++ gint i; ++ ++ if (table->candidates->len < table->page_size << 2) { ++ ibus_engine_update_lookup_table (engine, table, visible); ++ return; ++ } ++ ++ page_begin = (table->cursor_pos / table->page_size) * table->page_size; ++ ++ new_table = ibus_lookup_table_new (table->page_size, 0, table->cursor_visible, table->round); ++ ++ for (i = page_begin; i < page_begin + table->page_size && i < table->candidates->len; i++) { ++ ibus_lookup_table_append_candidate (new_table, ibus_lookup_table_get_candidate (table, i)); ++ } ++ ++ ibus_lookup_table_set_cursor_pos (new_table, ibus_lookup_table_get_cursor_in_page (table)); ++ ++ ibus_engine_update_lookup_table (engine, new_table, visible); ++ ++ g_object_unref (new_table); ++} ++ + void ibus_engine_show_lookup_table (IBusEngine *engine) + { + _send_signal (engine, +@@ -942,13 +1088,11 @@ void ibus_engine_hide_lookup_table (IBusEngine *engine) + + void ibus_engine_forward_key_event (IBusEngine *engine, + guint keyval, +- gboolean is_press, + guint state) + { + _send_signal (engine, +- "HideLookupTable", ++ "ForwardKeyEvent", + G_TYPE_UINT, &keyval, +- G_TYPE_BOOLEAN, &is_press, + G_TYPE_UINT, &state, + G_TYPE_INVALID); + } +diff --git a/src/ibusengine.h b/src/ibusengine.h +index 1a35c06..4fe12dc 100644 +--- a/src/ibusengine.h ++++ b/src/ibusengine.h +@@ -129,6 +129,10 @@ void ibus_engine_update_lookup_table + (IBusEngine *engine, + IBusLookupTable *lookup_table, + gboolean visible); ++void ibus_engine_update_lookup_table_fast ++ (IBusEngine *engine, ++ IBusLookupTable *lookup_table, ++ gboolean visible); + void ibus_engine_show_lookup_table + (IBusEngine *engine); + void ibus_engine_hide_lookup_table +@@ -137,7 +141,6 @@ void ibus_engine_hide_lookup_table + void ibus_engine_forward_key_event + (IBusEngine *engine, + guint keyval, +- gboolean is_press, + guint state); + + void ibus_engine_register_properties +diff --git a/src/ibusenginedesc.c b/src/ibusenginedesc.c +index 39062b3..f9173e7 100644 +--- a/src/ibusenginedesc.c ++++ b/src/ibusenginedesc.c +@@ -264,7 +264,7 @@ ibus_engine_desc_output (IBusEngineDesc *desc, + OUTPUT_ENTRY_1(icon); + OUTPUT_ENTRY_1(layout); + g_string_append_indent (output, indent + 1); +- g_string_append_printf (output, "%u", desc->rank); ++ g_string_append_printf (output, "%u\n", desc->rank); + #undef OUTPUT_ENTRY + #undef OUTPUT_ENTRY_1 + g_string_append_indent (output, indent); +diff --git a/src/ibusenginedesc.h b/src/ibusenginedesc.h +index 1ba9153..ad83f1f 100644 +--- a/src/ibusenginedesc.h ++++ b/src/ibusenginedesc.h +@@ -17,6 +17,22 @@ + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ ++/** ++ * SECTION: ibusenginedesc ++ * @short_description: Input method engine description data. ++ * @stability: Stable ++ * @see_also: #IBusComponent, #IBusEngine ++ * ++ * An IBusEngineDesc stores description data of IBusEngine. ++ * The description data can either be passed to ibus_engine_desc_new(), ++ * or loaded from an XML node through ibus_engine_desc_new_from_xml_node() ++ * to construct IBusEngineDesc. ++ * ++ * However, the recommended way to load engine description data is ++ * using ibus_component_new_from_file() to load a component file, ++ * which also includes engine description data. ++ */ ++ + #ifndef __ENGINE_DESC_H_ + #define __ENGINE_DESC_H_ + +@@ -47,10 +63,26 @@ typedef struct _IBusEngineDesc IBusEngineDesc; + typedef struct _IBusEngineDescClass IBusEngineDescClass; + typedef struct _BusComponent BusComponent; + ++/** ++ * IBusEngineDesc: ++ * @name: Name of the engine. ++ * @longname: Long name of the input method engine. ++ * @description: Input method engine description. ++ * @language: Language (e.g. zh, jp) supported by this input method engine. ++ * @license: License of the input method engine. ++ * @author: Author of the input method engine. ++ * @icon: Icon file of this engine. ++ * @layout: Keyboard layout ++ * @rank: Preference rank among engines, the highest ranked IME will put in ++ * the front. ++ * ++ * Input method engine description data. ++ */ + struct _IBusEngineDesc { + IBusSerializable parent; + /* instance members */ + ++ /*< public >*/ + gchar *name; + gchar *longname; + gchar *description; +@@ -64,11 +96,25 @@ struct _IBusEngineDesc { + + struct _IBusEngineDescClass { + IBusSerializableClass parent; +- + /* class members */ + }; + + GType ibus_engine_desc_get_type (void); ++ ++/** ++ * ibus_engine_desc_new: ++ * @name: Name of the engine. ++ * @longname: Long name of the input method engine. ++ * @description: Input method engine description. ++ * @language: Language (e.g. zh, jp) supported by this input method engine. ++ * @license: License of the input method engine. ++ * @author: Author of the input method engine. ++ * @icon: Icon file of this engine. ++ * @layout: Keyboard layout ++ * @returns: A newly allocated IBusEngineDesc. ++ * ++ * New a IBusEngineDesc. ++ */ + IBusEngineDesc *ibus_engine_desc_new (const gchar *name, + const gchar *longname, + const gchar *description, +@@ -77,8 +123,28 @@ IBusEngineDesc *ibus_engine_desc_new (const gchar *name, + const gchar *author, + const gchar *icon, + const gchar *layout); ++/** ++ * ibus_engine_desc_new_from_xml_node: ++ * @node: An XML node ++ * @returns: A newly allocated IBusEngineDesc that contains description from ++ * @node. ++ * ++ * New a IBusEngineDesc from an XML node. ++ * This function is called by ibus_component_new_from_file(), ++ * so developers normally do not need to call it directly. ++ * ++ */ + IBusEngineDesc *ibus_engine_desc_new_from_xml_node + (XMLNode *node); ++/** ++ * ibus_engine_desc_output: ++ * @info: An IBusEngineDesc ++ * @output: XML-formatted Input method engine description. ++ * @indent: Number of indent (showed as 4 spaces). ++ * ++ * Output XML-formatted input method engine description. ++ * The result will be append to GString specified in @output. ++ */ + void ibus_engine_desc_output (IBusEngineDesc *info, + GString *output, + gint indent); +diff --git a/src/ibusinputcontext.c b/src/ibusinputcontext.c +index 94de55a..95754cf 100644 +--- a/src/ibusinputcontext.c ++++ b/src/ibusinputcontext.c +@@ -426,14 +426,12 @@ ibus_input_context_ibus_signal (IBusProxy *proxy, + IBUS_INTERFACE_INPUT_CONTEXT, + "ForwardKeyEvent")) { + guint32 keyval; +- gboolean is_press; + guint32 state; + gboolean retval; + + retval = ibus_message_get_args (message, + &error, + G_TYPE_UINT, &keyval, +- G_TYPE_BOOLEAN, &is_press, + G_TYPE_UINT, &state, + G_TYPE_INVALID); + +diff --git a/src/ibuslookuptable.c b/src/ibuslookuptable.c +index 37342c5..5e1bc81 100644 +--- a/src/ibuslookuptable.c ++++ b/src/ibuslookuptable.c +@@ -273,6 +273,8 @@ ibus_lookup_table_clear (IBusLookupTable *table) + } + + g_array_set_size (table->candidates, 0); ++ ++ table->cursor_pos = 0; + } + + void +diff --git a/src/ibusobject.h b/src/ibusobject.h +index 67fb95b..a3adfe2 100644 +--- a/src/ibusobject.h ++++ b/src/ibusobject.h +@@ -17,9 +17,24 @@ + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ ++/** ++ * SECTION: ibusobject ++ * @short_description: Base Object of iBus. ++ * @stability: Stable ++ * ++ * iBus Object is the base object for all objects in iBus. ++ */ + #ifndef __IBUS_OBJECT_H_ + #define __IBUS_OBJECT_H_ + ++/** ++ * SECTION: iBusObject ++ * @short_description: Base object of iBus. ++ * ++ * ++ * This module provides essential definition and functions for manipulating ++ * iBus base object. ++ */ + #include + #include "ibusmarshalers.h" + #include "ibustypes.h" +diff --git a/src/ibusproperty.h b/src/ibusproperty.h +index 19ff33c..d28d3a8 100644 +--- a/src/ibusproperty.h ++++ b/src/ibusproperty.h +@@ -17,6 +17,19 @@ + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ ++/** ++ * SECTION: ibusproperty ++ * @short_description: UI component for input method engine property. ++ * @stability: Stable ++ * @see_also: #IBusEngine ++ * ++ * An IBusProperty is an UI component like a button or a menu item ++ * which shows the status of corresponding input method engine property. ++ * End user can operate and see the current status of IME through these components. ++ * For example, ibus-chewing users change the English/Chinese input mode by ++ * pressing ctrl-space or click on the Eng/Chi switch button. ++ * And the IBusProperty shows the change correspondingly. ++ */ + #ifndef __IBUS_PROPERTY_H_ + #define __IBUS_PROPERTY_H_ + +@@ -59,7 +72,17 @@ G_BEGIN_DECLS + #define IBUS_PROP_LIST_GET_CLASS(obj) \ + (G_TYPE_INSTANCE_GET_CLASS ((obj), IBUS_TYPE_PROP_LIST, IBusPropListClass)) + +- ++/** ++ * IBusPropType: ++ * @PROP_TYPE_NORMAL: Property is shown as normal text. ++ * @PROP_TYPE_TOGGLE: Property is shown as a toggle button. ++ * @PROP_TYPE_RADIO: Property is shown as a radio selection option. ++ * @PROP_TYPE_MENU: Property is shown as a menu, usually imply it has sub menu ++ * items. ++ * @PROP_TYPE_SEPARATOR: A separator for menu. ++ * ++ * Type of IBusProperty. ++ */ + typedef enum { + PROP_TYPE_NORMAL = 0, + PROP_TYPE_TOGGLE = 1, +@@ -68,6 +91,28 @@ typedef enum { + PROP_TYPE_SEPARATOR = 4, + } IBusPropType; + ++/** ++ * IBusPropState: ++ * @PROP_STATE_UNCHECKED: Property option is unchecked. ++ * @PROP_STATE_CHECKED: Property option is checked. ++ * @PROP_STATE_INCONSISTENT: The state is inconsistent with the associated IME ++ * property. ++ * ++ * State of IBusProperty. The actual effect depends on #IBusPropType of the ++ * IBusProperty. ++ * ++ * ++ * ++ * PROP_TYPE_TOGGLE ++ * Emphasized if PROP_STATE_CHECKED, normal otherwise. ++ * ++ * ++ * PROP_TYPE_RADIO ++ * Option checked if PROP_STATE_CHECKED, unchecked otherwise. ++ * ++ * ++ * No effect on other types. ++ */ + typedef enum { + PROP_STATE_UNCHECKED = 0, + PROP_STATE_CHECKED = 1, +@@ -80,9 +125,25 @@ typedef struct _IBusPropertyClass IBusPropertyClass; + typedef struct _IBusPropList IBusPropList; + typedef struct _IBusPropListClass IBusPropListClass; + ++/** ++ * IBusProperty: ++ * @key: Unique Identity for the IBusProperty. ++ * @icon: Icon file for the IBusProperty. ++ * @label: Text shown in UI. ++ * @tooltip: Message shown if mouse hovered the IBusProperty. ++ * @sensitive: Whether the IBusProperty is sensitive to keyboard and mouse event. ++ * @visible: Whether the IBusProperty is visible. ++ * @type: IBusPropType of IBusProperty. ++ * @state: IBusPropState of IBusProperty. ++ * @sub_props: IBusPropList that contains sub IBusProperties. These IBusProperties are usually ++ * shown as sub menu item. ++ * ++ * UI component for input method engine property. ++ */ + struct _IBusProperty { + IBusSerializable parent; + ++ /*< public >*/ + gchar *key; + gchar *icon; + IBusText *label; +@@ -100,9 +161,16 @@ struct _IBusPropertyClass { + IBusSerializableClass parent; + }; + ++/** ++ * IBusPropList: ++ * @properties: GArray that holds IBusProperties. ++ * ++ * A GArray of IBusProperties. ++ */ + struct _IBusPropList { + IBusSerializable parent; + ++ /*< public >*/ + GArray *properties; + }; + +@@ -111,6 +179,22 @@ struct _IBusPropListClass { + }; + + GType ibus_property_get_type (); ++ ++/** ++ * ibus_property_new: ++ * @key: Unique Identity for the IBusProperty. ++ * @icon: Icon file for the IBusProperty. ++ * @label: Text shown in UI. ++ * @tooltip: Message shown if mouse hovered the IBusProperty. ++ * @sensitive: Whether the IBusProperty is sensitive to keyboard and mouse event. ++ * @visible: Whether the IBusProperty is visible. ++ * @type: IBusPropType of IBusProperty. ++ * @state: IBusPropState of IBusProperty. ++ * @prop_list: IBusPropList that contains sub IBusProperties. ++ * @returns: A newly allocated IBusProperty. ++ * ++ * New a IBusProperty. ++ */ + IBusProperty *ibus_property_new (const gchar *key, + IBusPropType type, + IBusText *label, +@@ -120,21 +204,90 @@ IBusProperty *ibus_property_new (const gchar *key, + gboolean visible, + IBusPropState state, + IBusPropList *prop_list); ++ ++/** ++ * ibus_property_set_label: ++ * @prop: An IBusProperty. ++ * @label: Text shown in UI. ++ * ++ * Set the label of IBusProperty. ++ */ + void ibus_property_set_label (IBusProperty *prop, + IBusText *label); ++ ++/** ++ * ibus_property_set_visible: ++ * @prop: An IBusProperty. ++ * @visible: Whether the IBusProperty is visible. ++ * ++ * Set whether the IBusProperty is visible. ++ */ + void ibus_property_set_visible (IBusProperty *prop, + gboolean visible); ++ ++/** ++ * ibus_property_set_sub_props: ++ * @prop: An IBusProperty. ++ * @prop_list: IBusPropList that contains sub IBusProperties. ++ * ++ * Set the sub IBusProperties. ++ */ + void ibus_property_set_sub_props(IBusProperty *prop, + IBusPropList *prop_list); ++ ++/** ++ * ibus_property_update: ++ * @prop: An IBusProperty. ++ * @prop_update: IBusPropList that contains sub IBusProperties. ++ * @returns: TRUE for update suceeded; FALSE otherwise. ++ * ++ * Update the content of an IBusProperty. ++ * IBusProperty @prop_update can either be sub-property of @prop, ++ * or holds new values for @prop. ++ */ ++ + gboolean ibus_property_update (IBusProperty *prop, + IBusProperty *prop_update); + + GType ibus_prop_list_get_type (); ++ ++/** ++ * ibus_prop_list_new: ++ * @returns: A newly allocated IBusPropList. ++ * ++ * New a IBusPropList. ++ */ + IBusPropList *ibus_prop_list_new (); ++ ++/** ++ * ibus_prop_list_append: ++ * @prop_list: An IBusPropList. ++ * @prop: IBusProperty to be append to @prop_list. ++ * ++ * Append an IBusProperty to an IBusPropList. ++ */ + void ibus_prop_list_append (IBusPropList *prop_list, + IBusProperty *prop); ++ ++/** ++ * ibus_prop_list_get: ++ * @prop_list: An IBusPropList. ++ * @index: Index of an IBusPropList. ++ * @returns: IBusProperty at given index, NULL if no such IBusProperty. ++ * ++ * Returns IBusProperty at given index. ++ */ + IBusProperty *ibus_prop_list_get (IBusPropList *prop_list, + guint index); ++ ++/** ++ * ibus_prop_list_update_property: ++ * @prop_list: An IBusPropList. ++ * @prop: IBusProperty to be update. ++ * @returns: TRUE if succeeded, FALSE otherwise. ++ * ++ * Update an IBusProperty in IBusPropList. ++ */ + gboolean ibus_prop_list_update_property + (IBusPropList *prop_list, + IBusProperty *prop); +diff --git a/src/ibustext.h b/src/ibustext.h +index 9696f80..1c48c1e 100644 +--- a/src/ibustext.h ++++ b/src/ibustext.h +@@ -17,6 +17,17 @@ + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ ++/** ++ * SECTION: ibustext ++ * @short_description: Text with decorating information. ++ * @see_also: #IBusAttribute ++ * ++ * An IBusText is the main text object in IBus. ++ * The text is decorated according to associated IBusAttribute, ++ * e.g. the foreground/background color, underline, and ++ * applied scope. ++ */ ++ + #ifndef __IBUS_TEXT_H_ + #define __IBUS_TEXT_H_ + +@@ -45,10 +56,19 @@ G_BEGIN_DECLS + typedef struct _IBusText IBusText; + typedef struct _IBusTextClass IBusTextClass; + ++/** ++ * IBusText: ++ * @is_static: Whether @text is static, i.e., no need and will not be freed. Only TRUE if IBusText is newed from ibus_text_new_from_static_string(). ++ * @text: The string content of IBusText in UTF-8. ++ * @attrs: Associated IBusAttributes. ++ * ++ * A text object in IBus. ++ */ + struct _IBusText { + IBusSerializable parent; + + /* members */ ++ /*< public >*/ + gboolean is_static; + gchar *text; + IBusAttrList *attrs; +@@ -59,17 +79,79 @@ struct _IBusTextClass { + }; + + GType ibus_text_get_type (void); ++ ++/** ++ * ibus_text_new_from_string: ++ * @str: An text string to be set. ++ * @returns: A newly allocated IBusText. ++ * ++ * New an IBusText whose content is copied from a text string. ++ */ + IBusText *ibus_text_new_from_string (const gchar *str); ++ ++/** ++ * ibus_text_new_from_ucs4: ++ * @str: An text string to be set. ++ * @returns: A newly allocated IBusText. ++ * ++ * New an IBusText whose content is copied from a UCS4 encoded text string. ++ */ + IBusText *ibus_text_new_from_ucs4 (const gunichar *str); ++ ++/** ++ * ibus_text_new_from_static_string: ++ * @str: An text string to be set. ++ * @returns: A newly allocated IBusText. ++ * ++ * New an IBusText whose content is from a static string. ++ * Note that it is the developer's duty to ensure @str is static. ++ */ + IBusText *ibus_text_new_from_static_string (const gchar *str); ++ ++/** ++ * ibus_text_new_from_printf: ++ * @fmt: printf format string. ++ * @...: arguments for @fmt. ++ * @returns: A newly allocated IBusText. ++ * ++ * New an IBusText from a printf expression. ++ */ + IBusText *ibus_text_new_from_printf (const gchar *fmt, + ...); ++ ++/** ++ * ibus_text_new_from_unichar: ++ * @c: A single UCS4-encoded character. ++ * @returns: A newly allocated IBusText. ++ * ++ * New an IBusText from a single UCS4-encoded character. ++ */ + IBusText *ibus_text_new_from_unichar (gunichar c); ++ ++/** ++ * ibus_text_append_attribute: ++ * @text: an IBusText ++ * @type: IBusAttributeType for @text. ++ * @value: Value for the type. ++ * @start_index: The starting index, inclusive. ++ * @end_index: The ending index, exclusive. ++ * ++ * Append an IBusAttribute for IBusText. ++ */ + void ibus_text_append_attribute (IBusText *text, + guint type, + guint value, + guint start_index, + gint end_index); ++/** ++ * ibus_text_get_length: ++ * @text: An IBusText. ++ * @returns: Number of character in @text, not counted by bytes. ++ * ++ * Return number of characters in an IBusText. ++ * This function is based on g_utf8_strlen(), so unlike strlen(), ++ * it does not count by bytes but characters instead. ++ */ + guint ibus_text_get_length (IBusText *text); + + G_END_DECLS +diff --git a/src/ibustypes.h b/src/ibustypes.h +index a977db4..b2ea627 100644 +--- a/src/ibustypes.h ++++ b/src/ibustypes.h +@@ -17,9 +17,41 @@ + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ ++/** ++ * SECTION: ibustypes ++ * @short_description: Generic types for iBus. ++ * @stability: Stable ++ * ++ * This session consists generic types for iBus, including shift/control key modifiers, ++ * and a rectangle structure. ++ */ + #ifndef __IBUS_TYPES_H_ + #define __IBUS_TYPES_H_ + ++/** ++ * IBusModifierType: ++ * @IBUS_SHIFT_MASK: Shift is activated. ++ * @IBUS_LOCK_MASK: Cap Lock is locked. ++ * @IBUS_CONTROL_MASK: Control key is activated. ++ * @IBUS_MOD1_MASK: Modifier 1 (Usually Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd)) activated. ++ * @IBUS_MOD2_MASK: Modifier 2 (Usually Num_Lock (0x4d)) activated. ++ * @IBUS_MOD3_MASK: Modifier 3 activated. ++ * @IBUS_MOD4_MASK: Modifier 4 (Usually Super_L (0xce), Hyper_L (0xcf)) activated. ++ * @IBUS_MOD5_MASK: Modifier 5 (ISO_Level3_Shift (0x5c), Mode_switch (0xcb)) activated. ++ * @IBUS_BUTTON1_MASK: Mouse button 1 (left) is activated. ++ * @IBUS_BUTTON2_MASK: Mouse button 2 (middle) is activated. ++ * @IBUS_BUTTON3_MASK: Mouse button 3 (right) is activated. ++ * @IBUS_BUTTON4_MASK: Mouse button 4 (scroll up) is activated. ++ * @IBUS_BUTTON5_MASK: Mouse button 5 (scroll down) is activated. ++ * @IBUS_FORWARD_MASK: Forward mask. ++ * @IBUS_SUPER_MASK: Super (Usually Win) key is activated. ++ * @IBUS_HYPER_MASK: Hyper key is activated. ++ * @IBUS_RELEASE_MASK: Key is released. ++ * @IBUS_MODIFIER_MASK: Modifier mask for the all the masks above. ++ * ++ * Handles key modifier such as control, shift and alt and release event. ++ * Note that nits 15 - 25 are currently unused, while bit 29 is used internally. ++ */ + typedef enum + { + IBUS_SHIFT_MASK = 1 << 0, +@@ -40,7 +72,7 @@ typedef enum + * Bits 15 - 25 are currently unused. Bit 29 is used internally. + */ + +- /* forard mask */ ++ /* forward mask */ + IBUS_FORWARD_MASK = 1 << 25, + + IBUS_SUPER_MASK = 1 << 26, +@@ -52,6 +84,16 @@ typedef enum + IBUS_MODIFIER_MASK = 0x5c001fff + } IBusModifierType; + ++/** ++ * IBusCapabilite: ++ * @IBUS_CAP_PREEDIT_TEXT: UI is capable to show pre-edit text. ++ * @IBUS_CAP_AUXILIARY_TEXT: UI is capable to show auxiliary text. ++ * @IBUS_CAP_LOOKUP_TABLE: UI is capable to show the lookup table. ++ * @IBUS_CAP_FOCUS: UI is capable to get focus. ++ * @IBUS_CAP_PROPERTY: UI is capable to have property. ++ * ++ * Capability flags of UI. ++ */ + typedef enum { + IBUS_CAP_PREEDIT_TEXT = 1 << 0, + IBUS_CAP_AUXILIARY_TEXT = 1 << 1, +@@ -60,6 +102,15 @@ typedef enum { + IBUS_CAP_PROPERTY = 1 << 4, + } IBusCapabilite; + ++/** ++ * IBusRectangle: ++ * @x: x coordinate. ++ * @y: y coordinate. ++ * @width: width of the rectangle. ++ * @height: height of the renctangl. ++ * ++ * Rectangle definition. ++ */ + typedef struct _IBusRectangle IBusRectangle; + struct _IBusRectangle { + gint x; +@@ -68,7 +119,13 @@ struct _IBusRectangle { + gint height; + }; + +-typedef void (* IBusFreeFunc) (gpointer ); ++/** ++ * IBusFreeFunc: ++ * @object: object to be freed. ++ * ++ * Free function prototype. ++ */ ++typedef void (* IBusFreeFunc) (gpointer object); + + #endif + +diff --git a/ui/gtk/candidatepanel.py b/ui/gtk/candidatepanel.py +index db02163..05c4e71 100644 +--- a/ui/gtk/candidatepanel.py ++++ b/ui/gtk/candidatepanel.py +@@ -238,11 +238,11 @@ class CandidatePanel(gtk.VBox): + else: + # package all widgets in HORIZONTAL mode + image = gtk.Image() +- image.set_from_stock(gtk.STOCK_GO_BACK, gtk.ICON_SIZE_MENU) ++ image.set_from_stock(gtk.STOCK_GO_UP, gtk.ICON_SIZE_MENU) + self.__prev_button.set_image(image) + + image = gtk.Image() +- image.set_from_stock(gtk.STOCK_GO_FORWARD, gtk.ICON_SIZE_MENU) ++ image.set_from_stock(gtk.STOCK_GO_DOWN, gtk.ICON_SIZE_MENU) + self.__next_button.set_image(image) + + vbox = gtk.VBox() diff --git a/ibus.spec b/ibus.spec index 6eb6dbc..6850ec6 100644 --- a/ibus.spec +++ b/ibus.spec @@ -8,7 +8,7 @@ Name: ibus Version: 1.1.0.20090311 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ Group: System Environment/Libraries @@ -20,6 +20,7 @@ Patch0: ibus-HEAD.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +BuildRequires: cvs BuildRequires: gettext-devel BuildRequires: libtool BuildRequires: python @@ -103,7 +104,9 @@ docs for ibus. %prep %setup -q -# %patch0 -p1 +rm -rf docs/reference/ibus/ibus-sections.txt +%patch0 -p1 +./autogen.sh --help %build %configure --disable-static \ @@ -214,6 +217,11 @@ fi %{_libdir}/pkgconfig/* %changelog +* Sat Mar 28 2009 Huang Peng - 1.1.0.20090311-2 +- Recreate the ibus-HEAD.patch from upstream git source tree. +- Fixe bug 490009 - Deleting Next Engine shortcuts doesn't work +- Fixe bug 490381 - Change "Next/Previous engine" labels + * Wed Mar 11 2009 Huang Peng - 1.1.0.20090311-1 - Update to ibus-1.1.0.20090311. - Update setup ui follow GNOME Human Interface Guidelines 2.2 (#489497).