#include #include "playlist.h" #include "pledit.h" extern void play_list_editor(Track_Structure *tracks) { Play_List_Editor_Window ple; ple.tracks = tracks; make_main(&ple); make_main_box(&ple); make_list_box(&ple); make_button_box(&ple); make_scroll_window(&ple); make_add_file_button(&ple); make_add_directory_button(&ple); make_remove_file_button(&ple); make_file_list(&ple); gtk_widget_show(ple.main_box); gtk_widget_show(ple.play_list_editor); return; } extern void make_main(Play_List_Editor_Window *ple) { ple->play_list_editor = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(ple->play_list_editor), FAMP_VERSION); /* g_signal_connect(G_OBJECT(ple->play_list_editor), "delete_event", G_CALLBACK(play_list_destroy), NULL); */ gtk_container_set_border_width(GTK_CONTAINER(ple->play_list_editor), 3); return; } extern void make_main_box(Play_List_Editor_Window *ple) { ple->main_box = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(ple->play_list_editor), ple->main_box); return; } extern void make_list_box(Play_List_Editor_Window *ple) { ple->list_box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(ple->main_box), ple->list_box, TRUE, TRUE, 0); gtk_widget_show(ple->list_box); return; } extern void make_button_box(Play_List_Editor_Window *ple) { ple->button_box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(ple->main_box), ple->button_box, FALSE, TRUE, 0); gtk_widget_show(ple->button_box); return; } extern void make_scroll_window(Play_List_Editor_Window *ple) { ple->scroll_window = gtk_scrolled_window_new(NULL, NULL); gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(ple->scroll_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_box_pack_start(GTK_BOX(ple->list_box), ple->scroll_window, TRUE, TRUE, 0); gtk_widget_show(ple->scroll_window); } extern void make_add_file_button(Play_List_Editor_Window *ple) { ple->add_file_button = gtk_button_new_with_label("Add File(s)"); /* signal here */ gtk_box_pack_start(GTK_BOX(ple->button_box), ple->add_file_button, TRUE, TRUE, 0); gtk_widget_show(ple->add_file_button); return; } extern void make_add_directory_button(Play_List_Editor_Window *ple) { ple->add_directory_button = gtk_button_new_with_label("Add Directory"); /* signal here */ gtk_box_pack_start(GTK_BOX(ple->button_box), ple->add_directory_button, TRUE, TRUE, 0); gtk_widget_show(ple->add_directory_button); return; } extern void make_remove_file_button(Play_List_Editor_Window *ple) { ple->remove_file_button = gtk_button_new_with_label("Remove File(s)"); /* signal here */ gtk_box_pack_start(GTK_BOX(ple->button_box), ple->remove_file_button, TRUE, TRUE, 0); gtk_widget_show(ple->remove_file_button); return; } extern void make_file_list(Play_List_Editor_Window *ple) { ple->list_view = gtk_tree_view_new(); ple->renderer = gtk_cell_renderer_text_new(); gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(ple->list_view), -1, "Tracks", ple->renderer, "text", COL_TRACK, NULL); create_and_fill_model(ple); gtk_tree_view_set_model(GTK_TREE_VIEW(ple->list_view), ple->model); g_object_unref(ple->model); /*gtk_box_pack_start(GTK_BOX(ple->list_box), ple->list_view, TRUE, TRUE, 0);*/ gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(ple->scroll_window), ple->list_view); gtk_widget_show(ple->list_view); return; } extern void create_and_fill_model(Play_List_Editor_Window *ple) { ple->store = gtk_list_store_new(NUM_COLS, G_TYPE_STRING); load_tracks(ple); ple->model = GTK_TREE_MODEL(ple->store); } extern void load_tracks(Play_List_Editor_Window *ple) { Track n = ple->tracks->first_track; while(n) { gtk_list_store_append(ple->store, &ple->iter); gtk_list_store_set(ple->store, &ple->iter, COL_TRACK, n->data, -1); n = n->next; } return; }