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

📄 list.cc

📁 一个功能比较强的下载软件
💻 CC
📖 第 1 页 / 共 4 页
字号:
};gint ask_exit2() {	if (CFG.WINDOW_LOWER)// gdk_window_lower(MainWindow->window);		main_window_iconify();	else ask_exit();	return TRUE;};static void a_delete_downloads(GtkWidget *widget, gpointer data){	CFG.CONFIRM_DELETE=!(GTK_TOGGLE_BUTTON(AskDelete->check)->active);	delete_downloads(GPOINTER_TO_INT(data));};void ask_delete_download(...) {	GdkModifierType mask;	gint x,y;	gdk_window_get_pointer(MainWindow->window,&x,&y,&mask);	if (CFG.CONFIRM_DELETE) {		if (!AskDelete) AskDelete=new tConfirmedDialog;		if (AskDelete->init(_("Delete selected downloads?"),_("Delete?")))			g_signal_connect(G_OBJECT(AskDelete->ok_button),					   "clicked",					   G_CALLBACK(a_delete_downloads),					   GINT_TO_POINTER(mask & GDK_SHIFT_MASK));		AskDelete->set_modal(MainWindow);	} else		delete_downloads(mask & GDK_SHIFT_MASK);};static void _ask_delete_completed_check_(GtkWidget *widget, tConfirmedDialog *parent){	CFG.CONFIRM_DELETE_COMPLETED=!(GTK_TOGGLE_BUTTON(parent->check)->active);	del_completed_downloads();};void ask_delete_completed_downloads(...) {	if (CFG.CONFIRM_DELETE_COMPLETED) {		if (!AskDeleteCompleted) AskDeleteCompleted=new tConfirmedDialog;		if (AskDeleteCompleted->init(_("Do you wish delete completed downloads?"),_("Delete?")))			g_signal_connect(G_OBJECT(AskDeleteCompleted->ok_button),					   "clicked",					   G_CALLBACK(_ask_delete_completed_check_),					   AskDeleteCompleted);		AskDeleteCompleted->set_modal(MainWindow);	} else		del_completed_downloads();};static void _ask_delete_failed_check_(GtkWidget *widget, tConfirmedDialog *parent){	CFG.CONFIRM_DELETE_FATALED=!(GTK_TOGGLE_BUTTON(parent->check)->active);	del_fataled_downloads();};void ask_delete_fataled_downloads(...) {	if (CFG.CONFIRM_DELETE_FATALED) {		if (!AskDeleteFataled) AskDeleteFataled=new tConfirmedDialog;		if (AskDeleteFataled->init(_("Do you wish delete failed downloads?"),_("Delete?")))			g_signal_connect(G_OBJECT(AskDeleteFataled->ok_button),					   "clicked",					   G_CALLBACK(_ask_delete_failed_check_),					   AskDeleteFataled);		AskDeleteFataled->set_modal(MainWindow);	} else		del_fataled_downloads();};void delete_downloads(gint flag) {	D4X_QUEUE->qv.delete_downloads(flag);	if (AskDelete) AskDelete->done();	aa.try_to_run_wait(D4X_QUEUE);};void continue_downloads(...) {	GdkModifierType mask;	gint x,y;	gdk_window_get_pointer(MainWindow->window,&x,&y,&mask);	D4X_QUEUE->qv.continue_downloads(mask & GDK_SHIFT_MASK);	prepare_buttons();};/* ******************************************************************** *//* ******************************************************************** */void init_status_bar() {	ProgressBarValues = (GtkAdjustment *) gtk_adjustment_new (0, 1, 0 , 0, 0, 0);	ProgressOfDownload = gtk_progress_bar_new();	/* Set the format of the string that can be displayed in the	 * trough of the progress bar:	 * %p - percentage	 * %v - value	 * %l - lower range value	 * %u - upper range value */	gtk_widget_set_size_request(ProgressOfDownload,-1,-1);	MainStatusBar=gtk_statusbar_new();	gtk_statusbar_set_has_resize_grip(GTK_STATUSBAR(MainStatusBar),FALSE);	ReadedBytesStatusBar=gtk_statusbar_new();	StatusBarContext=gtk_statusbar_get_context_id(	                     GTK_STATUSBAR(MainStatusBar),"Main window context");	RBStatusBarContext=gtk_statusbar_get_context_id(	                       GTK_STATUSBAR(ReadedBytesStatusBar),"Readed Bytes");	gtk_statusbar_set_has_resize_grip(GTK_STATUSBAR(ReadedBytesStatusBar),FALSE);	gtk_statusbar_push(GTK_STATUSBAR(MainStatusBar),StatusBarContext,_("Ready to go ????"));	gtk_statusbar_push(GTK_STATUSBAR(ReadedBytesStatusBar),RBStatusBarContext,"0");	gtk_widget_set_size_request(ReadedBytesStatusBar,150,-1);};void update_progress_bar() {	if (!D4X_QUEUE) return;	tDownload *temp=D4X_QUEUE->qv.last_selected;	char data[MAX_LEN];	if(temp && (temp->finfo.size>0 || temp->Size.curent>0)){		char b[100];		d4x_percent_str(temp->Percent, b, sizeof(b));		sprintf(data, "%s%(%lli/%lli)",b,temp->Size.curent,temp->finfo.size);		gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressOfDownload),temp->Percent/100.0);		gtk_progress_bar_set_text(GTK_PROGRESS_BAR(ProgressOfDownload),data);	}else{		gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(ProgressOfDownload),1);		gtk_progress_bar_set_text(GTK_PROGRESS_BAR(ProgressOfDownload),NULL);	};	gtk_widget_show(ProgressOfDownload);	char data1[MAX_LEN];	make_number_nicel(data,GVARS.READED_BYTES,D4X_QUEUE->NICE_DEC_DIGITALS);	sprintf(data1,"%s(%iB/s)",data,GlobalMeter->last_speed());	gtk_statusbar_pop(GTK_STATUSBAR(ReadedBytesStatusBar),RBStatusBarContext);	gtk_statusbar_push(GTK_STATUSBAR(ReadedBytesStatusBar),RBStatusBarContext,data1);};/* ******************************************************************** */void d4x_normalize_coords(gint *x,gint *y,gint width,gint heigh){	int temp,w,h;	gdk_window_get_geometry((GdkWindow *)NULL,&temp,&temp,&w,&h,&temp);	if (*x+width<w && *y+heigh<h && *x+width>0 && *y+width>0) return;	if (*x<0){		while (*x<0)			*x+=w;	}else{		while (*x>w)			*x-=w;	};	if (*y<0){		while (*y<0)			*y+=h;	}else{		while (*y>h)			*y-=h;	};};static void cb_page_size( GtkAdjustment *get) {	if (get==NULL) return;	if (main_log_value==get->value && get->value<get->upper-get->page_size) {		//added 0.01 to prevent interface lockups		get->value=get->upper-get->page_size;		main_log_value=get->value;		g_signal_emit_by_name(G_OBJECT (get), "value_changed");	} else		main_log_value=get->value;}/******************************************************************    This part of code for DnD (Drag-n-Drop) support added by		     Justin Bradford ******************************************************************/// for drag-drop support// drop handler// define a target entry listing the mime-types we'll acknowledgeGtkTargetEntry download_drop_types[] = {	{ "x-url/http",		0, TARGET_URL},	{ "x-url/ftp",		0, TARGET_URL},	{ "_NETSCAPE_URL",	0, TARGET_URL},	{ "x-url/*",		0, TARGET_URL},	{ "text/uri-list",	0, TARGET_URL},	{ "text/plain",		0, TARGET_DND_TEXT },	{ "text/html", 		0, TARGET_DND_TEXT }};// calculate the number of mime-types listedgint n_download_drop_types = sizeof(download_drop_types) / sizeof(download_drop_types[0]);/*********************************************************************    End of first part of DnD's code *********************************************************************//**********************************************************    Handler for DnD event **********************************************************/// this the drag-drop even handler// just add the url, and assume default download locationvoid list_dnd_drop_internal(GtkWidget *widget,			    GdkDragContext *context,			    gint x, gint y,			    GtkSelectionData *selection_data,			    guint info, guint time) {	g_return_if_fail(widget!=NULL);	switch (info) {		// covers all single URLs		// a uri-list mime-type will need special handling	case TARGET_DND_TEXT:	case TARGET_URL:{		// make sure our url (in selection_data->data) is good		/*		printf("%s\n",gdk_atom_name(selection_data->type));		printf("%s\n",gdk_atom_name(selection_data->target));		printf("%s\n",gdk_atom_name(selection_data->selection));		*/		if (selection_data->data != NULL) {			int is_dnd_basket=0;			if (!GTK_IS_SCROLLED_WINDOW(widget)){				dnd_trash_animation();				is_dnd_basket=1;			};			SOUND_SERVER->add_event(SND_DND_DROP);			int len = strlen((char*)selection_data->data);			if (len && selection_data->data[len-1] == '\n')				selection_data->data[len-1] = 0;			// add the new download			char *str = (char*)selection_data->data;			int sbd=0;//should be deleted flag			char *ent=index(str,'\n');			if (ent) *ent=0;			unsigned char *a=(unsigned char *)str;			while (*a){ // to avoid invalid signs				if (*a<' '){					*a=0;					break;				};				a++;			};			/* check for gmc style URL */			const char *gmc_url="file:/#ftp:";			if (begin_string((char*)selection_data->data,gmc_url)){				str = sum_strings("ftp://",						  (char*)selection_data->data + strlen(gmc_url),						  (char*)NULL);				sbd=1;			};			char *desc=ent?ent+1:(char *)NULL;			char *desc_utf=desc?g_convert(desc,-1,"UTF-8",LOCALE_CODEPAGE,NULL,NULL,NULL):NULL;			d4xDownloadQueue *tmpq=D4X_QUEUE;			if (is_dnd_basket && dnd_trash_target_queue)				D4X_QUEUE=dnd_trash_target_queue;			if (CFG.NEED_DIALOG_FOR_DND){				init_add_dnd_window(str,desc_utf);			}else{				aa.add_downloading(str, (char*)NULL,(char*)NULL,desc_utf);			};			if (desc_utf) g_free(desc_utf);			D4X_QUEUE=tmpq;			if (sbd) delete[] str;		}	}	}}/**********************************************************    End of handler for DnD  **********************************************************/void list_of_downloads_allocation(GtkWidget *paned,GtkAllocation *allocation){	if (MAIN_PANED_HEIGHT && allocation->height!=MAIN_PANED_HEIGHT){//FIXME: GTK2		float ratio=(float)CFG.WINDOW_CLIST_HEIGHT/(float)(MAIN_PANED_HEIGHT);//-GTK_PANED(MAIN_PANED)->gutter_size);		CFG.WINDOW_CLIST_HEIGHT=int(ratio*(float)(allocation->height));//-GTK_PANED(MAIN_PANED)->gutter_size));		lod_set_height();	};	MAIN_PANED_HEIGHT=allocation->height;	lod_get_height();};void init_main_log(){	GtkListStore *list_store = gtk_list_store_new(ML_COL_LAST+1,						      G_TYPE_INT,						      G_TYPE_STRING,						      G_TYPE_STRING,						      G_TYPE_STRING,						      G_TYPE_STRING);	MainLogList = gtk_tree_view_new_with_model(GTK_TREE_MODEL(list_store));	gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(MainLogList),FALSE);	for (int i=0;i<ML_COL_LAST;i++){		GtkCellRenderer *renderer;		GtkTreeViewColumn *col;		renderer = gtk_cell_renderer_text_new ();		col=gtk_tree_view_column_new_with_attributes ("Tittle",							      renderer,							      "text",i,							      "foreground",ML_COL_LAST,							      NULL);		gtk_tree_view_column_set_resizable(col,FALSE);		gtk_tree_view_append_column(GTK_TREE_VIEW(MainLogList),col);	};/*	MainLogList=gtk_clist_new(ML_COL_LAST);	gtk_clist_set_column_width (GTK_CLIST(MainLogList),ML_COL_NUM,1);	gtk_clist_set_column_width (GTK_CLIST(MainLogList),ML_COL_TIME,100);	gtk_clist_set_column_width (GTK_CLIST(MainLogList),ML_COL_STRING,800);	for (int i=0;i<ML_COL_LAST;i++)		gtk_clist_set_column_auto_resize(GTK_CLIST(MainLogList),i,TRUE);	gtk_clist_set_column_justification (GTK_CLIST(MainLogList), ML_COL_NUM, GTK_JUSTIFY_RIGHT);	gtk_clist_set_column_justification (GTK_CLIST(MainLogList), ML_COL_TIME, GTK_JUSTIFY_LEFT);	gtk_clist_set_column_justification (GTK_CLIST(MainLogList), ML_COL_DATE, GTK_JUSTIFY_LEFT);	gtk_clist_set_column_justification (GTK_CLIST(MainLogList), ML_COL_STRING, GTK_JUSTIFY_LEFT);*/};void init_main_window() {	GtkWidget *hbox=gtk_hbox_new(FALSE,1);	MainHBox=hbox;	gtk_box_pack_start (GTK_BOX (hbox), MainStatusBar, TRUE, TRUE, 0);	gtk_box_pack_start (GTK_BOX (hbox), ProgressOfDownload, TRUE, TRUE, 0);	gtk_box_pack_start (GTK_BOX (hbox), ReadedBytesStatusBar, FALSE, FALSE, 0);	gtk_widget_set_size_request(hbox,-1,21);	init_main_log();	FSearchView=fs_list_init();	ContainerForCList=gtk_scrolled_window_new((GtkAdjustment *)NULL,(GtkAdjustment *)NULL);	GtkWidget *hpaned=gtk_vpaned_new();	GtkWidget *vpaned=gtk_hpaned_new();	MAIN_PANED=hpaned;	MAIN_PANED1=gtk_hpaned_new();	MAIN_PANED2=vpaned;	main_log_adj = (GtkAdjustment *)gtk_adjustment_new (0.0, 0.0, 0.0, 0.1, 1.0, 1.0);	main_log_value=0.0;	g_signal_connect(G_OBJECT (main_log_adj), "changed",			   G_CALLBACK (cb_page_size), NULL);	GtkWidget *scroll_window=gtk_scrolled_window_new((GtkAdjustment *)NULL,main_log_adj);	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_window),	                                GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW (scroll_window),					    GTK_SHADOW_IN);	gtk_container_add(GTK_CONTAINER(scroll_window),MainLogList);	GtkWidget *scroll_window2=gtk_scrolled_window_new((GtkAdjustment *)NULL,(GtkAdjustment *)NULL);	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_window2),	                                GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);	D4X_QVT=new d4xQsTree;	D4X_QVT->init();	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW (scroll_window2),					    GTK_SHADOW_IN);	gtk_container_add(GTK_CONTAINER(scroll_window2),GTK_WIDGET(D4X_QVT->view));	gtk_paned_add1(GTK_PANED(MAIN_PANED1),scroll_window2);	gtk_paned_add2(GTK_PANED(MAIN_PANED1),ContainerForCList);	gtk_paned_add1(GTK_PANED(hpaned),MAIN_PANED1);	gtk_paned_add2(GTK_PANED(hpaned),vpaned);	gtk_paned_add1(GTK_PANED(vpaned),scroll_window);		GtkWidget *scroll_window1=gtk_scrolled_window_new((GtkAdjustment *)NULL,(GtkAdjustment *)NULL);	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll_window1),	                                GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);	gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW (scroll_window1),					    GTK_SHADOW_IN);	gtk_container_add(GTK_CONTAINER(scroll_window1),(GtkWidget *)FSearchView);	gtk_paned_add2(GTK_PANED(vpaned),scroll_window1);		GtkWidget *TEMP=my_gtk_graph_new();//gtk_statusbar_new();	GLOBAL_GRAPH=(MyGtkGraph *)TEMP;	gtk_widget_set_size_request(TEMP,104,-1);	gtk_box_pack_end (GTK_BOX (hbox), TEMP, FALSE, FALSE, 0);	GtkWidget *vbox=gtk_vbox_new(FALSE,1);	gtk_box_pack_start (GTK_BOX (vbox), MainMenu, FALSE, FALSE, 0);	gtk_box_pack_start (GTK_BOX (vbox), ButtonsBar, FALSE, FALSE, 0);	gtk_box_pack_start (GTK_BOX (vbox), hpaned, TRUE, TRUE, 0);	gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);	gtk_container_add(GTK_CONTAINER(MainWindow),vbox);	gtk_widget_show(MainStatusBar);	gtk_widget_show(ProgressOfDownload);	gtk_widget_show(TEMP);	gtk_widget_show(ReadedBytesStatusBar);	gtk_progress_bar_set_fraction((GtkProgressBar *)ProgressOfDownload,1);	gtk_widget_show(ContainerForCList);	gtk_widget_show(MainLogList);	gtk_widget_show((GtkWidget *)FSearchView);	gtk_widget_show(scroll_window);	gtk_widget_show(scroll_window1);	gtk_widget_show_all(scroll_window2);	gtk_widget_show(MAIN_PANED1);	gtk_widget_show(hpaned);	gtk_widget_show(vpaned);	gtk_widget_show(MainMenu);	gtk_widget_show(hbox);	gtk_widget_show(vbox);	gtk_widget_show(MainWindow);	if (!CFG.DONOTSET_WINPOS)		gdk_window_move_resize(MainWindow->window,				       gint(CFG.WINDOW_X_POSITION),				       gint(CFG.WINDOW_Y_POSITION),				       gint(CFG.WINDOW_WIDTH),				       gint(CFG.WINDOW_HEIGHT));	g_signal_connect(G_OBJECT (MAIN_PANED), "size_allocate",			   G_CALLBACK (list_of_downloads_allocation), NULL);	g_signal_connect(G_OBJECT (MAIN_PANED2), "size_allocate",

⌨️ 快捷键说明

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