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

📄 config.c

📁 linux下支持P2P的客户端程序,采用了Gnutella的方法,其中有实现Gnutella的具体源码,是一个基于p2p环境下的音乐共享软件,有助于对P2P的研究
💻 C
📖 第 1 页 / 共 2 页
字号:
	/* remove entry from clist */
	gtk_clist_remove(GTK_CLIST(shared_dir_list), row);

	newtella_free(shared);
}

int config_button_pressed(GtkWidget *widget, gpointer data)
{
	switch ((int)data) {
	case BTN_DWNLD_DIR:
		config_download_dir_select();
		break;
	case BTN_SHR_DIR_ADD:
		config_shared_dir_select();
		break;
	case BTN_SHR_DIR_REMOVE:
		config_shared_dir_remove();
		break;
	case BTN_CONF_OK:
		config_save_to_file();
		gtk_widget_destroy(GTK_WIDGET(config_window));
		break;
	default:
		break;
	}

	return 1;
}

int config_toggle_reconnect(GtkToggleButton *toggle, gpointer data)
{
	gl_options->auto_reconnect = gtk_toggle_button_get_active(toggle);
	
	return 1;
}


int config_change_search_results(GtkWidget *widget, gpointer data)
{
	gchar *sr = gtk_entry_get_text(GTK_ENTRY(max_sr_edit_box));
	gl_options->max_search_results = atoi(sr);

	return 1;
}

int config_change_listen_port(GtkWidget *widget, gpointer data)
{
	gchar *listen_port = gtk_entry_get_text(GTK_ENTRY(port_edit_box));
	gl_options->newtella_port= atoi(listen_port);

	return 1;
}

int config_change_local_ip(GtkWidget *widget, gpointer data)
{
	gchar *local_ip = gtk_entry_get_text(GTK_ENTRY(ip_edit_box));
	gl_options->local_ip= str2ip(local_ip);

	return 1;
}

void config_draw(void)
{
	GtkWidget *notebook;
	GtkWidget *vbox, *hbox;
	GtkWidget *label;
	GtkWidget *ignore_edit_box;
	GtkWidget *button;
	GtkWidget *frame;
	GtkWidget *scrolled_window;
	GtkWidget *ignore_list;
	GList *entries = NULL;

    	config_window = gtk_dialog_new();
    
	gtk_container_set_border_width(GTK_CONTAINER(config_window), 10);
	
	/* config notebook */
    	notebook = gtk_notebook_new();
   	gtk_notebook_set_tab_pos(GTK_NOTEBOOK(notebook), GTK_POS_TOP);
	gtk_box_pack_start(GTK_BOX(GTK_DIALOG(config_window)->vbox), notebook, FALSE, FALSE, 10);
	
	/* page 1 */
	vbox = gtk_vbox_new(FALSE, 0);
	hbox = gtk_hbox_new(FALSE, 0);
	label = gtk_label_new("Internet Connection Type");
	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 10);
	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
	gtk_widget_show(hbox);
	gtk_widget_show(label);

	hbox = gtk_hbox_new(FALSE, 0);
	gtk_container_set_border_width(GTK_CONTAINER(hbox), 10);

	speed_combo = gtk_combo_new();
	entries = g_list_append(entries, "Modem");
	entries = g_list_append(entries, "ISDN");
	entries = g_list_append(entries, "ISDN (Dual Channel)");
	entries = g_list_append(entries, "Cable Modem");
	entries = g_list_append(entries, "ADSL");
	entries = g_list_append(entries, "T1");
	entries = g_list_append(entries, "T3");
	entries = g_list_append(entries, "Custom...");
	
	gtk_combo_set_popdown_strings(GTK_COMBO(speed_combo), entries);
	g_list_free(entries);
	gtk_signal_connect(GTK_OBJECT(GTK_COMBO(speed_combo)->entry), "changed",
			   GTK_SIGNAL_FUNC(config_speed_change), NULL);

	gtk_widget_show(speed_combo);
	gtk_box_pack_start(GTK_BOX(hbox), speed_combo, FALSE, FALSE, 0);

	label = gtk_label_new("Speed:");
	gtk_widget_show(label);
	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 10);

	speed_edit_box = gtk_entry_new_with_max_length(5);
	gtk_widget_set_usize(speed_edit_box, 40, 20);
	gtk_signal_connect(GTK_OBJECT(speed_edit_box), "activate",
			   GTK_SIGNAL_FUNC(config_speed_entry_change), NULL);

	gtk_widget_show(speed_edit_box);
	gtk_box_pack_start(GTK_BOX(hbox), speed_edit_box, FALSE, FALSE, 0);
    
	label = gtk_label_new("kbps");
	gtk_widget_show(label);
	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
	gtk_widget_show(hbox);

	label = gtk_label_new("Let Newtella know what speed your Internet Connection is.
Setting this to an accurate number will help you get the most out of
Newtella's advanced bandwidth management.");
	gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
	hbox = gtk_hbox_new(FALSE, 0);
	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 10);
	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
	gtk_widget_show(hbox);
	gtk_widget_show(label);

	gtk_widget_show(vbox);

	label = gtk_label_new("Connection");
	gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, label);

	/* page 1 */
	/* page 2 */
	vbox = gtk_vbox_new(FALSE, 0);
	hbox = gtk_hbox_new(FALSE, 0);
	label = gtk_label_new("Save downloads to:");
	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 10);
	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
	gtk_widget_show(hbox);
	gtk_widget_show(label);

	button = gtk_button_new_with_label("  Directory for downloads  ");
	gtk_signal_connect(GTK_OBJECT(button), "clicked",
			   GTK_SIGNAL_FUNC(config_button_pressed), (gpointer) BTN_DWNLD_DIR);
	
	download_dir_label = gtk_label_new("");
	gtk_widget_show(download_dir_label);

	hbox = gtk_hbox_new(FALSE, 0);
	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 10);
	gtk_box_pack_start(GTK_BOX(hbox), download_dir_label, FALSE, FALSE, 5);
	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
	gtk_widget_show(hbox);
	gtk_widget_show(button);

	hbox = gtk_hbox_new(FALSE, 0);
	label = gtk_label_new("Select the directory where you want to store your newly
downloaded files.");
	gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 10);
	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
	gtk_widget_show(hbox);
	gtk_widget_show(label);
	
	label = gtk_label_new("Download");
	gtk_widget_show(label);
	gtk_widget_show(vbox);
	gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, label);

	/* page 2 */

	/* page 3 */
	vbox = gtk_vbox_new(FALSE, 0);

	frame = gtk_frame_new("Shared directories");
	gtk_container_set_border_width(GTK_CONTAINER(frame), 10);

        scrolled_window = gtk_scrolled_window_new(NULL, NULL);
	gtk_container_set_border_width(GTK_CONTAINER(scrolled_window), 5);
	gtk_widget_set_usize(scrolled_window, 100, 240);
	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
				       GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
	gtk_widget_show(scrolled_window);

	shared_dir_list = gtk_clist_new(1);
	gtk_container_add(GTK_CONTAINER(scrolled_window), shared_dir_list);
	gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, FALSE, FALSE, 5);
	gtk_widget_show(shared_dir_list);

	hbox = gtk_hbox_new(FALSE, 0);
	button = gtk_button_new_with_label("Add");
	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5);
	gtk_signal_connect(GTK_OBJECT(button), "clicked",
			   GTK_SIGNAL_FUNC(config_button_pressed), (gpointer) BTN_SHR_DIR_ADD);
	gtk_widget_show(button);

	button = gtk_button_new_with_label("Remove");
	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 5);
	gtk_signal_connect(GTK_OBJECT(button), "clicked",
			   GTK_SIGNAL_FUNC(config_button_pressed), (gpointer) BTN_SHR_DIR_REMOVE);
	gtk_widget_show(button);
	gtk_widget_show(hbox);
	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);

	label = gtk_label_new("Add any number of directories here.
All .mp3 files under any of these directories can then be
downloaded by other Newtella users.");
	gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
	hbox = gtk_hbox_new(FALSE, 0);
	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5);
	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5);
	gtk_widget_show(hbox);
	gtk_widget_show(label);

	gtk_container_add(GTK_CONTAINER(frame), vbox);
	gtk_widget_show(vbox);

	gtk_widget_show(frame);

	label = gtk_label_new("Shared files");
	gtk_notebook_append_page(GTK_NOTEBOOK(notebook), frame, label);
	/* page 3 */
	
	/* page 4 */
	vbox = gtk_vbox_new(FALSE, 0);
	hbox = gtk_hbox_new(FALSE, 0);

	label = gtk_label_new("Listen port:");
	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 15);

	port_edit_box = gtk_entry_new_with_max_length(4);
	gtk_widget_set_usize(port_edit_box, 50, 20);
	gtk_signal_connect(GTK_OBJECT(port_edit_box), "changed",
			   GTK_SIGNAL_FUNC(config_change_listen_port), (gpointer) NULL);
	
	gtk_box_pack_start(GTK_BOX(hbox), port_edit_box, FALSE, FALSE, 172);
	gtk_widget_show(label);
	gtk_widget_show(port_edit_box);
	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 10);
	gtk_widget_show(hbox);

	hbox = gtk_hbox_new(FALSE, 0);
	label = gtk_label_new("Set the port where Newtella should listen for incoming connections.");
	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 15);
	gtk_widget_show(label);
	gtk_widget_show(hbox);
	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);

	hbox = gtk_hbox_new(FALSE, 0);
	label = gtk_label_new("Max search results returned:");
	max_sr_edit_box = gtk_entry_new_with_max_length(5);
	gtk_widget_set_usize(max_sr_edit_box, 50, 20);
	gtk_signal_connect(GTK_OBJECT(max_sr_edit_box), "changed",
			   GTK_SIGNAL_FUNC(config_change_search_results), (gpointer) NULL);
	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 15);
	gtk_box_pack_start(GTK_BOX(hbox), max_sr_edit_box, FALSE, FALSE, 75);
	gtk_widget_show(label);
	gtk_widget_show(max_sr_edit_box);
	gtk_widget_show(hbox);
	
	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 10);

	hbox = gtk_hbox_new(FALSE, 0);
	label = gtk_label_new("Select how much search results Newtella will maximally send to
other clients. Use this to limit the impact of stupid searches on your
computer.");
	gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 10);
	gtk_widget_show(label);
	gtk_widget_show(hbox);

	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 10);

	hbox = gtk_hbox_new(FALSE, 0);
	auto_reconnect_check_box = 
		gtk_check_button_new_with_label("Recconect to the Internet if disconnected");
	gtk_signal_connect(GTK_OBJECT(auto_reconnect_check_box), "toggled",
		       GTK_SIGNAL_FUNC(config_toggle_reconnect), NULL);

	gtk_box_pack_start(GTK_BOX(hbox), auto_reconnect_check_box, FALSE, FALSE, 10);
	gtk_widget_show(hbox);
	gtk_widget_show(auto_reconnect_check_box);

	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 10);

	hbox = gtk_hbox_new(FALSE, 0);
	label = gtk_label_new("Force local IP to:");
	ip_edit_box = gtk_entry_new_with_max_length(15);
	gtk_widget_set_usize(ip_edit_box, 100, 20);
	gtk_signal_connect(GTK_OBJECT(ip_edit_box), "changed",
			   GTK_SIGNAL_FUNC(config_change_local_ip), (gpointer)NULL);

	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 15);
	gtk_box_pack_start(GTK_BOX(hbox), ip_edit_box, FALSE, FALSE, 75);
	gtk_widget_show(label);
	gtk_widget_show(ip_edit_box);
	gtk_widget_show(hbox);
	
	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 10);

	hbox = gtk_hbox_new(FALSE, 0);
	label = gtk_label_new("Returns the entered IP with search results instead of your real one.
Useful if your're behind a NAT Firewall (like Windows 98 Internet
Connection Sharing)");
	gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 10);
	gtk_widget_show(label);
	gtk_widget_show(hbox);

	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 10);

	gtk_widget_show(vbox);

	label = gtk_label_new("Advanced Network");
	gtk_notebook_append_page(GTK_NOTEBOOK(notebook), vbox, label);
	/* page 4 */
	
	/* page 5 */
	vbox = gtk_vbox_new(FALSE, 0);

	frame = gtk_frame_new("Ignore Search Results");
	gtk_container_set_border_width(GTK_CONTAINER(frame), 10);

        scrolled_window = gtk_scrolled_window_new(NULL, NULL);
	gtk_container_set_border_width(GTK_CONTAINER(scrolled_window), 5);
	gtk_widget_set_usize(scrolled_window, 100, 240);
	gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
				       GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);

	gtk_widget_show(scrolled_window);

	ignore_list = gtk_clist_new(1);
	gtk_container_add(GTK_CONTAINER(scrolled_window), ignore_list);
	gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, FALSE, FALSE, 5);
	gtk_widget_show(ignore_list);

	hbox = gtk_hbox_new(FALSE, 0);
	ignore_edit_box = gtk_entry_new_with_max_length(255);
	gtk_box_pack_start(GTK_BOX(hbox), ignore_edit_box, FALSE, FALSE, 10);
	gtk_widget_show(ignore_edit_box);
	button = gtk_button_new_with_label("Add");
	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 10);
	gtk_widget_show(button);
	button = gtk_button_new_with_label("Remove");
	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 10);
	gtk_widget_show(button);

	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
	gtk_widget_show(hbox);
	
	hbox = gtk_hbox_new(FALSE, 0);
	label = gtk_label_new("Enter all the results you want to ignore here.");
	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 10);
	gtk_widget_show(label);

	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 10);
	gtk_widget_show(hbox);

	gtk_container_add(GTK_CONTAINER(frame), vbox);
	gtk_widget_show(vbox);

	gtk_widget_show(frame);
	label = gtk_label_new("Ignore");
	gtk_notebook_append_page(GTK_NOTEBOOK(notebook), frame, label);

	/* page 5 */
	gtk_widget_show(notebook);

	hbox = gtk_hbox_new(FALSE, 0);
	button = gtk_button_new_with_label("     OK     ");
	gtk_signal_connect(GTK_OBJECT(button), "clicked",
			   GTK_SIGNAL_FUNC(config_button_pressed), (gpointer) BTN_CONF_OK);
	
	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 10);
	gtk_widget_show(button);
	
	/*
	button = gtk_button_new_with_label("Cancel");
	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 10);
	gtk_widget_show(button);
	button = gtk_button_new_with_label("Apply");
	gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 10);
	gtk_widget_show(button);
	*/

	gtk_box_pack_start(GTK_BOX(GTK_DIALOG(config_window)->vbox), hbox, FALSE, FALSE, 10);
	gtk_widget_show(hbox);

	gtk_widget_show(config_window);

	/* adjust config settings */
	config_refresh();
}


⌨️ 快捷键说明

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