diff options
Diffstat (limited to 'saedit/main.c')
-rw-r--r-- | saedit/main.c | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/saedit/main.c b/saedit/main.c index 8577745..51acc87 100644 --- a/saedit/main.c +++ b/saedit/main.c @@ -391,7 +391,32 @@ void imagesets_combo_box_changed_handler(GtkComboBox *widget, gpointer user_data set_up_imageset_by_node(list->data); } +void load_options() { + paths->sprites = NULL; + gchar *datapath = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(data_folder_chooser_button)); + gchar *path = g_strjoin(SLASH_SEPARATOR, datapath, "paths.xml", NULL); + XMLNode *node = ibus_xml_parse_file(path); + if (node != NULL) { + GList *list = node->sub_nodes; + while (TRUE) { + list = g_list_find_custom(list, "option", xml_node_compare_with_name); + if (list == NULL) + break; + gchar *name_attr = xml_node_get_attr_value(list->data, "name"); + if (name_attr != NULL) { + if (g_strcmp0(name_attr, "sprites") == 0) + paths->sprites = xml_node_get_attr_value(list->data, "value"); + } + list = list->next; + } + } + if (paths->sprites == NULL) paths->sprites = OPTION_SPRITES_DEFAULT; + paths->sprites = g_strjoin(SLASH_SEPARATOR, datapath, paths->sprites, NULL); +} + void parse_xml_buffer(GtkWidget *button, GtkSourceBuffer *buffer) { + load_options(); + GtkTextIter beg, end; gtk_text_buffer_get_start_iter(GTK_TEXT_BUFFER(buffer), &beg); gtk_text_buffer_get_end_iter(GTK_TEXT_BUFFER(buffer), &end); @@ -402,13 +427,13 @@ void parse_xml_buffer(GtkWidget *button, GtkSourceBuffer *buffer) { return; } - gchar *spritespath = g_strjoin(SLASH_SEPARATOR, gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(data_folder_chooser_button)), SPRITES_PATH, NULL); + printf("%s", paths->sprites); GList *list = g_list_find_custom(root->sub_nodes, "include", xml_node_compare_with_name); while (list != NULL) { XMLNode *node = list->data; gchar *file_attr = xml_node_get_attr_value(node, "file"); if (file_attr != NULL) { - file_attr = g_strjoin(NULL, spritespath, file_attr, NULL); + file_attr = g_strjoin(NULL, paths->sprites, file_attr, NULL); gchar *buf; if (g_file_get_contents(file_attr, &buf, NULL, NULL)) g_list_concat(root->sub_nodes, ibus_xml_parse_buffer(buf)->sub_nodes); @@ -639,6 +664,7 @@ int main(int argc, char *argv[]) { icon = gdk_pixbuf_new_from_file(ICON_FILE, NULL); + paths = g_new0(options, 1); current_sprite = sprite_info_new(-1, 0, 0); imageset = imageset_info_new(); |