Mercurial > audlegacy
comparison src/audacious/ui_fileinfo.c @ 4167:7c6b3b6def1a
Populate the raw metadata treeview.
author | William Pitcock <nenolod@atheme.org> |
---|---|
date | Thu, 10 Jan 2008 07:14:10 -0600 |
parents | 983e6b3e72f3 |
children | e105374c4fc3 |
comparison
equal
deleted
inserted
replaced
4166:983e6b3e72f3 | 4167:7c6b3b6def1a |
---|---|
83 GtkWidget *label_bitrate; | 83 GtkWidget *label_bitrate; |
84 GtkWidget *btn_apply; | 84 GtkWidget *btn_apply; |
85 GtkWidget *label_mini_status; | 85 GtkWidget *label_mini_status; |
86 GtkWidget *arrow_rawdata; | 86 GtkWidget *arrow_rawdata; |
87 GtkWidget *treeview_rawdata; | 87 GtkWidget *treeview_rawdata; |
88 | |
89 enum { | |
90 RAWDATA_KEY, | |
91 RAWDATA_VALUE, | |
92 RAWDATA_N_COLS | |
93 }; | |
88 | 94 |
89 static gchar *current_file = NULL; | 95 static gchar *current_file = NULL; |
90 static InputPlugin *current_ip = NULL; | 96 static InputPlugin *current_ip = NULL; |
91 static gboolean something_changed = FALSE; | 97 static gboolean something_changed = FALSE; |
92 | 98 |
474 GtkWidget *bbox_close; | 480 GtkWidget *bbox_close; |
475 GtkWidget *btn_close; | 481 GtkWidget *btn_close; |
476 GtkWidget *alignment; | 482 GtkWidget *alignment; |
477 GtkWidget *separator; | 483 GtkWidget *separator; |
478 GtkWidget *scrolledwindow; | 484 GtkWidget *scrolledwindow; |
485 GtkTreeViewColumn *column; | |
486 GtkCellRenderer *renderer; | |
479 gint i; | 487 gint i; |
480 | 488 |
481 fileinfo_win = gtk_window_new(GTK_WINDOW_TOPLEVEL); | 489 fileinfo_win = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
482 gtk_container_set_border_width(GTK_CONTAINER(fileinfo_win), 6); | 490 gtk_container_set_border_width(GTK_CONTAINER(fileinfo_win), 6); |
483 gtk_window_set_title(GTK_WINDOW(fileinfo_win), _("Track Information")); | 491 gtk_window_set_title(GTK_WINDOW(fileinfo_win), _("Track Information")); |
709 | 717 |
710 treeview_rawdata = gtk_tree_view_new(); | 718 treeview_rawdata = gtk_tree_view_new(); |
711 gtk_container_add(GTK_CONTAINER(scrolledwindow), treeview_rawdata); | 719 gtk_container_add(GTK_CONTAINER(scrolledwindow), treeview_rawdata); |
712 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview_rawdata), TRUE); | 720 gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview_rawdata), TRUE); |
713 gtk_tree_view_set_reorderable(GTK_TREE_VIEW(treeview_rawdata), TRUE); | 721 gtk_tree_view_set_reorderable(GTK_TREE_VIEW(treeview_rawdata), TRUE); |
722 | |
723 column = gtk_tree_view_column_new(); | |
724 gtk_tree_view_column_set_title(column, _("Key")); | |
725 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); | |
726 gtk_tree_view_column_set_spacing(column, 4); | |
727 gtk_tree_view_column_set_resizable(column, FALSE); | |
728 gtk_tree_view_column_set_fixed_width(column, 50); | |
729 | |
730 renderer = gtk_cell_renderer_text_new(); | |
731 gtk_tree_view_column_pack_start(column, renderer, FALSE); | |
732 gtk_tree_view_column_set_attributes(column, renderer, | |
733 "text", RAWDATA_KEY, NULL); | |
734 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview_rawdata), column); | |
735 | |
736 column = gtk_tree_view_column_new(); | |
737 gtk_tree_view_column_set_title(column, _("Value")); | |
738 gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_AUTOSIZE); | |
739 gtk_tree_view_column_set_spacing(column, 4); | |
740 gtk_tree_view_column_set_resizable(column, FALSE); | |
741 gtk_tree_view_column_set_fixed_width(column, 50); | |
742 | |
743 renderer = gtk_cell_renderer_text_new(); | |
744 gtk_tree_view_column_pack_start(column, renderer, FALSE); | |
745 gtk_tree_view_column_set_attributes(column, renderer, | |
746 "text", RAWDATA_VALUE, NULL); | |
747 gtk_tree_view_append_column(GTK_TREE_VIEW(treeview_rawdata), column); | |
714 | 748 |
715 hbox_status_and_bbox = gtk_hbox_new(FALSE, 0); | 749 hbox_status_and_bbox = gtk_hbox_new(FALSE, 0); |
716 gtk_box_pack_start (GTK_BOX (vbox0), hbox_status_and_bbox, FALSE, FALSE, 0); | 750 gtk_box_pack_start (GTK_BOX (vbox0), hbox_status_and_bbox, FALSE, FALSE, 0); |
717 | 751 |
718 label_mini_status = gtk_label_new("<span size=\"small\"></span>"); | 752 label_mini_status = gtk_label_new("<span size=\"small\"></span>"); |
741 void | 775 void |
742 fileinfo_show_for_tuple(Tuple *tuple, gboolean updating_enabled) | 776 fileinfo_show_for_tuple(Tuple *tuple, gboolean updating_enabled) |
743 { | 777 { |
744 gchar *tmp, *tmp_utf = NULL; | 778 gchar *tmp, *tmp_utf = NULL; |
745 GdkPixbuf *icon = NULL; | 779 GdkPixbuf *icon = NULL; |
780 GtkTreeIter iter; | |
781 GtkListStore *store; | |
782 mowgli_dictionary_iteration_state_t state; | |
783 TupleValue *tvalue; | |
784 gint i; | |
746 | 785 |
747 if (tuple == NULL) | 786 if (tuple == NULL) |
748 return; | 787 return; |
749 | 788 |
750 if(!updating_enabled) { | 789 if(!updating_enabled) { |
809 | 848 |
810 if (label_mini_status != NULL) { | 849 if (label_mini_status != NULL) { |
811 gtk_label_set_text(GTK_LABEL(label_mini_status), "<span size=\"small\"></span>"); | 850 gtk_label_set_text(GTK_LABEL(label_mini_status), "<span size=\"small\"></span>"); |
812 gtk_label_set_use_markup(GTK_LABEL(label_mini_status), TRUE); | 851 gtk_label_set_use_markup(GTK_LABEL(label_mini_status), TRUE); |
813 } | 852 } |
814 | 853 |
854 store = gtk_list_store_new(RAWDATA_N_COLS, G_TYPE_STRING, G_TYPE_STRING); | |
855 | |
856 for (i = 0; i < FIELD_LAST; i++) { | |
857 gchar *key, *value; | |
858 | |
859 if (!tuple->values[i]) | |
860 continue; | |
861 | |
862 if (tuple->values[i]->type != TUPLE_INT && tuple->values[i]->value.string) | |
863 value = g_strdup(tuple->values[i]->value.string); | |
864 else if (tuple->values[i]->type == TUPLE_INT) | |
865 value = g_strdup_printf("%d", tuple->values[i]->value.integer); | |
866 else | |
867 continue; | |
868 | |
869 key = g_strdup(tuple_fields[i].name); | |
870 | |
871 gtk_list_store_append(store, &iter); | |
872 gtk_list_store_set(store, &iter, | |
873 RAWDATA_KEY, key, | |
874 RAWDATA_VALUE, value, -1); | |
875 | |
876 g_free(key); | |
877 g_free(value); | |
878 } | |
879 | |
880 /* non-standard values are stored in a dictionary. */ | |
881 MOWGLI_DICTIONARY_FOREACH(tvalue, &state, tuple->dict) { | |
882 gchar *key, *value; | |
883 | |
884 if (tvalue->type != TUPLE_INT && tvalue->value.string) | |
885 value = g_strdup(tvalue->value.string); | |
886 else if (tvalue->type == TUPLE_INT) | |
887 value = g_strdup_printf("%d", tvalue->value.integer); | |
888 else | |
889 continue; | |
890 | |
891 key = g_strdup(state.cur->key); | |
892 | |
893 gtk_list_store_append(store, &iter); | |
894 gtk_list_store_set(store, &iter, | |
895 RAWDATA_KEY, key, | |
896 RAWDATA_VALUE, value, -1); | |
897 | |
898 g_free(key); | |
899 g_free(value); | |
900 } | |
901 | |
902 gtk_tree_view_set_model(GTK_TREE_VIEW(treeview_rawdata), GTK_TREE_MODEL(store)); | |
903 g_object_unref(store); | |
904 | |
815 if (!GTK_WIDGET_VISIBLE(fileinfo_win)) | 905 if (!GTK_WIDGET_VISIBLE(fileinfo_win)) |
816 gtk_widget_show(fileinfo_win); | 906 gtk_widget_show(fileinfo_win); |
817 } | 907 } |
818 | 908 |
819 void | 909 void |