~ubuntu-branches/ubuntu/quantal/ibus/quantal

« back to all changes in this revision

Viewing changes to src/ibusproperty.c

  • Committer: Bazaar Package Importer
  • Author(s): Barry Warsaw
  • Date: 2011-08-11 17:00:57 UTC
  • mfrom: (6.2.14 sid)
  • Revision ID: james.westby@ubuntu.com-20110811170057-6dmbfs4s3cchzl7x
Tags: 1.3.99.20110419-1ubuntu1
* Merge with Debian unstable.  Remaining Ubuntu changes:
  - Indicator support:
    + Add 05_appindicator.patch: Use an indicator rather than a notification
      icon.
    + debian/control: Recommend python-appindicator.
  - debian/control: Install im-switch instead of im-config by default.
  - debian/README.source: Removed, it was outdated and no longer correct
  - debian/patches/01_ubuntu_desktop: Fix "Desktop entry needs the
    X-Ubuntu-Gettext-Domain key"  (LP: #457632)
  - debian/patches/02_title_update.patch: Rename "IBus Preferences" to
    "Keyboard Input Methods"
  - debian/patches/06_locale_parser.patch: Cherry-picked from upstream.

Show diffs side-by-side

added added

removed removed

Lines of Context:
25
25
/* functions prototype */
26
26
static void         ibus_property_destroy       (IBusProperty       *prop);
27
27
static gboolean     ibus_property_serialize     (IBusProperty       *prop,
28
 
                                                 IBusMessageIter    *iter);
29
 
static gboolean     ibus_property_deserialize   (IBusProperty       *prop,
30
 
                                                 IBusMessageIter    *iter);
 
28
                                                 GVariantBuilder    *builder);
 
29
static gint         ibus_property_deserialize   (IBusProperty       *prop,
 
30
                                                 GVariant           *variant);
31
31
static gboolean     ibus_property_copy          (IBusProperty       *dest,
32
32
                                                 const IBusProperty *src);
33
33
 
34
34
G_DEFINE_TYPE (IBusProperty, ibus_property, IBUS_TYPE_SERIALIZABLE)
35
35
 
36
36
static void
37
 
ibus_property_class_init (IBusPropertyClass *klass)
 
37
ibus_property_class_init (IBusPropertyClass *class)
38
38
{
39
 
    IBusObjectClass *object_class = IBUS_OBJECT_CLASS (klass);
40
 
    IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (klass);
 
39
    IBusObjectClass *object_class = IBUS_OBJECT_CLASS (class);
 
40
    IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (class);
41
41
 
42
42
    object_class->destroy = (IBusObjectDestroyFunc) ibus_property_destroy;
43
43
 
44
44
    serializable_class->serialize   = (IBusSerializableSerializeFunc) ibus_property_serialize;
45
45
    serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_property_deserialize;
46
46
    serializable_class->copy        = (IBusSerializableCopyFunc) ibus_property_copy;
47
 
 
48
 
    g_string_append (serializable_class->signature, "suvsvbbuv");
49
47
}
50
48
 
51
49
static void
92
90
 
93
91
gboolean
94
92
ibus_property_serialize (IBusProperty    *prop,
95
 
                         IBusMessageIter *iter)
 
93
                         GVariantBuilder *builder)
