/* Copyright (C) 2000-2004 Markus Lausser (sgop@users.sf.net) This is free software distributed under the terms of the GNU Public License. See the file COPYING for details. */ #ifdef HAVE_CONFIG_H # include #endif #include #include #include #include #include #include #include #include #include "lopster.h" #include "connection.h" #include "global.h" #include "search.h" #include "transfer.h" #include "resume.h" #include "interface.h" #include "support.h" #include "callbacks.h" #include "hotlist.h" #include "commands.h" #include "chat.h" #include "share2.h" #include "dirselect.h" #include "scheme.h" #include "handler.h" #include "resume.h" #include "server.h" #include "preferences.h" #include "log.h" #include "utils.h" #include "bannet.h" #include "mtypes.h" typedef struct { GtkEntry* app_entry; GtkEntry* label_entry; GtkWidget* widget; // the container void* parent; } gapp_t; typedef struct { GList* app; GtkEntry* ext_entry; GtkWidget* widget; // the container GtkWidget* widget2; // the subcontainer GtkWidget* vbox; // container for apps void* parent; } gsuffix_t; typedef struct { GtkEntry* download_entry; GList* app; GList* suffix; GtkWidget* vbox1; // container for apps GtkWidget* vbox2; // container for suffixes GtkWidget* widget2; // the subcontainer } gtype_t; static gtype_t* Types[MEDIA_SIZE] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; void check_uploads_again(); char* DownloadList(int id) { switch (id) { case 0: return "Active List"; case 1: return "Queued List"; case 2: return "Inactive List"; case 3: default: return "Deactivated List"; } } char* DownloadPage(int id) { switch (id) { case 0: return "Active Page"; case 1: return "Queued Page"; case 2: return "Inactive Page"; case 3: default: return "Deactivated Page"; } } static void on_toggle_button(GtkButton* button, GtkWidget* frame) { GtkWidget* pix_open; GtkWidget* pix_close; pix_open = gtk_object_get_data(GTK_OBJECT(button), "pix_open"); pix_close = gtk_object_get_data(GTK_OBJECT(button), "pix_close"); if (GTK_WIDGET_VISIBLE(frame)) { gtk_widget_show(pix_close); gtk_widget_hide(pix_open); gtk_widget_hide(frame); } else { gtk_widget_hide(pix_close); gtk_widget_show(pix_open); gtk_widget_show(frame); } } static void on_remove_main_app(GtkButton* button, gapp_t* app) { gtype_t* type = app->parent; (void)button; type->app = g_list_remove(type->app, app); gtk_widget_destroy(app->widget); g_free(app); } static void on_remove_sub_app(GtkButton* button, gapp_t* app) { gsuffix_t* suf = app->parent; (void)button; suf->app = g_list_remove(suf->app, app); gtk_widget_destroy(app->widget); g_free(app); } static void on_remove_suffix(GtkButton* button, gsuffix_t* suf) { gtype_t* type = suf->parent; GList* dlist; (void)button; type->suffix = g_list_remove(type->suffix, suf); for (dlist = suf->app; dlist; dlist = dlist->next) { gapp_t* app = dlist->data; g_free(app); } g_list_free(suf->app); gtk_widget_destroy(suf->widget); gtk_widget_destroy(suf->widget2); g_free(suf); } static gapp_t* g_add_app(GtkWidget* vbox, app_t* app, int sub) { GtkWidget* hbox; GtkWidget* label; GtkWidget* entry; GtkWidget* button; GtkWidget* pixmap; gapp_t* gapp = g_malloc0(sizeof(*gapp)); hbox = gtk_hbox_new(FALSE, 5); gtk_widget_show(hbox); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); gapp->widget = hbox; label = gtk_label_new("command"); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); entry = gtk_entry_new(); gapp->app_entry = GTK_ENTRY(entry); gtk_widget_set_usize (entry, 1, -2); if (app && app->app) gtk_entry_set_text(GTK_ENTRY(entry), app->app); gtk_widget_show(entry); gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0); label = gtk_label_new("label"); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); entry = gtk_entry_new(); gapp->label_entry = GTK_ENTRY(entry); gtk_widget_set_usize (entry, 1, -2); if (app && app->label) gtk_entry_set_text(GTK_ENTRY(entry), app->label); gtk_widget_show(entry); gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0); button = gtk_button_new(); GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS); pixmap = create_pixmap(vbox, "close.xpm"); gtk_widget_show(pixmap); gtk_container_add(GTK_CONTAINER(button), pixmap); gtk_widget_show(button); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); if (sub) gtk_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc)on_remove_sub_app, gapp); else gtk_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc)on_remove_main_app, gapp); return gapp; } static void on_add_sub_app(GtkButton* button, gsuffix_t* suf) { GList* dlist; gapp_t* app; char* text; (void)button; for (dlist = suf->app; dlist; dlist = dlist->next) { app = dlist->data; text = gtk_entry_get_text(app->app_entry); if (!text || *text == 0) return; } gtk_widget_show(suf->widget2); app = g_add_app(suf->vbox, NULL, 1); suf->app = g_list_append(suf->app, app); app->parent = suf; } static void on_add_main_app(GtkButton* button, gtype_t* type) { GList* dlist; gapp_t* app; char* text; (void)button; if (!type->vbox1) return; for (dlist = type->app; dlist; dlist = dlist->next) { app = dlist->data; text = gtk_entry_get_text(app->app_entry); if (!text || *text == 0) return; } gtk_widget_show(type->widget2); app = g_add_app(type->vbox1, NULL, 0); type->app = g_list_append(type->app, app); app->parent = type; } static gsuffix_t* g_add_suffix(GtkWidget* vbox, suffix_t* suf) { GtkWidget* hbox; GtkWidget* button2; GtkWidget* hbox2; GtkWidget* frame; GtkWidget* pixmap; GtkWidget* label; GtkWidget* entry; GtkWidget* button; GtkWidget* vbox3; gsuffix_t* gsuffix = g_malloc0(sizeof(*gsuffix)); hbox = gtk_hbox_new(FALSE, 0); gtk_widget_show(hbox); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); gsuffix->widget = hbox; button2 = gtk_button_new(); GTK_WIDGET_UNSET_FLAGS(button2, GTK_CAN_FOCUS); gtk_widget_show(button2); gtk_box_pack_start(GTK_BOX(hbox), button2, TRUE, TRUE, 0); hbox2 = gtk_hbox_new(FALSE, 0); gtk_widget_show(hbox2); gtk_container_add(GTK_CONTAINER(button2), hbox2); pixmap = create_pixmap(vbox, "arrowr.xpm"); gtk_widget_show(pixmap); gtk_box_pack_start(GTK_BOX(hbox2), pixmap, FALSE, FALSE, 0); gtk_object_set_data(GTK_OBJECT(button2), "pix_close", pixmap); pixmap = create_pixmap(vbox, "arrowd.xpm"); gtk_box_pack_start(GTK_BOX(hbox2), pixmap, FALSE, FALSE, 0); gtk_object_set_data(GTK_OBJECT(button2), "pix_open", pixmap); label = gtk_label_new("SUFFIX"); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(hbox2), label, FALSE, FALSE, 0); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_misc_set_padding(GTK_MISC(label), 5, 0); entry = gtk_entry_new(); gtk_widget_set_usize (entry, 1, -2); gtk_widget_show(entry); gtk_box_pack_start(GTK_BOX(hbox2), entry, TRUE, TRUE, 0); if (suf) gtk_entry_set_text(GTK_ENTRY(entry), make_string_from_list(suf->ext, " ")); gsuffix->ext_entry = GTK_ENTRY(entry); button = gtk_button_new_with_label("Add application"); GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS); gtk_widget_show(button); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc)on_add_sub_app, gsuffix); button = gtk_button_new(); GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS); pixmap = create_pixmap(vbox, "close.xpm"); gtk_widget_show(pixmap); gtk_container_add(GTK_CONTAINER(button), pixmap); gtk_widget_show(button); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc)on_remove_suffix, gsuffix); frame = gtk_frame_new(NULL); gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(frame), 0); gtk_signal_connect(GTK_OBJECT(button2), "clicked", (GtkSignalFunc)on_toggle_button, frame); gsuffix->widget2 = frame; vbox3 = gtk_vbox_new(FALSE, 0); gtk_widget_show(vbox3); gtk_container_add(GTK_CONTAINER(frame), vbox3); gtk_container_set_border_width(GTK_CONTAINER(vbox3), 5); gsuffix->vbox = vbox3; return gsuffix; } static void on_add_suffix(GtkButton* button, gtype_t* type) { GList* dlist; gsuffix_t* suf; char* text; (void)button; for (dlist = type->suffix; dlist; dlist = dlist->next) { suf = dlist->data; text = gtk_entry_get_text(suf->ext_entry); if (!text || *text == 0) return; } gtk_widget_show(type->widget2); suf = g_add_suffix(type->vbox2, NULL); type->suffix = g_list_append(type->suffix, suf); suf->parent = type; } static void g_type_destroy(gtype_t* type) { GList* dlist; g_list_foreach(type->app, (GFunc)g_free, NULL); g_list_free(type->app); for (dlist = type->suffix; dlist; dlist = dlist->next) { gsuffix_t* suf = dlist->data; g_list_foreach(suf->app, (GFunc)g_free, NULL); g_list_free(suf->app); g_free(suf); } g_list_free(type->suffix); g_free(type); } static void setup_media_types() { GtkWidget* win; GtkWidget* vbox; GtkWidget* vbox2; GtkWidget* vbox3; GtkWidget* hbox; GtkWidget* hbox2; GtkWidget* button; GtkWidget* button2; GtkWidget* label; GtkWidget* entry; GtkWidget* frame; GtkWidget* pixmap; int i1; char* str; GList* dlist; GList* dlist2; if (!global.options_win) return; else win = global.options_win; vbox = lookup_widget(win, "vbox259"); for (i1 = 0; i1 < MEDIA_SIZE; i1++) { mtype_t* mtype = mtype_find(i1); if (Types[i1]) g_type_destroy(Types[i1]); Types[i1] = g_malloc0(sizeof(gtype_t)); hbox = gtk_hbox_new(FALSE, 0); gtk_widget_show(hbox); gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); button2 = gtk_button_new(); GTK_WIDGET_UNSET_FLAGS (button2, GTK_CAN_FOCUS); gtk_widget_show(button2); gtk_box_pack_start(GTK_BOX(hbox), button2, TRUE, TRUE, 0); hbox2 = gtk_hbox_new(FALSE, 0); gtk_widget_show(hbox2); gtk_container_add(GTK_CONTAINER(button2), hbox2); pixmap = create_pixmap(win, "arrowr.xpm"); gtk_widget_show(pixmap); gtk_box_pack_start(GTK_BOX(hbox2), pixmap, FALSE, FALSE, 0); gtk_object_set_data(GTK_OBJECT(button2), "pix_close", pixmap); pixmap = create_pixmap(win, "arrowd.xpm"); gtk_box_pack_start(GTK_BOX(hbox2), pixmap, FALSE, FALSE, 0); gtk_object_set_data(GTK_OBJECT(button2), "pix_open", pixmap); str = g_strdup_printf("MEDIA %s", int2media(i1, 2)); label = gtk_label_new(str); g_free(str); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(hbox2), label, TRUE, TRUE, 0); gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); gtk_misc_set_padding(GTK_MISC(label), 5, 0); button = gtk_button_new_with_label("Add suffix"); GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS); gtk_widget_show(button); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc)on_add_suffix, Types[i1]); if (i1 == MEDIA_NONE || i1 == MEDIA_FOLDER) gtk_widget_set_sensitive(button, FALSE); button = gtk_button_new_with_label("Add application"); GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS); gtk_widget_show(button); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_signal_connect(GTK_OBJECT(button), "clicked", (GtkSignalFunc)on_add_main_app, Types[i1]); frame = gtk_frame_new(NULL); gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 0); gtk_container_set_border_width(GTK_CONTAINER(frame), 0); gtk_signal_connect(GTK_OBJECT(button2), "clicked", (GtkSignalFunc)on_toggle_button, frame); Types[i1]->widget2 = frame; vbox3 = gtk_vbox_new(FALSE, 0); gtk_widget_show(vbox3); gtk_container_add(GTK_CONTAINER(frame), vbox3); gtk_container_set_border_width(GTK_CONTAINER(vbox3), 5); vbox2 = gtk_vbox_new(FALSE, 0); gtk_widget_show(vbox2); gtk_box_pack_start(GTK_BOX(vbox3), vbox2, FALSE, FALSE, 0); Types[i1]->vbox1 = vbox2; Types[i1]->download_entry = NULL; if (i1 != MEDIA_FOLDER) { hbox = gtk_hbox_new(FALSE, 5); gtk_widget_show(hbox); gtk_box_pack_start(GTK_BOX(vbox2), hbox, FALSE, FALSE, 0); label = gtk_label_new("Download folder"); gtk_widget_show(label); gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); entry = gtk_entry_new(); Types[i1]->download_entry = GTK_ENTRY(entry); if (mtype->download) gtk_entry_set_text(GTK_ENTRY(entry), mtype->download); gtk_widget_show(entry); gtk_box_pack_start(GTK_BOX(hbox), entry, TRUE, TRUE, 0); button = gtk_button_new_with_label("Browse..."); GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS); // gtk_widget_show(button); gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); } for (dlist = mtype->app; dlist; dlist = dlist->next) { app_t* app = dlist->data; gapp_t* gapp = g_add_app(vbox2, app, 0); Types[i1]->app = g_list_append(Types[i1]->app, gapp); gapp->parent = Types[i1]; } vbox2 = gtk_vbox_new(FALSE, 0); gtk_widget_show(vbox2); gtk_box_pack_start(GTK_BOX(vbox3), vbox2, FALSE, FALSE, 0); Types[i1]->vbox2 = vbox2; for (dlist = mtype->suffix; dlist; dlist = dlist->next) { suffix_t* suffix = dlist->data; gsuffix_t* gsuffix = g_add_suffix(vbox2, suffix); Types[i1]->suffix = g_list_append(Types[i1]->suffix, gsuffix); gsuffix->parent = Types[i1]; for (dlist2 = suffix->app; dlist2; dlist2 = dlist2->next) { app_t* app = dlist2->data; gapp_t* gapp = g_add_app(gsuffix->vbox, app, 1); gsuffix->app = g_list_append(gsuffix->app, gapp); gapp->parent = gsuffix; } } } } void setup_preferences(unsigned long flags) { GtkWidget *win; GtkWidget *temp; GList *dlist; char *pos; if (!global.options_win) return; else win = global.options_win; if (flags & P_TREE) { GtkCTreeNode *node; GtkCTreeNode *node2; GtkCTree *ctree; setup_media_types(); ctree = GTK_CTREE(lookup_widget(win, "ctree2")); gtk_ctree_set_line_style(ctree, GTK_CTREE_LINES_NONE); gtk_ctree_set_expander_style(ctree, GTK_CTREE_EXPANDER_TRIANGLE); strcpy(tstr[0], "General"); node = gtk_ctree_insert_node(ctree, NULL, NULL, list, 15, NULL, NULL, NULL, NULL, FALSE, TRUE); gtk_ctree_node_set_row_data(ctree, node, (void *) 1); strcpy(tstr[0], "Search"); node2 = gtk_ctree_insert_node(ctree, node, NULL, list, 15, NULL, NULL, NULL, NULL, TRUE, FALSE); gtk_ctree_node_set_row_data(ctree, node2, (void *) 2); strcpy(tstr[0], "Transfers"); node2 = gtk_ctree_insert_node(ctree, node, NULL, list, 15, NULL, NULL, NULL, NULL, TRUE, FALSE); gtk_ctree_node_set_row_data(ctree, node2, (void *) 3); strcpy(tstr[0], "Mediatypes"); node2 = gtk_ctree_insert_node(ctree, node, NULL, list, 15, NULL, NULL, NULL, NULL, TRUE, FALSE); gtk_ctree_node_set_row_data(ctree, node2, (void *) 4); strcpy(tstr[0], "Share/Paths"); node2 = gtk_ctree_insert_node(ctree, node, NULL, list, 15, NULL, NULL, NULL, NULL, TRUE, FALSE); gtk_ctree_node_set_row_data(ctree, node2, (void *) 5); strcpy(tstr[0], "Appearance"); node = gtk_ctree_insert_node(ctree, NULL, NULL, list, 15, NULL, NULL, NULL, NULL, FALSE, TRUE); gtk_ctree_node_set_row_data(ctree, node, (void *) 6); strcpy(tstr[0], "Chat"); node2 = gtk_ctree_insert_node(ctree, node, NULL, list, 15, NULL, NULL, NULL, NULL, TRUE, FALSE); gtk_ctree_node_set_row_data(ctree, node2, (void *) 7); strcpy(tstr[0], "Transfers"); node2 = gtk_ctree_insert_node(ctree, node, NULL, list, 15, NULL, NULL, NULL, NULL, TRUE, FALSE); gtk_ctree_node_set_row_data(ctree, node2, (void *) 8); strcpy(tstr[0], "Schemes"); node2 = gtk_ctree_insert_node(ctree, node, NULL, list, 15, NULL, NULL, NULL, NULL, TRUE, FALSE); gtk_ctree_node_set_row_data(ctree, node2, (void *) 9); strcpy(tstr[0], "Advanced"); node = gtk_ctree_insert_node(ctree, NULL, NULL, list, 15, NULL, NULL, NULL, NULL, FALSE, TRUE); gtk_ctree_node_set_row_data(ctree, node, (void *) 10); strcpy(tstr[0], "Netbans/Events"); node2 = gtk_ctree_insert_node(ctree, node, NULL, list, 15, NULL, NULL, NULL, NULL, TRUE, FALSE); gtk_ctree_node_set_row_data(ctree, node2, (void *) 11); temp = lookup_widget(win, "frame267"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame268"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame69"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame37"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame1421"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame39"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame398"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame1418"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame1424"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame11"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame155"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame93"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "label427"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "label428"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame176"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame184"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "label1659"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame240"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "label780"); gtk_widget_set_style(temp, global.styles[STYLE_PREF]); temp = lookup_widget(win, "frame306"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame359"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame307"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame308"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame318"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame321"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame1416"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame384"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame385"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame396"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); temp = lookup_widget(win, "frame397"); gtk_widget_set_style(temp, global.styles[STYLE_LABEL]); } if (flags & P_GENERAL) { temp = lookup_widget(win, "entry4"); gtk_entry_set_text(GTK_ENTRY(temp), global.username); temp = lookup_widget(win, "entry5"); gtk_entry_set_text(GTK_ENTRY(temp), global.password); temp = lookup_widget(win, "entry7"); gtk_entry_set_text(GTK_ENTRY(temp), global.email); temp = GTK_COMBO(lookup_widget(win, "combo3"))->entry; gtk_entry_set_text(GTK_ENTRY(temp), LineSpeed(global.linespeed)); temp = lookup_widget(win, "spinbutton2"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), (gfloat) global.network.port); if (global.network.firewall) { temp = lookup_widget(win, "table11"); gtk_widget_set_sensitive(GTK_WIDGET(temp), FALSE); temp = lookup_widget(win, "radiobutton6"); } else { temp = lookup_widget(win, "radiobutton7"); } gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), TRUE); temp = lookup_widget(win, "entry83"); pos = create_string_from_ports(global.allowed_ports); if (pos) gtk_entry_set_text(GTK_ENTRY(temp), pos); g_free(pos); // Weasel75 pos = g_malloc(100); if (pos) { temp = lookup_widget(win, "entry_speedred"); print_bytes(pos, global.options.down_speed[0]); gtk_entry_set_text(GTK_ENTRY(temp), pos); temp = lookup_widget(win, "entry_speedyellow"); print_bytes(pos, global.options.down_speed[1]); gtk_entry_set_text(GTK_ENTRY(temp), pos); temp = lookup_widget(win, "entry_speedgreen"); print_bytes(pos, global.options.down_speed[2]); gtk_entry_set_text(GTK_ENTRY(temp), pos); temp = lookup_widget(win, "entry_speedred2"); print_bytes(pos, global.options.up_speed[0]); gtk_entry_set_text(GTK_ENTRY(temp), pos); temp = lookup_widget(win, "entry_speedyellow2"); print_bytes(pos, global.options.up_speed[1]); gtk_entry_set_text(GTK_ENTRY(temp), pos); temp = lookup_widget(win, "entry_speedgreen2"); print_bytes(pos, global.options.up_speed[2]); gtk_entry_set_text(GTK_ENTRY(temp), pos); g_free(pos); } temp = lookup_widget(win, "entry163"); gtk_entry_set_text(GTK_ENTRY(temp), global.naplist.host?global.naplist.host:""); temp = lookup_widget(win, "entry164"); gtk_entry_set_text(GTK_ENTRY(temp), global.naplist.document? global.naplist.document:""); temp = lookup_widget(win, "checkbutton96"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.options.filetips); temp = lookup_widget(win, "checkbutton92"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), (global.naplist.auto_update > 0)); temp = lookup_widget(win, "spinbutton81"); if (global.naplist.auto_update >= 0) { gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), global.naplist.auto_update); } else { gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), -global.naplist.auto_update); } temp = lookup_widget(win, "checkbutton97"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.options.switch_im); temp = lookup_widget(win, "checkbutton98"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.options.switch_browse); temp = lookup_widget(win, "checkbutton93"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.naplist.use_proxy); temp = lookup_widget(win, "entry159"); gtk_entry_set_text(GTK_ENTRY(temp), global.naplist.proxy_host? global.naplist.proxy_host:""); temp = lookup_widget(win, "spinbutton82"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), global.naplist.proxy_port); temp = lookup_widget(win, "checkbutton95"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.naplist.auto_remove); } if (flags & P_RSEARCH) { temp = lookup_widget(win, "spinbutton51"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), global.options.resume_timeout); temp = lookup_widget(win, "checkbutton48"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.options.auto_search); } if (flags & P_PINGS) { temp = lookup_widget(win, "checkbutton49"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.options.ping_search); temp = lookup_widget(win, "entry85"); if (global.ping_command) gtk_entry_set_text(GTK_ENTRY(temp), global.ping_command); gtk_widget_set_sensitive(temp, global.options.ping_search); } if (flags & P_D_LIMIT) { temp = lookup_widget(win, "spinbutton38"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), (gfloat) global.limit.max_downloads); } if (flags & P_U_LIMIT) { temp = lookup_widget(win, "spinbutton39"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), (gfloat) global.limit.max_uploads); } if (flags & P_D_ULIMIT) { temp = lookup_widget(win, "spinbutton1"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), (gfloat) global.limit.default_downloads); } if (flags & P_U_ULIMIT) { temp = lookup_widget(win, "spinbutton3"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), (gfloat) global.limit.default_uploads); } if (flags & P_AUTORESUME) { temp = lookup_widget(win, "checkbutton34"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.options.auto_resume); } if (flags & P_REST1) { char str[100]; temp = lookup_widget(win, "spinbutton40"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), (gfloat) (global.network.transfer_timeout_down)); temp = lookup_widget(win, "spinbutton67"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), (gfloat) (global.network.transfer_timeout_up)); temp = lookup_widget(win, "checkbutton62"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.options.confirm_delete); temp = lookup_widget(win, "checkbutton69"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.options.check_lib_for_download); temp = lookup_widget(win, "entry153"); print_bytes(str, global.limit.download_abort_limit); gtk_entry_set_text(GTK_ENTRY(temp), str); temp = lookup_widget(win, "spinbutton76"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), (gfloat) (global.limit.download_abort_number)); temp = lookup_widget(win, "spinbutton71"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), (gfloat) (global.limit.max_large)); temp = lookup_widget(win, "spinbutton72"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), (gfloat) (global.limit.large_size)); // now the media types // temp = lookup_widget(win, "ctree13"); // gui_mtype_fill_tree(GTK_CTREE(temp)); } if (flags & P_PATHS) { temp = lookup_widget(win, "entry75"); if (global.incomplete_path) gtk_entry_set_text(GTK_ENTRY(temp), global.incomplete_path); else gtk_entry_set_text(GTK_ENTRY(temp), ""); } if (flags & P_SHARES) { shared_folder_t* folder; int row; temp = lookup_widget(win, "clist19"); gtk_clist_clear(GTK_CLIST(temp)); if (global.lib) { for (dlist = global.lib->shared_folder; dlist; dlist = dlist->next) { folder = dlist->data; strcpy(tstr[0], int2media(folder->type, 1)); strcpy(tstr[1], folder->name); row = gtk_clist_append(GTK_CLIST(temp), list); } } } if (flags & P_PARSE_COLOR) { temp = lookup_widget(win, "checkbutton22"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.options.parse_colors); temp = lookup_widget(win, "checkbutton87"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.options.strip_colors); } if (flags & P_TAB_STYLE) { temp = lookup_widget(win, "checkbutton57"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.options.tab_style & TAB_ICON); temp = lookup_widget(win, "checkbutton58"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.options.tab_style & TAB_TEXT); if (global.options.server_motd) temp = lookup_widget(win, "radiobutton4"); else temp = lookup_widget(win, "radiobutton5"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), TRUE); temp = lookup_widget(win, "spinbutton68"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), global.server_paned); // download layout temp = lookup_widget(win, "combo_entry30"); gtk_entry_set_text(GTK_ENTRY(temp), DownloadList(global.dl_layout.transfer_position[0])); temp = lookup_widget(win, "entry150"); gtk_entry_set_text(GTK_ENTRY(temp), DownloadList(global.dl_layout.transfer_position[1])); temp = lookup_widget(win, "entry151"); gtk_entry_set_text(GTK_ENTRY(temp), DownloadList(global.dl_layout.transfer_position[2])); temp = lookup_widget(win, "entry152"); gtk_entry_set_text(GTK_ENTRY(temp), DownloadList(global.dl_layout.transfer_position[3])); temp = lookup_widget(win, "entry146"); gtk_entry_set_text(GTK_ENTRY(temp), DownloadPage(global.dl_layout.ctree_position[0])); temp = lookup_widget(win, "entry147"); gtk_entry_set_text(GTK_ENTRY(temp), DownloadPage(global.dl_layout.ctree_position[1])); temp = lookup_widget(win, "entry148"); gtk_entry_set_text(GTK_ENTRY(temp), DownloadPage(global.dl_layout.ctree_position[2])); temp = lookup_widget(win, "entry149"); gtk_entry_set_text(GTK_ENTRY(temp), DownloadPage(global.dl_layout.ctree_position[3])); } if (flags & P_SHOW_JOIN) { temp = lookup_widget(win, "combo_entry25"); switch (global.options.show_parts) { case 0: gtk_entry_set_text(GTK_ENTRY(temp), "None"); break; case 1: gtk_entry_set_text(GTK_ENTRY(temp), "Recent Users"); break; case 2: default: gtk_entry_set_text(GTK_ENTRY(temp), "All"); break; } temp = lookup_widget(win, "spinbutton56"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), global.options.recent_timeout); temp = lookup_widget(win, "combo_entry24"); switch (global.options.show_joins) { case 0: gtk_entry_set_text(GTK_ENTRY(temp), "None"); break; case 1: default: gtk_entry_set_text(GTK_ENTRY(temp), "All"); break; } } if (flags & P_TIMESTAMPS) { temp = lookup_widget(win, "entry108"); gtk_entry_set_text(GTK_ENTRY(temp), TimeStamp(global.options.timestamps)); } if (flags & P_SCHEMES) { if (global.scheme) scheme_update_list(global.scheme->name); else scheme_update_list(NULL); } if (flags & P_ADVANCED) { temp = lookup_widget(win, "checkbutton65"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.options.check_version); temp = lookup_widget(win, "checkbutton38"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.options.allow_dcc); temp = lookup_widget(win, "checkbutton82"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.options.access_transferring); temp = lookup_widget(win, "checkbutton54"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.options.dummy_md5); temp = lookup_widget(win, "button360"); gtk_object_set_data(GTK_OBJECT(temp), "value", (void *) global.options.piping); temp = lookup_widget(win, "button361"); gtk_object_set_data(GTK_OBJECT(temp), "value", (void *) global.options.no_piping); temp = lookup_widget(win, "checkbutton75"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), global.options.logging&(1<next) { bn = g_malloc(sizeof(*bn)); memcpy(bn, dlist->data, sizeof(*bn)); sprintf(tstr[0], "%d.%d.%d.%d", (int)((bn->ip_from>>24)&0xff), (int)((bn->ip_from>>16)&0xff), (int)((bn->ip_from>>8 )&0xff), (int)((bn->ip_from )&0xff)); sprintf(tstr[1], "%d.%d.%d.%d", (int)((bn->ip_to>>24)&0xff), (int)((bn->ip_to>>16)&0xff), (int)((bn->ip_to>>8 )&0xff), (int)((bn->ip_to )&0xff)); row = gtk_clist_append(GTK_CLIST(temp), list); gtk_clist_set_row_data_full(GTK_CLIST(temp), row, bn, g_free); } if (global.external_handler) { temp = lookup_widget(win, "entry142"); gtk_entry_set_text(GTK_ENTRY(temp), global.external_handler); } for (row = 0; row < EVENT_NUMBER; row++) { char text[100]; sprintf(text, "eventbutton%d", row); temp = lookup_widget(win, text); if (temp && (global.external_events&(1<download_entry) { text = gtk_entry_get_text(type->download_entry); if (text && *text) mtype->download = g_strdup(text); } for (dlist = type->app; dlist; dlist = dlist->next) { gapp_t* gapp = dlist->data; text = gtk_entry_get_text(gapp->app_entry); text2 = gtk_entry_get_text(gapp->label_entry); if (!text || *text == 0) continue; app = g_malloc0(sizeof(*app)); app->app = g_strdup(text); if (text2 && *text2) app->label = g_strdup(text2); mtype->app = g_list_append(mtype->app, app); } for (dlist = type->suffix; dlist; dlist = dlist->next) { gsuffix_t* gsuf = dlist->data; text = gtk_entry_get_text(gsuf->ext_entry); if (!text || *text == 0) continue; suf = g_malloc0(sizeof(*suf)); make_list_from_string(&(suf->ext), text, " "); mtype->suffix = g_list_append(mtype->suffix, suf); for (dlist2 = gsuf->app; dlist2; dlist2 = dlist2->next) { gapp_t* gapp = dlist2->data; text = gtk_entry_get_text(gapp->app_entry); text2 = gtk_entry_get_text(gapp->label_entry); if (!text || *text == 0) continue; app = g_malloc0(sizeof(*app)); app->app = g_strdup(text); if (text2 && *text2) app->label = g_strdup(text2); suf->app = g_list_append(suf->app, app); } } } mtype_save(); } void apply_preferences() { GtkWidget *win; GtkWidget *temp; char str[4096]; int i1; int i2; unsigned long bytes; char *pos; scheme_t *scheme; download_layout_t dllo; library_t* temp_lib; if (!global.options_win) return; else win = global.options_win; check_uploads_again(); // general temp = lookup_widget(win, "entry4"); if (global.username) g_free(global.username); global.username = g_strdup(gtk_entry_get_text(GTK_ENTRY(temp))); temp = lookup_widget(win, "entry5"); if (global.password) g_free(global.password); global.password = g_strdup(gtk_entry_get_text(GTK_ENTRY(temp))); temp = lookup_widget(win, "entry7"); pos = gtk_entry_get_text(GTK_ENTRY(temp)); if (strcmp(pos, global.email)) { global.email = g_strdup(pos); command_send(NULL, CMD_CHANGE_EMAIL, global.email); } temp = GTK_COMBO(lookup_widget(win, "combo3"))->entry; pos = gtk_entry_get_text(GTK_ENTRY(temp)); i1 = speed2int(pos); if (i1 != global.linespeed) { global.linespeed = i1; sprintf(str, "%d", global.linespeed); command_send(NULL, CMD_CHANGE_SPEED, str); } temp = lookup_widget(win, "entry83"); pos = g_strdup(gtk_entry_get_text(GTK_ENTRY(temp))); destroy_string_list(global.allowed_ports); global.allowed_ports = create_allowed_ports(pos); g_free(pos); pos = create_string_from_ports(global.allowed_ports); if (pos) gtk_entry_set_text(GTK_ENTRY(temp), pos); g_free(pos); temp = lookup_widget(win, "radiobutton6"); i2 = 0; if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp))) i2 = 1; temp = lookup_widget(win, "radiobutton7"); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp))) i2 = 0; temp = lookup_widget(win, "spinbutton2"); i1 = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(temp)); if ((global.network.port != i1) || (global.network.firewall != i2)) { global.network.port = i1; global.network.firewall = i2; create_upload_port(i1, TRUE); } i1 = global.naplist.auto_update; temp = lookup_widget(win, "spinbutton81"); global.naplist.auto_update = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(temp)); temp = lookup_widget(win, "checkbutton92"); if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp))) { global.naplist.auto_update = -global.naplist.auto_update; } if (i1 != global.naplist.auto_update) { napigator_restart_update(NULL); } temp = lookup_widget(win, "checkbutton96"); global.options.filetips = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp)); temp = lookup_widget(win, "checkbutton97"); global.options.switch_im = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp)); temp = lookup_widget(win, "checkbutton98"); global.options.switch_browse = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp)); temp = lookup_widget(win, "entry163"); pos = gtk_entry_get_text(GTK_ENTRY(temp)); g_free(global.naplist.host); if (!pos || *pos == 0) global.naplist.host = g_strdup(NAPLIST_HOST); else global.naplist.host = g_strdup(pos); temp = lookup_widget(win, "entry164"); pos = gtk_entry_get_text(GTK_ENTRY(temp)); g_free(global.naplist.document); if (!pos || *pos == 0) global.naplist.document = g_strdup(NAPLIST_DOC); else global.naplist.document = g_strdup(pos); temp = lookup_widget(win, "entry159"); pos = gtk_entry_get_text(GTK_ENTRY(temp)); g_free(global.naplist.proxy_host); global.naplist.proxy_host = g_strdup(pos); temp = lookup_widget(win, "spinbutton82"); global.naplist.proxy_port = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(temp)); temp = lookup_widget(win, "checkbutton93"); global.naplist.use_proxy = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp)); temp = lookup_widget(win, "checkbutton95"); global.naplist.auto_remove = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp)); // Weasel75 temp = lookup_widget(win, "entry_speedred"); i1 = extract_bytes(gtk_entry_get_text(GTK_ENTRY(temp))); if (i1 > 0) global.options.down_speed[0] = i1; else global.options.down_speed[0] = SPEED_RED; temp = lookup_widget(win, "entry_speedyellow"); i1 = extract_bytes(gtk_entry_get_text(GTK_ENTRY(temp))); if (i1>0) global.options.down_speed[1] = i1; else global.options.down_speed[1] = SPEED_YELLOW; temp = lookup_widget(win, "entry_speedgreen"); i1 = extract_bytes(gtk_entry_get_text(GTK_ENTRY(temp))); if (i1>0) global.options.down_speed[2] = i1; else global.options.down_speed[2] = SPEED_GREEN; temp = lookup_widget(win, "entry_speedred2"); i1 = extract_bytes(gtk_entry_get_text(GTK_ENTRY(temp))); if (i1 > 0) global.options.up_speed[0] = i1; else global.options.up_speed[0] = SPEED_RED; temp = lookup_widget(win, "entry_speedyellow2"); i1 = extract_bytes(gtk_entry_get_text(GTK_ENTRY(temp))); if (i1>0) global.options.up_speed[1] = i1; else global.options.up_speed[1] = SPEED_YELLOW; temp = lookup_widget(win, "entry_speedgreen2"); i1 = extract_bytes(gtk_entry_get_text(GTK_ENTRY(temp))); if (i1>0) global.options.up_speed[2] = i1; else global.options.up_speed[2] = SPEED_GREEN; // search temp = lookup_widget(win, "spinbutton51"); global.options.resume_timeout = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(temp)); temp = lookup_widget(win, "checkbutton48"); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp))) { global.options.auto_search = 1; } else { global.options.auto_search = 0; } temp = lookup_widget(win, "entry85"); pos = gtk_entry_get_text(GTK_ENTRY(temp)); g_free(global.ping_command); global.ping_command = g_strdup(pos); temp = lookup_widget(win, "checkbutton49"); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp))) { temp = lookup_widget(global.win, "checkbutton45"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), TRUE); } else { temp = lookup_widget(global.win, "checkbutton45"); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(temp), FALSE); } // Transfers temp = lookup_widget(win, "spinbutton38"); global.limit.max_downloads = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(temp)); temp = lookup_widget(global.win, "spinbutton78"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), global.limit.max_downloads); temp = lookup_widget(win, "spinbutton39"); global.limit.max_uploads = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(temp)); temp = lookup_widget(global.win, "spinbutton74"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), global.limit.max_uploads); temp = lookup_widget(win, "spinbutton1"); global.limit.default_downloads = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(temp)); temp = lookup_widget(global.win, "spinbutton79"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), global.limit.default_downloads); temp = lookup_widget(win, "spinbutton3"); global.limit.default_uploads = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(temp)); temp = lookup_widget(global.win, "spinbutton75"); gtk_spin_button_set_value(GTK_SPIN_BUTTON(temp), global.limit.default_uploads); temp = lookup_widget(win, "spinbutton40"); global.network.transfer_timeout_down = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(temp)); temp = lookup_widget(win, "spinbutton67"); global.network.transfer_timeout_up = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(temp)); temp = lookup_widget(win, "spinbutton71"); global.limit.max_large = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(temp)); temp = lookup_widget(win, "spinbutton72"); global.limit.large_size = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(temp)); global.limit.cur_large = 0; temp = lookup_widget(global.win, "transfer_up"); for (i1 = 0; i1 < GTK_CLIST(temp)->rows; i1++) { socket_t* socket = gtk_clist_get_row_data(GTK_CLIST(temp), i1); upload_t* upload = socket->data; if (!upload) continue; if (transfer_in_progress(TRANS(upload)) && upload->file) { int size; if (upload->segment) size = upload->segment->stop - upload->segment->start; else size = upload->file->size; if (size >= global.limit.large_size *1024 * 1024) global.limit.cur_large++; } } temp = lookup_widget(win, "checkbutton34"); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp))) global.options.auto_resume = 1; else global.options.auto_resume = 0; temp = lookup_widget(win, "checkbutton62"); global.options.confirm_delete = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp)); temp = lookup_widget(win, "checkbutton69"); global.options.check_lib_for_download = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp)); temp = lookup_widget(win, "entry153"); bytes = extract_bytes(gtk_entry_get_text(GTK_ENTRY(temp))); global.limit.download_abort_limit = bytes; temp = lookup_widget(win, "spinbutton76"); global.limit.download_abort_number = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(temp)); // paths temp = lookup_widget(win, "entry75"); if (global.incomplete_path) g_free(global.incomplete_path); global.incomplete_path = g_strdup(gtk_entry_get_text(GTK_ENTRY(temp))); // shares temp_lib = lib_new("__temp_lib__"); temp = lookup_widget(win, "clist19"); for (i1 = 0; i1 < GTK_CLIST(temp)->rows; i1++) { int mime; gtk_clist_get_text(GTK_CLIST(temp), i1, 0, &pos); mime = media2int(pos); gtk_clist_get_text(GTK_CLIST(temp), i1, 1, &pos); lib_add_folder(temp_lib, pos, mime); } // Appearance temp = lookup_widget(global.options_win, "button360"); global.options.piping = (int) gtk_object_get_data(GTK_OBJECT(temp), "value"); temp = lookup_widget(global.options_win, "button361"); global.options.no_piping = (int) gtk_object_get_data(GTK_OBJECT(temp), "value"); temp = lookup_widget(win, "combo_entry30"); pos = (gtk_entry_get_text(GTK_ENTRY(temp))); dllo.transfer_position[0] = list2int(pos); temp = lookup_widget(win, "entry150"); pos = (gtk_entry_get_text(GTK_ENTRY(temp))); dllo.transfer_position[1] = list2int(pos); temp = lookup_widget(win, "entry151"); pos = (gtk_entry_get_text(GTK_ENTRY(temp))); dllo.transfer_position[2] = list2int(pos); temp = lookup_widget(win, "entry152"); pos = (gtk_entry_get_text(GTK_ENTRY(temp))); dllo.transfer_position[3] = list2int(pos); temp = lookup_widget(win, "entry146"); pos = (gtk_entry_get_text(GTK_ENTRY(temp))); dllo.ctree_position[0] = page2int(pos); temp = lookup_widget(win, "entry147"); pos = (gtk_entry_get_text(GTK_ENTRY(temp))); dllo.ctree_position[1] = page2int(pos); temp = lookup_widget(win, "entry148"); pos = (gtk_entry_get_text(GTK_ENTRY(temp))); dllo.ctree_position[2] = page2int(pos); temp = lookup_widget(win, "entry149"); pos = (gtk_entry_get_text(GTK_ENTRY(temp))); dllo.ctree_position[3] = page2int(pos); download_layout(&dllo); temp = lookup_widget(win, "combo_entry24"); pos = gtk_entry_get_text(GTK_ENTRY(temp)); if (!g_strcasecmp(pos, "None")) global.options.show_joins = 0; else global.options.show_joins = 1; temp = lookup_widget(win, "combo_entry25"); pos = gtk_entry_get_text(GTK_ENTRY(temp)); if (!g_strcasecmp(pos, "None")) global.options.show_parts = 0; else if (!g_strcasecmp(pos, "Recent Users")) global.options.show_parts = 1; else global.options.show_parts = 2; temp = lookup_widget(win, "spinbutton56"); global.options.recent_timeout = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(temp)); temp = lookup_widget(win, "checkbutton22"); global.options.parse_colors = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp)); temp = lookup_widget(win, "checkbutton87"); global.options.strip_colors = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp)); temp = lookup_widget(win, "checkbutton57"); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp))) global.options.tab_style |= TAB_ICON; else global.options.tab_style &= (0x03 ^ TAB_ICON); temp = lookup_widget(win, "checkbutton58"); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp))) global.options.tab_style |= TAB_TEXT; else global.options.tab_style &= (0x03 ^ TAB_TEXT); temp = lookup_widget(win, "checkbutton60"); global.options.channel_rejoin = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp)); temp = lookup_widget(win, "checkbutton71"); global.options.rejoin_when_kicked = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp)); temp = lookup_widget(win, "checkbutton68"); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp))) { temp = lookup_widget(win, "combo_entry32"); pos = gtk_entry_get_text(GTK_ENTRY(temp)); if (!g_strcasecmp(pos, "Dark Colors")) global.options.colored_nicks = 3; else if (!g_strcasecmp(pos, "Medium Colors")) global.options.colored_nicks = 2; else global.options.colored_nicks = 1; } else { global.options.colored_nicks = 0; } temp = lookup_widget(win, "checkbutton89"); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp))) { temp = lookup_widget(win, "entry156"); pos = gtk_entry_get_text(GTK_ENTRY(temp)); if (!g_strcasecmp(pos, "Dark Colors")) global.options.colored_nicks2 = 3; else if (!g_strcasecmp(pos, "Medium Colors")) global.options.colored_nicks2 = 2; else global.options.colored_nicks2 = 1; } else { global.options.colored_nicks2 = 0; } temp = lookup_widget(win, "entry108"); pos = gtk_entry_get_text(GTK_ENTRY(temp)); global.options.timestamps = timestamp2int(pos); setup_main_tab(); // saving color scheme on_button100_clicked(NULL, NULL); // setting up new color scheme temp = lookup_widget(win, "combo_entry15"); pos = gtk_entry_get_text(GTK_ENTRY(temp)); scheme = scheme_load(pos); if (scheme) { scheme_destroy(global.scheme); global.scheme = scheme; } else { client_message("Message", "Loading scheme [%s] failed!", pos); } // Advanced temp = lookup_widget(win, "checkbutton65"); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp))) { if (!global.options.check_version) global.options.check_version = 1; } else { global.options.check_version = 0; } temp = lookup_widget(win, "checkbutton38"); global.options.allow_dcc = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp)); temp = lookup_widget(win, "checkbutton82"); global.options.access_transferring = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp)); temp = lookup_widget(win, "checkbutton54"); global.options.dummy_md5 = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp)); global.options.logging = 0; temp = lookup_widget(win, "checkbutton75"); if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp))) global.options.logging |= (1<rows; i1++) { bannetworks_t* bn; bn = gtk_clist_get_row_data(GTK_CLIST(temp), i1); if (bn) ban_networks_add(bn); } ban_networks_save(); temp = lookup_widget(win, "entry142"); pos = gtk_entry_get_text(GTK_ENTRY(temp)); if (global.external_handler) g_free(global.external_handler); global.external_handler = 0; if (pos && *pos) global.external_handler = g_strdup(pos); for (i1 = 0; i1 < EVENT_NUMBER; i1++) { char text[100]; sprintf(text, "eventbutton%d", i1); temp = lookup_widget(win, text); if (temp) { if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(temp))) global.external_events |= (1<shared_folder); global.lib->shared_folder = temp_lib->shared_folder; temp_lib->shared_folder = NULL; lib_refresh(global.lib); } lib_destroy(temp_lib); apply_media_types(); write_rc(); } void preferences_goto(int section) { GtkCList *clist; if (!global.options_win) { on_preferences_activate(NULL, NULL); } if (!global.options_win) return; clist = GTK_CLIST(lookup_widget(global.options_win, "ctree2")); gtk_clist_select_row(clist, section, 0); } void on_toggle_pipe(GtkMenuItem * menuitem ATTR_UNUSED, gpointer user_data) { int value; GtkWidget *temp; int no = (int) user_data; temp = lookup_widget(global.options_win, "button360"); value = (int) gtk_object_get_data(GTK_OBJECT(temp), "value"); value = value ^ no; gtk_object_set_data(GTK_OBJECT(temp), "value", (gpointer) value); } GtkWidget *create_pipe_popup(int val) { GtkWidget *mode_popup; GtkAccelGroup *mode_popup_accels; GtkWidget *mode; mode_popup = gtk_menu_new(); gtk_object_set_data(GTK_OBJECT(mode_popup), "mode_popup", mode_popup); mode_popup_accels = gtk_menu_ensure_uline_accel_group(GTK_MENU(mode_popup)); mode = gtk_check_menu_item_new_with_label("Away Logging"); gtk_widget_show(mode); gtk_container_add(GTK_CONTAINER(mode_popup), mode); if (val & PIPE_AWAY_LOG) gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mode), TRUE); gtk_signal_connect(GTK_OBJECT(mode), "activate", (GtkSignalFunc) on_toggle_pipe, (gpointer) PIPE_AWAY_LOG); mode = gtk_check_menu_item_new_with_label("Private Messages"); gtk_widget_show(mode); gtk_container_add(GTK_CONTAINER(mode_popup), mode); if (val & PIPE_PRIVATE) gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mode), TRUE); gtk_signal_connect(GTK_OBJECT(mode), "activate", (GtkSignalFunc) on_toggle_pipe, (gpointer) PIPE_PRIVATE); mode = gtk_check_menu_item_new_with_label("Channel Operator Message"); gtk_widget_show(mode); gtk_container_add(GTK_CONTAINER(mode_popup), mode); if (val & PIPE_CHWALLOP) gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mode), TRUE); gtk_signal_connect(GTK_OBJECT(mode), "activate", (GtkSignalFunc) on_toggle_pipe, (gpointer) PIPE_CHWALLOP); mode = gtk_check_menu_item_new_with_label("Operator Messages"); gtk_widget_show(mode); gtk_container_add(GTK_CONTAINER(mode_popup), mode); if (val & PIPE_WALLOP) gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mode), TRUE); gtk_signal_connect(GTK_OBJECT(mode), "activate", (GtkSignalFunc) on_toggle_pipe, (gpointer) PIPE_WALLOP); mode = gtk_check_menu_item_new_with_label("Global Messages"); gtk_widget_show(mode); gtk_container_add(GTK_CONTAINER(mode_popup), mode); if (val & PIPE_GLOBAL) gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mode), TRUE); gtk_signal_connect(GTK_OBJECT(mode), "activate", (GtkSignalFunc) on_toggle_pipe, (gpointer) PIPE_GLOBAL); mode = gtk_check_menu_item_new_with_label("Server Messages"); gtk_widget_show(mode); gtk_container_add(GTK_CONTAINER(mode_popup), mode); if (val & PIPE_SERVER) gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mode), TRUE); gtk_signal_connect(GTK_OBJECT(mode), "activate", (GtkSignalFunc) on_toggle_pipe, (gpointer) PIPE_SERVER); mode = gtk_check_menu_item_new_with_label("Download Messages"); gtk_widget_show(mode); gtk_container_add(GTK_CONTAINER(mode_popup), mode); if (val & PIPE_DOWNLOAD) gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mode), TRUE); gtk_signal_connect(GTK_OBJECT(mode), "activate", (GtkSignalFunc) on_toggle_pipe, (gpointer) PIPE_DOWNLOAD); mode = gtk_check_menu_item_new_with_label("Upload Messages"); gtk_widget_show(mode); gtk_container_add(GTK_CONTAINER(mode_popup), mode); if (val & PIPE_UPLOAD) gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mode), TRUE); gtk_signal_connect(GTK_OBJECT(mode), "activate", (GtkSignalFunc) on_toggle_pipe, (gpointer) PIPE_UPLOAD); return mode_popup; } void on_toggle_pipe2(GtkMenuItem * menuitem ATTR_UNUSED, gpointer user_data) { int value; GtkWidget *temp; int no = (int) user_data; temp = lookup_widget(global.options_win, "button361"); value = (int) gtk_object_get_data(GTK_OBJECT(temp), "value"); value = value ^ no; gtk_object_set_data(GTK_OBJECT(temp), "value", (gpointer) value); } GtkWidget *create_pipe2_popup(int val) { GtkWidget *mode_popup; GtkAccelGroup *mode_popup_accels; GtkWidget *mode; mode_popup = gtk_menu_new(); gtk_object_set_data(GTK_OBJECT(mode_popup), "mode_popup", mode_popup); mode_popup_accels = gtk_menu_ensure_uline_accel_group(GTK_MENU(mode_popup)); mode = gtk_check_menu_item_new_with_label("Ignored messages"); gtk_widget_show(mode); gtk_container_add(GTK_CONTAINER(mode_popup), mode); if (val & NOPIPE_IGNORE) gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mode), TRUE); gtk_signal_connect(GTK_OBJECT(mode), "activate", (GtkSignalFunc) on_toggle_pipe2, (gpointer) NOPIPE_IGNORE); mode = gtk_check_menu_item_new_with_label("Download Messages"); gtk_widget_show(mode); gtk_container_add(GTK_CONTAINER(mode_popup), mode); if (val & NOPIPE_DOWNLOAD) gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mode), TRUE); gtk_signal_connect(GTK_OBJECT(mode), "activate", (GtkSignalFunc) on_toggle_pipe2, (gpointer) NOPIPE_DOWNLOAD); mode = gtk_check_menu_item_new_with_label("Upload Messages"); gtk_widget_show(mode); gtk_container_add(GTK_CONTAINER(mode_popup), mode); if (val & NOPIPE_UPLOAD) gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mode), TRUE); gtk_signal_connect(GTK_OBJECT(mode), "activate", (GtkSignalFunc) on_toggle_pipe2, (gpointer) NOPIPE_UPLOAD); mode = gtk_check_menu_item_new_with_label("Incoming Protocol"); gtk_widget_show(mode); gtk_container_add(GTK_CONTAINER(mode_popup), mode); if (val & NOPIPE_PROTOCOL1) gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mode), TRUE); gtk_signal_connect(GTK_OBJECT(mode), "activate", (GtkSignalFunc) on_toggle_pipe2, (gpointer) NOPIPE_PROTOCOL1); mode = gtk_check_menu_item_new_with_label("Outgoing Protocol"); gtk_widget_show(mode); gtk_container_add(GTK_CONTAINER(mode_popup), mode); if (val & NOPIPE_PROTOCOL2) gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(mode), TRUE); gtk_signal_connect(GTK_OBJECT(mode), "activate", (GtkSignalFunc) on_toggle_pipe2, (gpointer) NOPIPE_PROTOCOL2); return mode_popup; } void on_dir_select343(gchar * dir) { GtkWidget *temp; GtkWidget *entry; char *text; int row; if (!global.options_win) return; if (!dir || *dir == 0) return; if (dir[strlen(dir) - 1] == DIR_SEP) dir[strlen(dir) - 1] = 0; entry = lookup_widget(global.options_win, "combo_entry29"); text = gtk_entry_get_text(GTK_ENTRY(entry)); temp = lookup_widget(global.options_win, "clist19"); strcpy(tstr[0], text); strcpy(tstr[1], dir); row = gtk_clist_append(GTK_CLIST(temp), list); }