comparison src/prefs.c @ 1750:d2eca7a46cfd

[gaim-migrate @ 1760] someday maybe she'll come back to me and i'll say WHY DON'T YOU GO FUCK YOURSELF committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Wed, 25 Apr 2001 19:15:50 +0000
parents 9b86520e04ac
children 300dcb2aa120
comparison
equal deleted inserted replaced
1749:5bfc58c20e82 1750:d2eca7a46cfd
60 void set_default_away(GtkWidget *, gpointer); 60 void set_default_away(GtkWidget *, gpointer);
61 61
62 static GtkWidget *sounddialog = NULL; 62 static GtkWidget *sounddialog = NULL;
63 static GtkWidget *prefdialog = NULL; 63 static GtkWidget *prefdialog = NULL;
64 static GtkWidget *debugbutton = NULL; 64 static GtkWidget *debugbutton = NULL;
65 static GtkWidget *tickerbutton = NULL;
66
67 extern GtkWidget *tickerwindow;
68 extern void BuddyTickerShow();
65 69
66 GtkWidget *prefs_away_list = NULL; 70 GtkWidget *prefs_away_list = NULL;
67 GtkWidget *prefs_away_menu = NULL; 71 GtkWidget *prefs_away_menu = NULL;
68 GtkWidget *preftree = NULL; 72 GtkWidget *preftree = NULL;
69 GtkCTreeNode *general_node = NULL; 73 GtkCTreeNode *general_node = NULL;
71 75
72 static void destdeb(GtkWidget *m, gpointer n) 76 static void destdeb(GtkWidget *m, gpointer n)
73 { 77 {
74 gtk_widget_destroy(debugbutton); 78 gtk_widget_destroy(debugbutton);
75 debugbutton = NULL; 79 debugbutton = NULL;
80 }
81
82 static void desttkr(GtkWidget *m, gpointer n)
83 {
84 gtk_widget_destroy(tickerbutton);
85 tickerbutton = NULL;
76 } 86 }
77 87
78 static void set_idle(GtkWidget *w, int *data) 88 static void set_idle(GtkWidget *w, int *data)
79 { 89 {
80 report_idle = (int)data; 90 report_idle = (int)data;
98 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt), TRUE); 108 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt), TRUE);
99 109
100 return opt; 110 return opt;
101 } 111 }
102 112
103 static void general_page()
104 {
105 GtkWidget *parent;
106 GtkWidget *box, *box2;
107 GtkWidget *label;
108 GtkWidget *sep;
109 GtkWidget *idle;
110
111 parent = prefdialog->parent;
112 gtk_widget_destroy(prefdialog);
113
114 prefdialog = gtk_frame_new(_("General Options"));
115 gtk_container_add(GTK_CONTAINER(parent), prefdialog);
116
117 box = gtk_vbox_new(FALSE, 5);
118 gtk_container_set_border_width(GTK_CONTAINER(box), 5);
119 gtk_container_add(GTK_CONTAINER(prefdialog), box);
120 gtk_widget_show(box);
121
122 label = gtk_label_new(_("All options take effect immediately unless otherwise noted."));
123 gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5);
124 gtk_widget_show(label);
125
126 gaim_button(_("Use borderless buttons (requires restart for some buttons)"), &display_options,
127 OPT_DISP_COOL_LOOK, box);
128 gaim_button(_("Show Buddy Ticker after restart"), &display_options, OPT_DISP_SHOW_BUDDYTICKER,
129 box);
130 if (!dw && (general_options & OPT_GEN_DEBUG))
131 general_options = general_options ^ OPT_GEN_DEBUG;
132 debugbutton = gaim_button(_("Show Debug Window"), &general_options, OPT_GEN_DEBUG, box);
133 gtk_signal_connect_object(GTK_OBJECT(debugbutton), "clicked", GTK_SIGNAL_FUNC(show_debug), 0);
134 gtk_signal_connect(GTK_OBJECT(debugbutton), "destroy", GTK_SIGNAL_FUNC(destdeb), 0);
135
136 sep = gtk_hseparator_new();
137 gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 5);
138 gtk_widget_show(sep);
139
140 box2 = gtk_hbox_new(FALSE, 5);
141 gtk_box_pack_start(GTK_BOX(box), box2, FALSE, FALSE, 5);
142 gtk_widget_show(box2);
143
144 label = gtk_label_new(_("Report Idle Times:"));
145 gtk_box_pack_start(GTK_BOX(box2), label, FALSE, FALSE, 5);
146 gtk_widget_show(label);
147 idle = idle_radio(_("None"), IDLE_NONE, box2, NULL);
148 idle = idle_radio(_("GAIM Use"), IDLE_GAIM, box2, idle);
149 #ifdef USE_SCREENSAVER
150 idle = idle_radio(_("X Use"), IDLE_SCREENSAVER, box2, idle);
151 #endif
152
153 gtk_widget_show(prefdialog);
154 }
155
156 static GtkWidget *browser_entry = NULL; 113 static GtkWidget *browser_entry = NULL;
157 static GtkWidget *new_window = NULL; 114 static GtkWidget *new_window = NULL;
158 115
159 static void set_browser(GtkWidget *w, int *data) 116 static void set_browser(GtkWidget *w, int *data)
160 { 117 {
209 { 166 {
210 browser_entry = NULL; 167 browser_entry = NULL;
211 new_window = NULL; 168 new_window = NULL;
212 } 169 }
213 170
214 static void browser_page() 171 static void general_page()
215 { 172 {
216 GtkWidget *parent; 173 GtkWidget *parent;
217 GtkWidget *box; 174 GtkWidget *box;
218 GtkWidget *label; 175 GtkWidget *label;
176 GtkWidget *hbox;
177 GtkWidget *vbox;
178 GtkWidget *frame;
179 GtkWidget *mbox;
180 GtkWidget *sep;
181 GtkWidget *idle;
219 GtkWidget *opt; 182 GtkWidget *opt;
220 183
221 parent = prefdialog->parent; 184 parent = prefdialog->parent;
222 gtk_widget_destroy(prefdialog); 185 gtk_widget_destroy(prefdialog);
223 186
224 prefdialog = gtk_frame_new(_("Browser Options")); 187 prefdialog = gtk_frame_new(_("General Options"));
225 gtk_container_add(GTK_CONTAINER(parent), prefdialog); 188 gtk_container_add(GTK_CONTAINER(parent), prefdialog);
226 189
227 box = gtk_vbox_new(FALSE, 5); 190 box = gtk_vbox_new(FALSE, 5);
228 gtk_container_set_border_width(GTK_CONTAINER(box), 5); 191 gtk_container_set_border_width(GTK_CONTAINER(box), 5);
229 gtk_container_add(GTK_CONTAINER(prefdialog), box); 192 gtk_container_add(GTK_CONTAINER(prefdialog), box);
231 194
232 label = gtk_label_new(_("All options take effect immediately unless otherwise noted.")); 195 label = gtk_label_new(_("All options take effect immediately unless otherwise noted."));
233 gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5); 196 gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5);
234 gtk_widget_show(label); 197 gtk_widget_show(label);
235 198
236 opt = browser_radio(_("Netscape"), BROWSER_NETSCAPE, box, NULL); 199 hbox = gtk_hbox_new(FALSE, 5);
237 opt = browser_radio(_("KFM"), BROWSER_KFM, box, opt); 200 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5);
201 gtk_widget_show(hbox);
202
203 vbox = gtk_vbox_new(TRUE, 5);
204 gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5);
205 gtk_widget_show(vbox);
206
207 frame = gtk_frame_new(_("Miscellaneous"));
208 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 5);
209 gtk_widget_show(frame);
210
211 mbox = gtk_vbox_new(TRUE, 5);
212 gtk_container_add(GTK_CONTAINER(frame), mbox);
213 gtk_widget_show(mbox);
214
215 gaim_button(_("Use borderless buttons"), &display_options,
216 OPT_DISP_COOL_LOOK, mbox);
217
218 if (!tickerwindow && (display_options & OPT_DISP_SHOW_BUDDYTICKER))
219 display_options = display_options ^ OPT_DISP_SHOW_BUDDYTICKER;
220 tickerbutton = gaim_button(_("Show Buddy Ticker"), &display_options, OPT_DISP_SHOW_BUDDYTICKER, mbox);
221 gtk_signal_connect_object(GTK_OBJECT(tickerbutton), "clicked", GTK_SIGNAL_FUNC(BuddyTickerShow), 0);
222 gtk_signal_connect(GTK_OBJECT(tickerbutton), "destroy", GTK_SIGNAL_FUNC(desttkr), 0);
223
224 if (!dw && (general_options & OPT_GEN_DEBUG))
225 general_options = general_options ^ OPT_GEN_DEBUG;
226 debugbutton = gaim_button(_("Show Debug Window"), &general_options, OPT_GEN_DEBUG, mbox);
227 gtk_signal_connect_object(GTK_OBJECT(debugbutton), "clicked", GTK_SIGNAL_FUNC(show_debug), 0);
228 gtk_signal_connect(GTK_OBJECT(debugbutton), "destroy", GTK_SIGNAL_FUNC(destdeb), 0);
229
230 frame = gtk_frame_new(_("Report Idle Times"));
231 gtk_box_pack_start(GTK_BOX(vbox), frame, TRUE, TRUE, 5);
232 gtk_widget_show(frame);
233
234 mbox = gtk_vbox_new(TRUE, 5);
235 gtk_container_add(GTK_CONTAINER(frame), mbox);
236 gtk_widget_show(mbox);
237
238 idle = idle_radio(_("None"), IDLE_NONE, mbox, NULL);
239 idle = idle_radio(_("GAIM Use"), IDLE_GAIM, mbox, idle);
240 #ifdef USE_SCREENSAVER
241 idle = idle_radio(_("X Use"), IDLE_SCREENSAVER, mbox, idle);
242 #endif
243
244 frame = gtk_frame_new(_("Logging"));
245 gtk_box_pack_start(GTK_BOX(hbox), frame, TRUE, TRUE, 5);
246 gtk_widget_show(frame);
247
248 mbox = gtk_vbox_new(TRUE, 5);
249 gtk_container_add(GTK_CONTAINER(frame), mbox);
250 gtk_widget_show(mbox);
251
252 gaim_button(_("Log all conversations"), &logging_options, OPT_LOG_ALL, mbox);
253 gaim_button(_("Strip HTML from logs"), &logging_options, OPT_LOG_STRIP_HTML, mbox);
254
255 sep = gtk_hseparator_new();
256 gtk_box_pack_start(GTK_BOX(mbox), sep, FALSE, FALSE, 0);
257 gtk_widget_show(sep);
258
259 gaim_button(_("Log when buddies sign on/sign off"), &logging_options, OPT_LOG_BUDDY_SIGNON, mbox);
260 gaim_button(_("Log when buddies become idle/un-idle"), &logging_options, OPT_LOG_BUDDY_IDLE, mbox);
261 gaim_button(_("Log when buddies go away/come back"), &logging_options, OPT_LOG_BUDDY_AWAY, mbox);
262 gaim_button(_("Log your own signons/idleness/awayness"), &logging_options, OPT_LOG_MY_SIGNON, mbox);
263 gaim_button(_("Individual log file for each buddy's signons"), &logging_options, OPT_LOG_INDIVIDUAL, mbox);
264
265 frame = gtk_frame_new(_("Browser"));
266 gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 5);
267 gtk_widget_show(frame);
268
269 hbox = gtk_hbox_new(FALSE, 5);
270 gtk_container_add(GTK_CONTAINER(frame), hbox);
271 gtk_widget_show(hbox);
272
273 vbox = gtk_vbox_new(FALSE, 5);
274 gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5);
275 gtk_widget_show(vbox);
276
277 opt = browser_radio(_("KFM"), BROWSER_KFM, vbox, NULL);
278 opt = browser_radio(_("Netscape"), BROWSER_NETSCAPE, vbox, opt);
279
280 new_window =
281 gaim_button(_("Pop up new window by default"), &general_options, OPT_GEN_BROWSER_POPUP, vbox);
282
283 vbox = gtk_vbox_new(FALSE, 5);
284 gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5);
285 gtk_widget_show(vbox);
286
238 #ifdef USE_GNOME 287 #ifdef USE_GNOME
239 opt = browser_radio(_("GNOME URL Handler"), BROWSER_GNOME, box, opt); 288 opt = browser_radio(_("GNOME URL Handler"), BROWSER_GNOME, vbox, opt);
240 #endif /* USE_GNOME */ 289 #endif /* USE_GNOME */
241 opt = browser_radio(_("Manual"), BROWSER_MANUAL, box, opt); 290 opt = browser_radio(_("Manual"), BROWSER_MANUAL, vbox, opt);
242 291
243 browser_entry = gtk_entry_new(); 292 browser_entry = gtk_entry_new();
244 gtk_box_pack_start(GTK_BOX(box), browser_entry, FALSE, FALSE, 0); 293 gtk_box_pack_start(GTK_BOX(vbox), browser_entry, FALSE, FALSE, 0);
245 gtk_entry_set_text(GTK_ENTRY(browser_entry), web_command); 294 gtk_entry_set_text(GTK_ENTRY(browser_entry), web_command);
246 gtk_signal_connect(GTK_OBJECT(browser_entry), "focus_out_event", 295 gtk_signal_connect(GTK_OBJECT(browser_entry), "focus_out_event",
247 GTK_SIGNAL_FUNC(manualentry_key_pressed), NULL); 296 GTK_SIGNAL_FUNC(manualentry_key_pressed), NULL);
248 gtk_signal_connect(GTK_OBJECT(browser_entry), "destroy", GTK_SIGNAL_FUNC(brentdes), NULL); 297 gtk_signal_connect(GTK_OBJECT(browser_entry), "destroy", GTK_SIGNAL_FUNC(brentdes), NULL);
249 gtk_widget_show(browser_entry); 298 gtk_widget_show(browser_entry);
250 299
251 new_window =
252 gaim_button(_("Pop up new window by default"), &general_options, OPT_GEN_BROWSER_POPUP, box);
253
254 if (web_browser != BROWSER_MANUAL) { 300 if (web_browser != BROWSER_MANUAL) {
255 gtk_widget_set_sensitive(browser_entry, FALSE); 301 gtk_widget_set_sensitive(browser_entry, FALSE);
256 } else { 302 } else {
257 gtk_widget_set_sensitive(browser_entry, TRUE); 303 gtk_widget_set_sensitive(browser_entry, TRUE);
258 } 304 }
260 if (web_browser != BROWSER_NETSCAPE) { 306 if (web_browser != BROWSER_NETSCAPE) {
261 gtk_widget_set_sensitive(new_window, FALSE); 307 gtk_widget_set_sensitive(new_window, FALSE);
262 } else { 308 } else {
263 gtk_widget_set_sensitive(new_window, TRUE); 309 gtk_widget_set_sensitive(new_window, TRUE);
264 } 310 }
265
266 gtk_widget_show(prefdialog);
267 }
268
269 static void logging_page()
270 {
271 GtkWidget *parent;
272 GtkWidget *box;
273 GtkWidget *label;
274 GtkWidget *sep;
275
276 parent = prefdialog->parent;
277 gtk_widget_destroy(prefdialog);
278
279 prefdialog = gtk_frame_new(_("Logging Options"));
280 gtk_container_add(GTK_CONTAINER(parent), prefdialog);
281
282 box = gtk_vbox_new(FALSE, 5);
283 gtk_container_set_border_width(GTK_CONTAINER(box), 5);
284 gtk_container_add(GTK_CONTAINER(prefdialog), box);
285 gtk_widget_show(box);
286
287 label = gtk_label_new(_("All options take effect immediately unless otherwise noted."));
288 gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5);
289 gtk_widget_show(label);
290
291 gaim_button(_("Log all conversations"), &logging_options, OPT_LOG_ALL, box);
292 gaim_button(_("Strip HTML from logs"), &logging_options, OPT_LOG_STRIP_HTML, box);
293
294 sep = gtk_hseparator_new();
295 gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 5);
296 gtk_widget_show(sep);
297
298 gaim_button(_("Log when buddies sign on/sign off"), &logging_options, OPT_LOG_BUDDY_SIGNON, box);
299 gaim_button(_("Log when buddies become idle/un-idle"), &logging_options, OPT_LOG_BUDDY_IDLE, box);
300 gaim_button(_("Log when buddies go away/come back"), &logging_options, OPT_LOG_BUDDY_AWAY, box);
301 gaim_button(_("Log your own signons/idleness/awayness (as set by options above)"), &logging_options, OPT_LOG_MY_SIGNON, box);
302 gaim_button(_("Individual log file for each buddy's signons"), &logging_options, OPT_LOG_INDIVIDUAL, box);
303 311
304 gtk_widget_show(prefdialog); 312 gtk_widget_show(prefdialog);
305 } 313 }
306 314
307 static void buddy_page() 315 static void buddy_page()
361 static void convo_page() 369 static void convo_page()
362 { 370 {
363 GtkWidget *parent; 371 GtkWidget *parent;
364 GtkWidget *box; 372 GtkWidget *box;
365 GtkWidget *label; 373 GtkWidget *label;
366 GtkWidget *sep; 374 GtkWidget *frame;
375 GtkWidget *hbox;
376 GtkWidget *vbox;
367 377
368 parent = prefdialog->parent; 378 parent = prefdialog->parent;
369 gtk_widget_destroy(prefdialog); 379 gtk_widget_destroy(prefdialog);
370 380
371 prefdialog = gtk_frame_new(_("Conversation Window Options")); 381 prefdialog = gtk_frame_new(_("Conversation Options"));
372 gtk_container_add(GTK_CONTAINER(parent), prefdialog); 382 gtk_container_add(GTK_CONTAINER(parent), prefdialog);
373 383
374 box = gtk_vbox_new(FALSE, 5); 384 box = gtk_vbox_new(FALSE, 5);
375 gtk_container_set_border_width(GTK_CONTAINER(box), 5); 385 gtk_container_set_border_width(GTK_CONTAINER(box), 5);
376 gtk_container_add(GTK_CONTAINER(prefdialog), box); 386 gtk_container_add(GTK_CONTAINER(prefdialog), box);
378 388
379 label = gtk_label_new(_("All options take effect immediately unless otherwise noted.")); 389 label = gtk_label_new(_("All options take effect immediately unless otherwise noted."));
380 gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5); 390 gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5);
381 gtk_widget_show(label); 391 gtk_widget_show(label);
382 392
383 gaim_button(_("Enter sends message"), &general_options, OPT_GEN_ENTER_SENDS, box); 393 frame = gtk_frame_new(_("Keyboard Options"));
384 gaim_button(_("Control-Enter sends message"), &general_options, OPT_GEN_CTL_ENTER, box); 394 gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 5);
385 gaim_button(_("Escape closes window"), &general_options, OPT_GEN_ESC_CAN_CLOSE, box); 395 gtk_widget_show(frame);
386 gaim_button(_("Control-{B/I/U/S} inserts HTML tags"), &general_options, OPT_GEN_CTL_CHARS, box); 396
387 gaim_button(_("Control-(number) inserts smileys"), &general_options, OPT_GEN_CTL_SMILEYS, box); 397 hbox = gtk_hbox_new(TRUE, 5);
388 gaim_button(_("F2 toggles timestamp display"), &general_options, OPT_GEN_F2_TOGGLES, box); 398 gtk_container_add(GTK_CONTAINER(frame), hbox);
389 399 gtk_widget_show(hbox);
390 sep = gtk_hseparator_new(); 400
391 gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 5); 401 vbox = gtk_vbox_new(TRUE, 5);
392 gtk_widget_show(sep); 402 gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5);
393 403 gtk_widget_show(vbox);
394 gaim_button(_("Show graphical smileys"), &display_options, OPT_DISP_SHOW_SMILEY, box); 404
395 gaim_button(_("Show timestamp on messages"), &display_options, OPT_DISP_SHOW_TIME, box); 405 gaim_button(_("Enter sends message"), &general_options, OPT_GEN_ENTER_SENDS, vbox);
396 gaim_button(_("Ignore colors"), &display_options, OPT_DISP_IGNORE_COLOUR, box); 406 gaim_button(_("Control-Enter sends message"), &general_options, OPT_GEN_CTL_ENTER, vbox);
397 gaim_button(_("Ignore font faces"), &display_options, OPT_DISP_IGNORE_FONTS, box); 407 gaim_button(_("Escape closes window"), &general_options, OPT_GEN_ESC_CAN_CLOSE, vbox);
398 gaim_button(_("Ignore font sizes"), &display_options, OPT_DISP_IGNORE_SIZES, box); 408
399 409 vbox = gtk_vbox_new(TRUE, 5);
400 sep = gtk_hseparator_new(); 410 gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5);
401 gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 5); 411 gtk_widget_show(vbox);
402 gtk_widget_show(sep); 412
403 413 gaim_button(_("Control-{B/I/U/S} inserts HTML tags"), &general_options, OPT_GEN_CTL_CHARS, vbox);
404 gaim_button(_("Highlight misspelled words"), &general_options, OPT_GEN_CHECK_SPELLING, box); 414 gaim_button(_("Control-(number) inserts smileys"), &general_options, OPT_GEN_CTL_SMILEYS, vbox);
405 gaim_button(_("Show URLs as links"), &general_options, OPT_GEN_SEND_LINKS, box); 415 gaim_button(_("F2 toggles timestamp display"), &general_options, OPT_GEN_F2_TOGGLES, vbox);
406 gaim_button(_("Sending messages removes away status"), &general_options, OPT_GEN_BACK_ON_IM, 416
407 box); 417 frame = gtk_frame_new(_("Display and General Options"));
418 gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 5);
419 gtk_widget_show(frame);
420
421 hbox = gtk_hbox_new(TRUE, 5);
422 gtk_container_add(GTK_CONTAINER(frame), hbox);
423 gtk_widget_show(hbox);
424
425 vbox = gtk_vbox_new(TRUE, 5);
426 gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5);
427 gtk_widget_show(vbox);
428
429 gaim_button(_("Show graphical smileys"), &display_options, OPT_DISP_SHOW_SMILEY, vbox);
430 gaim_button(_("Show timestamp on messages"), &display_options, OPT_DISP_SHOW_TIME, vbox);
431 gaim_button(_("Show URLs as links"), &general_options, OPT_GEN_SEND_LINKS, vbox);
432 gaim_button(_("Highlight misspelled words"), &general_options, OPT_GEN_CHECK_SPELLING, vbox);
433 gaim_button(_("Sending messages removes away status"), &general_options, OPT_GEN_BACK_ON_IM, vbox);
434
435 vbox = gtk_vbox_new(TRUE, 5);
436 gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5);
437 gtk_widget_show(vbox);
438
439 gaim_button(_("Ignore colors"), &display_options, OPT_DISP_IGNORE_COLOUR, vbox);
440 gaim_button(_("Ignore font faces"), &display_options, OPT_DISP_IGNORE_FONTS, vbox);
441 gaim_button(_("Ignore font sizes"), &display_options, OPT_DISP_IGNORE_SIZES, vbox);
442 gaim_button(_("Ignore TiK Automated Messages"), &general_options, OPT_GEN_TIK_HACK, vbox);
443 gaim_button(_("Ignore new conversations when away"), &general_options, OPT_GEN_DISCARD_WHEN_AWAY, vbox);
408 444
409 gtk_widget_show(prefdialog); 445 gtk_widget_show(prefdialog);
410 } 446 }
411 447
412 static void set_buttons_opt(GtkWidget *w, int data) 448 static void set_buttons_opt(GtkWidget *w, int data)
423 update_chat_button_pix(); 459 update_chat_button_pix();
424 else 460 else
425 update_im_button_pix(); 461 update_im_button_pix();
426 } 462 }
427 463
428 static void im_buttons_menu_init(GtkWidget *omenu) 464 /* i like everclear */
429 { 465 static GtkWidget *am_radio(char *label, int which, GtkWidget *box, GtkWidget *set)
430 GtkWidget *menu, *opt; 466 {
431 int index; 467 GtkWidget *opt;
432 468
433 switch (display_options & (OPT_DISP_CONV_BUTTON_TEXT | OPT_DISP_CONV_BUTTON_XPM)) { 469 if (!set)
434 case OPT_DISP_CONV_BUTTON_TEXT: 470 opt = gtk_radio_button_new_with_label(NULL, label);
435 index = 2; 471 else
436 break; 472 opt =
437 case OPT_DISP_CONV_BUTTON_XPM: 473 gtk_radio_button_new_with_label(gtk_radio_button_group(GTK_RADIO_BUTTON(set)),
438 index = 1; 474 label);
439 break; 475 gtk_box_pack_start(GTK_BOX(box), opt, FALSE, FALSE, 0);
440 default: /* both or neither */ 476 gtk_signal_connect(GTK_OBJECT(opt), "clicked", GTK_SIGNAL_FUNC(set_buttons_opt), (void *)which);
441 index = 0;
442 break;
443 }
444
445 menu = gtk_menu_new();
446
447 opt = gtk_menu_item_new_with_label(_("Pictures and Text"));
448 gtk_signal_connect(GTK_OBJECT(opt), "activate", GTK_SIGNAL_FUNC(set_buttons_opt),
449 (void *)(OPT_DISP_CONV_BUTTON_TEXT | OPT_DISP_CONV_BUTTON_XPM));
450 gtk_widget_show(opt); 477 gtk_widget_show(opt);
451 gtk_menu_append(GTK_MENU(menu), opt); 478 if (which & 1) {
452 479 if (which == (OPT_DISP_CHAT_BUTTON_TEXT | 1)) {
453 opt = gtk_menu_item_new_with_label(_("Pictures Only")); 480 if ( (display_options & OPT_DISP_CHAT_BUTTON_TEXT) &&
454 gtk_signal_connect(GTK_OBJECT(opt), "activate", GTK_SIGNAL_FUNC(set_buttons_opt), 481 !(display_options & OPT_DISP_CHAT_BUTTON_XPM))
455 (void *)OPT_DISP_CONV_BUTTON_XPM); 482 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt), TRUE);
456 gtk_widget_show(opt); 483 } else if (which == (OPT_DISP_CHAT_BUTTON_XPM | 1)) {
457 gtk_menu_append(GTK_MENU(menu), opt); 484 if (!(display_options & OPT_DISP_CHAT_BUTTON_TEXT) &&
458 485 (display_options & OPT_DISP_CHAT_BUTTON_XPM))
459 opt = gtk_menu_item_new_with_label(_("Text Only")); 486 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt), TRUE);
460 gtk_signal_connect(GTK_OBJECT(opt), "activate", GTK_SIGNAL_FUNC(set_buttons_opt), 487 } else {
461 (void *)OPT_DISP_CONV_BUTTON_TEXT); 488 if (((display_options & OPT_DISP_CHAT_BUTTON_TEXT) &&
462 gtk_widget_show(opt); 489 (display_options & OPT_DISP_CHAT_BUTTON_XPM)) ||
463 gtk_menu_append(GTK_MENU(menu), opt); 490 (!(display_options & OPT_DISP_CHAT_BUTTON_TEXT) &&
464 491 !(display_options & OPT_DISP_CHAT_BUTTON_XPM)))
465 set_default_away(menu, (gpointer)g_slist_index(away_messages, default_away)); 492 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt), TRUE);
466 493 }
467 gtk_option_menu_remove_menu(GTK_OPTION_MENU(omenu)); 494 } else {
468 gtk_option_menu_set_menu(GTK_OPTION_MENU(omenu), menu); 495 if (which == OPT_DISP_CONV_BUTTON_TEXT) {
469 gtk_option_menu_set_history(GTK_OPTION_MENU(omenu), index); 496 if ( (display_options & OPT_DISP_CONV_BUTTON_TEXT) &&
497 !(display_options & OPT_DISP_CONV_BUTTON_XPM))
498 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt), TRUE);
499 } else if (which == OPT_DISP_CONV_BUTTON_XPM) {
500 if (!(display_options & OPT_DISP_CONV_BUTTON_TEXT) &&
501 (display_options & OPT_DISP_CONV_BUTTON_XPM))
502 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt), TRUE);
503 } else {
504 if (((display_options & OPT_DISP_CONV_BUTTON_TEXT) &&
505 (display_options & OPT_DISP_CONV_BUTTON_XPM)) ||
506 (!(display_options & OPT_DISP_CONV_BUTTON_TEXT) &&
507 !(display_options & OPT_DISP_CONV_BUTTON_XPM)))
508 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt), TRUE);
509 }
510 }
511
512 return opt;
470 } 513 }
471 514
472 static void im_page() 515 static void im_page()
473 { 516 {
474 GtkWidget *parent; 517 GtkWidget *parent;
475 GtkWidget *box; 518 GtkWidget *box;
519 GtkWidget *label;
520 GtkWidget *frame;
476 GtkWidget *hbox; 521 GtkWidget *hbox;
477 GtkWidget *label; 522 GtkWidget *vbox;
478 GtkWidget *opt; 523 GtkWidget *opt;
524 GtkWidget *sep;
479 525
480 parent = prefdialog->parent; 526 parent = prefdialog->parent;
481 gtk_widget_destroy(prefdialog); 527 gtk_widget_destroy(prefdialog);
482 528
483 prefdialog = gtk_frame_new(_("IM Options")); 529 prefdialog = gtk_frame_new(_("IM Options"));
490 536
491 label = gtk_label_new(_("All options take effect immediately unless otherwise noted.")); 537 label = gtk_label_new(_("All options take effect immediately unless otherwise noted."));
492 gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5); 538 gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5);
493 gtk_widget_show(label); 539 gtk_widget_show(label);
494 540
495 gaim_button(_("Show all conversations in one tabbed window"), &display_options, OPT_DISP_ONE_WINDOW, box); 541 frame = gtk_frame_new(_("IM Window"));
496 gaim_button(_("Show logins in window"), &display_options, OPT_DISP_SHOW_LOGON, box); 542 gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 5);
497 543 gtk_widget_show(frame);
498 hbox = gtk_hbox_new(FALSE, 0); 544
499 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); 545 hbox = gtk_hbox_new(FALSE, 5);
546 gtk_container_add(GTK_CONTAINER(frame), hbox);
500 gtk_widget_show(hbox); 547 gtk_widget_show(hbox);
501 548
549 vbox = gtk_vbox_new(TRUE, 5);
550 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 5);
551 gtk_widget_show(vbox);
552
502 label = gtk_label_new(_("Show buttons as ")); 553 label = gtk_label_new(_("Show buttons as "));
503 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); 554 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 5);
504 gtk_widget_show(label); 555 gtk_widget_show(label);
505 556
506 opt = gtk_option_menu_new(); 557 opt = am_radio(_("Pictures And Text"), OPT_DISP_CONV_BUTTON_TEXT | OPT_DISP_CONV_BUTTON_XPM, vbox, NULL);
507 gtk_box_pack_start(GTK_BOX(hbox), opt, FALSE, FALSE, 5); 558 opt = am_radio(_("Pictures"), OPT_DISP_CONV_BUTTON_XPM, vbox, opt);
508 im_buttons_menu_init(opt); 559 opt = am_radio(_("Text"), OPT_DISP_CONV_BUTTON_TEXT, vbox, opt);
509 gtk_widget_show(opt); 560
510 561 sep = gtk_vseparator_new();
511 gaim_button(_("Show larger entry box on new windows"), &display_options, OPT_DISP_CONV_BIG_ENTRY, 562 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 5);
512 box); 563 gtk_widget_show(sep);
513 gaim_button(_("Raise windows on events"), &general_options, OPT_GEN_POPUP_WINDOWS, box); 564
514 gaim_button(_("Ignore new conversations when away"), &general_options, OPT_GEN_DISCARD_WHEN_AWAY, 565 vbox = gtk_vbox_new(TRUE, 5);
515 box); 566 gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5);
516 gaim_button(_("Ignore TiK Automated Messages"), &general_options, OPT_GEN_TIK_HACK, box); 567 gtk_widget_show(vbox);
517 568
518 gtk_widget_show(prefdialog); 569 gaim_button(_("Show all conversations in one tabbed window"), &display_options, OPT_DISP_ONE_WINDOW, vbox);
519 } 570 gaim_button(_("Raise windows on events"), &general_options, OPT_GEN_POPUP_WINDOWS, vbox);
520 571 gaim_button(_("Show logins in window"), &display_options, OPT_DISP_SHOW_LOGON, vbox);
521 static void chat_buttons_menu_init(GtkWidget *omenu) 572 gaim_button(_("Show larger entry box on new windows"), &display_options, OPT_DISP_CONV_BIG_ENTRY, vbox);
522 { 573
523 GtkWidget *menu, *opt; 574 frame = gtk_frame_new(_("IM Window"));
524 int index; 575 gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 5);
525 576 gtk_widget_show(frame);
526 switch (display_options & (OPT_DISP_CHAT_BUTTON_TEXT | OPT_DISP_CHAT_BUTTON_XPM)) { 577
527 case OPT_DISP_CHAT_BUTTON_TEXT: 578 hbox = gtk_hbox_new(FALSE, 5);
528 index = 2; 579 gtk_container_add(GTK_CONTAINER(frame), hbox);
529 break; 580 gtk_widget_show(hbox);
530 case OPT_DISP_CHAT_BUTTON_XPM: 581
531 index = 1; 582 vbox = gtk_vbox_new(TRUE, 5);
532 break; 583 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 5);
533 default: /* both or neither */ 584 gtk_widget_show(vbox);
534 index = 0; 585
535 break; 586 label = gtk_label_new(_("Show buttons as "));
536 } 587 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 5);
537
538 menu = gtk_menu_new();
539
540 opt = gtk_menu_item_new_with_label(_("Pictures and Text"));
541 gtk_signal_connect(GTK_OBJECT(opt), "activate", GTK_SIGNAL_FUNC(set_buttons_opt),
542 (void *)(OPT_DISP_CHAT_BUTTON_TEXT | OPT_DISP_CHAT_BUTTON_XPM | 1));
543 gtk_widget_show(opt);
544 gtk_menu_append(GTK_MENU(menu), opt);
545
546 opt = gtk_menu_item_new_with_label(_("Pictures Only"));
547 gtk_signal_connect(GTK_OBJECT(opt), "activate", GTK_SIGNAL_FUNC(set_buttons_opt),
548 (void *)(OPT_DISP_CHAT_BUTTON_XPM | 1));
549 gtk_widget_show(opt);
550 gtk_menu_append(GTK_MENU(menu), opt);
551
552 opt = gtk_menu_item_new_with_label(_("Text Only"));
553 gtk_signal_connect(GTK_OBJECT(opt), "activate", GTK_SIGNAL_FUNC(set_buttons_opt),
554 (void *)(OPT_DISP_CHAT_BUTTON_TEXT | 1));
555 gtk_widget_show(opt);
556 gtk_menu_append(GTK_MENU(menu), opt);
557
558 gtk_option_menu_remove_menu(GTK_OPTION_MENU(omenu));
559 gtk_option_menu_set_menu(GTK_OPTION_MENU(omenu), menu);
560 gtk_option_menu_set_history(GTK_OPTION_MENU(omenu), index);
561 }
562
563 static void chat_page()
564 {
565 GtkWidget *parent;
566 GtkWidget *box;
567 GtkWidget *hbox;
568 GtkWidget *label;
569 GtkWidget *opt;
570
571 parent = prefdialog->parent;
572 gtk_widget_destroy(prefdialog);
573
574 prefdialog = gtk_frame_new(_("Chat Options"));
575 gtk_container_add(GTK_CONTAINER(parent), prefdialog);
576
577 box = gtk_vbox_new(FALSE, 5);
578 gtk_container_set_border_width(GTK_CONTAINER(box), 5);
579 gtk_container_add(GTK_CONTAINER(prefdialog), box);
580 gtk_widget_show(box);
581
582 label = gtk_label_new(_("All options take effect immediately unless otherwise noted."));
583 gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5);
584 gtk_widget_show(label); 588 gtk_widget_show(label);
585 589
586 gaim_button(_("Show all chats in one tabbed window"), &display_options, OPT_DISP_ONE_CHAT_WINDOW, box); 590 opt = am_radio(_("Pictures And Text"), OPT_DISP_CHAT_BUTTON_TEXT | OPT_DISP_CHAT_BUTTON_XPM | 1, vbox, NULL);
587 gaim_button(_("Show people joining/leaving in window"), &display_options, OPT_DISP_CHAT_LOGON, box); 591 opt = am_radio(_("Pictures"), OPT_DISP_CHAT_BUTTON_XPM | 1, vbox, opt);
588 592 opt = am_radio(_("Text"), OPT_DISP_CHAT_BUTTON_TEXT | 1, vbox, opt);
589 hbox = gtk_hbox_new(FALSE, 0); 593
590 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); 594 sep = gtk_vseparator_new();
591 gtk_widget_show(hbox); 595 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 5);
592 596 gtk_widget_show(sep);
593 label = gtk_label_new(_("Show buttons as ")); 597
594 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); 598 vbox = gtk_vbox_new(TRUE, 5);
595 gtk_widget_show(label); 599 gtk_box_pack_start(GTK_BOX(hbox), vbox, TRUE, TRUE, 5);
596 600 gtk_widget_show(vbox);
597 opt = gtk_option_menu_new(); 601
598 gtk_box_pack_start(GTK_BOX(hbox), opt, FALSE, FALSE, 5); 602 gaim_button(_("Show all chats in one tabbed window"), &display_options, OPT_DISP_ONE_CHAT_WINDOW, vbox);
599 chat_buttons_menu_init(opt); 603 gaim_button(_("Raise windows on events"), &general_options, OPT_GEN_POPUP_CHAT, vbox);
600 gtk_widget_show(opt); 604 gaim_button(_("Show people joining/leaving in window"), &display_options, OPT_DISP_CHAT_LOGON, vbox);
601 605 gaim_button(_("Show larger entry box on new windows"), &display_options, OPT_DISP_CHAT_BIG_ENTRY, vbox);
602
603 gaim_button(_("Show larger entry box on new windows"), &display_options, OPT_DISP_CHAT_BIG_ENTRY,
604 box);
605 gaim_button(_("Raise windows on events"), &general_options, OPT_GEN_POPUP_CHAT, box);
606 606
607 gtk_widget_show(prefdialog); 607 gtk_widget_show(prefdialog);
608 } 608 }
609 609
610 struct chat_page { 610 struct chat_page {
2192 text[0] = _("General"); 2192 text[0] = _("General");
2193 general_node = gtk_ctree_insert_node(GTK_CTREE(preftree), NULL, NULL, 2193 general_node = gtk_ctree_insert_node(GTK_CTREE(preftree), NULL, NULL,
2194 text, 5, NULL, NULL, NULL, NULL, 0, 1); 2194 text, 5, NULL, NULL, NULL, NULL, 0, 1);
2195 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), general_node, general_page); 2195 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), general_node, general_page);
2196 2196
2197 /*
2197 text[0] = _("Browser"); 2198 text[0] = _("Browser");
2198 node = gtk_ctree_insert_node(GTK_CTREE(preftree), general_node, NULL, 2199 node = gtk_ctree_insert_node(GTK_CTREE(preftree), general_node, NULL,
2199 text, 5, NULL, NULL, NULL, NULL, 0, 1); 2200 text, 5, NULL, NULL, NULL, NULL, 0, 1);
2200 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), node, browser_page); 2201 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), node, browser_page);
2201 2202
2202 text[0] = _("Logging"); 2203 text[0] = _("Logging");
2203 node = gtk_ctree_insert_node(GTK_CTREE(preftree), general_node, NULL, 2204 node = gtk_ctree_insert_node(GTK_CTREE(preftree), general_node, NULL,
2204 text, 5, NULL, NULL, NULL, NULL, 0, 1); 2205 text, 5, NULL, NULL, NULL, NULL, 0, 1);
2205 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), node, logging_page); 2206 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), node, logging_page);
2207 */
2206 2208
2207 gtk_ctree_select(GTK_CTREE(preftree), general_node); 2209 gtk_ctree_select(GTK_CTREE(preftree), general_node);
2208 } 2210 }
2209 2211
2210 void prefs_build_buddy() 2212 void prefs_build_buddy()
2218 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), parent, buddy_page); 2220 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), parent, buddy_page);
2219 } 2221 }
2220 2222
2221 void prefs_build_convo() 2223 void prefs_build_convo()
2222 { 2224 {
2223 GtkCTreeNode *parent, *node, *node2; 2225 GtkCTreeNode *parent, *node;
2224 char *text[1]; 2226 char *text[1];
2225 2227
2226 text[0] = _("Conversations"); 2228 text[0] = _("Conversations");
2227 parent = gtk_ctree_insert_node(GTK_CTREE(preftree), NULL, NULL, 2229 parent = gtk_ctree_insert_node(GTK_CTREE(preftree), NULL, NULL,
2228 text, 5, NULL, NULL, NULL, NULL, 0, 1); 2230 text, 5, NULL, NULL, NULL, NULL, 0, 1);
2229 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), parent, convo_page); 2231 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), parent, convo_page);
2230 2232
2231 text[0] = _("IM Window"); 2233 text[0] = _("Windows");
2232 node = gtk_ctree_insert_node(GTK_CTREE(preftree), parent, NULL, 2234 node = gtk_ctree_insert_node(GTK_CTREE(preftree), parent, NULL,
2233 text, 5, NULL, NULL, NULL, NULL, 0, 1); 2235 text, 5, NULL, NULL, NULL, NULL, 0, 1);
2234 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), node, im_page); 2236 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), node, im_page);
2235 2237
2238 /*
2236 text[0] = _("Chat Window"); 2239 text[0] = _("Chat Window");
2237 node = gtk_ctree_insert_node(GTK_CTREE(preftree), parent, NULL, 2240 node = gtk_ctree_insert_node(GTK_CTREE(preftree), parent, NULL,
2238 text, 5, NULL, NULL, NULL, NULL, 0, 1); 2241 text, 5, NULL, NULL, NULL, NULL, 0, 1);
2239 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), node, chat_page); 2242 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), node, chat_page);
2240 2243 */
2241 text[0] = _("Chat Rooms");
2242 node2 = gtk_ctree_insert_node(GTK_CTREE(preftree), node, NULL,
2243 text, 5, NULL, NULL, NULL, NULL, 1, 0);
2244 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), node2, room_page);
2245 2244
2246 text[0] = _("Font Options"); 2245 text[0] = _("Font Options");
2247 node = gtk_ctree_insert_node(GTK_CTREE(preftree), parent, NULL, 2246 node = gtk_ctree_insert_node(GTK_CTREE(preftree), parent, NULL,
2248 text, 5, NULL, NULL, NULL, NULL, 0, 1); 2247 text, 5, NULL, NULL, NULL, NULL, 0, 1);
2249 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), node, font_page); 2248 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), node, font_page);
2249
2250 text[0] = _("Chat Rooms");
2251 node = gtk_ctree_insert_node(GTK_CTREE(preftree), parent, NULL,
2252 text, 5, NULL, NULL, NULL, NULL, 0, 1);
2253 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), node, room_page);
2250 } 2254 }
2251 2255
2252 void prefs_build_sound() 2256 void prefs_build_sound()
2253 { 2257 {
2254 GtkCTreeNode *parent, *node; 2258 GtkCTreeNode *parent, *node;