Add version macro for XML schema.
This commit is contained in:
@ -102,7 +102,7 @@ validate (const gchar *element_name,
|
|||||||
gchar *element_path;
|
gchar *element_path;
|
||||||
GSList *head;
|
GSList *head;
|
||||||
|
|
||||||
head = g_slist_prepend (element_stack, element_name);
|
head = g_slist_prepend (element_stack, (gchar *)element_name);
|
||||||
element_path = strjoin_slist (head, "/");
|
element_path = strjoin_slist (head, "/");
|
||||||
g_slist_free1 (head);
|
g_slist_free1 (head);
|
||||||
|
|
||||||
@ -138,7 +138,7 @@ start_element_callback (GMarkupParseContext *pcontext,
|
|||||||
const gchar **names = attribute_names;
|
const gchar **names = attribute_names;
|
||||||
const gchar **values = attribute_values;
|
const gchar **values = attribute_values;
|
||||||
gint column = -1, row = -1, groups = -1, levels = -1;
|
gint column = -1, row = -1, groups = -1, levels = -1;
|
||||||
gchar *name = NULL, *id = NULL;
|
gchar *name = NULL, *id = NULL, *version = NULL;
|
||||||
|
|
||||||
validate (element_name, data->element_stack, error);
|
validate (element_name, data->element_stack, error);
|
||||||
if (error && *error)
|
if (error && *error)
|
||||||
@ -153,6 +153,8 @@ start_element_callback (GMarkupParseContext *pcontext,
|
|||||||
name = g_strdup (*values);
|
name = g_strdup (*values);
|
||||||
else if (g_strcmp0 (*names, "id") == 0)
|
else if (g_strcmp0 (*names, "id") == 0)
|
||||||
id = g_strdup (*values);
|
id = g_strdup (*values);
|
||||||
|
else if (g_strcmp0 (*names, "version") == 0)
|
||||||
|
version = g_strdup (*values);
|
||||||
else if (g_strcmp0 (*names, "groups") == 0)
|
else if (g_strcmp0 (*names, "groups") == 0)
|
||||||
groups = strtol (*values, NULL, 10);
|
groups = strtol (*values, NULL, 10);
|
||||||
else if (g_strcmp0 (*names, "levels") == 0)
|
else if (g_strcmp0 (*names, "levels") == 0)
|
||||||
@ -198,6 +200,7 @@ start_element_callback (GMarkupParseContext *pcontext,
|
|||||||
out:
|
out:
|
||||||
g_free (name);
|
g_free (name);
|
||||||
g_free (id);
|
g_free (id);
|
||||||
|
g_free (version);
|
||||||
|
|
||||||
data->element_stack = g_slist_prepend (data->element_stack,
|
data->element_stack = g_slist_prepend (data->element_stack,
|
||||||
g_strdup (element_name));
|
g_strdup (element_name));
|
||||||
@ -238,7 +241,8 @@ end_element_callback (GMarkupParseContext *pcontext,
|
|||||||
head = data->keysyms = g_slist_reverse (data->keysyms);
|
head = data->keysyms = g_slist_reverse (data->keysyms);
|
||||||
for (i = 0; i < num_keysyms; i++) {
|
for (i = 0; i < num_keysyms; i++) {
|
||||||
if (head) {
|
if (head) {
|
||||||
keysyms[i] = (guint)head->data;
|
keysyms[i] = *(guint *)head->data;
|
||||||
|
g_slice_free (guint, head->data);
|
||||||
head = g_slist_next (head);
|
head = g_slist_next (head);
|
||||||
} else
|
} else
|
||||||
keysyms[i] = EEK_INVALID_KEYSYM;
|
keysyms[i] = EEK_INVALID_KEYSYM;
|
||||||
@ -355,8 +359,10 @@ end_element_callback (GMarkupParseContext *pcontext,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (g_strcmp0 (element_name, "keysym") == 0) {
|
if (g_strcmp0 (element_name, "keysym") == 0) {
|
||||||
guint keysym = strtoul (text, NULL, 10);
|
guint *keysym = g_slice_new(guint);
|
||||||
data->keysyms = g_slist_prepend (data->keysyms, (gpointer)keysym);
|
|
||||||
|
*keysym = strtoul (text, NULL, 10);
|
||||||
|
data->keysyms = g_slist_prepend (data->keysyms, keysym);
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -190,7 +190,10 @@ eek_keyboard_output (EekKeyboard *keyboard, GString *output, gint indent)
|
|||||||
g_assert (EEK_IS_KEYBOARD(keyboard));
|
g_assert (EEK_IS_KEYBOARD(keyboard));
|
||||||
|
|
||||||
g_string_append_indent (output, indent);
|
g_string_append_indent (output, indent);
|
||||||
g_string_markup_printf (output, "<?xml version=\"1.0\"?>\n<keyboard>\n");
|
g_string_markup_printf (output, "<?xml version=\"1.0\"?>\n"
|
||||||
|
"<keyboard version=\""
|
||||||
|
EEK_XML_SCHEMA_VERSION
|
||||||
|
"\">\n");
|
||||||
|
|
||||||
eek_element_get_bounds (EEK_ELEMENT(keyboard), &bounds);
|
eek_element_get_bounds (EEK_ELEMENT(keyboard), &bounds);
|
||||||
g_string_append_indent (output, indent + 1);
|
g_string_append_indent (output, indent + 1);
|
||||||
|
|||||||
@ -7,6 +7,8 @@
|
|||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
|
#define EEK_XML_SCHEMA_VERSION "0.90"
|
||||||
|
|
||||||
void eek_keyboard_output (EekKeyboard *keyboard, GString *output, gint indent);
|
void eek_keyboard_output (EekKeyboard *keyboard, GString *output, gint indent);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|||||||
Reference in New Issue
Block a user