📄 config.c
字号:
/* 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 + -