| OLD | NEW |
| 1 /* vim:set et sts=4: */ | 1 /* vim:set et sts=4: */ |
| 2 /* bus - The Input Bus | 2 /* bus - The Input Bus |
| 3 * Copyright (C) 2008-2010 Peng Huang <shawn.p.huang@gmail.com> | 3 * Copyright (C) 2008-2010 Peng Huang <shawn.p.huang@gmail.com> |
| 4 * Copyright (C) 2008-2010 Red Hat, Inc. | 4 * Copyright (C) 2008-2010 Red Hat, Inc. |
| 5 * | 5 * |
| 6 * This library is free software; you can redistribute it and/or | 6 * This library is free software; you can redistribute it and/or |
| 7 * modify it under the terms of the GNU Lesser General Public | 7 * modify it under the terms of the GNU Lesser General Public |
| 8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
| 9 * version 2 of the License, or (at your option) any later version. | 9 * version 2 of the License, or (at your option) any later version. |
| 10 * | 10 * |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 57 { | 57 { |
| 58 IBusObjectClass *object_class = IBUS_OBJECT_CLASS (klass); | 58 IBusObjectClass *object_class = IBUS_OBJECT_CLASS (klass); |
| 59 IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (klass); | 59 IBusSerializableClass *serializable_class = IBUS_SERIALIZABLE_CLASS (klass); |
| 60 | 60 |
| 61 object_class->destroy = (IBusObjectDestroyFunc) ibus_engine_desc_destroy; | 61 object_class->destroy = (IBusObjectDestroyFunc) ibus_engine_desc_destroy; |
| 62 | 62 |
| 63 serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_engin
e_desc_serialize; | 63 serializable_class->serialize = (IBusSerializableSerializeFunc) ibus_engin
e_desc_serialize; |
| 64 serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_eng
ine_desc_deserialize; | 64 serializable_class->deserialize = (IBusSerializableDeserializeFunc) ibus_eng
ine_desc_deserialize; |
| 65 serializable_class->copy = (IBusSerializableCopyFunc) ibus_engine_des
c_copy; | 65 serializable_class->copy = (IBusSerializableCopyFunc) ibus_engine_des
c_copy; |
| 66 | 66 |
| 67 g_string_append (serializable_class->signature, "ssssssssu"); | 67 g_string_append (serializable_class->signature, "sssssssssu"); |
| 68 } | 68 } |
| 69 | 69 |
| 70 static void | 70 static void |
| 71 ibus_engine_desc_init (IBusEngineDesc *desc) | 71 ibus_engine_desc_init (IBusEngineDesc *desc) |
| 72 { | 72 { |
| 73 | 73 |
| 74 desc->name = NULL; | 74 desc->name = NULL; |
| 75 desc->longname = NULL; | 75 desc->longname = NULL; |
| 76 desc->description = NULL; | 76 desc->description = NULL; |
| 77 desc->language = NULL; | 77 desc->language = NULL; |
| 78 desc->license = NULL; | 78 desc->license = NULL; |
| 79 desc->author = NULL; | 79 desc->author = NULL; |
| 80 desc->icon = NULL; | 80 desc->icon = NULL; |
| 81 desc->layout = NULL; | 81 desc->layout = NULL; |
| 82 desc->hotkeys = NULL; |
| 82 desc->rank = 0; | 83 desc->rank = 0; |
| 83 } | 84 } |
| 84 | 85 |
| 85 static void | 86 static void |
| 86 ibus_engine_desc_destroy (IBusEngineDesc *desc) | 87 ibus_engine_desc_destroy (IBusEngineDesc *desc) |
| 87 { | 88 { |
| 88 g_free (desc->name); | 89 g_free (desc->name); |
| 89 g_free (desc->longname); | 90 g_free (desc->longname); |
| 90 g_free (desc->description); | 91 g_free (desc->description); |
| 91 g_free (desc->language); | 92 g_free (desc->language); |
| 92 g_free (desc->license); | 93 g_free (desc->license); |
| 93 g_free (desc->author); | 94 g_free (desc->author); |
| 94 g_free (desc->icon); | 95 g_free (desc->icon); |
| 95 g_free (desc->layout); | 96 g_free (desc->layout); |
| 97 g_free (desc->hotkeys); |
| 96 | 98 |
| 97 IBUS_OBJECT_CLASS (ibus_engine_desc_parent_class)->destroy (IBUS_OBJECT (des
c)); | 99 IBUS_OBJECT_CLASS (ibus_engine_desc_parent_class)->destroy (IBUS_OBJECT (des
c)); |
| 98 } | 100 } |
| 99 | 101 |
| 100 static gboolean | 102 static gboolean |
| 101 ibus_engine_desc_serialize (IBusEngineDesc *desc, | 103 ibus_engine_desc_serialize (IBusEngineDesc *desc, |
| 102 IBusMessageIter *iter) | 104 IBusMessageIter *iter) |
| 103 { | 105 { |
| 104 gboolean retval; | 106 gboolean retval; |
| 105 | 107 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 123 | 125 |
| 124 retval = ibus_message_iter_append (iter, G_TYPE_STRING, &desc->author); | 126 retval = ibus_message_iter_append (iter, G_TYPE_STRING, &desc->author); |
| 125 g_return_val_if_fail (retval, FALSE); | 127 g_return_val_if_fail (retval, FALSE); |
| 126 | 128 |
| 127 retval = ibus_message_iter_append (iter, G_TYPE_STRING, &desc->icon); | 129 retval = ibus_message_iter_append (iter, G_TYPE_STRING, &desc->icon); |
| 128 g_return_val_if_fail (retval, FALSE); | 130 g_return_val_if_fail (retval, FALSE); |
| 129 | 131 |
| 130 retval = ibus_message_iter_append (iter, G_TYPE_STRING, &desc->layout); | 132 retval = ibus_message_iter_append (iter, G_TYPE_STRING, &desc->layout); |
| 131 g_return_val_if_fail (retval, FALSE); | 133 g_return_val_if_fail (retval, FALSE); |
| 132 | 134 |
| 135 retval = ibus_message_iter_append (iter, G_TYPE_STRING, &desc->hotkeys); |
| 136 g_return_val_if_fail (retval, FALSE); |
| 137 |
| 133 retval = ibus_message_iter_append (iter, G_TYPE_UINT, &desc->rank); | 138 retval = ibus_message_iter_append (iter, G_TYPE_UINT, &desc->rank); |
| 134 g_return_val_if_fail (retval, FALSE); | 139 g_return_val_if_fail (retval, FALSE); |
| 135 | 140 |
| 136 return TRUE; | 141 return TRUE; |
| 137 } | 142 } |
| 138 | 143 |
| 139 static gboolean | 144 static gboolean |
| 140 ibus_engine_desc_deserialize (IBusEngineDesc *desc, | 145 ibus_engine_desc_deserialize (IBusEngineDesc *desc, |
| 141 IBusMessageIter *iter) | 146 IBusMessageIter *iter) |
| 142 { | 147 { |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 retval = ibus_message_iter_get (iter, G_TYPE_STRING, &str); | 184 retval = ibus_message_iter_get (iter, G_TYPE_STRING, &str); |
| 180 g_return_val_if_fail (retval, FALSE); | 185 g_return_val_if_fail (retval, FALSE); |
| 181 ibus_message_iter_next (iter); | 186 ibus_message_iter_next (iter); |
| 182 desc->icon = g_strdup (str); | 187 desc->icon = g_strdup (str); |
| 183 | 188 |
| 184 retval = ibus_message_iter_get (iter, G_TYPE_STRING, &str); | 189 retval = ibus_message_iter_get (iter, G_TYPE_STRING, &str); |
| 185 g_return_val_if_fail (retval, FALSE); | 190 g_return_val_if_fail (retval, FALSE); |
| 186 ibus_message_iter_next (iter); | 191 ibus_message_iter_next (iter); |
| 187 desc->layout = g_strdup (str); | 192 desc->layout = g_strdup (str); |
| 188 | 193 |
| 194 retval = ibus_message_iter_get (iter, G_TYPE_STRING, &str); |
| 195 g_return_val_if_fail (retval, FALSE); |
| 196 ibus_message_iter_next (iter); |
| 197 desc->hotkeys = g_strdup (str); |
| 198 |
| 189 retval = ibus_message_iter_get (iter, G_TYPE_UINT, &desc->rank); | 199 retval = ibus_message_iter_get (iter, G_TYPE_UINT, &desc->rank); |
| 190 g_return_val_if_fail (retval, FALSE); | 200 g_return_val_if_fail (retval, FALSE); |
| 191 ibus_message_iter_next (iter); | 201 ibus_message_iter_next (iter); |
| 192 | 202 |
| 193 return TRUE; | 203 return TRUE; |
| 194 } | 204 } |
| 195 | 205 |
| 196 static gboolean | 206 static gboolean |
| 197 ibus_engine_desc_copy (IBusEngineDesc *dest, | 207 ibus_engine_desc_copy (IBusEngineDesc *dest, |
| 198 const IBusEngineDesc *src) | 208 const IBusEngineDesc *src) |
| 199 { | 209 { |
| 200 gboolean retval; | 210 gboolean retval; |
| 201 | 211 |
| 202 retval = IBUS_SERIALIZABLE_CLASS (ibus_engine_desc_parent_class)->copy ((IBu
sSerializable *)dest, | 212 retval = IBUS_SERIALIZABLE_CLASS (ibus_engine_desc_parent_class)->copy ((IBu
sSerializable *)dest, |
| 203 (IBusSerializable *)src); | 213 (IBusSerializable *)src); |
| 204 g_return_val_if_fail (retval, FALSE); | 214 g_return_val_if_fail (retval, FALSE); |
| 205 | 215 |
| 206 | 216 |
| 207 dest->name = g_strdup (src->name); | 217 dest->name = g_strdup (src->name); |
| 208 dest->longname = g_strdup (src->longname); | 218 dest->longname = g_strdup (src->longname); |
| 209 dest->description = g_strdup (src->description); | 219 dest->description = g_strdup (src->description); |
| 210 dest->language = g_strdup (src->language); | 220 dest->language = g_strdup (src->language); |
| 211 dest->license = g_strdup (src->license); | 221 dest->license = g_strdup (src->license); |
| 212 dest->author = g_strdup (src->author); | 222 dest->author = g_strdup (src->author); |
| 213 dest->icon = g_strdup (src->icon); | 223 dest->icon = g_strdup (src->icon); |
| 214 dest->layout = g_strdup (src->layout); | 224 dest->layout = g_strdup (src->layout); |
| 225 dest->hotkeys = g_strdup (src->hotkeys); |
| 215 | 226 |
| 216 return TRUE; | 227 return TRUE; |
| 217 } | 228 } |
| 218 | 229 |
| 219 #define g_string_append_indent(string, indent) \ | 230 #define g_string_append_indent(string, indent) \ |
| 220 { \ | 231 { \ |
| 221 gint i; \ | 232 gint i; \ |
| 222 for (i = 0; i < (indent); i++) { \ | 233 for (i = 0; i < (indent); i++) { \ |
| 223 g_string_append (string, " "); \ | 234 g_string_append (string, " "); \ |
| 224 } \ | 235 } \ |
| (...skipping 16 matching lines...) Expand all Loading... |
| 241 } | 252 } |
| 242 #define OUTPUT_ENTRY_1(name) OUTPUT_ENTRY(name, #name) | 253 #define OUTPUT_ENTRY_1(name) OUTPUT_ENTRY(name, #name) |
| 243 OUTPUT_ENTRY_1(name); | 254 OUTPUT_ENTRY_1(name); |
| 244 OUTPUT_ENTRY_1(longname); | 255 OUTPUT_ENTRY_1(longname); |
| 245 OUTPUT_ENTRY_1(description); | 256 OUTPUT_ENTRY_1(description); |
| 246 OUTPUT_ENTRY_1(language); | 257 OUTPUT_ENTRY_1(language); |
| 247 OUTPUT_ENTRY_1(license); | 258 OUTPUT_ENTRY_1(license); |
| 248 OUTPUT_ENTRY_1(author); | 259 OUTPUT_ENTRY_1(author); |
| 249 OUTPUT_ENTRY_1(icon); | 260 OUTPUT_ENTRY_1(icon); |
| 250 OUTPUT_ENTRY_1(layout); | 261 OUTPUT_ENTRY_1(layout); |
| 262 OUTPUT_ENTRY_1(hotkeys); |
| 251 g_string_append_indent (output, indent + 1); | 263 g_string_append_indent (output, indent + 1); |
| 252 g_string_append_printf (output, "<rank>%u</rank>\n", desc->rank); | 264 g_string_append_printf (output, "<rank>%u</rank>\n", desc->rank); |
| 253 #undef OUTPUT_ENTRY | 265 #undef OUTPUT_ENTRY |
| 254 #undef OUTPUT_ENTRY_1 | 266 #undef OUTPUT_ENTRY_1 |
| 255 g_string_append_indent (output, indent); | 267 g_string_append_indent (output, indent); |
| 256 g_string_append (output, "</engine>\n"); | 268 g_string_append (output, "</engine>\n"); |
| 257 } | 269 } |
| 258 | 270 |
| 259 static gboolean | 271 static gboolean |
| 260 ibus_engine_desc_parse_xml_node (IBusEngineDesc *desc, | 272 ibus_engine_desc_parse_xml_node (IBusEngineDesc *desc, |
| (...skipping 11 matching lines...) Expand all Loading... |
| 272 } | 284 } |
| 273 #define PARSE_ENTRY_1(name) PARSE_ENTRY(name, #name) | 285 #define PARSE_ENTRY_1(name) PARSE_ENTRY(name, #name) |
| 274 PARSE_ENTRY_1(name); | 286 PARSE_ENTRY_1(name); |
| 275 PARSE_ENTRY_1(longname); | 287 PARSE_ENTRY_1(longname); |
| 276 PARSE_ENTRY_1(description); | 288 PARSE_ENTRY_1(description); |
| 277 PARSE_ENTRY_1(language); | 289 PARSE_ENTRY_1(language); |
| 278 PARSE_ENTRY_1(license); | 290 PARSE_ENTRY_1(license); |
| 279 PARSE_ENTRY_1(author); | 291 PARSE_ENTRY_1(author); |
| 280 PARSE_ENTRY_1(icon); | 292 PARSE_ENTRY_1(icon); |
| 281 PARSE_ENTRY_1(layout); | 293 PARSE_ENTRY_1(layout); |
| 294 PARSE_ENTRY_1(hotkeys); |
| 282 #undef PARSE_ENTRY | 295 #undef PARSE_ENTRY |
| 283 #undef PARSE_ENTRY1 | 296 #undef PARSE_ENTRY_1 |
| 284 if (g_strcmp0 (sub_node->name , "rank") == 0) { | 297 if (g_strcmp0 (sub_node->name , "rank") == 0) { |
| 285 desc->rank = atoi (sub_node->text); | 298 desc->rank = atoi (sub_node->text); |
| 286 continue; | 299 continue; |
| 287 } | 300 } |
| 288 g_warning ("<engines> element contains invalidate element <%s>", sub_nod
e->name); | 301 g_warning ("<engines> element contains invalidate element <%s>", sub_nod
e->name); |
| 289 } | 302 } |
| 290 return TRUE; | 303 return TRUE; |
| 291 } | 304 } |
| 292 | 305 |
| 293 IBusEngineDesc * | 306 IBusEngineDesc * |
| 294 ibus_engine_desc_new (const gchar *name, | 307 ibus_engine_desc_new (const gchar *name, |
| 295 const gchar *longname, | 308 const gchar *longname, |
| 296 const gchar *description, | 309 const gchar *description, |
| 297 const gchar *language, | 310 const gchar *language, |
| 298 const gchar *license, | 311 const gchar *license, |
| 299 const gchar *author, | 312 const gchar *author, |
| 300 const gchar *icon, | 313 const gchar *icon, |
| 301 const gchar *layout) | 314 const gchar *layout) |
| 302 { | 315 { |
| 316 return ibus_engine_desc_new2 (name, longname, description, language, |
| 317 license, author, icon, layout, ""); |
| 318 } |
| 319 |
| 320 IBusEngineDesc * |
| 321 ibus_engine_desc_new2 (const gchar *name, |
| 322 const gchar *longname, |
| 323 const gchar *description, |
| 324 const gchar *language, |
| 325 const gchar *license, |
| 326 const gchar *author, |
| 327 const gchar *icon, |
| 328 const gchar *layout, |
| 329 const gchar *hotkeys) |
| 330 { |
| 303 g_assert (name); | 331 g_assert (name); |
| 304 g_assert (longname); | 332 g_assert (longname); |
| 305 g_assert (description); | 333 g_assert (description); |
| 306 g_assert (language); | 334 g_assert (language); |
| 307 g_assert (license); | 335 g_assert (license); |
| 308 g_assert (author); | 336 g_assert (author); |
| 309 g_assert (icon); | 337 g_assert (icon); |
| 310 g_assert (layout); | 338 g_assert (layout); |
| 339 g_assert (hotkeys); |
| 311 | 340 |
| 312 IBusEngineDesc *desc; | 341 IBusEngineDesc *desc; |
| 313 desc = (IBusEngineDesc *)g_object_new (IBUS_TYPE_ENGINE_DESC, NULL); | 342 desc = (IBusEngineDesc *)g_object_new (IBUS_TYPE_ENGINE_DESC, NULL); |
| 314 | 343 |
| 315 desc->name = g_strdup (name); | 344 desc->name = g_strdup (name); |
| 316 desc->longname = g_strdup (longname); | 345 desc->longname = g_strdup (longname); |
| 317 desc->description = g_strdup (description); | 346 desc->description = g_strdup (description); |
| 318 desc->language = g_strdup (language); | 347 desc->language = g_strdup (language); |
| 319 desc->license = g_strdup (license); | 348 desc->license = g_strdup (license); |
| 320 desc->author = g_strdup (author); | 349 desc->author = g_strdup (author); |
| 321 desc->icon = g_strdup (icon); | 350 desc->icon = g_strdup (icon); |
| 322 desc->layout = g_strdup (layout); | 351 desc->layout = g_strdup (layout); |
| 352 desc->hotkeys = g_strdup (hotkeys); |
| 323 | 353 |
| 324 return desc; | 354 return desc; |
| 325 } | 355 } |
| 326 | 356 |
| 327 IBusEngineDesc * | 357 IBusEngineDesc * |
| 328 ibus_engine_desc_new_from_xml_node (XMLNode *node) | 358 ibus_engine_desc_new_from_xml_node (XMLNode *node) |
| 329 { | 359 { |
| 330 g_assert (node); | 360 g_assert (node); |
| 331 | 361 |
| 332 IBusEngineDesc *desc; | 362 IBusEngineDesc *desc; |
| 333 | 363 |
| 334 if (G_UNLIKELY (g_strcmp0 (node->name, "engine") != 0)) { | 364 if (G_UNLIKELY (g_strcmp0 (node->name, "engine") != 0)) { |
| 335 return NULL; | 365 return NULL; |
| 336 } | 366 } |
| 337 | 367 |
| 338 desc = (IBusEngineDesc *)g_object_new (IBUS_TYPE_ENGINE_DESC, NULL); | 368 desc = (IBusEngineDesc *)g_object_new (IBUS_TYPE_ENGINE_DESC, NULL); |
| 339 | 369 |
| 340 if (!ibus_engine_desc_parse_xml_node (desc, node)) { | 370 if (!ibus_engine_desc_parse_xml_node (desc, node)) { |
| 341 g_object_unref (desc); | 371 g_object_unref (desc); |
| 342 desc = NULL; | 372 desc = NULL; |
| 343 } | 373 } |
| 344 | 374 |
| 345 return desc; | 375 return desc; |
| 346 } | 376 } |
| 347 | |
| OLD | NEW |