📄 fileinfo.c
字号:
label = gtk_label_new(_("Filename:")); gtk_box_pack_start(GTK_BOX(filename_hbox), label, FALSE, TRUE, 0); filename_entry = gtk_entry_new(); gtk_editable_set_editable(GTK_EDITABLE(filename_entry), FALSE); gtk_box_pack_start(GTK_BOX(filename_hbox), filename_entry, TRUE, TRUE, 0); hbox = gtk_hbox_new(FALSE, 10); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, TRUE, 0); left_vbox = gtk_vbox_new(FALSE, 10); gtk_box_pack_start(GTK_BOX(hbox), left_vbox, FALSE, FALSE, 0); tag_frame = gtk_frame_new(_("Ogg Vorbis Tag:")); gtk_box_pack_start(GTK_BOX(left_vbox), tag_frame, FALSE, FALSE, 0); table = gtk_table_new(5, 5, FALSE); gtk_container_set_border_width(GTK_CONTAINER(table), 5); gtk_container_add(GTK_CONTAINER(tag_frame), table); label = gtk_label_new(_("Title:")); gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), label, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 5, 5); title_entry = gtk_entry_new(); gtk_table_attach(GTK_TABLE(table), title_entry, 1, 4, 0, 1, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); label = gtk_label_new(_("Artist:")); gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), label, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 5, 5); performer_entry = gtk_entry_new(); gtk_table_attach(GTK_TABLE(table), performer_entry, 1, 4, 1, 2, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); label = gtk_label_new(_("Album:")); gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), label, 0, 1, 2, 3, GTK_FILL, GTK_FILL, 5, 5); album_entry = gtk_entry_new(); gtk_table_attach(GTK_TABLE(table), album_entry, 1, 4, 2, 3, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); label = gtk_label_new(_("Comment:")); gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), label, 0, 1, 3, 4, GTK_FILL, GTK_FILL, 5, 5); user_comment_entry = gtk_entry_new(); gtk_table_attach(GTK_TABLE(table), user_comment_entry, 1, 4, 3, 4, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); label = gtk_label_new(_("Date:")); gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), label, 0, 1, 4, 5, GTK_FILL, GTK_FILL, 5, 5); date_entry = gtk_entry_new(); gtk_widget_set_usize(date_entry, 60, -1); gtk_table_attach(GTK_TABLE(table), date_entry, 1, 2, 4, 5, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); label = gtk_label_new(_("Track number:")); gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), label, 2, 3, 4, 5, GTK_FILL, GTK_FILL, 5, 5); tracknumber_entry = gtk_entry_new_with_max_length(4); gtk_widget_set_usize(tracknumber_entry, 20, -1); gtk_table_attach(GTK_TABLE(table), tracknumber_entry, 3, 4, 4, 5, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); label = gtk_label_new(_("Genre:")); gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), label, 0, 1, 5, 6, GTK_FILL, GTK_FILL, 5, 5); genre_combo = gtk_combo_new(); if (!genre_list) { for (i = 0; i < sizeof(vorbis_genres)/sizeof(*vorbis_genres) ; i++) genre_list = g_list_prepend(genre_list, _(vorbis_genres[i])); genre_list = g_list_sort(genre_list, (GCompareFunc)g_strcasecmp); } gtk_combo_set_popdown_strings(GTK_COMBO(genre_combo), genre_list); gtk_table_attach(GTK_TABLE(table), genre_combo, 1, 4, 5, 6, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);#ifdef ALL_VORBIS_TAGS label = gtk_label_new(_("Description:")); gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), label, 0, 1, 6, 7, GTK_FILL, GTK_FILL, 5, 5); description_entry = gtk_entry_new(); gtk_table_attach(GTK_TABLE(table), description_entry, 1, 4, 6, 7, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); label = gtk_label_new(_("Location:")); gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), label, 0, 1, 7, 8, GTK_FILL, GTK_FILL, 5, 5); location_entry = gtk_entry_new(); gtk_table_attach(GTK_TABLE(table), location_entry, 1, 4, 7, 8, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); label = gtk_label_new(_("Version:")); gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), label, 0, 1, 8, 9, GTK_FILL, GTK_FILL, 5, 5); version_entry = gtk_entry_new(); gtk_widget_set_usize(version_entry, 60, -1); gtk_table_attach(GTK_TABLE(table), version_entry, 1, 2, 8, 9, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); label = gtk_label_new(_("ISRC number:")); gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), label, 2, 3, 8, 9, GTK_FILL, GTK_FILL, 5, 5); isrc_entry = gtk_entry_new(); gtk_widget_set_usize(isrc_entry, 20, -1); gtk_table_attach(GTK_TABLE(table), isrc_entry, 3, 4, 8, 9, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); label = gtk_label_new(_("Organization:")); gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), label, 0, 1, 9, 10, GTK_FILL, GTK_FILL, 5, 5); organization_entry = gtk_entry_new(); gtk_table_attach(GTK_TABLE(table), organization_entry, 1, 4, 9, 10, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); label = gtk_label_new(_("Copyright:")); gtk_misc_set_alignment(GTK_MISC(label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), label, 0, 1, 10, 11, GTK_FILL, GTK_FILL, 5, 5); copyright_entry = gtk_entry_new(); gtk_table_attach(GTK_TABLE(table), copyright_entry, 1, 4, 10, 11, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5);#endif rg_show_button = gtk_check_button_new_with_label(_("ReplayGain Settings:")); gtk_signal_connect(GTK_OBJECT(rg_show_button), "toggled", GTK_SIGNAL_FUNC(rg_show_cb), NULL); gtk_table_attach(GTK_TABLE(table), rg_show_button, 0, 2, 11, 12, GTK_FILL, GTK_FILL, 5, 5); rg_track_label = gtk_label_new(_("Track gain:")); gtk_misc_set_alignment(GTK_MISC(rg_track_label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), rg_track_label, 2, 3, 11, 12, GTK_FILL, GTK_FILL, 5, 5); rg_track_entry = gtk_entry_new(); gtk_table_attach(GTK_TABLE(table), rg_track_entry, 3, 4, 11, 12, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); rg_track_peak_label = gtk_label_new(_("Track peak:")); gtk_misc_set_alignment(GTK_MISC(rg_track_peak_label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), rg_track_peak_label, 2, 3, 12, 13, GTK_FILL, GTK_FILL, 5, 5); rg_track_peak_entry = gtk_entry_new(); gtk_table_attach(GTK_TABLE(table), rg_track_peak_entry, 3, 4, 12, 13, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); rg_album_label = gtk_label_new(_("Album gain:")); gtk_misc_set_alignment(GTK_MISC(rg_album_label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), rg_album_label, 2, 3, 13, 14, GTK_FILL, GTK_FILL, 5, 5); rg_album_entry = gtk_entry_new(); gtk_table_attach(GTK_TABLE(table), rg_album_entry, 3, 4, 13, 14, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); rg_album_peak_label = gtk_label_new(_("Album peak:")); gtk_misc_set_alignment(GTK_MISC(rg_album_peak_label), 1, 0.5); gtk_table_attach(GTK_TABLE(table), rg_album_peak_label, 2, 3, 14, 15, GTK_FILL, GTK_FILL, 5, 5); rg_album_peak_entry = gtk_entry_new(); gtk_table_attach(GTK_TABLE(table), rg_album_peak_entry, 3, 4, 14, 15, GTK_FILL | GTK_EXPAND | GTK_SHRINK, GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 5); bbox = gtk_hbutton_box_new(); gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); gtk_button_box_set_spacing(GTK_BUTTON_BOX(bbox), 5); gtk_box_pack_start(GTK_BOX(left_vbox), bbox, FALSE, FALSE, 0); save_button = gtk_button_new_with_label(_("Save")); gtk_signal_connect(GTK_OBJECT(save_button), "clicked", GTK_SIGNAL_FUNC(save_cb), NULL); GTK_WIDGET_SET_FLAGS(save_button, GTK_CAN_DEFAULT); gtk_box_pack_start(GTK_BOX(bbox), save_button, TRUE, TRUE, 0); gtk_widget_grab_default(save_button); remove_button = gtk_button_new_with_label(_("Remove Tag")); gtk_signal_connect_object(GTK_OBJECT(remove_button), "clicked", GTK_SIGNAL_FUNC(remove_cb), NULL); GTK_WIDGET_SET_FLAGS(remove_button, GTK_CAN_DEFAULT); gtk_box_pack_start(GTK_BOX(bbox),remove_button, TRUE, TRUE, 0); cancel_button = gtk_button_new_with_label(_("Cancel")); gtk_signal_connect_object(GTK_OBJECT(cancel_button), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(window)); GTK_WIDGET_SET_FLAGS(cancel_button, GTK_CAN_DEFAULT); gtk_box_pack_start(GTK_BOX(bbox),cancel_button, TRUE, TRUE, 0); info_frame = gtk_frame_new(_("Ogg Vorbis Info:")); gtk_box_pack_start(GTK_BOX(hbox), info_frame, FALSE, FALSE, 0); info_box = gtk_vbox_new(FALSE, 5); gtk_container_add(GTK_CONTAINER(info_frame), info_box); gtk_container_set_border_width(GTK_CONTAINER(info_box), 10); gtk_box_set_spacing(GTK_BOX(info_box), 0); bitrate_label = gtk_label_new(""); gtk_misc_set_alignment(GTK_MISC(bitrate_label), 0, 0); gtk_label_set_justify(GTK_LABEL(bitrate_label), GTK_JUSTIFY_LEFT); gtk_box_pack_start(GTK_BOX(info_box), bitrate_label, FALSE, FALSE, 0); rate_label = gtk_label_new(""); gtk_misc_set_alignment(GTK_MISC(rate_label), 0, 0); gtk_label_set_justify(GTK_LABEL(rate_label), GTK_JUSTIFY_LEFT); gtk_box_pack_start(GTK_BOX(info_box), rate_label, FALSE, FALSE, 0); channel_label = gtk_label_new(""); gtk_misc_set_alignment(GTK_MISC(channel_label), 0, 0); gtk_label_set_justify(GTK_LABEL(channel_label), GTK_JUSTIFY_LEFT); gtk_box_pack_start(GTK_BOX(info_box), channel_label, FALSE, FALSE, 0); length_label = gtk_label_new(""); gtk_misc_set_alignment(GTK_MISC(length_label), 0, 0); gtk_label_set_justify(GTK_LABEL(length_label), GTK_JUSTIFY_LEFT); gtk_box_pack_start(GTK_BOX(info_box), length_label, FALSE, FALSE, 0); filesize_label = gtk_label_new(""); gtk_misc_set_alignment(GTK_MISC(filesize_label), 0, 0); gtk_label_set_justify(GTK_LABEL(filesize_label), GTK_JUSTIFY_LEFT); gtk_box_pack_start(GTK_BOX(info_box), filesize_label, FALSE, FALSE, 0); replaygain_label = gtk_label_new(""); gtk_misc_set_alignment(GTK_MISC(replaygain_label), 0, 0); gtk_label_set_justify(GTK_LABEL(replaygain_label), GTK_JUSTIFY_LEFT); gtk_box_pack_start(GTK_BOX(info_box), replaygain_label, FALSE, FALSE, 0); audiophilegain_label = gtk_label_new(""); gtk_misc_set_alignment(GTK_MISC(audiophilegain_label), 0, 0); gtk_label_set_justify(GTK_LABEL(audiophilegain_label), GTK_JUSTIFY_LEFT); gtk_box_pack_start(GTK_BOX(info_box), audiophilegain_label, FALSE, FALSE, 0); peak_label = gtk_label_new(""); gtk_misc_set_alignment(GTK_MISC(peak_label), 0, 0); gtk_label_set_justify(GTK_LABEL(peak_label), GTK_JUSTIFY_LEFT); gtk_box_pack_start(GTK_BOX(info_box), peak_label, FALSE, FALSE, 0); gtk_widget_show_all(window); } else gdk_window_raise(window->window); if (!g_strncasecmp(vte.filename, "http://", 7)) gtk_widget_set_sensitive(tag_frame, FALSE); else gtk_widget_set_sensitive(tag_frame, TRUE); gtk_label_set_text(GTK_LABEL(bitrate_label), ""); gtk_label_set_text(GTK_LABEL(rate_label), ""); gtk_label_set_text(GTK_LABEL(channel_label), ""); gtk_label_set_text(GTK_LABEL(length_label), ""); gtk_label_set_text(GTK_LABEL(filesize_label), ""); if ((fh = fopen(vte.filename, "r")) != NULL) { pthread_mutex_lock(&vf_mutex); if (ov_open(fh, &vf, NULL, 0) == 0) { comment = ov_comment(&vf, -1); if ((vi = ov_info(&vf, 0)) != NULL) { bitrate = vi->bitrate_nominal/1000; rate = vi->rate; channels = vi->channels; g_message("version: %d", vi->version); clear_vf = TRUE; } else { bitrate = 0; rate = 0; channels = 0; } time = ov_time_total(&vf, -1); minutes = time / 60; seconds = time % 60; fseek(fh, 0, SEEK_END); filesize = ftell(fh); label_set_text(bitrate_label, _("Nominal bitrate: %d kbps"), bitrate); label_set_text(rate_label, _("Samplerate: %d Hz"), rate); label_set_text(channel_label, _("Channels: %d"), channels); label_set_text(length_label, _("Length: %d:%.2d"), minutes, seconds); label_set_text(filesize_label, _("File size: %d B"), filesize); } else fclose(fh); } track_name = get_comment(comment, "title"); performer = get_comment(comment, "artist"); album_name = get_comment(comment, "album"); track_number = get_comment(comment, "tracknumber"); genre = get_comment(comment, "genre"); date = get_comment(comment, "date"); user_comment = get_comment(comment, "comment"); location = get_comment(comment, "location"); description = get_comment(comment, "description"); version = get_comment(comment, "version"); isrc = get_comment(comment, "isrc"); organization = get_comment(comment, "organization"); copyright = get_comment(comment, "copyright"); rg_track_gain = get_comment(comment, "replaygain_track_gain"); if (*rg_track_gain == '\0') { g_free(rg_track_gain); rg_track_gain = get_comment(comment, "rg_radio"); /* Old */ } rg_album_gain = get_comment(comment, "replaygain_album_gain"); if (*rg_album_gain == '\0') { g_free(rg_album_gain); rg_album_gain = get_comment(comment, "rg_audiophile"); /* Old */ } rg_track_peak = get_comment(comment, "replaygain_track_peak"); if (*rg_track_peak == '\0') { g_free(rg_track_peak); rg_track_peak = get_comment(comment, "rg_peak"); /* Old */ } rg_album_peak = get_comment(comment, "replaygain_album_peak"); /* Old had no album peak */ /* ov_clear closes the file */ if (clear_vf) ov_clear(&vf); pthread_mutex_unlock(&vf_mutex); /* Fill it all in .. */ gtk_entry_set_text(GTK_ENTRY(title_entry), track_name); gtk_entry_set_text(GTK_ENTRY(performer_entry), performer); gtk_entry_set_text(GTK_ENTRY(album_entry), album_name); gtk_entry_set_text(GTK_ENTRY(user_comment_entry), user_comment); gtk_entry_set_text(GTK_ENTRY(GTK_COMBO(genre_combo)->entry), genre); gtk_entry_set_text(GTK_ENTRY(tracknumber_entry), track_number); gtk_entry_set_text(GTK_ENTRY(date_entry), date);#ifdef ALL_VORBIS_TAGS gtk_entry_set_text(GTK_ENTRY(version_entry), version); gtk_entry_set_text(GTK_ENTRY(description_entry), description); gtk_entry_set_text(GTK_ENTRY(organization_entry), organization); gtk_entry_set_text(GTK_ENTRY(copyright_entry), copyright); gtk_entry_set_text(GTK_ENTRY(isrc_entry), isrc); gtk_entry_set_text(GTK_ENTRY(location_entry), location);#endif gtk_entry_set_text(GTK_ENTRY(filename_entry), vte.filename); gtk_editable_set_position(GTK_EDITABLE(filename_entry), -1); gtk_entry_set_text(GTK_ENTRY(rg_track_entry), rg_track_gain); gtk_entry_set_text(GTK_ENTRY(rg_album_entry), rg_album_gain); gtk_entry_set_text(GTK_ENTRY(rg_track_peak_entry), rg_track_peak); gtk_editable_set_position(GTK_EDITABLE(rg_track_peak_entry), -1); gtk_entry_set_text(GTK_ENTRY(rg_album_peak_entry), rg_album_peak); gtk_editable_set_position(GTK_EDITABLE(rg_album_peak_entry), -1); if (*rg_track_gain == '\0' && *rg_album_gain == '\0' && *rg_track_peak == '\0' && *rg_album_peak == '\0') { gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(rg_show_button), FALSE); rg_show_cb(rg_show_button, NULL); } else gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(rg_show_button), TRUE); tmp = g_strdup_printf(_("File Info - %s"), g_basename(vte.filename)); gtk_window_set_title(GTK_WINDOW(window), tmp); g_free(tmp); /* Cleanup .. */ g_free(track_name); g_free(performer); g_free(album_name); g_free(track_number); g_free(genre); g_free(date); g_free(user_comment); g_free(location); g_free(description); g_free(version); g_free(isrc); g_free(organization); g_free(copyright); g_free(rg_track_gain); g_free(rg_album_gain); g_free(rg_track_peak); g_free(rg_album_peak);}static void vorbis_advanced_tag_edit(){}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -