⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prefs.cc

📁 一个功能比较强的下载软件
💻 CC
📖 第 1 页 / 共 5 页
字号:
}#define SND_LABEL_INIT(a){					\	label=gtk_label_new(_(a));				\	gtk_box_pack_start(GTK_BOX(vbox),label,FALSE,FALSE,0);	\}void d4x_prefs_sounds(){	GtkWidget *vbox=d4x_prefs_child_destroy(_("Sounds"));	GtkWidget *hbox=gtk_hbox_new(FALSE,0);	D4XPWS.snd_enable=gtk_check_button_new_with_label(_("enable sounds"));	GTK_TOGGLE_BUTTON(D4XPWS.snd_enable)->active=TMPCFG.ENABLE_SOUNDS;	gtk_box_pack_start(GTK_BOX(hbox),D4XPWS.snd_enable,FALSE,FALSE,0);#ifdef HAVE_ESD	D4XPWS.esd_sound=gtk_check_button_new_with_label(_("output via ESD"));	GTK_TOGGLE_BUTTON(D4XPWS.esd_sound)->active=TMPCFG.ESD_SOUND;	gtk_box_pack_start(GTK_BOX(hbox),D4XPWS.esd_sound,FALSE,FALSE,0);#endif// HAVE_ESD	gtk_box_pack_start(GTK_BOX(vbox),hbox,FALSE,FALSE,0);	GtkWidget *label;	SND_LABEL_INIT(_("Startup"));	SND_ENTRY_INIT(D4XPWS.snd_startup,TMPCFG.SOUND_STARTUP);	SND_LABEL_INIT(_("Adding a download"));	SND_ENTRY_INIT(D4XPWS.snd_add,TMPCFG.SOUND_ADD);	SND_LABEL_INIT(_("Downloading completed"));	SND_ENTRY_INIT(D4XPWS.snd_complete,TMPCFG.SOUND_COMPLETE);	SND_LABEL_INIT(_("Downloading failed"));	SND_ENTRY_INIT(D4XPWS.snd_fail,TMPCFG.SOUND_FAIL);	SND_LABEL_INIT(_("Downloading of queue is completed"));	SND_ENTRY_INIT(D4XPWS.snd_queue_finish,TMPCFG.SOUND_QUEUE_FINISH);	SND_LABEL_INIT(_("Drag'n'Drop event"));	SND_ENTRY_INIT(D4XPWS.snd_dnd_drop,TMPCFG.SOUND_DND_DROP);		gtk_widget_show_all(vbox);};static gboolean d4x_prefs_themes_select_row(GtkTreeSelection *sel, GtkTreeModel *model,					    GtkTreePath *path,gboolean is_sel,					    gpointer data){	GtkTextIter start,end;	gtk_text_buffer_get_bounds(D4XPWS.theme_text,&start,&end);	gtk_text_buffer_delete(D4XPWS.theme_text,&start,&end);	GtkTreeIter iter;	if (is_sel==0 && gtk_tree_model_get_iter(model,&iter,path)){		GValue value={0,};		gtk_tree_model_get_value(model,&iter,0,&value);		const char *text=g_value_get_string(&value);		char *path=sum_strings(TMPCFG.THEMES_DIR,"/",text,".xml",NULL);		tQueue *q=d4x_xml_parse_file(path);		delete[] path;		d4xXmlObject *info=d4x_xml_find_obj(q,"info");		if (info && info->value.get()){			d4xXmlField *fld=info->get_attr("author");			if (fld && fld->value.get()){				gtk_text_buffer_insert(D4XPWS.theme_text,&start,"Author: ",strlen("Author: "));				gtk_text_buffer_insert(D4XPWS.theme_text,&start,fld->value.get(),strlen(fld->value.get()));				fld=info->get_attr("email");				if (fld && fld->value.get()){					gtk_text_buffer_insert(D4XPWS.theme_text,&start," <",strlen(" <"));					gtk_text_buffer_insert(D4XPWS.theme_text,&start,fld->value.get(),strlen(fld->value.get()));					gtk_text_buffer_insert(D4XPWS.theme_text,&start,">",strlen(">"));				};				gtk_text_buffer_insert(D4XPWS.theme_text,&start,"\n",strlen("\n"));			};			gtk_text_buffer_insert(D4XPWS.theme_text,&start,info->value.get(),strlen(info->value.get()));		}else			gtk_text_buffer_insert(D4XPWS.theme_text,&start,					       _("No info about this theme."),					       strlen(_("No info about this theme.")));		if (q) delete(q);		if (TMPCFG.THEME_FILE) delete[] TMPCFG.THEME_FILE;		TMPCFG.THEME_FILE=copy_string(text);		TMPCFG.USE_THEME=1;		g_value_unset(&value);	};	return TRUE;};static int d4x_themes_rescan(){	if (TMPCFG.THEMES_DIR) delete[] TMPCFG.THEMES_DIR;	TMPCFG.THEMES_DIR=copy_string(text_from_combo(MY_GTK_FILESEL(D4XPWS.themes_dir)->combo));	ALL_HISTORIES[THEMES_HISTORY]->add(TMPCFG.THEMES_DIR);	char *path=sum_strings(TMPCFG.THEMES_DIR,"/",NULL);	GtkListStore *list_store=GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(D4XPWS.themes_list)));	GtkTreeSelection *sel=gtk_tree_view_get_selection(GTK_TREE_VIEW(D4XPWS.themes_list));	gtk_list_store_clear(list_store);	GtkTreeIter iter;	gtk_list_store_append(list_store,&iter);	gtk_list_store_set(list_store,&iter,0,_("Default theme"),-1);	DIR *d=opendir(path);	if (d){		struct dirent *de=NULL;		while((de=readdir(d))){			if (de->d_name && strlen(de->d_name)>4 &&			    string_ended(".xml",de->d_name)==0){				char *tmppath=sum_strings(path,"/",de->d_name,NULL);				struct stat s;				stat(tmppath,&s);				if (S_ISREG(s.st_mode)){					char *a=rindex(de->d_name,'.');					if (a)						*a=0;					gtk_list_store_append(list_store,&iter);					gtk_list_store_set(list_store,&iter,0,de->d_name,-1);					if (CFG.THEME_FILE && equal(CFG.THEME_FILE,de->d_name))						gtk_tree_selection_select_iter(sel,&iter);					if (a)						*a='.';				};				delete[] tmppath;			};		};		closedir(d);	};	delete[] path;	return(0);};void d4x_prefs_themes(){	GtkWidget *vbox=d4x_prefs_child_destroy(_("Themes"));	char *titles[]={"Name"};	D4XPWS.themes_dir=my_gtk_filesel_new(ALL_HISTORIES[THEMES_HISTORY]);	MY_GTK_FILESEL(D4XPWS.themes_dir)->only_dirs=TRUE;	MY_GTK_FILESEL(D4XPWS.themes_dir)->modal=GTK_WINDOW(d4x_prefs_window);	text_to_combo(MY_GTK_FILESEL(D4XPWS.themes_dir)->combo,TMPCFG.THEMES_DIR);	GtkWidget *themes_dir_label=gtk_label_new(_("Themes' directory")); 	GtkWidget *themes_rescan=gtk_button_new_with_label(_("Rescan"));	g_signal_connect(G_OBJECT(themes_rescan),"clicked",G_CALLBACK(d4x_themes_rescan),NULL);	gtk_box_pack_start(GTK_BOX(D4XPWS.themes_dir),themes_rescan,FALSE,FALSE,0);	gtk_box_pack_start(GTK_BOX(vbox),themes_dir_label,FALSE,FALSE,0);	gtk_box_pack_start(GTK_BOX(vbox),D4XPWS.themes_dir,FALSE,FALSE,0);	GtkListStore *list_store = gtk_list_store_new(1,G_TYPE_STRING);	D4XPWS.themes_list=gtk_tree_view_new_with_model(GTK_TREE_MODEL(list_store));	GtkCellRenderer *renderer=gtk_cell_renderer_text_new ();	GtkTreeViewColumn *col=gtk_tree_view_column_new_with_attributes (_("Name"),									 renderer,									 "text",0,									 NULL);	gtk_tree_view_append_column (GTK_TREE_VIEW(D4XPWS.themes_list), col);	GtkTreeSelection *sel=gtk_tree_view_get_selection(GTK_TREE_VIEW(D4XPWS.themes_list));	gtk_tree_selection_set_select_function(sel,d4x_prefs_themes_select_row,NULL,NULL);		gtk_box_pack_start(GTK_BOX(vbox),D4XPWS.themes_list,TRUE,TRUE,0);	D4XPWS.theme_info=gtk_text_view_new();	D4XPWS.theme_text=gtk_text_view_get_buffer(GTK_TEXT_VIEW(D4XPWS.theme_info));	GtkWidget *sw=gtk_scrolled_window_new(NULL,NULL);	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw),GTK_SHADOW_IN);	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),					GTK_POLICY_AUTOMATIC,					GTK_POLICY_AUTOMATIC);	gtk_box_pack_start(GTK_BOX(vbox),sw,TRUE,FALSE,0);	gtk_widget_set_size_request(D4XPWS.theme_info,-1,100);	gtk_container_add(GTK_CONTAINER(sw),D4XPWS.theme_info);	gtk_text_view_set_editable(GTK_TEXT_VIEW(D4XPWS.theme_info),FALSE);	d4x_themes_rescan();	if (CFG.USE_THEME==0){		GtkTreeIter iter;		gtk_tree_model_get_iter_first(GTK_TREE_MODEL(list_store),&iter);		gtk_tree_selection_select_iter(sel,&iter);	};	gtk_widget_show_all(vbox);};gboolean d4x_prefs_select_func(GtkTreeSelection *sel, GtkTreeModel *model,GtkTreePath *path,			       gboolean is_sel, gpointer data){	if (is_sel) return(TRUE);	int depth=gtk_tree_path_get_depth(path);	int *a=gtk_tree_path_get_indices(path);	switch(a[0]){	case 0:{		if (depth==1)			d4x_prefs_download();		else{			switch(a[1]){			case 0:				d4x_prefs_download_limits();				break;			case 1:				d4x_prefs_download_ftp();				break;			case 2:				d4x_prefs_download_http();				break;			case 3:				d4x_prefs_proxy();				break;			};		};		break;	};	case 1:{		if (depth==1)			d4x_prefs_interface();		else{			switch(a[1]){			case 0:				d4x_prefs_mwin();				break;			case 1:				d4x_prefs_confirm();				break;			case 2:				d4x_prefs_graph();				break;			case 3:				d4x_prefs_sounds();				break;			case 4:				d4x_prefs_themes();			};		};			break;	};	case 2:{		if (depth==1)			d4x_prefs_integration();		else{			switch(a[1]){			case 0:				d4x_prefs_clipboard();			};		};		break;	};	case 3:{		if (depth==1)			d4x_prefs_main();		else{			switch(a[1]){			case 0:				d4x_prefs_main_log();				break;			case 1:				d4x_prefs_search();				break;			};		break;		};	};	};	return(TRUE);};static int d4x_prefs_w=0,d4x_prefs_h=0;static void d4x_prefs_allocate(GtkWidget *widget,GtkAllocation *a,gpointer p){//	printf("A:%ix%i\n",a->width,a->height);	if (d4x_prefs_w<a->width)		d4x_prefs_w=a->width;	else		a->width=d4x_prefs_w;	if (d4x_prefs_h<a->height)		d4x_prefs_h=a->height;	else		a->height=d4x_prefs_h;};static void d4x_prefs_size_request(GtkWidget *widget,GtkRequisition *a,gpointer p){//	printf("R:%ix%i\n",a->width,a->height);	if (d4x_prefs_w<a->width)		d4x_prefs_w=a->width;	else		a->width=d4x_prefs_w;	if (d4x_prefs_h<a->height)		d4x_prefs_h=a->height;	else		a->height=d4x_prefs_h;};void d4x_prefs_init_pre(){	if (d4x_prefs_window) {		gtk_window_present(GTK_WINDOW(d4x_prefs_window));		return;	};	var_copy_cfg(&TMPCFG,&CFG);	/* create preferences window */	d4x_prefs_window=gtk_window_new(GTK_WINDOW_TOPLEVEL);	gtk_window_set_wmclass(GTK_WINDOW(d4x_prefs_window),			       "D4X_Preferences","D4X");	gtk_window_set_resizable(GTK_WINDOW(d4x_prefs_window),FALSE);	gtk_window_set_position(GTK_WINDOW(d4x_prefs_window),GTK_WIN_POS_NONE);	gtk_window_set_title(GTK_WINDOW(d4x_prefs_window),_("Options"));	gtk_window_set_default_size(GTK_WINDOW(d4x_prefs_window),500,350);	gtk_widget_set_size_request(d4x_prefs_window,550,400);	g_signal_connect(G_OBJECT(d4x_prefs_window), "key_press_event",			   (GtkSignalFunc)d4x_prefs_esc_handler, NULL);	g_signal_connect(G_OBJECT(d4x_prefs_window),"delete_event",			   G_CALLBACK(d4x_prefs_cancel), NULL);	g_signal_connect(G_OBJECT(d4x_prefs_window),"size_allocate",			   G_CALLBACK(d4x_prefs_allocate), NULL);	g_signal_connect(G_OBJECT(d4x_prefs_window),"size_request",			   G_CALLBACK(d4x_prefs_size_request), NULL);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -