📄 main.c
字号:
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 + -