diff -u -U 5 -r --new-file -x *~ -x *.[oa] xmms-1.2.9.orig/Input/mpg123/fileinfo.c xmms-1.2.9/Input/mpg123/fileinfo.c --- xmms-1.2.9.orig/Input/mpg123/fileinfo.c Sun Jan 11 19:20:30 2004 +++ xmms-1.2.9/Input/mpg123/fileinfo.c Thu Jan 29 12:28:52 2004 @@ -31,10 +31,20 @@ static GtkWidget *title_entry, *artist_entry, *album_entry, *year_entry; static GtkWidget *tracknum_entry, *comment_entry, *genre_combo; static GtkWidget *mpeg_level, *mpeg_bitrate, *mpeg_samplerate, *mpeg_flags; static GtkWidget *mpeg_fileinfo; +/*doj*/ +static gchar *title_buf=0, + *artist_buf=0, + *album_buf=0, + *year_buf=0, + *tracknum_buf=0, + *comment_buf=0; +static gint genre_buf=-1; +/*doj*/ + static GList *genre_list; struct genre_item { const char *name; int id; }; @@ -261,10 +271,65 @@ gtk_container_add(GTK_CONTAINER(GTK_COMBO(combo)->list), w); genres = genres->next; } } +/*doj*/ +static void copy_tags(GtkWidget * w, gpointer data) +{ + if(title_buf) + g_free(title_buf); + title_buf=gtk_editable_get_chars(GTK_EDITABLE(title_entry), 0, -1); + + if(artist_buf) + g_free(artist_buf); + artist_buf=gtk_editable_get_chars(GTK_EDITABLE(artist_entry), 0, -1); + + if(album_buf) + g_free(album_buf); + album_buf=gtk_editable_get_chars(GTK_EDITABLE(album_entry), 0, -1); + + if(year_buf) + g_free(year_buf); + year_buf=gtk_editable_get_chars(GTK_EDITABLE(year_entry), 0, -1); + + if(tracknum_buf) + g_free(tracknum_buf); + tracknum_buf=gtk_editable_get_chars(GTK_EDITABLE(tracknum_entry), 0, -1); + + if(comment_buf) + g_free(comment_buf); + comment_buf=gtk_editable_get_chars(GTK_EDITABLE(comment_entry), 0, -1); + + genre_buf = current_genre; +} + +static void paste_tags(GtkWidget * w, gpointer data) +{ + if(title_buf) + gtk_entry_set_text (GTK_ENTRY(title_entry), title_buf); + if(artist_buf) + gtk_entry_set_text (GTK_ENTRY(artist_entry), artist_buf); + if(album_buf) + gtk_entry_set_text (GTK_ENTRY(album_entry), album_buf); + if(year_buf) + gtk_entry_set_text (GTK_ENTRY(year_entry), year_buf); + if(comment_buf) + gtk_entry_set_text (GTK_ENTRY(comment_entry), comment_buf); + if(tracknum_buf) + gtk_entry_set_text (GTK_ENTRY(tracknum_entry), tracknum_buf); + + if(genre_buf>=0) + { + current_genre = genre_buf; + gtk_list_select_item(GTK_LIST(GTK_COMBO(genre_combo)->list), + genre_find_index(genre_list, current_genre)); + } + +} +/*doj*/ + void mpg123_file_info_box(char *filename) { int i; struct id3v1tag_t tag; FILE *fh; @@ -283,10 +348,11 @@ { GtkWidget *vbox, *hbox, *left_vbox, *table; GtkWidget *mpeg_frame, *mpeg_box; GtkWidget *label, *filename_hbox; GtkWidget *bbox, *save, *remove_id3, *cancel; + GtkWidget *copy, *paste; /*doj*/ window = gtk_window_new(GTK_WINDOW_DIALOG); gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, FALSE); gtk_signal_connect(GTK_OBJECT(window), "destroy", gtk_widget_destroyed, &window); @@ -437,10 +503,22 @@ cancel = gtk_button_new_with_label(_("Cancel")); gtk_signal_connect_object(GTK_OBJECT(cancel), "clicked", gtk_widget_destroy, GTK_OBJECT(window)); GTK_WIDGET_SET_FLAGS(cancel, GTK_CAN_DEFAULT); gtk_box_pack_start(GTK_BOX(bbox), cancel, TRUE, TRUE, 0); + + /*doj*/ + copy = gtk_button_new_with_label(_("Copy Tag")); + gtk_signal_connect_object(GTK_OBJECT(copy), "clicked", GTK_SIGNAL_FUNC(copy_tags), NULL); + GTK_WIDGET_SET_FLAGS(copy, GTK_CAN_DEFAULT); + gtk_box_pack_start(GTK_BOX(bbox), copy, TRUE, TRUE, 0); + + paste = gtk_button_new_with_label(_("Paste Tag")); + gtk_signal_connect_object(GTK_OBJECT(paste), "clicked", GTK_SIGNAL_FUNC(paste_tags), NULL); + GTK_WIDGET_SET_FLAGS(paste, GTK_CAN_DEFAULT); + gtk_box_pack_start(GTK_BOX(bbox), paste, TRUE, TRUE, 0); + /*doj*/ mpeg_frame = gtk_frame_new(_("MPEG Info:")); gtk_box_pack_start(GTK_BOX(hbox), mpeg_frame, FALSE, FALSE, 0); mpeg_box = gtk_vbox_new(FALSE, 5);