Embed keycode as <key id="key<keycode>"> in the XML output.

This commit is contained in:
Daiki Ueno
2011-01-28 17:39:37 +09:00
parent ca5873022a
commit 45b18c7ada
2 changed files with 16 additions and 15 deletions

View File

@ -64,7 +64,6 @@ struct _ParseCallbackData {
gint num_columns; gint num_columns;
EekOrientation orientation; EekOrientation orientation;
GSList *points; GSList *points;
guint keycode;
GSList *symbols; GSList *symbols;
gint groups, levels; gint groups, levels;
EekOutline outline; EekOutline outline;
@ -205,6 +204,8 @@ start_element_callback (GMarkupParseContext *pcontext,
data->key = eek_section_create_key (data->section, column, row); data->key = eek_section_create_key (data->section, column, row);
if (name) if (name)
eek_element_set_name (EEK_ELEMENT(data->key), 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; goto out;
} }
@ -269,10 +270,11 @@ end_element_callback (GMarkupParseContext *pcontext,
} else } else
matrix->data[i] = NULL; matrix->data[i] = NULL;
} }
eek_key_set_symbol_matrix (data->key, matrix);
g_slist_free (data->symbols); g_slist_free (data->symbols);
data->symbols = NULL; data->symbols = NULL;
eek_key_set_symbol_matrix (data->key, matrix);
eek_symbol_matrix_free (matrix);
goto out; goto out;
} }
@ -374,15 +376,11 @@ end_element_callback (GMarkupParseContext *pcontext,
goto out; 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) { if (g_strcmp0 (element_name, "keysym") == 0) {
data->symbols = gchar *name = g_strdup (text);
g_slist_prepend (data->symbols, data->symbols = g_slist_prepend (data->symbols,
eek_keysym_new_from_name (g_strdup (text))); eek_keysym_new_from_name (name));
g_free (name);
goto out; goto out;
} }

View File

@ -78,17 +78,20 @@ output_key_callback (EekElement *element, gpointer user_data)
gint i, num_symbols; gint i, num_symbols;
EekSymbolMatrix *matrix; EekSymbolMatrix *matrix;
gint column, row; gint column, row;
guint keycode = eek_key_get_keycode (EEK_KEY(element));
eek_key_get_index (EEK_KEY(element), &column, &row); eek_key_get_index (EEK_KEY(element), &column, &row);
g_string_append_indent (data->output, data->indent); g_string_append_indent (data->output, data->indent);
if (eek_element_get_name (element)) if (eek_element_get_name (element))
g_string_markup_printf (data->output, g_string_markup_printf (data->output,
"<key column=\"%d\" row=\"%d\" name=\"%s\">\n", "<key id=\"key%u\" column=\"%d\" row=\"%d\" "
column, row, eek_element_get_name (element)); "name=\"%s\">\n",
keycode, column, row,
eek_element_get_name (element));
else else
g_string_markup_printf (data->output, g_string_markup_printf (data->output,
"<key column=\"%d\" row=\"%d\">\n", "<key id=\"key%d\" column=\"%d\" row=\"%d\">\n",
column, row); keycode, column, row);
eek_element_get_bounds (element, &bounds); eek_element_get_bounds (element, &bounds);
g_string_append_indent (data->output, data->indent + 1); g_string_append_indent (data->output, data->indent + 1);