From 45b18c7adaaa6c219e86b834ea128e7008d7004b Mon Sep 17 00:00:00 2001 From: Daiki Ueno Date: Fri, 28 Jan 2011 17:39:37 +0900 Subject: [PATCH] Embed keycode as in the XML output. --- eek/eek-xml-layout.c | 20 +++++++++----------- eek/eek-xml.c | 11 +++++++---- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/eek/eek-xml-layout.c b/eek/eek-xml-layout.c index ce0a6c21..3f21dd66 100644 --- a/eek/eek-xml-layout.c +++ b/eek/eek-xml-layout.c @@ -64,7 +64,6 @@ struct _ParseCallbackData { gint num_columns; EekOrientation orientation; GSList *points; - guint keycode; GSList *symbols; gint groups, levels; EekOutline outline; @@ -205,6 +204,8 @@ start_element_callback (GMarkupParseContext *pcontext, data->key = eek_section_create_key (data->section, column, row); if (name) eek_element_set_name (EEK_ELEMENT(data->key), name); + if (id && g_str_has_prefix (id, "key")) + eek_key_set_keycode (data->key, strtoul (id + 3, NULL, 10)); goto out; } @@ -269,10 +270,11 @@ end_element_callback (GMarkupParseContext *pcontext, } else matrix->data[i] = NULL; } - - eek_key_set_symbol_matrix (data->key, matrix); g_slist_free (data->symbols); data->symbols = NULL; + + eek_key_set_symbol_matrix (data->key, matrix); + eek_symbol_matrix_free (matrix); goto out; } @@ -374,15 +376,11 @@ end_element_callback (GMarkupParseContext *pcontext, goto out; } - if (g_strcmp0 (element_name, "keycode") == 0) { - eek_key_set_keycode (data->key, strtoul (text, NULL, 10)); - goto out; - } - if (g_strcmp0 (element_name, "keysym") == 0) { - data->symbols = - g_slist_prepend (data->symbols, - eek_keysym_new_from_name (g_strdup (text))); + gchar *name = g_strdup (text); + data->symbols = g_slist_prepend (data->symbols, + eek_keysym_new_from_name (name)); + g_free (name); goto out; } diff --git a/eek/eek-xml.c b/eek/eek-xml.c index d716253a..c8e30516 100644 --- a/eek/eek-xml.c +++ b/eek/eek-xml.c @@ -78,17 +78,20 @@ output_key_callback (EekElement *element, gpointer user_data) gint i, num_symbols; EekSymbolMatrix *matrix; gint column, row; + guint keycode = eek_key_get_keycode (EEK_KEY(element)); eek_key_get_index (EEK_KEY(element), &column, &row); g_string_append_indent (data->output, data->indent); if (eek_element_get_name (element)) g_string_markup_printf (data->output, - "\n", - column, row, eek_element_get_name (element)); + "\n", + keycode, column, row, + eek_element_get_name (element)); else g_string_markup_printf (data->output, - "\n", - column, row); + "\n", + keycode, column, row); eek_element_get_bounds (element, &bounds); g_string_append_indent (data->output, data->indent + 1);