Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:12.1:Update
ibus-pinyin
ibus-pinyin-ibus-1.4-build.diff
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File ibus-pinyin-ibus-1.4-build.diff of Package ibus-pinyin
--- src/PYConfig.cc | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++++--- src/PYConfig.h | 16 ++++++++--- 2 files changed, 85 insertions(+), 8 deletions(-) --- a/src/PYConfig.cc +++ b/src/PYConfig.cc @@ -153,6 +153,18 @@ Config::read (const gchar * name, bool defval) { +#if IBUS_CHECK_VERSION(1,3,99) + GVariant *value = NULL; + value = ibus_config_get_value (get<IBusConfig> (), m_section.c_str (), name); + if (value) { + if (g_variant_classify (value) == G_VARIANT_CLASS_BOOLEAN) + return g_variant_get_boolean (value); + } + + // write default value to config + value = g_variant_new ("b", defval); + ibus_config_set_value (get<IBusConfig> (), m_section.c_str (), name, value); +#else GValue value = {0}; if (ibus_config_get_value (get<IBusConfig> (), m_section.c_str (), name, &value)) { if (G_VALUE_TYPE (&value) == G_TYPE_BOOLEAN) @@ -163,6 +175,7 @@ g_value_init (&value, G_TYPE_BOOLEAN); g_value_set_boolean (&value, defval); ibus_config_set_value (get<IBusConfig> (), m_section.c_str (), name, &value); +#endif return defval; } @@ -171,6 +184,18 @@ Config::read (const gchar * name, gint defval) { +#if IBUS_CHECK_VERSION(1,3,99) + GVariant *value = NULL; + value = ibus_config_get_value (get<IBusConfig> (), m_section.c_str (), name); + if (value) { + if (g_variant_classify (value) == G_VARIANT_CLASS_INT32) + return g_variant_get_int32 (value); + } + + // write default value to config + value = g_variant_new ("i", defval); + ibus_config_set_value (get<IBusConfig> (), m_section.c_str (), name, value); +#else GValue value = {0}; if (ibus_config_get_value (get<IBusConfig> (), m_section.c_str (), name, &value)) { if (G_VALUE_TYPE (&value) == G_TYPE_INT) @@ -181,6 +206,7 @@ g_value_init (&value, G_TYPE_INT); g_value_set_int (&value, defval); ibus_config_set_value (get<IBusConfig> (), m_section.c_str (), name, &value); +#endif return defval; } @@ -189,6 +215,18 @@ Config::read (const gchar * name, const gchar * defval) { +#if IBUS_CHECK_VERSION(1,3,99) + GVariant *value = NULL; + value = ibus_config_get_value (get<IBusConfig> (), m_section.c_str (), name); + if (value) { + if (g_variant_classify (value) == G_VARIANT_CLASS_STRING) + return g_variant_get_string (value, NULL); + } + + // write default value to config + value = g_variant_new ("s", defval); + ibus_config_set_value (get<IBusConfig> (), m_section.c_str (), name, value); +#else GValue value = {0}; if (ibus_config_get_value (get<IBusConfig> (), m_section.c_str (), name, &value)) { if (G_VALUE_TYPE (&value) == G_TYPE_STRING) @@ -199,10 +237,20 @@ g_value_init (&value, G_TYPE_STRING); g_value_set_static_string (&value, defval); ibus_config_set_value (get<IBusConfig> (), m_section.c_str (), name, &value); +#endif return defval; } +#if IBUS_CHECK_VERSION(1,3,99) +static inline bool +normalizeGValue (GVariant *value, bool defval) +{ + if (value == NULL || g_variant_classify (value) != G_VARIANT_CLASS_BOOLEAN) + return defval; + return g_variant_get_boolean (value); +} +#else static inline bool normalizeGValue (const GValue *value, bool defval) { @@ -210,7 +258,17 @@ return defval; return g_value_get_boolean (value); } +#endif +#if IBUS_CHECK_VERSION(1,3,99) +static inline gint +normalizeGValue (GVariant *value, gint defval) +{ + if (value == NULL || g_variant_classify (value) != G_VARIANT_CLASS_INT32) + return defval; + return g_variant_get_int32 (value); +} +#else static inline gint normalizeGValue (const GValue *value, gint defval) { @@ -218,7 +276,17 @@ return defval; return g_value_get_int (value); } +#endif +#if IBUS_CHECK_VERSION(1,3,99) +static inline const gchar * +normalizeGValue (GVariant *value, const gchar * defval) +{ + if (value == NULL || g_variant_classify (value) != G_VARIANT_CLASS_STRING) + return defval; + return g_variant_get_string (value, NULL); +} +#else static inline const gchar * normalizeGValue (const GValue *value, const gchar * defval) { @@ -226,11 +294,12 @@ return defval; return g_value_get_string (value); } +#endif gboolean Config::valueChanged (const std::string & section, const std::string & name, - const GValue *value) + ibus_valref_t value) { if (m_section != section) return FALSE; @@ -278,7 +347,7 @@ Config::valueChangedCallback (IBusConfig *config, const gchar *section, const gchar *name, - const GValue *value, + ibus_valref_t value, Config *self) { self->valueChanged (section, name, value); @@ -363,7 +432,7 @@ gboolean PinyinConfig::valueChanged (const std::string & section, const std::string & name, - const GValue *value) + ibus_valref_t value) { if (m_section != section) return FALSE; @@ -465,7 +534,7 @@ gboolean BopomofoConfig::valueChanged (const std::string & section, const std::string & name, - const GValue *value) + ibus_valref_t value) { if (m_section != section) return FALSE; --- a/src/PYConfig.h +++ b/src/PYConfig.h @@ -26,6 +26,14 @@ #include <ibus.h> #include "PYObject.h" +#if IBUS_CHECK_VERSION(1,3,99) +typedef GVariant *ibus_valref_t; +typedef GVariant ibus_val_t; +#else +typedef const GValue *ibus_valref_t; +typedef GValue ibus_val_t; +#endif + namespace PY { class Bus; @@ -66,12 +74,12 @@ virtual gboolean valueChanged (const std::string & section, const std::string & name, - const GValue *value); + ibus_valref_t value); private: static void valueChangedCallback (IBusConfig *config, const gchar *section, const gchar *name, - const GValue *value, + ibus_valref_t value, Config *self); protected: @@ -115,7 +123,7 @@ virtual gboolean valueChanged (const std::string & section, const std::string & name, - const GValue *value); + ibus_valref_t value); private: static boost::scoped_ptr<PinyinConfig> m_instance; @@ -133,7 +141,7 @@ virtual gboolean valueChanged (const std::string & section, const std::string & name, - const GValue *value); + ibus_valref_t value); private: static boost::scoped_ptr<BopomofoConfig> m_instance;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor