Mercurial > pidgin
changeset 3818:fed3d1b2a472
[gaim-migrate @ 3965]
Prefs are instant apply again.
committer: Tailor Script <tailor@pidgin.im>
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Tue, 29 Oct 2002 08:37:39 +0000 |
parents | a2e99acb8428 |
children | 8997bc63417c |
files | src/prefs.c |
diffstat | 1 files changed, 241 insertions(+), 387 deletions(-) [+] |
line wrap: on
line diff
--- a/src/prefs.c Tue Oct 29 07:11:12 2002 +0000 +++ b/src/prefs.c Tue Oct 29 08:37:39 2002 +0000 @@ -39,29 +39,6 @@ #include "prpl.h" #include "proxy.h" -/* temporary preferences */ -static guint misc_options_new; -static guint logging_options_new; -static guint blist_options_new; -static guint convo_options_new; -static guint im_options_new; -static guint chat_options_new; -static guint font_options_new; -static guint sound_options_new; -static char *sound_file_new[NUM_SOUNDS]; -static guint away_options_new; -static guint away_resend_new; -static int auto_away_new; -static int report_idle_new; -static int proxytype_new; -static struct away_message* default_away_new; -static int web_browser_new; -static char sound_cmd_new[2048]; -static char web_command_new[2048]; -static int fontsize_new; -GdkColor fgcolor_new, bgcolor_new; -static struct window_size conv_size_new, buddy_chat_size_new; -char fontface_new[128]; char fontface[128]; GtkWidget *tree_v = NULL; @@ -88,7 +65,6 @@ static GtkWidget *show_color_pref(GtkWidget *, gboolean); static void delete_prefs(GtkWidget *, void *); void set_default_away(GtkWidget *, gpointer); -static void apply_prefs(); struct debug_window *dw = NULL; GtkWidget *prefs = NULL; @@ -102,15 +78,7 @@ GtkTreeIter *prefs_notebook_add_page(char*, GdkPixbuf*, GtkWidget*, GtkTreeIter*, GtkTreeIter*, int); void delete_prefs(GtkWidget *asdf, void *gdsa) { - int v; - prefs = NULL; - for (v = 0; v < NUM_SOUNDS; v++) { - if (sound_file_new[v]) { - g_free(sound_file_new[v]); - sound_file_new[v] = NULL; - } - } tree_v = NULL; sound_entry = NULL; browser_entry = NULL; @@ -126,15 +94,15 @@ GtkWidget *prefsnotebook; GtkTreeStore *prefstree; -static void set_misc_options(); -static void set_logging_options(); -static void set_blist_options(); -static void set_convo_options(); -static void set_im_options(); -static void set_chat_options(); -static void set_font_options(); -static void set_sound_options(); -static void set_away_options(); +static void set_misc_option(); +static void set_logging_option(); +static void set_blist_option(); +static void set_convo_option(); +static void set_im_option(); +static void set_chat_option(); +static void set_font_option(); +static void set_sound_option(); +static void set_away_option(); #define PROXYHOST 0 #define PROXYPORT 1 @@ -151,7 +119,6 @@ g_snprintf(proxyuser, sizeof(proxyuser), "%s", gtk_entry_get_text(entry)); else if (entrynum == PROXYPASS) g_snprintf(proxypass, sizeof(proxypass), "%s", gtk_entry_get_text(entry)); - apply_prefs(); } @@ -177,67 +144,6 @@ /* OK, Apply and Cancel */ -static void apply_cb(GtkWidget *button, void *data) -{ - apply_prefs(); -} - -static void apply_prefs() -{ - int r; - if (misc_options != misc_options_new) - set_misc_options(); - if (logging_options != logging_options_new) - set_logging_options(); - if (blist_options != blist_options_new) - set_blist_options(); - if (convo_options != convo_options_new) - set_convo_options(); - if (im_options != im_options_new) - set_im_options(); - if (chat_options != chat_options_new) - set_chat_options(); - chat_options = chat_options_new; - if (font_options != font_options_new) - set_font_options(); - if (sound_options != sound_options_new) - set_sound_options(); - for (r = 0; r < NUM_SOUNDS; r++) { - if (sound_file[r]) - g_free(sound_file[r]); - sound_file[r] = g_strdup(sound_file_new[r]); - } - if (away_options != away_options_new) - set_away_options(); - away_resend = away_resend_new; - auto_away = auto_away_new; - report_idle = report_idle_new; - web_browser = web_browser_new; - proxytype = proxytype_new; - default_away = default_away_new; - fontsize = fontsize_new; -#ifndef _WIN32 - g_snprintf(sound_cmd, sizeof(sound_cmd), "%s", sound_cmd_new); -#endif - g_snprintf(web_command, sizeof(web_command), "%s", web_command_new); - memcpy(&conv_size, &conv_size_new, sizeof(struct window_size)); - memcpy(&conv_size, &conv_size_new, sizeof(struct window_size)); - memcpy(&fgcolor, &fgcolor_new, sizeof(GdkColor)); - memcpy(&bgcolor, &bgcolor_new, sizeof(GdkColor)); - - - g_snprintf(fontface, sizeof(fontface), fontface_new); - update_convo_font(); - update_convo_color(); - save_prefs(); -} - - -static void ok_cb(GtkWidget *button, void *data) -{ - apply_cb(button, data); - gtk_widget_destroy(prefs); -} static void pref_nb_select(GtkTreeSelection *sel, GtkNotebook *nb) { GtkTreeIter iter; @@ -267,10 +173,10 @@ vbox = make_frame(ret, _("Interface Options")); /* This shouldn't have to wait for user to click OK or APPLY or whatnot */ /* This really shouldn't be in preferences at all */ - debugbutton = gaim_button(_("Show _Debug Window"), &misc_options_new, OPT_MISC_DEBUG, vbox); + debugbutton = gaim_button(_("Show _Debug Window"), &misc_options, OPT_MISC_DEBUG, vbox); - gaim_button(_("Use _borderless buttons"), &misc_options_new, OPT_MISC_COOL_LOOK, vbox); + gaim_button(_("Use _borderless buttons"), &misc_options, OPT_MISC_COOL_LOOK, vbox); gtk_widget_show_all(ret); return ret; @@ -287,19 +193,19 @@ gtk_container_set_border_width (GTK_CONTAINER (ret), 12); vbox = make_frame(ret, _("Style")); - gaim_button(_("_Bold"), &font_options_new, OPT_FONT_BOLD, vbox); - gaim_button(_("_Italics"), &font_options_new, OPT_FONT_ITALIC, vbox); - gaim_button(_("_Underline"), &font_options_new, OPT_FONT_UNDERLINE, vbox); - gaim_button(_("_Strikethough"), &font_options_new, OPT_FONT_STRIKE, vbox); + gaim_button(_("_Bold"), &font_options, OPT_FONT_BOLD, vbox); + gaim_button(_("_Italics"), &font_options, OPT_FONT_ITALIC, vbox); + gaim_button(_("_Underline"), &font_options, OPT_FONT_UNDERLINE, vbox); + gaim_button(_("_Strikethough"), &font_options, OPT_FONT_STRIKE, vbox); vbox = make_frame(ret, _("Face")); hbox = gtk_hbox_new(FALSE, 6); gtk_container_add(GTK_CONTAINER(vbox), hbox); - button = gaim_button(_("Use custo_m face"), &font_options_new, OPT_FONT_FACE, hbox); + button = gaim_button(_("Use custo_m face"), &font_options, OPT_FONT_FACE, hbox); gtk_size_group_add_widget(sg, button); select = gtk_button_new_from_stock(GTK_STOCK_SELECT_FONT); - if (!(font_options_new & OPT_FONT_FACE)) + if (!(font_options & OPT_FONT_FACE)) gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(toggle_sensitive), select); gtk_signal_connect(GTK_OBJECT(select), "clicked", GTK_SIGNAL_FUNC(show_font_dialog), NULL); @@ -307,10 +213,10 @@ hbox = gtk_hbox_new(FALSE, 5); gtk_container_add(GTK_CONTAINER(vbox), hbox); - button = gaim_button(_("Use custom si_ze"), &font_options_new, OPT_FONT_SIZE, hbox); + button = gaim_button(_("Use custom si_ze"), &font_options, OPT_FONT_SIZE, hbox); gtk_size_group_add_widget(sg, button); - select = gaim_labeled_spin_button(hbox, NULL, &fontsize_new, 1, 7, NULL); - if (!(font_options_new & OPT_FONT_SIZE)) + select = gaim_labeled_spin_button(hbox, NULL, &fontsize, 1, 7, NULL); + if (!(font_options & OPT_FONT_SIZE)) gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(toggle_sensitive), select); @@ -319,7 +225,7 @@ gtk_container_add(GTK_CONTAINER(vbox), hbox); - button = gaim_button(_("_Text color"), &font_options_new, OPT_FONT_FGCOL, hbox); + button = gaim_button(_("_Text color"), &font_options, OPT_FONT_FGCOL, hbox); gtk_size_group_add_widget(sg, button); select = gtk_button_new_from_stock(GTK_STOCK_SELECT_COLOR); @@ -328,14 +234,14 @@ gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(update_color), pref_fg_picture); - if (!(font_options_new & OPT_FONT_FGCOL)) + if (!(font_options & OPT_FONT_FGCOL)) gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(toggle_sensitive), select); gtk_signal_connect(GTK_OBJECT(select), "clicked", GTK_SIGNAL_FUNC(show_fgcolor_dialog), NULL); hbox = gtk_hbox_new(FALSE, 5); gtk_container_add(GTK_CONTAINER(vbox), hbox); - button = gaim_button(_("Bac_kground color"), &font_options_new, OPT_FONT_BGCOL, hbox); + button = gaim_button(_("Bac_kground color"), &font_options, OPT_FONT_BGCOL, hbox); gtk_size_group_add_widget(sg, button); select = gtk_button_new_from_stock(GTK_STOCK_SELECT_COLOR); gtk_box_pack_start(GTK_BOX(hbox), select, FALSE, FALSE, 0); @@ -343,7 +249,7 @@ gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(update_color), pref_bg_picture); - if (!(font_options_new & OPT_FONT_BGCOL)) + if (!(font_options & OPT_FONT_BGCOL)) gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); gtk_signal_connect(GTK_OBJECT(select), "clicked", GTK_SIGNAL_FUNC(show_bgcolor_dialog), NULL); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(toggle_sensitive), select); @@ -360,17 +266,17 @@ gtk_container_set_border_width (GTK_CONTAINER (ret), 12); vbox = make_frame (ret, _("Display")); - gaim_button(_("Show graphical _smileys"), &convo_options_new, OPT_CONVO_SHOW_SMILEY, vbox); - gaim_button(_("Show _timestamp on messages"), &convo_options_new, OPT_CONVO_SHOW_TIME, vbox); - gaim_button(_("Show _URLs as links"), &convo_options_new, OPT_CONVO_SEND_LINKS, vbox); + gaim_button(_("Show graphical _smileys"), &convo_options, OPT_CONVO_SHOW_SMILEY, vbox); + gaim_button(_("Show _timestamp on messages"), &convo_options, OPT_CONVO_SHOW_TIME, vbox); + gaim_button(_("Show _URLs as links"), &convo_options, OPT_CONVO_SEND_LINKS, vbox); #ifdef USE_GTKSPELL - gaim_button(_("_Highlight misspelled words"), &convo_options_new, OPT_CONVO_CHECK_SPELLING, vbox); + gaim_button(_("_Highlight misspelled words"), &convo_options, OPT_CONVO_CHECK_SPELLING, vbox); #endif vbox = make_frame (ret, _("Ignore")); - gaim_button(_("Ignore c_olors"), &convo_options_new, OPT_CONVO_IGNORE_COLOUR, vbox); - gaim_button(_("Ignore font _faces"), &convo_options_new, OPT_CONVO_IGNORE_FONTS, vbox); - gaim_button(_("Ignore font si_zes"), &convo_options_new, OPT_CONVO_IGNORE_SIZES, vbox); -/* gaim_button(_("Ignore Ti_K Automated Messages"), &away_options_new, OPT_AWAY_TIK_HACK, vbox); */ + gaim_button(_("Ignore c_olors"), &convo_options, OPT_CONVO_IGNORE_COLOUR, vbox); + gaim_button(_("Ignore font _faces"), &convo_options, OPT_CONVO_IGNORE_FONTS, vbox); + gaim_button(_("Ignore font si_zes"), &convo_options, OPT_CONVO_IGNORE_SIZES, vbox); +/* gaim_button(_("Ignore Ti_K Automated Messages"), &away_options, OPT_AWAY_TIK_HACK, vbox); */ gtk_widget_show_all(ret); return ret; @@ -383,16 +289,16 @@ gtk_container_set_border_width (GTK_CONTAINER (ret), 12); vbox = make_frame(ret, _("Send Message")); - gaim_button(_("_Enter sends message"), &convo_options_new, OPT_CONVO_ENTER_SENDS, vbox); - gaim_button(_("C_ontrol-Enter sends message"), &convo_options_new, OPT_CONVO_CTL_ENTER, vbox); + gaim_button(_("_Enter sends message"), &convo_options, OPT_CONVO_ENTER_SENDS, vbox); + gaim_button(_("C_ontrol-Enter sends message"), &convo_options, OPT_CONVO_CTL_ENTER, vbox); vbox = make_frame (ret, _("Window Closing")); - gaim_button(_("E_scape closes window"), &convo_options_new, OPT_CONVO_ESC_CAN_CLOSE, vbox); - gaim_button(_("Control-_W closes window"), &convo_options_new, OPT_CONVO_CTL_W_CLOSES, vbox); + gaim_button(_("E_scape closes window"), &convo_options, OPT_CONVO_ESC_CAN_CLOSE, vbox); + gaim_button(_("Control-_W closes window"), &convo_options, OPT_CONVO_CTL_W_CLOSES, vbox); vbox = make_frame(ret, "Insertions"); - gaim_button(_("Control-{B/I/U/S} inserts _HTML tags"), &convo_options_new, OPT_CONVO_CTL_CHARS, vbox); - gaim_button(_("Control-(number) inserts _smileys"), &convo_options_new, OPT_CONVO_CTL_SMILEYS, vbox); + gaim_button(_("Control-{B/I/U/S} inserts _HTML tags"), &convo_options, OPT_CONVO_CTL_CHARS, vbox); + gaim_button(_("Control-(number) inserts _smileys"), &convo_options, OPT_CONVO_CTL_SMILEYS, vbox); gtk_widget_show_all(ret); return ret; @@ -405,22 +311,22 @@ gtk_container_set_border_width (GTK_CONTAINER (ret), 12); vbox = make_frame (ret, _("Buttons")); - gaim_button(_("_Hide IM/Info/Chat buttons"), &blist_options_new, OPT_BLIST_NO_BUTTONS, vbox); - gaim_button(_("Show _pictures on buttons"), &blist_options_new, OPT_BLIST_SHOW_BUTTON_XPM, vbox); + gaim_button(_("_Hide IM/Info/Chat buttons"), &blist_options, OPT_BLIST_NO_BUTTONS, vbox); + gaim_button(_("Show _pictures on buttons"), &blist_options, OPT_BLIST_SHOW_BUTTON_XPM, vbox); vbox = make_frame (ret, _("Buddy List Window")); - gaim_button(_("_Save Window Size/Position"), &blist_options_new, OPT_BLIST_SAVED_WINDOWS, vbox); - gaim_button(_("_Raise Window on Events"), &blist_options_new, OPT_BLIST_POPUP, vbox); + gaim_button(_("_Save Window Size/Position"), &blist_options, OPT_BLIST_SAVED_WINDOWS, vbox); + gaim_button(_("_Raise Window on Events"), &blist_options, OPT_BLIST_POPUP, vbox); vbox = make_frame (ret, _("Group Display")); - gaim_button(_("Hide _groups with no online buddies"), &blist_options_new, OPT_BLIST_NO_MT_GRP, vbox); - gaim_button(_("Show _numbers in groups"), &blist_options_new, OPT_BLIST_SHOW_GRPNUM, vbox); + gaim_button(_("Hide _groups with no online buddies"), &blist_options, OPT_BLIST_NO_MT_GRP, vbox); + gaim_button(_("Show _numbers in groups"), &blist_options, OPT_BLIST_SHOW_GRPNUM, vbox); vbox = make_frame (ret, _("Buddy Display")); - gaim_button(_("Show buddy type _icons"), &blist_options_new, OPT_BLIST_SHOW_PIXMAPS, vbox); - gaim_button(_("Show _warning levels"), &blist_options_new, OPT_BLIST_SHOW_WARN, vbox); - gaim_button(_("Show idle _times"), &blist_options_new, OPT_BLIST_SHOW_IDLETIME, vbox); - gaim_button(_("Grey i_dle buddies"), &blist_options_new, OPT_BLIST_GREY_IDLERS, vbox); + gaim_button(_("Show buddy type _icons"), &blist_options, OPT_BLIST_SHOW_PIXMAPS, vbox); + gaim_button(_("Show _warning levels"), &blist_options, OPT_BLIST_SHOW_WARN, vbox); + gaim_button(_("Show idle _times"), &blist_options, OPT_BLIST_SHOW_IDLETIME, vbox); + gaim_button(_("Grey i_dle buddies"), &blist_options, OPT_BLIST_GREY_IDLERS, vbox); gtk_widget_show_all(ret); return ret; @@ -438,31 +344,31 @@ sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); vbox = make_frame (ret, _("Window")); - widge = gaim_dropdown(vbox, "Show _buttons as:", &im_options_new, OPT_IM_BUTTON_TEXT | OPT_IM_BUTTON_XPM, + widge = gaim_dropdown(vbox, "Show _buttons as:", &im_options, OPT_IM_BUTTON_TEXT | OPT_IM_BUTTON_XPM, "Pictures", OPT_IM_BUTTON_XPM, "Text", OPT_IM_BUTTON_TEXT, "Pictures and text", OPT_IM_BUTTON_XPM | OPT_IM_BUTTON_TEXT, NULL); gtk_size_group_add_widget(sg, widge); gtk_misc_set_alignment(GTK_MISC(widge), 0, 0); - gaim_labeled_spin_button(vbox, _("New window _width:"), &conv_size_new.width, 25, 9999, sg); - gaim_labeled_spin_button(vbox, _("New window _height:"), &conv_size_new.height, 25, 9999, sg); - gaim_labeled_spin_button(vbox, _("_Entry widget height:"), &conv_size_new.entry_height, 25, 9999, sg); - gaim_button(_("_Raise windows on events"), &im_options_new, OPT_IM_POPUP, vbox); - gaim_button(_("Hide window on _send"), &im_options_new, OPT_IM_POPDOWN, vbox); + gaim_labeled_spin_button(vbox, _("New window _width:"), &conv_size.width, 25, 9999, sg); + gaim_labeled_spin_button(vbox, _("New window _height:"), &conv_size.height, 25, 9999, sg); + gaim_labeled_spin_button(vbox, _("_Entry widget height:"), &conv_size.entry_height, 25, 9999, sg); + gaim_button(_("_Raise windows on events"), &im_options, OPT_IM_POPUP, vbox); + gaim_button(_("Hide window on _send"), &im_options, OPT_IM_POPDOWN, vbox); gtk_widget_show (vbox); vbox = make_frame (ret, _("Buddy Icons")); - gaim_button(_("Hide Buddy _Icons"), &im_options_new, OPT_IM_HIDE_ICONS, vbox); - gaim_button(_("Disable Buddy Icon A_nimation"), &im_options_new, OPT_IM_NO_ANIMATION, vbox); + gaim_button(_("Hide Buddy _Icons"), &im_options, OPT_IM_HIDE_ICONS, vbox); + gaim_button(_("Disable Buddy Icon A_nimation"), &im_options, OPT_IM_NO_ANIMATION, vbox); vbox = make_frame (ret, _("Display")); - gaim_button(_("Show _logins in window"), &im_options_new, OPT_IM_LOGON, vbox); + gaim_button(_("Show _logins in window"), &im_options, OPT_IM_LOGON, vbox); vbox = make_frame (ret, _("Typing Notification")); - typingbutton = gaim_button(_("Notify buddies that you are _typing to them"), &misc_options_new, + typingbutton = gaim_button(_("Notify buddies that you are _typing to them"), &misc_options, OPT_MISC_STEALTH_TYPING, vbox); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON(typingbutton), !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(typingbutton))); - misc_options_new ^= OPT_MISC_STEALTH_TYPING; + misc_options ^= OPT_MISC_STEALTH_TYPING; gtk_widget_show_all(ret); return ret; @@ -480,24 +386,24 @@ sg = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); vbox = make_frame (ret, _("Window")); - dd = gaim_dropdown(vbox, "Show _buttons as:", &chat_options_new, OPT_CHAT_BUTTON_TEXT | OPT_CHAT_BUTTON_XPM, + dd = gaim_dropdown(vbox, "Show _buttons as:", &chat_options, OPT_CHAT_BUTTON_TEXT | OPT_CHAT_BUTTON_XPM, "Pictures", OPT_CHAT_BUTTON_XPM, "Text", OPT_CHAT_BUTTON_TEXT, "Pictures and Text", OPT_CHAT_BUTTON_XPM | OPT_CHAT_BUTTON_TEXT, NULL); gtk_size_group_add_widget(sg, dd); gtk_misc_set_alignment(GTK_MISC(dd), 0, 0); - gaim_labeled_spin_button(vbox, _("New window _width:"), &buddy_chat_size_new.width, 25, 9999, sg); - gaim_labeled_spin_button(vbox, _("New window _height:"), &buddy_chat_size_new.height, 25, 9999, sg); - gaim_labeled_spin_button(vbox, _("_Entry widget height:"), &buddy_chat_size_new.entry_height, 25, 9999, sg); - gaim_button(_("_Raise windows on events"), &chat_options_new, OPT_CHAT_POPUP, vbox); + gaim_labeled_spin_button(vbox, _("New window _width:"), &buddy_chat_size.width, 25, 9999, sg); + gaim_labeled_spin_button(vbox, _("New window _height:"), &buddy_chat_size.height, 25, 9999, sg); + gaim_labeled_spin_button(vbox, _("_Entry widget height:"), &buddy_chat_size.entry_height, 25, 9999, sg); + gaim_button(_("_Raise windows on events"), &chat_options, OPT_CHAT_POPUP, vbox); vbox = make_frame (ret, _("Tab Completion")); - gaim_button(_("_Tab-Complete Nicks"), &chat_options_new, OPT_CHAT_TAB_COMPLETE, vbox); - gaim_button(_("_Old-Style Tab Completion"), &chat_options_new, OPT_CHAT_OLD_STYLE_TAB, vbox); + gaim_button(_("_Tab-Complete Nicks"), &chat_options, OPT_CHAT_TAB_COMPLETE, vbox); + gaim_button(_("_Old-Style Tab Completion"), &chat_options, OPT_CHAT_OLD_STYLE_TAB, vbox); vbox = make_frame (ret, _("Display")); - gaim_button(_("_Show people joining/leaving in window"), &chat_options_new, OPT_CHAT_LOGON, vbox); - gaim_button(_("Co_lorize screennames"), &chat_options_new, OPT_CHAT_COLORIZE, vbox); + gaim_button(_("_Show people joining/leaving in window"), &chat_options, OPT_CHAT_LOGON, vbox); + gaim_button(_("Co_lorize screennames"), &chat_options, OPT_CHAT_COLORIZE, vbox); gtk_widget_show_all(ret); return ret; @@ -514,30 +420,30 @@ sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); vbox = make_frame (ret, _("IM Tabs")); - dd = gaim_dropdown(vbox, "Tab _Placement:", &im_options_new, OPT_IM_SIDE_TAB | OPT_IM_BR_TAB, + dd = gaim_dropdown(vbox, "Tab _Placement:", &im_options, OPT_IM_SIDE_TAB | OPT_IM_BR_TAB, "Top", 0, "Bottom", OPT_IM_BR_TAB, "Left", OPT_IM_SIDE_TAB, "Right", OPT_IM_BR_TAB | OPT_IM_SIDE_TAB, NULL); gtk_size_group_add_widget(sg, dd); - gaim_button(_("Show all _Instant Messages in one tabbed\nwindow"), &im_options_new, OPT_IM_ONE_WINDOW, vbox); - gaim_button(_("Show a_liases in tabs/titles"), &im_options_new, OPT_IM_ALIAS_TAB, vbox); + gaim_button(_("Show all _Instant Messages in one tabbed\nwindow"), &im_options, OPT_IM_ONE_WINDOW, vbox); + gaim_button(_("Show a_liases in tabs/titles"), &im_options, OPT_IM_ALIAS_TAB, vbox); vbox = make_frame (ret, _("Chat Tabs")); - dd = gaim_dropdown(vbox, "Tab _Placement:", &chat_options_new, OPT_CHAT_SIDE_TAB | OPT_CHAT_BR_TAB, + dd = gaim_dropdown(vbox, "Tab _Placement:", &chat_options, OPT_CHAT_SIDE_TAB | OPT_CHAT_BR_TAB, "Top", 0, "Bottom", OPT_CHAT_BR_TAB, "Left", OPT_CHAT_SIDE_TAB, "Right", OPT_CHAT_SIDE_TAB | OPT_CHAT_BR_TAB, NULL); gtk_size_group_add_widget(sg, dd); - gaim_button(_("Show all c_hats in one tabbed window"), &chat_options_new, OPT_CHAT_ONE_WINDOW, + gaim_button(_("Show all c_hats in one tabbed window"), &chat_options, OPT_CHAT_ONE_WINDOW, vbox); vbox = make_frame (ret, _("Combined Tabs")); - gaim_button(_("Show IMs and chats in _same tabbed\nwindow."), &convo_options_new, OPT_CONVO_COMBINE, vbox); + gaim_button(_("Show IMs and chats in _same tabbed\nwindow."), &convo_options, OPT_CONVO_COMBINE, vbox); vbox = make_frame (ret, _("Buddy List Tabs")); - dd = gaim_dropdown(vbox, "Tab _Placement:", &blist_options_new, OPT_BLIST_BOTTOM_TAB, + dd = gaim_dropdown(vbox, "Tab _Placement:", &blist_options, OPT_BLIST_BOTTOM_TAB, "Top", 0, "Bottom", OPT_BLIST_BOTTOM_TAB, NULL); gtk_size_group_add_widget(sg, dd); @@ -558,7 +464,7 @@ gtk_container_set_border_width (GTK_CONTAINER (ret), 12); vbox = make_frame (ret, _("Proxy Type")); - gaim_dropdown(vbox, "Proxy _Type:", &proxytype_new, -1, + gaim_dropdown(vbox, "Proxy _Type:", &proxytype, -1, "No Proxy", PROXY_NONE, "SOCKS 4", PROXY_SOCKS4, "SOCKS 5", PROXY_SOCKS5, @@ -643,7 +549,7 @@ } static void browser_print_option(GtkEntry *entry, void *nullish) { - g_snprintf(web_command_new, sizeof(web_command_new), "%s", gtk_entry_get_text(entry)); + g_snprintf(web_command, sizeof(web_command), "%s", gtk_entry_get_text(entry)); } GtkWidget *browser_page() { @@ -659,7 +565,7 @@ #ifndef _WIN32 /* Registered default browser is used by Windows */ vbox = make_frame (ret, _("Browser Selection")); - label = gaim_dropdown(vbox, "_Browser", &web_browser_new, -1, + label = gaim_dropdown(vbox, "_Browser", &web_browser, -1, "Netscape", BROWSER_NETSCAPE, "Konqueror", BROWSER_KONQ, "Mozilla", BROWSER_MOZILLA, @@ -679,16 +585,16 @@ gtk_size_group_add_widget(sg, label); browser_entry = gtk_entry_new(); gtk_label_set_mnemonic_widget(GTK_LABEL(label), browser_entry); - if (web_browser_new != BROWSER_MANUAL) + if (web_browser != BROWSER_MANUAL) gtk_widget_set_sensitive(browser_entry, FALSE); gtk_box_pack_start (GTK_BOX (hbox), browser_entry, FALSE, FALSE, 0); - gtk_entry_set_text(GTK_ENTRY(browser_entry), web_command_new); + gtk_entry_set_text(GTK_ENTRY(browser_entry), web_command); gtk_signal_connect(GTK_OBJECT(browser_entry), "changed", GTK_SIGNAL_FUNC(browser_print_option), NULL); #endif /* end !_WIN32 */ vbox = make_frame (ret, _("Browser Options")); - label = gaim_button(_("Open new _window by default"), &misc_options_new, OPT_MISC_BROWSER_POPUP, vbox); + label = gaim_button(_("Open new _window by default"), &misc_options, OPT_MISC_BROWSER_POPUP, vbox); #ifdef _WIN32 /* Until I figure out how to implement this on windows */ gtk_widget_set_sensitive(label, FALSE); @@ -704,19 +610,19 @@ gtk_container_set_border_width (GTK_CONTAINER (ret), 12); vbox = make_frame (ret, _("Message Logs")); - gaim_button(_("_Log all Instant Messages"), &logging_options_new, OPT_LOG_CONVOS, vbox); - gaim_button(_("Log all c_hats"), &logging_options_new, OPT_LOG_CHATS, vbox); - gaim_button(_("Strip _HTML from logs"), &logging_options_new, OPT_LOG_STRIP_HTML, vbox); + gaim_button(_("_Log all Instant Messages"), &logging_options, OPT_LOG_CONVOS, vbox); + gaim_button(_("Log all c_hats"), &logging_options, OPT_LOG_CHATS, vbox); + gaim_button(_("Strip _HTML from logs"), &logging_options, OPT_LOG_STRIP_HTML, vbox); vbox = make_frame (ret, _("System Logs")); - gaim_button(_("Log when buddies _sign on/sign off"), &logging_options_new, OPT_LOG_BUDDY_SIGNON, + gaim_button(_("Log when buddies _sign on/sign off"), &logging_options, OPT_LOG_BUDDY_SIGNON, vbox); - gaim_button(_("Log when buddies become _idle/un-idle"), &logging_options_new, OPT_LOG_BUDDY_IDLE, + gaim_button(_("Log when buddies become _idle/un-idle"), &logging_options, OPT_LOG_BUDDY_IDLE, vbox); - gaim_button(_("Log when buddies go away/come _back"), &logging_options_new, OPT_LOG_BUDDY_AWAY, vbox); - gaim_button(_("Log your _own signons/idleness/awayness"), &logging_options_new, OPT_LOG_MY_SIGNON, + gaim_button(_("Log when buddies go away/come _back"), &logging_options, OPT_LOG_BUDDY_AWAY, vbox); + gaim_button(_("Log your _own signons/idleness/awayness"), &logging_options, OPT_LOG_MY_SIGNON, vbox); - gaim_button(_("I_ndividual log file for each buddy's signons"), &logging_options_new, + gaim_button(_("I_ndividual log file for each buddy's signons"), &logging_options, OPT_LOG_INDIVIDUAL, vbox); gtk_widget_show_all(ret); @@ -727,7 +633,7 @@ static gint sound_cmd_yeah(GtkEntry *entry, GdkEvent *event, gpointer d) { - g_snprintf(sound_cmd_new, sizeof(sound_cmd_new), "%s", gtk_entry_get_text(GTK_ENTRY(sndcmd))); + g_snprintf(sound_cmd, sizeof(sound_cmd), "%s", gtk_entry_get_text(GTK_ENTRY(sndcmd))); return TRUE; } @@ -744,12 +650,12 @@ sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); vbox = make_frame (ret, _("Sound Options")); - gaim_button(_("_No sounds when you log in"), &sound_options_new, OPT_SOUND_SILENT_SIGNON, vbox); - gaim_button(_("_Sounds while away"), &sound_options_new, OPT_SOUND_WHEN_AWAY, vbox); + gaim_button(_("_No sounds when you log in"), &sound_options, OPT_SOUND_SILENT_SIGNON, vbox); + gaim_button(_("_Sounds while away"), &sound_options, OPT_SOUND_WHEN_AWAY, vbox); #ifndef _WIN32 vbox = make_frame (ret, _("Sound Method")); - dd = gaim_dropdown(vbox, "_Method", &sound_options_new, OPT_SOUND_BEEP | + dd = gaim_dropdown(vbox, "_Method", &sound_options, OPT_SOUND_BEEP | OPT_SOUND_ESD | OPT_SOUND_ARTSC | OPT_SOUND_NAS | OPT_SOUND_NORMAL | OPT_SOUND_CMD, "Console Beep", OPT_SOUND_BEEP, @@ -784,7 +690,7 @@ gtk_entry_set_text(GTK_ENTRY(sndcmd), sound_cmd); gtk_widget_set_size_request(sndcmd, 75, -1); - gtk_widget_set_sensitive(sndcmd, (sound_options_new & OPT_SOUND_CMD)); + gtk_widget_set_sensitive(sndcmd, (sound_options & OPT_SOUND_CMD)); gtk_box_pack_start(GTK_BOX(hbox), sndcmd, TRUE, TRUE, 5); gtk_signal_connect(GTK_OBJECT(sndcmd), "focus_out_event", GTK_SIGNAL_FUNC(sound_cmd_yeah), NULL); #endif /* _WIN32 */ @@ -808,24 +714,24 @@ sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); vbox = make_frame (ret, _("Away")); - gaim_button(_("_Sending messages removes away status"), &away_options_new, OPT_AWAY_BACK_ON_IM, vbox); - gaim_button(_("_Queue new messages when away"), &away_options_new, OPT_AWAY_QUEUE, vbox); - gaim_button(_("_Ignore new conversations when away"), &away_options_new, OPT_AWAY_DISCARD, vbox); + gaim_button(_("_Sending messages removes away status"), &away_options, OPT_AWAY_BACK_ON_IM, vbox); + gaim_button(_("_Queue new messages when away"), &away_options, OPT_AWAY_QUEUE, vbox); + gaim_button(_("_Ignore new conversations when away"), &away_options, OPT_AWAY_DISCARD, vbox); vbox = make_frame (ret, _("Auto-response")); hbox = gtk_hbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(vbox), hbox); gaim_labeled_spin_button(hbox, _("Seconds before _resending:"), - &away_resend_new, 1, 24 * 60 * 60, sg); - gaim_button(_("_Don't send auto-response"), &away_options_new, OPT_AWAY_NO_AUTO_RESP, vbox); - gaim_button(_("_Only send auto-response when idle"), &away_options_new, OPT_AWAY_IDLE_RESP, vbox); - gaim_button(_("Do_n't send auto-response in active conversations"), &away_options_new, OPT_AWAY_DELAY_IN_USE, vbox); + &away_resend, 1, 24 * 60 * 60, sg); + gaim_button(_("_Don't send auto-response"), &away_options, OPT_AWAY_NO_AUTO_RESP, vbox); + gaim_button(_("_Only send auto-response when idle"), &away_options, OPT_AWAY_IDLE_RESP, vbox); + gaim_button(_("Do_n't send auto-response in active conversations"), &away_options, OPT_AWAY_DELAY_IN_USE, vbox); - if (away_options_new & OPT_AWAY_NO_AUTO_RESP) + if (away_options & OPT_AWAY_NO_AUTO_RESP) gtk_widget_set_sensitive(hbox, FALSE); vbox = make_frame (ret, _("Idle")); - dd = gaim_dropdown(vbox, "Idle _Time Reporting:", &report_idle_new, -1, + dd = gaim_dropdown(vbox, "Idle _Time Reporting:", &report_idle, -1, "None", IDLE_NONE, "Gaim Usage", IDLE_GAIM, #ifdef USE_SCREENSAVER @@ -836,9 +742,9 @@ gtk_misc_set_alignment(GTK_MISC(dd), 0, 0); vbox = make_frame (ret, _("Auto-away")); - button = gaim_button(_("Set away _when idle"), &away_options_new, OPT_AWAY_AUTO, vbox); - select = gaim_labeled_spin_button(vbox, "_Minutes before setting away:", &auto_away_new, 1, 24 * 60, sg); - if (!(away_options_new & OPT_AWAY_AUTO)) + button = gaim_button(_("Set away _when idle"), &away_options, OPT_AWAY_AUTO, vbox); + select = gaim_labeled_spin_button(vbox, "_Minutes before setting away:", &auto_away, 1, 24 * 60, sg); + if (!(away_options & OPT_AWAY_AUTO)) gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(toggle_sensitive), select); @@ -850,7 +756,7 @@ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); prefs_away_menu = gtk_option_menu_new(); gtk_label_set_mnemonic_widget(GTK_LABEL(label), prefs_away_menu); - if (!(away_options_new & OPT_AWAY_AUTO)) + if (!(away_options & OPT_AWAY_AUTO)) gtk_widget_set_sensitive(GTK_WIDGET(prefs_away_menu), FALSE); gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(toggle_sensitive), prefs_away_menu); default_away_menu_init(prefs_away_menu); @@ -1103,8 +1009,8 @@ gtk_tree_model_get_iter (model, &iter, path); gtk_tree_model_get (model, &iter, 2, &soundnum, -1); - sound_options_new ^= sounds[soundnum].opt; - gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, sound_options_new & sounds[soundnum].opt, -1); + sound_options ^= sounds[soundnum].opt; + gtk_list_store_set (GTK_LIST_STORE (model), &iter, 0, sound_options & sounds[soundnum].opt, -1); gtk_tree_path_free(path); } @@ -1112,25 +1018,21 @@ static void test_sound(GtkWidget *button, gpointer i_am_NULL) { guint32 tmp_sound = sound_options; - char *save_me=NULL; if (!(sound_options & OPT_SOUND_WHEN_AWAY)) sound_options ^= OPT_SOUND_WHEN_AWAY; if (!(sound_options & sounds[sound_row_sel].opt)) sound_options ^= sounds[sound_row_sel].opt; - save_me = sound_file[sound_row_sel]; - sound_file[sound_row_sel] = sound_file_new[sound_row_sel]; play_sound(sound_row_sel); - sound_file[sound_row_sel] = save_me; sound_options = tmp_sound; } static void reset_sound(GtkWidget *button, gpointer i_am_also_NULL) { /* This just resets a sound file back to default */ - if (sound_file_new[sound_row_sel]) { - g_free(sound_file_new[sound_row_sel]); - sound_file_new[sound_row_sel] = NULL; + if (sound_file[sound_row_sel]) { + g_free(sound_file[sound_row_sel]); + sound_file[sound_row_sel] = NULL; } gtk_entry_set_text(GTK_ENTRY(sound_entry), "(default)"); @@ -1162,21 +1064,21 @@ return; /* Let's just be safe */ - if (sound_file_new[snd]) - g_free(sound_file_new[snd]); + if (sound_file[snd]) + g_free(sound_file[snd]); /* Set it -- and forget it */ - sound_file_new[snd] = g_strdup(file); + sound_file[snd] = g_strdup(file); /* Set our text entry */ - gtk_entry_set_text(GTK_ENTRY(sound_entry), sound_file_new[snd]); + gtk_entry_set_text(GTK_ENTRY(sound_entry), sound_file[snd]); /* Close the window! It's getting cold in here! */ close_sounddialog(NULL, sounddialog); if (last_sound_dir) g_free(last_sound_dir); - last_sound_dir = g_dirname(sound_file_new[snd]); + last_sound_dir = g_dirname(sound_file[snd]); } static void sel_sound(GtkWidget *button, gpointer being_NULL_is_fun) @@ -1217,7 +1119,7 @@ gtk_tree_model_get_value (model, &iter, 2, &val); sound_row_sel = g_value_get_uint(&val); if (sound_entry) - gtk_entry_set_text(GTK_ENTRY(sound_entry), sound_file_new[sound_row_sel] ? sound_file_new[sound_row_sel] : "(default)"); + gtk_entry_set_text(GTK_ENTRY(sound_entry), sound_file[sound_row_sel] ? sound_file[sound_row_sel] : "(default)"); g_value_unset (&val); if (sounddialog) gtk_widget_destroy(sounddialog); @@ -1289,7 +1191,7 @@ hbox = gtk_hbox_new(FALSE, 6); gtk_box_pack_start(GTK_BOX(ret), hbox, FALSE, FALSE, 0); sound_entry = gtk_entry_new(); - gtk_entry_set_text(GTK_ENTRY(sound_entry), sound_file_new[0] ? sound_file_new[0] : "(default)"); + gtk_entry_set_text(GTK_ENTRY(sound_entry), sound_file[0] ? sound_file[0] : "(default)"); gtk_entry_set_editable(GTK_ENTRY(sound_entry), FALSE); gtk_box_pack_start(GTK_BOX(hbox), sound_entry, FALSE, FALSE, 5); @@ -1512,8 +1414,6 @@ GtkWidget *button; GtkSizeGroup *sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); - int r; - if (prefs) { gtk_window_present(GTK_WINDOW(prefs)); return; @@ -1521,34 +1421,8 @@ /* copy the preferences to tmp values... * I liked "take affect immediately" Oh well :-( */ - misc_options_new = misc_options; - logging_options_new = logging_options; - blist_options_new = blist_options; - convo_options_new = convo_options; - im_options_new = im_options; - chat_options_new = chat_options; - font_options_new = font_options; - sound_options_new = sound_options; - for (r = 0; r < NUM_SOUNDS; r++) - sound_file_new[r] = g_strdup(sound_file[r]); - away_options_new = away_options; - away_resend_new = away_resend; - report_idle_new = report_idle; - auto_away_new = auto_away; - default_away_new = default_away; - fontsize_new = fontsize; - web_browser_new = web_browser; - proxytype_new = proxytype; -#ifndef _WIN32 - g_snprintf(sound_cmd_new, sizeof(sound_cmd_new), "%s", sound_cmd); -#endif - g_snprintf(web_command_new, sizeof(web_command_new), "%s", - web_command ? web_command : "xterm -e lynx %%s"); - g_snprintf(fontface_new, sizeof(fontface_new), fontface); - memcpy(&conv_size_new, &conv_size, sizeof(struct window_size)); - memcpy(&buddy_chat_size_new, &buddy_chat_size, sizeof(struct window_size)); - memcpy(&fgcolor_new, &fgcolor, sizeof(GdkColor)); - memcpy(&bgcolor_new, &bgcolor, sizeof(GdkColor)); + + /* Back to instant-apply! I win! BU-HAHAHA! */ /* Create the window */ prefs = gtk_window_new(GTK_WINDOW_TOPLEVEL); @@ -1629,31 +1503,18 @@ gtk_widget_show(sep); gtk_box_pack_start (GTK_BOX (vbox), sep, FALSE, FALSE, 0); - /* The buttons to press! */ + /* The buttons^H to press! */ hbox = gtk_hbox_new (FALSE, 6); gtk_container_set_border_width (GTK_CONTAINER (hbox), 6); gtk_container_add (GTK_CONTAINER(vbox), hbox); gtk_widget_show (hbox); - button = gtk_button_new_from_stock (GTK_STOCK_OK); - gtk_size_group_add_widget(sg, button); - gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(ok_cb), prefs); - gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); - gtk_widget_show(button); - - button = gtk_button_new_from_stock (GTK_STOCK_CANCEL); + button = gtk_button_new_from_stock (GTK_STOCK_CLOSE); gtk_size_group_add_widget(sg, button); gtk_signal_connect_object(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(gtk_widget_destroy), prefs); gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); gtk_widget_show(button); - button = gtk_button_new_from_stock (GTK_STOCK_APPLY); - gtk_size_group_add_widget(sg, button); - gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(apply_cb), prefs); - gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); - gtk_widget_show(button); - - prefs_notebook_init(); gtk_tree_view_expand_all (GTK_TREE_VIEW(tree_v)); @@ -1665,7 +1526,7 @@ if (debugbutton) gtk_button_clicked(GTK_BUTTON(debugbutton)); if (misc_options & OPT_MISC_DEBUG) { - misc_options_new ^= OPT_MISC_DEBUG; + misc_options ^= OPT_MISC_DEBUG; misc_options ^= OPT_MISC_DEBUG; save_prefs(); } @@ -1745,11 +1606,6 @@ g_free(s); } - - - - - void set_option(GtkWidget *w, int *option) { *option = !(*option); @@ -1757,155 +1613,123 @@ static void set_misc_option(GtkWidget *w, int option) { - misc_options_new ^= option; - - /* gross hack because we don't want to save all prefs just because - * we enabled the debug window. then again, what about the debug - * window _isn't_ an ugly hack? */ + misc_options ^= option; - if (option == OPT_MISC_DEBUG) { - misc_options ^= option; - save_prefs(); + if (option == OPT_MISC_DEBUG) show_debug(); - } + + save_prefs(); } - -/* Functions for each _options variable that sees what's changed, and makes - * effective those changes that take place immediately (UI stuff) */ -static void set_misc_options() +static void set_logging_option(GtkWidget *w, int option) { + logging_options ^= option; -/* int option = misc_options ^ misc_options_new; */ - misc_options = misc_options_new; + if (option == OPT_LOG_CONVOS || option == OPT_LOG_CHATS) + update_log_convs(); + save_prefs(); } -static void set_logging_options() +static void set_blist_option(GtkWidget *w, int option) { - int option = logging_options ^ logging_options_new; - logging_options = logging_options_new; + blist_options ^= option; - if (option & OPT_LOG_CONVOS || option & OPT_LOG_CHATS) - update_log_convs(); - -} - -static void set_blist_options() -{ - int option = blist_options ^ blist_options_new; - blist_options = blist_options_new; + save_prefs(); if (!blist) return; - if (option & OPT_BLIST_BOTTOM_TAB) - set_blist_tab(); - - if (option & OPT_BLIST_NO_BUTTONS) + if (option == OPT_BLIST_NO_BUTTONS) build_imchat_box(!(blist_options & OPT_BLIST_NO_BUTTONS)); - if (option & OPT_BLIST_SHOW_GRPNUM) + if (option == OPT_BLIST_SHOW_GRPNUM) update_num_groups(); - if (option & OPT_BLIST_NO_MT_GRP) + if (option == OPT_BLIST_NO_MT_GRP) toggle_show_empty_groups(); - if ((option & OPT_BLIST_SHOW_BUTTON_XPM) || (option & OPT_BLIST_NO_BUTTONS)) + if ((option == OPT_BLIST_SHOW_BUTTON_XPM) || (option == OPT_BLIST_NO_BUTTONS)) update_button_pix(); - if (option & OPT_BLIST_SHOW_PIXMAPS) + if (option == OPT_BLIST_SHOW_PIXMAPS) toggle_buddy_pixmaps(); - if ((option & OPT_BLIST_GREY_IDLERS) || (option & OPT_BLIST_SHOW_IDLETIME)) + if ((option == OPT_BLIST_GREY_IDLERS) || (option == OPT_BLIST_SHOW_IDLETIME)) update_idle_times(); } -static void set_convo_options() +static void set_convo_option(GtkWidget *w, int option) { - int option = convo_options ^ convo_options_new; - convo_options = convo_options_new; + convo_options ^= option; - if (option & OPT_CONVO_SHOW_SMILEY) + if (option == OPT_CONVO_SHOW_SMILEY) toggle_smileys(); - if (option & OPT_CONVO_SHOW_TIME) + if (option == OPT_CONVO_SHOW_TIME) toggle_timestamps(); - if (option & OPT_CONVO_CHECK_SPELLING) + if (option == OPT_CONVO_CHECK_SPELLING) toggle_spellchk(); - if (option & OPT_CONVO_COMBINE) { - /* (OPT_IM_SIDE_TAB | OPT_IM_BR_TAB) == (OPT_CHAT_SIDE_TAB | OPT_CHAT_BR_TAB) */ + save_prefs(); +} + +static void set_im_option(GtkWidget *w, int option) +{ + im_options ^= option; + if (option == OPT_IM_ONE_WINDOW) + im_tabize(); + + if (option == OPT_IM_HIDE_ICONS) + set_hide_icons(); + + if (option == OPT_IM_ALIAS_TAB) { + set_convo_titles(); } -} - -static void set_im_options() -{ - int option = im_options ^ im_options_new; - im_options = im_options_new; - - if (option & OPT_IM_ONE_WINDOW) - im_tabize(); - - if (option & OPT_IM_SIDE_TAB || option & OPT_IM_BR_TAB) - update_im_tabs(); - - if (option & OPT_IM_HIDE_ICONS) - set_hide_icons(); - - if (option & OPT_IM_ALIAS_TAB) - set_convo_titles(); - - if (option & OPT_IM_NO_ANIMATION) + if (option == OPT_IM_NO_ANIMATION) set_anim(); - if (option & OPT_IM_BUTTON_TEXT || option & OPT_IM_BUTTON_XPM) - update_im_button_pix(); + save_prefs(); } -static void set_chat_options() +static void set_chat_option(GtkWidget *w, int option) { - int option = chat_options ^ chat_options_new; - chat_options = chat_options_new; + chat_options ^= option; - if (option & OPT_CHAT_ONE_WINDOW) + if (option == OPT_CHAT_ONE_WINDOW) chat_tabize(); - if (option & OPT_CHAT_BUTTON_TEXT || option & OPT_CHAT_BUTTON_XPM) - update_chat_button_pix(); + save_prefs(); } -void set_sound_options() +void set_sound_option(GtkWidget *w, int option) { - /* int option = sound_options ^ sound_options_new; */ - sound_options = sound_options_new; + sound_options ^= option; + save_prefs(); } -static void set_font_options() +static void set_font_option(GtkWidget *w, int option) { - /* int option = font_options ^ font_options_new; */ - font_options = font_options_new; + font_options ^= option; update_font_buttons(); + + save_prefs(); } -static void set_away_options() +static void set_away_option(GtkWidget *w, int option) { - int option = away_options ^ away_options_new; - away_options = away_options_new; + away_options ^= option; - if (option & OPT_AWAY_QUEUE) + if (option == OPT_AWAY_QUEUE) toggle_away_queue(); -} -static void toggle_option(GtkWidget *w, int option) { - int *o = gtk_object_get_user_data(GTK_OBJECT(w)); - *o ^= option; + save_prefs(); } GtkWidget *gaim_button(const char *text, guint *options, int option, GtkWidget *page) @@ -1916,13 +1740,32 @@ gtk_box_pack_start(GTK_BOX(page), button, FALSE, FALSE, 0); gtk_object_set_user_data(GTK_OBJECT(button), options); - /* So that the debug window happens immediately - * I don't think it should be "preferences," anyway. */ - if (options == &misc_options_new && option == OPT_MISC_DEBUG) + if (options == &misc_options) gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_misc_option), (int *)option); - else - gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(toggle_option), + if (options == &logging_options) + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_logging_option), + (int *)option); + if (options == &blist_options) + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_blist_option), + (int *)option); + if (options == &convo_options) + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_convo_option), + (int *)option); + if (options == &im_options) + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_im_option), + (int *)option); + if (options == &chat_options) + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_chat_option), + (int *)option); + if (options == &font_options) + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_font_option), + (int *)option); + if (options == &sound_options) + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_sound_option), + (int *)option); + if (options == &away_options) + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_away_option), (int *)option); gtk_widget_show(button); @@ -1977,13 +1820,13 @@ if ((int)d == 1) { gtk_color_selection_get_current_color(GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG(fgcseld)->colorsel), - &fgcolor_new); + &fgcolor); destroy_colorsel(NULL, (void *)1); update_color(NULL, pref_fg_picture); } else { gtk_color_selection_get_current_color(GTK_COLOR_SELECTION (GTK_COLOR_SELECTION_DIALOG(bgcseld)->colorsel), - &bgcolor_new); + &bgcolor); destroy_colorsel(NULL, (void *)0); update_color(NULL, pref_bg_picture); } @@ -1996,20 +1839,20 @@ c.pixel = 0; if (pic == pref_fg_picture) { - if (font_options_new & OPT_FONT_FGCOL) { - c.red = fgcolor_new.red; - c.blue = fgcolor_new.blue; - c.green = fgcolor_new.green; + if (font_options & OPT_FONT_FGCOL) { + c.red = fgcolor.red; + c.blue = fgcolor.blue; + c.green = fgcolor.green; } else { c.red = 0; c.blue = 0; c.green = 0; } } else { - if (font_options_new & OPT_FONT_BGCOL) { - c.red = bgcolor_new.red; - c.blue = bgcolor_new.blue; - c.green = bgcolor_new.green; + if (font_options & OPT_FONT_BGCOL) { + c.red = bgcolor.red; + c.blue = bgcolor.blue; + c.green = bgcolor.green; } else { c.red = 0xffff; c.blue = 0xffff; @@ -2028,11 +1871,11 @@ int length = g_slist_length(away_messages); if (away_messages == NULL) - default_away_new = NULL; + default_away = NULL; else if ((int)i >= length) - default_away_new = g_slist_nth_data(away_messages, length - 1); + default_away = g_slist_nth_data(away_messages, length - 1); else - default_away_new = g_slist_nth_data(away_messages, (int)i); + default_away = g_slist_nth_data(away_messages, (int)i); } static void update_spin_value(GtkWidget *w, GtkWidget *spin) @@ -2087,21 +1930,33 @@ *option = opt; } - if (option == &proxytype_new) { + if (option == &proxytype) { if (opt == PROXY_NONE) gtk_widget_set_sensitive(prefs_proxy_frame, FALSE); else gtk_widget_set_sensitive(prefs_proxy_frame, TRUE); - } else if (option == &web_browser_new) { + } else if (option == &web_browser) { if (opt == BROWSER_MANUAL) gtk_widget_set_sensitive(browser_entry, TRUE); else gtk_widget_set_sensitive(browser_entry, FALSE); - } else if (*option == sound_options_new) { + } else if (option == (int*)&sound_options) { if (opt == OPT_SOUND_CMD) gtk_widget_set_sensitive(sndcmd, TRUE); else gtk_widget_set_sensitive(sndcmd, FALSE); + } else if (option == (int*)&im_options) { + if (clear == (OPT_IM_SIDE_TAB | OPT_IM_BR_TAB)) + update_im_tabs(); + else if (clear == (OPT_IM_BUTTON_TEXT | OPT_IM_BUTTON_XPM)) + update_im_button_pix(); + } else if (option == (int*)&chat_options) { + if (clear == (OPT_CHAT_SIDE_TAB | OPT_CHAT_BR_TAB)) + update_im_tabs(); + else if (clear == (OPT_CHAT_BUTTON_TEXT | OPT_CHAT_BUTTON_XPM)) + update_im_button_pix(); + } else if (option == (int*)&blist_options) { + set_blist_tab(); } } @@ -2168,20 +2023,20 @@ GtkStyle *style; c.pixel = 0; if (fgc) { - if (font_options_new & OPT_FONT_FGCOL) { - c.red = fgcolor_new.red; - c.blue = fgcolor_new.blue; - c.green = fgcolor_new.green; + if (font_options & OPT_FONT_FGCOL) { + c.red = fgcolor.red; + c.blue = fgcolor.blue; + c.green = fgcolor.green; } else { c.red = 0; c.blue = 0; c.green = 0; } } else { - if (font_options_new & OPT_FONT_BGCOL) { - c.red = bgcolor_new.red; - c.blue = bgcolor_new.blue; - c.green = bgcolor_new.green; + if (font_options & OPT_FONT_BGCOL) { + c.red = bgcolor.red; + c.blue = bgcolor.blue; + c.green = bgcolor.green; } else { c.red = 0xffff; c.blue = 0xffff; @@ -2208,12 +2063,11 @@ fontname = g_strdup(gtk_font_selection_dialog_get_font_name(GTK_FONT_SELECTION_DIALOG(f))); destroy_fontsel(0, 0); - while(fontname[i] && !isdigit(fontname[i]) && i < sizeof(fontface_new)) { - fontface_new[i] = fontname[i]; + while(fontname[i] && !isdigit(fontname[i]) && i < sizeof(fontface)) { + fontface[i] = fontname[i]; i++; } - fontface_new[i] = 0; - debug_printf("fontface_new: %s\n", fontface_new); + fontface[i] = 0; g_free(fontname); }