Embed keycode as <key id="key<keycode>"> in the XML output.
This commit is contained in:
		@ -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;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -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);
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user