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;
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;
}