From 6d7e35b930f81b8336ac81e4408a3e6321cd32b8 Mon Sep 17 00:00:00 2001 From: Qball Cow Date: Tue, 20 May 2008 08:09:26 +0200 Subject: [PATCH] Store mapping --- src/stuffkeeper-plugin-mb.gob | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/src/stuffkeeper-plugin-mb.gob b/src/stuffkeeper-plugin-mb.gob index 572752f..f9ffb91 100644 --- a/src/stuffkeeper-plugin-mb.gob +++ b/src/stuffkeeper-plugin-mb.gob @@ -20,8 +20,8 @@ requires 2.0.10 typedef enum _ImportFields { IF_ARTIST_NAME, IF_ALBUM_NAME, - IF_TRACK_LIST, - IF_NUM_TRACKS, + IF_NUM_TRACKS, + IF_TRACK_LIST, IF_ALBUM_COVER, IF_NUM_FIELDS }ImportFields; @@ -30,11 +30,14 @@ requires 2.0.10 { "Artist", "Album", - "Track list", "Num. of tracks", + "Track list", "Album Cover" }; + /* hack to get config file */ + extern GKeyFile *config_file; + %} class Stuffkeeper:Plugin:Mb from Stuffkeeper:Plugin @@ -46,8 +49,7 @@ class Stuffkeeper:Plugin:Mb from Stuffkeeper:Plugin private GtkListStore *schema_list = {NULL}; private GtkListStore *import_list = {NULL}; private GList *import_mapping = {NULL}; - - + /* mapping */ private void @@ -89,6 +91,8 @@ class Stuffkeeper:Plugin:Mb from Stuffkeeper:Plugin int type = stuffkeeper_data_schema_get_field_type(schema, retv[i]); if( type < FIELD_TYPE_EXPANDER) { + gint value; + GError *error = NULL; GtkWidget *hbox = gtk_hbox_new(FALSE, 6); gchar *name = stuffkeeper_data_schema_get_field_name(schema, retv[i]); GtkWidget *label = gtk_label_new(name); @@ -101,7 +105,13 @@ class Stuffkeeper:Plugin:Mb from Stuffkeeper:Plugin gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(wid),renderer, TRUE); gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(wid),renderer, "text",1 ); gtk_box_pack_start(GTK_BOX(hbox), wid, FALSE, TRUE, 0); - gtk_combo_box_set_active(GTK_COMBO_BOX(wid), 0); + + value = g_key_file_get_integer(config_file, "Musicbrainz plugin", retv[i], &error); + if(error) { + g_error_free(error); + value = 0; + } + gtk_combo_box_set_active(GTK_COMBO_BOX(wid), value); gtk_container_add(GTK_CONTAINER(exo), hbox); g_object_set_data_full(G_OBJECT(wid), "field-id", g_strdup(retv[i]), g_free); @@ -176,6 +186,7 @@ class Stuffkeeper:Plugin:Mb from Stuffkeeper:Plugin void close(self, gint arg,GtkWidget *dialog) { + if(arg == -2) { StuffkeeperDataSchema *schema = NULL; @@ -315,6 +326,19 @@ class Stuffkeeper:Plugin:Mb from Stuffkeeper:Plugin g_free(id); return; } + + if(self->_priv->import_mapping) + { + GList *node; + for(node = g_list_first(self->_priv->import_mapping);node;node = g_list_next(node)) + { + gchar *field = g_object_get_data(G_OBJECT(node->data), "field-id"); + int import_type = gtk_combo_box_get_active(GTK_COMBO_BOX(node->data)); + g_key_file_set_integer(config_file, "Musicbrainz plugin", field, import_type); + } + g_list_free(self->_priv->import_mapping); + self->_priv->import_mapping = NULL; + } gtk_widget_destroy(dialog); g_object_unref(self->_priv->xml); self->_priv->xml = NULL; -- 2.11.4.GIT