96
94
{
97
95
    gboolean retval;
98
96
 
99
 
    retval = IBUS_SERIALIZABLE_CLASS (ibus_property_parent_class)->serialize ((IBusSerializable *) prop, iter);
 
97
    retval = IBUS_SERIALIZABLE_CLASS (ibus_property_parent_class)->serialize ((IBusSerializable *) prop, builder);
100
98
    g_return_val_if_fail (retval, FALSE);
101
99
 
102
100
    g_return_val_if_fail (IBUS_IS_PROPERTY (prop), FALSE);
103
101
 
104
 
    retval = ibus_message_iter_append (iter, G_TYPE_STRING, &prop->key);
105
 
    g_return_val_if_fail (retval, FALSE);
106
 
 
107
 
    retval = ibus_message_iter_append (iter, G_TYPE_UINT, &prop->type);
108
 
    g_return_val_if_fail (retval, FALSE);
109
 
 
110
 
    retval = ibus_message_iter_append (iter, IBUS_TYPE_TEXT, &prop->label);
111
 
    g_return_val_if_fail (retval, FALSE);
112
 
 
113
 
    retval = ibus_message_iter_append (iter, G_TYPE_STRING, &prop->icon);
114
 
    g_return_val_if_fail (retval, FALSE);
115
 
 
116
 
    retval = ibus_message_iter_append (iter, IBUS_TYPE_TEXT, &prop->tooltip);
117
 
    g_return_val_if_fail (retval, FALSE);
118
 
 
119
 
    retval = ibus_message_iter_append (iter, G_TYPE_BOOLEAN, &prop->sensitive);
120
 
    g_return_val_if_fail (retval, FALSE);
121
 
 
122
 
    retval = ibus_message_iter_append (iter, G_TYPE_BOOLEAN, &prop->visible);
123
 
    g_return_val_if_fail (retval, FALSE);
124
 
 
125
 
    retval = ibus_message_iter_append (iter, G_TYPE_UINT, &prop->state);
126
 
    g_return_val_if_fail (retval, FALSE);
127
 
 
128
 
    retval = ibus_message_iter_append (iter, IBUS_TYPE_PROP_LIST, &prop->sub_props);
129
 
    g_return_val_if_fail (retval, FALSE);
 
102
    g_variant_builder_add (builder, "s", prop->key);
 
103
    g_variant_builder_add (builder, "u", prop->type);
 
104
    g_variant_builder_add (builder, "v", ibus_serializable_serialize ((IBusSerializable *)prop->label));
 
105
    g_variant_builder_add (builder, "s", prop->icon);
 
106
    g_variant_builder_add (builder, "v", ibus_serializable_serialize ((IBusSerializable *)prop->tooltip));
 
107
    g_variant_builder_add (builder, "b", prop->sensitive);
 
108
    g_variant_builder_add (builder, "b", prop->visible);
 
109
    g_variant_builder_add (builder, "u", prop->state);
 
110
    g_variant_builder_add (builder, "v", ibus_serializable_serialize ((IBusSerializable *)prop->sub_props));
130
111
 
131
112
    return TRUE;
132
113
}
133
114
 
134
 
static gboolean
135
 
ibus_property_deserialize (IBusProperty    *prop,
136
 
                           IBusMessageIter *iter)
 
115
static gint
 
116
ibus_property_deserialize (IBusProperty *prop,
 
117
                           GVariant     *variant)
