Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(96)

Side by Side Diff: src/ibusenginedesc.c

Issue 1702015: Support engine specific hotkey. (Closed) Base URL: ssh://git@chromiumos-git/ibus.git
Patch Set: Created 10 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/ibusenginedesc.h ('k') | src/ibushotkey.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « src/ibusenginedesc.h ('k') | src/ibushotkey.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698