亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? cddb_lookup.c

?? Aqualung is an advanced music player primarily targeted for the GNU/Linux operating system, but als
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*                                                     -*- linux-c -*-    Copyright (C) 2004 Tom Szilagyi    This program is free software; you can redistribute it and/or modify    it under the terms of the GNU General Public License as published by    the Free Software Foundation; either version 2 of the License, or    (at your option) any later version.    This program is distributed in the hope that it will be useful,    but WITHOUT ANY WARRANTY; without even the implied warranty of    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    GNU General Public License for more details.    You should have received a copy of the GNU General Public License    along with this program; if not, write to the Free Software    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.    $Id: cddb_lookup.c,v 1.23 2006/09/26 12:46:19 peterszilagyi Exp $*/#include <config.h>#ifdef HAVE_CDDB#include <stdio.h>#include <stdlib.h>#include <string.h>#include <gtk/gtk.h>#include <cddb/cddb.h>#ifdef _WIN32#include <glib.h>#else#include <pthread.h>#endif /* _WIN32 */#include "common.h"#include "i18n.h"#include "options.h"#include "decoder/file_decoder.h"#include "gui_main.h"#include "music_browser.h"#include "build_store.h"#include "cddb_lookup.h"#define CASE_UP    0#define CASE_DOWN  1extern options_t options;extern GtkWidget* gui_stock_label_button(gchar *blabel, const gchar *bstock);extern GtkWidget * browser_window;extern GtkTreeStore * music_store;extern GtkTreeSelection * music_select;AQUALUNG_THREAD_DECLARE(cddb_thread_id)int cddb_thread_state = CDDB_THREAD_FREE;volatile int cddb_query_aborted = 0;volatile int cddb_data_locked = 0;GtkTreeIter iter_record;GtkWidget * progress_win = NULL;GtkWidget * progress_label;GtkWidget * progbar;int progress_counter = 0;int progress_prev = 0;GtkWidget * combo;GtkListStore * track_store;GtkWidget * artist_entry;GtkWidget * title_entry;GtkWidget * year_entry;GtkWidget * year_spinner;GtkWidget * category_entry;GtkWidget * category_combo;GtkWidget * genre_entry;GtkWidget * ext_entry;int * frames = NULL;int record_length;int track_count;cddb_disc_t ** records = NULL;int record_count;static voidabort_cb(GtkWidget * widget, gpointer data) {	cddb_query_aborted = 1;}static voidcreate_progress_window(void) {	GtkWidget * vbox;	GtkWidget * hbuttonbox;	GtkWidget * hseparator;	GtkWidget * abort_button;	progress_win = gtk_window_new(GTK_WINDOW_TOPLEVEL);        gtk_window_set_title(GTK_WINDOW(progress_win), _("CDDB query"));        gtk_window_set_position(GTK_WINDOW(progress_win), GTK_WIN_POS_CENTER);        gtk_window_resize(GTK_WINDOW(progress_win), 330, 120);        g_signal_connect(G_OBJECT(progress_win), "delete_event",			 G_CALLBACK(abort_cb), NULL);        gtk_container_set_border_width(GTK_CONTAINER(progress_win), 10);		vbox = gtk_vbox_new(FALSE, 0);	gtk_container_add(GTK_CONTAINER(progress_win), vbox);	progress_label = gtk_label_new(_("Retrieving matches from server..."));	gtk_box_pack_start(GTK_BOX(vbox), progress_label, FALSE, FALSE, 0);		progbar = gtk_progress_bar_new();	gtk_progress_bar_set_text(GTK_PROGRESS_BAR(progbar), _("Connecting to CDDB server..."));	gtk_box_pack_start(GTK_BOX(vbox), progbar, FALSE, FALSE, 6);	        hseparator = gtk_hseparator_new ();        gtk_widget_show (hseparator);        gtk_box_pack_start (GTK_BOX (vbox), hseparator, FALSE, TRUE, 5);	hbuttonbox = gtk_hbutton_box_new();	gtk_box_pack_end(GTK_BOX(vbox), hbuttonbox, FALSE, TRUE, 0);	gtk_button_box_set_layout(GTK_BUTTON_BOX(hbuttonbox), GTK_BUTTONBOX_END);        abort_button = gui_stock_label_button(_("Abort"), GTK_STOCK_CANCEL);        g_signal_connect(G_OBJECT(abort_button), "clicked",			 G_CALLBACK(abort_cb), NULL);  	gtk_container_add(GTK_CONTAINER(hbuttonbox), abort_button);           gtk_widget_grab_focus(abort_button);	gtk_widget_show_all(progress_win);}static voiddestroy_progress_window() {	gtk_widget_destroy(progress_win);	progress_win = NULL;}static intinit_query_data() {	GtkTreeIter iter_track;	char * pfile;	char file[MAXLEN];	int i;	float duration = 0.0f;	float length = 0.0f;	float fr_offset = SECONDS_TO_FRAMES(2.0f); /* leading 2 secs in frames */	track_count = gtk_tree_model_iter_n_children(GTK_TREE_MODEL(music_store), &iter_record);	if ((frames = (int *)malloc(sizeof(int) * track_count)) == NULL) {		fprintf(stderr, "cddb_lookup.c: init_query_data(): malloc error\n");		return 1;	}	for (i = 0; gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(music_store),						  &iter_track, &iter_record, i); i++) {		gtk_tree_model_get(GTK_TREE_MODEL(music_store),				   &iter_track, 2, &pfile, 4, &duration, -1);		strncpy(file, pfile, MAXLEN-1);		g_free(pfile);		if (duration == 0.0f) {			if ((duration = get_file_duration(file)) == 0.0f) {				return 1;			}			gtk_tree_store_set(music_store, &iter_track, 4, duration, -1);			music_store_mark_changed(&iter_track);		}		frames[i] = (int)fr_offset;		length += duration;		fr_offset += SECONDS_TO_FRAMES(duration);	}	record_length = length;	return 0;}static intinit_query_data_from_tracklist(build_track_t * tracks) {	int i;	float length = 0.0f;	float fr_offset = SECONDS_TO_FRAMES(2.0f); /* leading 2 secs in frames */	build_track_t * ptrack = NULL;	for (track_count = 0, ptrack = tracks; ptrack; track_count++, ptrack = ptrack->next);	if ((frames = (int *)malloc(sizeof(int) * track_count)) == NULL) {		fprintf(stderr, "cddb_lookup.c: init_query_data_from_tracklist(): malloc error\n");		return 1;	}	for (i = 0, ptrack = tracks; ptrack; i++, ptrack = ptrack->next) {		frames[i] = (int)fr_offset;		length += ptrack->duration;		fr_offset += SECONDS_TO_FRAMES(ptrack->duration);	}	record_length = length;	return 0;}static voidload_disc(cddb_disc_t * disc) {	GtkTreeIter iter;	char str[MAXLEN];	int i;	gtk_entry_set_text(GTK_ENTRY(artist_entry), cddb_disc_get_artist(disc));	gtk_entry_set_text(GTK_ENTRY(title_entry), cddb_disc_get_title(disc));	snprintf(str, MAXLEN-1, "%d", cddb_disc_get_year(disc));	gtk_entry_set_text(GTK_ENTRY(year_entry), str);	gtk_entry_set_text(GTK_ENTRY(category_entry), cddb_disc_get_category_str(disc));	gtk_entry_set_text(GTK_ENTRY(genre_entry), cddb_disc_get_genre(disc));	gtk_entry_set_text(GTK_ENTRY(ext_entry), cddb_disc_get_ext_data(disc));	gtk_list_store_clear(GTK_LIST_STORE(track_store));	for (i = 0; i < track_count; i++) {		gtk_list_store_append(track_store, &iter);		gtk_list_store_set(track_store, &iter,				   0, cddb_track_get_title(cddb_disc_get_track(disc, i)), -1);	}}static voidadd_to_comments(GtkWidget * widget, gpointer data) {	char * pcomment;	char comment[MAXLEN];	if (data == NULL) return;	gtk_tree_model_get(GTK_TREE_MODEL(music_store), &iter_record, 3, &pcomment, -1);	comment[0] = '\0';	if (pcomment != NULL) {		strncpy(comment, pcomment, MAXLEN-1);	}	strncat(comment, (char *)data, MAXLEN-1);	gtk_tree_store_set(music_store, &iter_record, 3, comment, -1);	tree_selection_changed_cb(music_select, NULL);	music_store_mark_changed(&iter_record);}static voidimport_as_artist(GtkWidget * widget, gpointer data) {	GtkTreeIter iter;	GtkTreePath * path;	path = gtk_tree_model_get_path(GTK_TREE_MODEL(music_store), &iter_record);	gtk_tree_path_up(path);	gtk_tree_model_get_iter(GTK_TREE_MODEL(music_store), &iter, path);	gtk_tree_store_set(music_store, &iter, 0, gtk_entry_get_text(GTK_ENTRY(artist_entry)), -1);	music_store_mark_changed(&iter);}static voidimport_as_title(GtkWidget * widget, gpointer data) {	gtk_tree_store_set(music_store, &iter_record, 0, gtk_entry_get_text(GTK_ENTRY(title_entry)), -1);	music_store_mark_changed(&iter_record);}static voidimport_as_sort_key(GtkWidget * widget, gpointer data) {	gtk_tree_store_set(music_store, &iter_record, 1, gtk_entry_get_text(GTK_ENTRY(year_entry)), -1);	music_store_mark_changed(&iter_record);}static voidchanged_combo(GtkWidget * widget, gpointer * data) {	int i = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));	if (i >= 0 && i < record_count) {		load_disc(records[i]);	}}static voidcell_edited_callback(GtkCellRendererText * cell, gchar * path, gchar * text, gpointer data) {	GtkTreeIter iter;	if (gtk_tree_model_get_iter_from_string(GTK_TREE_MODEL(track_store), &iter, path)) {		gtk_list_store_set(track_store, &iter, 0, text, -1);	}}static voidcreate_cddb_dialog(void) {	GtkWidget * dialog;	GtkWidget * table;	GtkWidget * hbox;	GtkWidget * label;	GtkWidget * button;	GtkWidget * track_list;	GtkWidget * viewport;	GtkWidget * scrollwin;	GtkCellRenderer * renderer;	GtkTreeViewColumn * column;	GtkTreeIter iter_track;	GtkTreeIter iter_trlist;	int i;	char text[MAXLEN];        dialog = gtk_dialog_new_with_buttons(_("CDDB query"),					     GTK_WINDOW(browser_window),					     GTK_DIALOG_DESTROY_WITH_PARENT,					     GTK_STOCK_OK, GTK_RESPONSE_ACCEPT,					     GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,					     NULL);	gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);        gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_REJECT);	gtk_window_set_modal(GTK_WINDOW(dialog), FALSE);	table = gtk_table_new(8, 3, FALSE);        gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), table, FALSE, FALSE, 2);	hbox = gtk_hbox_new(FALSE, 0);	gtk_table_attach(GTK_TABLE(table), hbox, 0, 1, 0, 1, GTK_FILL, GTK_FILL, 5, 3);	label = gtk_label_new(_("Matches:"));        gtk_box_pack_end(GTK_BOX(hbox), label, FALSE, FALSE, 2);	combo = gtk_combo_box_new_text();	for (i = 0; i < record_count; i++) {		snprintf(text, MAXLEN, "%d. %s: %s (%s)",			 i + 1,			 cddb_disc_get_artist(records[i]),			 cddb_disc_get_title(records[i]),			 cddb_disc_get_category_str(records[i]));		gtk_combo_box_append_text(GTK_COMBO_BOX(combo), text);	}	gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 0);	g_signal_connect(combo, "changed", G_CALLBACK(changed_combo), NULL);			 	gtk_table_attach(GTK_TABLE(table), combo, 1, 3, 0, 1, GTK_FILL, GTK_FILL, 5, 3);	hbox = gtk_hbox_new(FALSE, 0);	gtk_table_attach(GTK_TABLE(table), hbox, 0, 1, 1, 2, GTK_FILL, GTK_FILL, 5, 3);	label = gtk_label_new(_("Artist:"));        gtk_box_pack_end(GTK_BOX(hbox), label, FALSE, FALSE, 2);	artist_entry = gtk_entry_new();	gtk_table_attach(GTK_TABLE(table), artist_entry, 1, 2, 1, 2,			 GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 3);	button = gtk_button_new_with_label(_("Import as Artist"));	g_signal_connect(G_OBJECT(button), "clicked",			 G_CALLBACK(import_as_artist), NULL);	gtk_table_attach(GTK_TABLE(table), button, 2, 3, 1, 2, GTK_FILL, GTK_FILL, 5, 3);	hbox = gtk_hbox_new(FALSE, 0);	gtk_table_attach(GTK_TABLE(table), hbox, 0, 1, 2, 3, GTK_FILL, GTK_FILL, 5, 3);	label = gtk_label_new(_("Title:"));        gtk_box_pack_end(GTK_BOX(hbox), label, FALSE, FALSE, 2);	title_entry = gtk_entry_new();	gtk_table_attach(GTK_TABLE(table), title_entry, 1, 2, 2, 3,			 GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 3);	button = gtk_button_new_with_label(_("Import as Title"));	g_signal_connect(G_OBJECT(button), "clicked",			 G_CALLBACK(import_as_title), NULL);	gtk_table_attach(GTK_TABLE(table), button, 2, 3, 2, 3, GTK_FILL, GTK_FILL, 5, 3);	hbox = gtk_hbox_new(FALSE, 0);	gtk_table_attach(GTK_TABLE(table), hbox, 0, 1, 3, 4, GTK_FILL, GTK_FILL, 5, 3);	label = gtk_label_new(_("Year:"));        gtk_box_pack_end(GTK_BOX(hbox), label, FALSE, FALSE, 2);	year_entry = gtk_entry_new();	gtk_table_attach(GTK_TABLE(table), year_entry, 1, 2, 3, 4,			 GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 3);	button = gtk_button_new_with_label(_("Import as Sort Key"));	g_signal_connect(G_OBJECT(button), "clicked",			 G_CALLBACK(import_as_sort_key), NULL);	gtk_table_attach(GTK_TABLE(table), button, 2, 3, 3, 4, GTK_FILL, GTK_FILL, 5, 3);	hbox = gtk_hbox_new(FALSE, 0);	gtk_table_attach(GTK_TABLE(table), hbox, 0, 1, 4, 5, GTK_FILL, GTK_FILL, 5, 3);	label = gtk_label_new(_("Category:"));        gtk_box_pack_end(GTK_BOX(hbox), label, FALSE, FALSE, 2);	category_entry = gtk_entry_new();	gtk_table_attach(GTK_TABLE(table), category_entry, 1, 2, 4, 5,			 GTK_FILL | GTK_EXPAND, GTK_FILL | GTK_EXPAND, 5, 3);	button = gtk_button_new_with_label(_("Add to Comments"));	g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(add_to_comments),			 (gpointer)gtk_entry_get_text(GTK_ENTRY(category_entry)));	gtk_table_attach(GTK_TABLE(table), button, 2, 3, 4, 5, GTK_FILL, GTK_FILL, 5, 3);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品伦理在线| 秋霞成人午夜伦在线观看| 亚洲1区2区3区4区| 国产成人精品免费网站| 欧美性一区二区| 国产三级一区二区三区| 婷婷久久综合九色综合绿巨人| 蜜桃视频在线一区| 在线视频欧美区| 亚洲国产精品99久久久久久久久| 爽好久久久欧美精品| 91网站在线播放| 久久精品免视看| 久久精品久久久精品美女| 欧洲色大大久久| 亚洲欧美在线观看| 国产成人免费在线| 日韩女同互慰一区二区| 亚洲欧洲日本在线| 国产九九视频一区二区三区| 欧美一级久久久久久久大片| 一区二区三区四区不卡在线| 成人av第一页| 亚洲国产高清不卡| 韩国女主播一区| 久久久www免费人成精品| 亚洲国产日韩一级| 91片在线免费观看| 成人欧美一区二区三区小说| 成人做爰69片免费看网站| 久久色.com| 国产精品影音先锋| 久久久久久久综合色一本| 精品一区在线看| 日韩精品中文字幕一区二区三区| 午夜精品一区二区三区三上悠亚| 在线免费不卡视频| 一区二区三区免费在线观看| 色综合久久综合网| 一区二区三区不卡视频 | 国产欧美综合色| 国产激情一区二区三区桃花岛亚洲| 日韩一区二区三区视频| 蜜臀av一区二区| 久久综合九色综合欧美就去吻 | 51精品视频一区二区三区| 日韩精品电影在线| 欧美成人精品高清在线播放| 激情都市一区二区| 国产精品天干天干在观线| hitomi一区二区三区精品| 亚洲黄网站在线观看| 在线视频国产一区| 日韩电影一区二区三区四区| 欧美成人三级电影在线| 国产91综合一区在线观看| 亚洲丝袜精品丝袜在线| 在线播放日韩导航| 国产精品一区专区| 全部av―极品视觉盛宴亚洲| 成人永久aaa| 国产精品乱人伦一区二区| 91性感美女视频| 亚洲成人手机在线| 精品久久99ma| 99久久精品国产一区二区三区 | 日本一区二区成人| 色菇凉天天综合网| 美女国产一区二区| 亚洲国产精品t66y| 久久综合五月天婷婷伊人| 国产高清精品网站| 欧美久久一二三四区| 一区二区三区四区乱视频| 91福利国产成人精品照片| 午夜精品久久久久久不卡8050| 日韩欧美国产不卡| 99精品一区二区| 麻豆精品国产传媒mv男同| 国产精品美女一区二区三区| 欧美日韩国产另类不卡| 大胆欧美人体老妇| 蜜臀国产一区二区三区在线播放| 国产精品久久久久久久久图文区| 777a∨成人精品桃花网| 99re8在线精品视频免费播放| 日本特黄久久久高潮| 日韩一区日韩二区| 精品久久久久久久久久久久久久久 | 日韩欧美视频在线| 99视频一区二区| 精品一区二区三区av| 亚洲精品水蜜桃| 中文字幕巨乱亚洲| 日韩免费高清电影| 欧美日韩国产天堂| 99r精品视频| 国产成人综合在线观看| 蜜臀av性久久久久av蜜臀妖精 | 久久综合久久综合亚洲| 欧美日韩中文字幕一区| 成人黄色在线网站| 国产一区999| 精品亚洲欧美一区| 日本va欧美va瓶| 亚洲国产人成综合网站| 亚洲欧美偷拍另类a∨色屁股| 国产清纯在线一区二区www| 成人午夜又粗又硬又大| 一区二区三区波多野结衣在线观看 | 亚洲福利视频导航| 最新高清无码专区| 国产精品护士白丝一区av| 久久久av毛片精品| 欧美精品一区二区三区蜜桃视频 | 94-欧美-setu| av不卡一区二区三区| 成人午夜短视频| 成人一区二区视频| av中文字幕在线不卡| av中文一区二区三区| 波多野结衣欧美| 92国产精品观看| 色久综合一二码| 欧美色精品天天在线观看视频| 欧美亚洲国产一区在线观看网站 | 26uuu久久综合| 亚洲精品一区二区精华| 国产欧美一区二区精品婷婷 | 夜夜揉揉日日人人青青一国产精品| ...av二区三区久久精品| 亚洲日本一区二区| 一区二区三区免费| 午夜精品久久一牛影视| 另类小说欧美激情| 激情六月婷婷综合| 国产不卡免费视频| 色先锋aa成人| 欧美肥胖老妇做爰| 精品久久久久久久久久久久久久久久久| ww久久中文字幕| 中文字幕在线一区| 亚洲综合自拍偷拍| 免费xxxx性欧美18vr| 666欧美在线视频| 国产成人av一区二区三区在线观看| 国产激情视频一区二区三区欧美| 国产福利91精品一区| 色综合久久九月婷婷色综合| 欧美色图免费看| 精品国产一区二区三区不卡| 中文字幕av资源一区| 亚洲主播在线观看| 黄色精品一二区| 91免费国产在线| 日韩欧美亚洲国产另类| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产精品亚洲一区二区三区妖精 | 国产精品毛片a∨一区二区三区| 成人免费在线观看入口| 日韩成人dvd| 99视频一区二区三区| 日韩欧美国产综合| 亚洲三级电影全部在线观看高清| 欧美va亚洲va香蕉在线| 色诱视频网站一区| 国产日韩欧美精品电影三级在线| 国产精品国产成人国产三级 | 国产午夜精品福利| 亚洲一区二区精品视频| 国产一区二区免费视频| 欧美无砖专区一中文字| 国产精品毛片久久久久久| 日本不卡不码高清免费观看| 99国产精品久久久久| 2021久久国产精品不只是精品| 亚洲影视资源网| 成人av资源站| 久久久久国产精品人| 日韩国产成人精品| 在线观看一区二区视频| 久久欧美一区二区| 蜜臀av性久久久久蜜臀aⅴ流畅 | 欧美日韩极品在线观看一区| 国产精品色婷婷久久58| 久久99精品网久久| gogo大胆日本视频一区| 亚洲女同一区二区| 久久国产麻豆精品| 欧美丰满一区二区免费视频| 亚洲欧美日韩电影| 懂色av一区二区夜夜嗨| 26uuu欧美日本| 国内久久婷婷综合| 精品少妇一区二区三区日产乱码 | 首页综合国产亚洲丝袜| 色综合视频在线观看| 亚洲欧美一区二区在线观看| 粉嫩欧美一区二区三区高清影视| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av |