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

📄 main.c

📁 linux下支持P2P的客户端程序,采用了Gnutella的方法,其中有实现Gnutella的具体源码,是一个基于p2p环境下的音乐共享软件,有助于对P2P的研究
💻 C
📖 第 1 页 / 共 2 页
字号:
	label = gtk_label_new("Maximum Downloads:");	adj = (GtkAdjustment *) gtk_adjustment_new(1, 1, 30, 1,						   10, 0);	max_downloads = gtk_spin_button_new(adj, 0, 0);	gtk_signal_connect(GTK_OBJECT(adj), "value_changed",			   GTK_SIGNAL_FUNC(spin_changed), 			   (gpointer) SPN_MAX_DOWNLD);	button = gtk_button_new_with_label(button_names[BTN_CLEAR]);       	gtk_signal_connect(GTK_OBJECT(button), "clicked",			   GTK_SIGNAL_FUNC(gui_button_pressed), (gpointer)BTN_CLEAR);	gtk_widget_show(button);	gtk_widget_show(label);	gtk_widget_show(max_downloads);	gtk_box_pack_start(GTK_BOX(nb_hbox_1), label, TRUE, TRUE, 3);	gtk_box_pack_start(GTK_BOX(nb_hbox_1), max_downloads, TRUE, TRUE, 3);	gtk_box_pack_start(GTK_BOX(nb_hbox_1), button, TRUE, TRUE, 3);		gtk_container_add(GTK_CONTAINER(frame), nb_hbox_1);	gtk_widget_show(nb_hbox_1);	gtk_widget_show(frame);	gtk_box_pack_start(GTK_BOX(nb_vbox_2), scrolled_window,			   TRUE, TRUE, 3);	gtk_box_pack_start(GTK_BOX(nb_vbox_2), dld_button_box,			   FALSE, FALSE, 10);	gtk_box_pack_start(GTK_BOX(nb_vbox_2), frame,			   FALSE, FALSE, 3);		label = gtk_label_new("Downloads");	gtk_widget_show(nb_vbox_2);	gtk_notebook_append_page(GTK_NOTEBOOK(main_notebook), nb_vbox_2,				 label);	/* page 2 */		/* page 3 */	nb_vbox_3 = gtk_vbox_new(FALSE, 0);	table = gtk_table_new(2, 4, FALSE);	gtk_container_set_border_width(GTK_CONTAINER(table), 5);	scrolled_window = gtk_scrolled_window_new(NULL, NULL);	gtk_widget_set_usize(scrolled_window, 100, 200);	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),				       GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);	gtk_widget_show(scrolled_window);	upload_list = gtk_clist_new_with_titles(5, upload_list_titles);	gtk_clist_set_column_width(GTK_CLIST(upload_list), 0, 210);	gtk_clist_set_column_width(GTK_CLIST(upload_list), 1,  70);	gtk_clist_set_column_width(GTK_CLIST(upload_list), 2,  80);	gtk_clist_set_column_width(GTK_CLIST(upload_list), 3,  60);	gtk_clist_set_column_width(GTK_CLIST(upload_list), 4, 100);	gtk_container_add(GTK_CONTAINER(scrolled_window), upload_list);	gtk_widget_show(upload_list);        /* upload buttons */	for (i=15; i<19; i++) {		button = gtk_button_new_with_label(button_names[i-1]);		gtk_box_pack_start(GTK_BOX(uld_button_box), button, TRUE, TRUE, 3);		gtk_signal_connect(GTK_OBJECT(button), "clicked", 				   GTK_SIGNAL_FUNC(gui_button_pressed), (gpointer)i);		gtk_widget_show(button);	}	gtk_widget_show(uld_button_box);	/* upload buttons */	frame = gtk_frame_new("Limits");	gtk_container_set_border_width(GTK_CONTAINER(frame), 10);	gtk_widget_show(frame);	label = gtk_label_new("Maximum Uploads:");	adj = (GtkAdjustment *) gtk_adjustment_new(1, 1, 30, 1,						   10, 0);	max_uploads = gtk_spin_button_new(adj, 0, 0);	gtk_signal_connect(GTK_OBJECT(adj), "value_changed",			   GTK_SIGNAL_FUNC(spin_changed), 			   (gpointer) SPN_MAX_UPLD);	gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);	gtk_table_attach_defaults(GTK_TABLE(table), max_uploads, 1, 2, 0, 1);       	gtk_widget_show(label);	gtk_widget_show(max_uploads);	label = gtk_label_new("Maximum Uploads Per Host:");	adj = (GtkAdjustment *) gtk_adjustment_new(1, 1, 30, 1,						   10, 0);	max_uploads_per_host = gtk_spin_button_new(adj, 0, 0);	gtk_signal_connect(GTK_OBJECT(adj), "value_changed",			   GTK_SIGNAL_FUNC(spin_changed), 			   (gpointer) SPN_MAX_UPLD_PER_HOST);	gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2);	gtk_table_attach_defaults(GTK_TABLE(table), max_uploads_per_host,				  1, 2, 1, 2);       	gtk_widget_show(label);	gtk_widget_show(max_uploads_per_host);	label = gtk_label_new("Bandwidth");	gtk_table_attach_defaults(GTK_TABLE(table), label, 2, 4, 0, 1);	gtk_widget_show(label);	adj = (GtkAdjustment *) gtk_adjustment_new(0, 0, 100, 1, 5, 1);	hscale = gtk_hscale_new(adj);	gtk_table_attach_defaults(GTK_TABLE(table), hscale, 2, 4, 1, 2);	gtk_widget_show(hscale);	gtk_container_add(GTK_CONTAINER(frame), table);	gtk_widget_show(table);	gtk_box_pack_start(GTK_BOX(nb_vbox_3), scrolled_window,			   TRUE, TRUE, 3);	gtk_box_pack_start(GTK_BOX(nb_vbox_3), uld_button_box,			   FALSE, FALSE, 10);		gtk_box_pack_start(GTK_BOX(nb_vbox_3), frame,			   FALSE, FALSE, 3);		label = gtk_label_new("Uploads");	gtk_widget_show(nb_vbox_3);	gtk_notebook_append_page(GTK_NOTEBOOK(main_notebook), nb_vbox_3,				 label);	/* page 3 */	/* page 4 */	nb_vbox_4 = gtk_vbox_new(FALSE, 0);	nb_hbox_1 = gtk_hbox_new(FALSE, 0);	nb_hbox_2 = gtk_hbox_new(FALSE, 0);	gtk_container_set_border_width(GTK_CONTAINER(nb_hbox_1), 5);	gtk_container_set_border_width(GTK_CONTAINER(nb_hbox_2), 5);	scrolled_window = gtk_scrolled_window_new(NULL, NULL);	gtk_widget_set_usize(scrolled_window, 100, 160);	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),				       GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);	gtk_widget_show(scrolled_window);	con_list = gtk_clist_new_with_titles(4, con_list_titles);	gtk_clist_set_column_width(GTK_CLIST(con_list), 0, 130);	gtk_clist_set_column_width(GTK_CLIST(con_list), 1, 100);	gtk_clist_set_column_width(GTK_CLIST(con_list), 2, 120);		gtk_container_add(GTK_CONTAINER(scrolled_window), con_list);	gtk_widget_show(con_list);	gtk_box_pack_start(GTK_BOX(nb_vbox_4), scrolled_window,			   TRUE, TRUE, 3);        host_combo_box = gtk_combo_new();	gtk_box_pack_start(GTK_BOX(nb_hbox_1), host_combo_box,			   TRUE, TRUE, 3);	/* Kervin: This is the first item in the list because 	   draw_init is called before main_init.	   in main_init the host from the config file are read	*/	new_list_item = gtk_list_item_new_with_label(HOST_CACHE_SERVER);	gtk_widget_show(new_list_item);	gtk_container_add (GTK_CONTAINER (GTK_COMBO(host_combo_box)->list), new_list_item);	gtk_widget_show(host_combo_box);	/* Kervin: Connect the host_combo_box->entry activate signal to gui_button_pressed 	   handler and make it seem like the add button had been pressed.  This is	   to make the action that occurs when the add button is pressed and the	   entry box gets an "enter" keypress identical */	gtk_signal_connect(GTK_OBJECT(GTK_COMBO(host_combo_box)->entry), "activate",				   GTK_SIGNAL_FUNC(gui_button_pressed), (gpointer)BTN_ADD_CON);	gtk_combo_disable_activate(GTK_COMBO(host_combo_box));	for (i=7; i<9; i++) {		button = gtk_button_new_with_label(button_names[i]);		gtk_box_pack_start(GTK_BOX(nb_hbox_1), button, TRUE, TRUE, 1);		gtk_signal_connect(GTK_OBJECT(button), "clicked",				   GTK_SIGNAL_FUNC(gui_button_pressed), (gpointer)i);		gtk_widget_show(button);	}	gtk_box_pack_start(GTK_BOX(nb_vbox_4), nb_hbox_1, 			   FALSE, FALSE, 3);	gtk_widget_show(nb_hbox_1);	frame = gtk_frame_new("Hosts");	gtk_container_set_border_width(GTK_CONTAINER(frame), 3);		label = gtk_label_new("    Hosts in cache:");	gtk_widget_show(label);	host_in_cache_label = gtk_label_new("0");	gtk_widget_show(host_in_cache_label);		button = gtk_button_new_with_label(button_names[BTN_CLR_HCACHE-1]);	gtk_signal_connect(GTK_OBJECT(button), "clicked",			   GTK_SIGNAL_FUNC(gui_button_pressed), (gpointer)BTN_CLR_HCACHE);	gtk_widget_show(button);	gtk_box_pack_start(GTK_BOX(nb_hbox_2), label, TRUE, TRUE, 3);	gtk_box_pack_start(GTK_BOX(nb_hbox_2), host_in_cache_label,			   TRUE, TRUE, 3);	gtk_box_pack_start(GTK_BOX(nb_hbox_2), button, TRUE, TRUE, 60);	gtk_box_pack_start(GTK_BOX(frame_vbox), nb_hbox_2, FALSE, FALSE, 5);	gtk_container_add(GTK_CONTAINER(frame), frame_vbox);	gtk_widget_show(nb_hbox_2);	gtk_widget_show(frame_vbox);	gtk_box_pack_start(GTK_BOX(nb_vbox_4), frame,			   FALSE, FALSE, 3);	gtk_widget_show(frame);	frame = gtk_frame_new("Limits");	gtk_container_set_border_width(GTK_CONTAINER(frame), 5);	gtk_widget_show(frame);	table = gtk_table_new(2, 4, TRUE);	label = gtk_label_new("Min. Connections:");	adj = (GtkAdjustment *) gtk_adjustment_new(1, 0, 30., 1.,						   10., 0.);	min_con = gtk_spin_button_new(adj, 0, 0);	gtk_signal_connect(GTK_OBJECT(adj), "value_changed",		      GTK_SIGNAL_FUNC(gui_min_con_changed),		      (gpointer)NULL);	gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1);	gtk_table_attach_defaults(GTK_TABLE(table), min_con, 1, 2, 0, 1);	gtk_widget_show(label);	gtk_widget_show(min_con);	label = gtk_label_new("Max. Connections:");	adj = (GtkAdjustment *) gtk_adjustment_new(1, 0, 30., 1.,						   10., 0.);	max_con = gtk_spin_button_new(adj, 0, 0);	gtk_signal_connect(GTK_OBJECT(adj), "value_changed",		      GTK_SIGNAL_FUNC(gui_max_con_changed),		      (gpointer)NULL);	gtk_table_attach_defaults(GTK_TABLE(table), label, 2, 3, 0, 1);	gtk_table_attach_defaults(GTK_TABLE(table), max_con, 3, 4, 0, 1);	gtk_widget_show(label);	gtk_widget_show(max_con);	auto_connect_check_box = gtk_check_button_new_with_label("Connect automatically");	gtk_signal_connect(GTK_OBJECT(auto_connect_check_box), "toggled",			   GTK_SIGNAL_FUNC(gui_toggle_auto_connect), NULL);	gtk_table_attach_defaults(GTK_TABLE(table), auto_connect_check_box, 0, 2, 1, 2);	gtk_widget_show(auto_connect_check_box);	accept_in_con_check_box = gtk_check_button_new_with_label("Accept Incoming connections");	gtk_signal_connect(GTK_OBJECT(accept_in_con_check_box), "toggled",			   GTK_SIGNAL_FUNC(gui_toggle_accept_in_con), NULL);	gtk_table_attach_defaults(GTK_TABLE(table), accept_in_con_check_box, 2, 4, 1, 2);	gtk_widget_show(accept_in_con_check_box);	gtk_container_add(GTK_CONTAINER(frame), table);	gtk_widget_show(table);	gtk_box_pack_start(GTK_BOX(nb_vbox_4), frame,			   FALSE, FALSE, 3);	label = gtk_label_new("Connections");	gtk_widget_show(nb_vbox_4);	gtk_notebook_append_page(GTK_NOTEBOOK(main_notebook), nb_vbox_4,				 label);	/* page 4 */	gtk_widget_show(window);        /* add the logo */	align = gtk_alignment_new(1.0, 0.0, 0.0, 0.0);	gtk_widget_show(align);	style = gtk_widget_get_style(window);	xpm_path = strdup(PACKAGE_DATA_DIR"/pixmaps/gnewtellium.xpm");	pixmap = gdk_pixmap_create_from_xpm(window->window, &mask,					    &style->white,					    xpm_path);					    // "/usr/local/share/gnewtellium/pixmaps/gnewtellium.xpm");	/* If there was a problem with the xpm file	   Use the data	*/	if (!pixmap)		pixmap = gdk_pixmap_create_from_xpm_d(window->window, &mask,						      &style->white,						      gnewtellium_xpm);			pixmapwid = gtk_pixmap_new(pixmap, mask);	gtk_widget_show(pixmapwid); 	gtk_container_add(GTK_CONTAINER(align), pixmapwid);	gtk_box_pack_start(GTK_BOX(pixmap_box), align, TRUE, TRUE, 3);	gtk_box_pack_start(GTK_BOX(main_vbox), pixmap_box, FALSE, FALSE, 3);	gtk_widget_show(pixmap_box);	gtk_container_add(GTK_CONTAINER(main_vbox), main_notebook);	gtk_widget_show(main_notebook);	/* buttons */	for (i=0; i<4; i++) {		button = gtk_button_new_with_label(button_names[i]);		gtk_box_pack_start(GTK_BOX(button_box), button, TRUE, TRUE, 3);		gtk_signal_connect(GTK_OBJECT(button), "clicked", 				   GTK_SIGNAL_FUNC(gui_button_pressed), (gpointer)i);		gtk_widget_show(button);	}	gtk_box_pack_start(GTK_BOX(main_vbox), button_box, FALSE, FALSE, 3);	gtk_container_add(GTK_CONTAINER(window), main_vbox);		gtk_widget_show(button_box);	gtk_widget_show(main_vbox);	gtk_widget_set_uposition(window, 100, 20);	gtk_widget_show(window);	return 1;    }void spin_changed(GtkWidget *widget, gpointer data){	switch ((int)data) {	case SPN_MAX_DOWNLD:		gl_options->max_downloads =			gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(max_downloads));		break;	case SPN_MAX_UPLD:		gl_options->max_uploads =			gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(max_uploads));		break;	case SPN_MAX_UPLD_PER_HOST:		gl_options->max_uploads_per_host =			gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(max_uploads_per_host));		break;	default:		break;	}}

⌨️ 快捷键说明

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