137
118
{
138
 
    gboolean retval;
139
 
    gchar *p;
140
 
 
141
 
    retval = IBUS_SERIALIZABLE_CLASS (ibus_property_parent_class)->deserialize ((IBusSerializable *) prop, iter);
142
 
    g_return_val_if_fail (retval, FALSE);
143
 
 
144
 
    retval = ibus_message_iter_get (iter, G_TYPE_STRING, &p);
145
 
    g_return_val_if_fail (retval, FALSE);
146
 
    ibus_message_iter_next (iter);
147
 
    prop->key = g_strdup (p);
148
 
 
149
 
    retval = ibus_message_iter_get (iter, G_TYPE_UINT, &prop->type);
150
 
    g_return_val_if_fail (retval, FALSE);
151
 
    ibus_message_iter_next (iter);
152
 
 
153
 
    retval = ibus_message_iter_get (iter, IBUS_TYPE_TEXT, &prop->label);
 
119
    gint retval;
 
120
 
 
121
    retval = IBUS_SERIALIZABLE_CLASS (ibus_property_parent_class)->deserialize ((IBusSerializable *) prop, variant);
 
122
    g_return_val_if_fail (retval, 0);
 
123
 
 
124
    g_variant_get_child (variant, retval++, "s", &prop->key);
 
125
    g_variant_get_child (variant, retval++, "u", &prop->type);
 
126
 
 
127
    GVariant *subvar = g_variant_get_child_value (variant, retval++);
 
128
    prop->label = IBUS_TEXT (ibus_serializable_deserialize (subvar));
154
129
    g_object_ref_sink (prop->label);
155
 
    g_return_val_if_fail (retval, FALSE);
156
 
    ibus_message_iter_next (iter);
157
 
 
158
 
    retval = ibus_message_iter_get (iter, G_TYPE_STRING, &p);
159
 
    g_return_val_if_fail (retval, FALSE);
160
 
    ibus_message_iter_next (iter);
161
 
    prop->icon = g_strdup (p);
162
 
 
163
 
    retval = ibus_message_iter_get (iter, IBUS_TYPE_TEXT, &prop->tooltip);
 
130
    g_variant_unref (subvar);
 
131
 
 
132
    g_variant_get_child (variant, retval++, "s", &prop->icon);
 
133
 
 
134
    subvar = g_variant_get_child_value (variant, retval++);
 
135
    prop->tooltip = IBUS_TEXT (ibus_serializable_deserialize (subvar));
164
136
    g_object_ref_sink (prop->tooltip);
165
 
    g_return_val_if_fail (retval, FALSE);
166
 
    ibus_message_iter_next (iter);
167
 
 
168
 
    retval = ibus_message_iter_get (iter, G_TYPE_BOOLEAN, &prop->sensitive);
169
 
    g_return_val_if_fail (retval, FALSE);
170
 
    ibus_message_iter_next (iter);
171
 
 
172
 
    retval = ibus_message_iter_get (iter, G_TYPE_BOOLEAN, &prop->visible);
173
 
    g_return_val_if_fail (retval, FALSE);
174
 
    ibus_message_iter_next (iter);
175
 
 
176
 
    retval = ibus_message_iter_get (iter, G_TYPE_UINT, &prop->state);
177
 
    g_return_val_if_fail (retval, FALSE);
178
 
    ibus_message_iter_next (iter);
179
 
 
180
 
    retval = ibus_message_iter_get (iter, IBUS_TYPE_PROP_LIST, &prop->sub_props);
 
137
    g_variant_unref (subvar);
 
138
 
 
139
    g_variant_get_child (variant, retval++, "b", &prop->sensitive);
 
140
    g_variant_get_child (variant, retval++, "b", &prop->visible);
 
141
    g_variant_get_child (variant, retval++, "u", &prop->state);
 
142
 
 
143
    subvar = g_variant_get_child_value (variant, retval++);
 
144
    prop->sub_props = IBUS_PROP_LIST (ibus_serializable_deserialize (subvar));
181
145
    g_object_ref_sink (prop->sub_props);
182
 
    g_return_val_if_fail (retval, FALSE);
183
 
    ibus_message_iter_next (iter);
 
146
    g_variant_unref (subvar);
184
147
 
185
 
    return TRUE;
 
148
    return retval;
186
149
}
187
150
 
188
151
static gboolean
242
205
 
243
206
    prop->key = g_strdup (key);
244
207
    prop->type = type;
245
 
    
 
208
 
246
209
    ibus_property_set_label (prop, label);
247
210
    ibus_property_set_icon (prop, icon);
248
211
    ibus_property_set_tooltip (prop, tooltip);
254
217
    return prop;
255
218
}
256
219
 
 
220
#define IBUS_PROPERTY_GET_FIELD(field, return_type) \
 
221
return_type                                                             \
 
222
ibus_property_get_ ## field (IBusProperty *prop)                        \
 
223
{                                                                       \
 
224
    return prop->field;                                                 \
 
225
}
 
226
 
 
227
IBUS_PROPERTY_GET_FIELD (key, const gchar *)
 
228
IBUS_PROPERTY_GET_FIELD (icon, const gchar *)
 
229
IBUS_PROPERTY_GET_FIELD (label, const IBusText *)
 
230
IBUS_PROPERTY_GET_FIELD (tooltip, const IBusText *)
 
231
IBUS_PROPERTY_GET_FIELD (sensitive, gboolean)
 
232
IBUS_PROPERTY_GET_FIELD (visible, gboolean)
 
233
IBUS_PROPERTY_GET_FIELD (state, IBusPropState)
 
234
IBUS_PROPERTY_GET_FIELD (sub_props, const IBusPropList *)
 
235
#undef IBUS_PROPERTY_GET_FIELD
 
236
 
 
237
/* ibus_property_get_type() exists */
 
238
IBusPropType
 
239
ibus_property_get_prop_type (IBusProperty *prop)
 
240
{
 
241
    return prop->type;
 
242
}
 
243
 
257
244
void
258
245
ibus_property_set_label (IBusProperty *prop,
259
246
                         IBusText     *label)
280
267
    g_assert (IBUS_IS_PROPERTY (prop));
281
268
 
282
269
    g_free (prop->icon);
283
 
    prop->icon = g_strdup (icon);
 
270
    prop->icon = g_strdup (icon != NULL ? icon : "");
284
271
}
285
272
 
286
273
void