comparison src/prefs.c @ 1525:ba8e6e211af5

[gaim-migrate @ 1535] icqlib updates. beginnings of system logging. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Sat, 03 Mar 2001 00:26:04 +0000
parents d113c7e2c5f1
children 3a8bd72f431f
comparison
equal deleted inserted replaced
1524:a5c87ada5143 1525:ba8e6e211af5
52 static void prefs_build_general(); 52 static void prefs_build_general();
53 static void prefs_build_buddy(); 53 static void prefs_build_buddy();
54 static void prefs_build_convo(); 54 static void prefs_build_convo();
55 static void prefs_build_sound(); 55 static void prefs_build_sound();
56 static void prefs_build_away(); 56 static void prefs_build_away();
57 static void prefs_build_browser();
58 static void prefs_build_deny(); 57 static void prefs_build_deny();
59 static gint handle_delete(GtkWidget *, GdkEvent *, void *); 58 static gint handle_delete(GtkWidget *, GdkEvent *, void *);
60 static void delete_prefs(GtkWidget *, void *); 59 static void delete_prefs(GtkWidget *, void *);
61 void set_default_away(GtkWidget *, gpointer); 60 void set_default_away(GtkWidget *, gpointer);
62 61
162 #endif 161 #endif
163 162
164 gtk_widget_show(prefdialog); 163 gtk_widget_show(prefdialog);
165 } 164 }
166 165
166 static GtkWidget *browser_entry = NULL;
167 static GtkWidget *new_window = NULL;
168
169 static void set_browser(GtkWidget *w, int *data)
170 {
171 web_browser = (int)data;
172 if (web_browser != BROWSER_MANUAL) {
173 if (browser_entry)
174 gtk_widget_set_sensitive(browser_entry, FALSE);
175 } else {
176 if (browser_entry)
177 gtk_widget_set_sensitive(browser_entry, TRUE);
178 }
179
180 if (web_browser != BROWSER_NETSCAPE) {
181 if (new_window)
182 gtk_widget_set_sensitive(new_window, FALSE);
183 } else {
184 if (new_window)
185 gtk_widget_set_sensitive(new_window, TRUE);
186 }
187
188
189 save_prefs();
190 }
191
192 static int manualentry_key_pressed(GtkWidget *w, GdkEvent *event, void *dummy)
193 {
194 g_snprintf(web_command, sizeof(web_command), "%s", gtk_entry_get_text(GTK_ENTRY(browser_entry)));
195 save_prefs();
196 return TRUE;
197 }
198
199 static GtkWidget *browser_radio(char *label, int which, GtkWidget *box, GtkWidget *set)
200 {
201 GtkWidget *opt;
202
203 if (!set)
204 opt = gtk_radio_button_new_with_label(NULL, label);
205 else
206 opt =
207 gtk_radio_button_new_with_label(gtk_radio_button_group(GTK_RADIO_BUTTON(set)),
208 label);
209 gtk_box_pack_start(GTK_BOX(box), opt, FALSE, FALSE, 0);
210 gtk_signal_connect(GTK_OBJECT(opt), "clicked", GTK_SIGNAL_FUNC(set_browser), (void *)which);
211 gtk_widget_show(opt);
212 if (web_browser == which)
213 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt), TRUE);
214
215 return opt;
216 }
217
218 static void brentdes(GtkWidget *m, gpointer n)
219 {
220 browser_entry = NULL;
221 new_window = NULL;
222 }
223
224 static void browser_page()
225 {
226 GtkWidget *parent;
227 GtkWidget *box;
228 GtkWidget *label;
229 GtkWidget *opt;
230
231 parent = prefdialog->parent;
232 gtk_widget_destroy(prefdialog);
233
234 prefdialog = gtk_frame_new(_("Browser Options"));
235 gtk_container_add(GTK_CONTAINER(parent), prefdialog);
236
237 box = gtk_vbox_new(FALSE, 5);
238 gtk_container_set_border_width(GTK_CONTAINER(box), 5);
239 gtk_container_add(GTK_CONTAINER(prefdialog), box);
240 gtk_widget_show(box);
241
242 label = gtk_label_new(_("All options take effect immediately unless otherwise noted."));
243 gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5);
244 gtk_widget_show(label);
245
246 opt = browser_radio(_("Netscape"), BROWSER_NETSCAPE, box, NULL);
247 opt = browser_radio(_("KFM"), BROWSER_KFM, box, opt);
248 #ifdef USE_GNOME
249 opt = browser_radio(_("GNOME URL Handler"), BROWSER_GNOME, box, opt);
250 #endif /* USE_GNOME */
251 opt = browser_radio(_("Manual"), BROWSER_MANUAL, box, opt);
252
253 browser_entry = gtk_entry_new();
254 gtk_box_pack_start(GTK_BOX(box), browser_entry, FALSE, FALSE, 0);
255 gtk_entry_set_text(GTK_ENTRY(browser_entry), web_command);
256 gtk_signal_connect(GTK_OBJECT(browser_entry), "focus_out_event",
257 GTK_SIGNAL_FUNC(manualentry_key_pressed), NULL);
258 gtk_signal_connect(GTK_OBJECT(browser_entry), "destroy", GTK_SIGNAL_FUNC(brentdes), NULL);
259 gtk_widget_show(browser_entry);
260
261 new_window =
262 gaim_button(_("Pop up new window by default"), &general_options, OPT_GEN_BROWSER_POPUP, box);
263
264 if (web_browser != BROWSER_MANUAL) {
265 gtk_widget_set_sensitive(browser_entry, FALSE);
266 } else {
267 gtk_widget_set_sensitive(browser_entry, TRUE);
268 }
269
270 if (web_browser != BROWSER_NETSCAPE) {
271 gtk_widget_set_sensitive(new_window, FALSE);
272 } else {
273 gtk_widget_set_sensitive(new_window, TRUE);
274 }
275
276 gtk_widget_show(prefdialog);
277 }
278
279 static void logging_page()
280 {
281 GtkWidget *parent;
282 GtkWidget *box;
283 GtkWidget *label;
284 GtkWidget *sep;
285
286 parent = prefdialog->parent;
287 gtk_widget_destroy(prefdialog);
288
289 prefdialog = gtk_frame_new(_("Logging Options"));
290 gtk_container_add(GTK_CONTAINER(parent), prefdialog);
291
292 box = gtk_vbox_new(FALSE, 5);
293 gtk_container_set_border_width(GTK_CONTAINER(box), 5);
294 gtk_container_add(GTK_CONTAINER(prefdialog), box);
295 gtk_widget_show(box);
296
297 label = gtk_label_new(_("All options take effect immediately unless otherwise noted."));
298 gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5);
299 gtk_widget_show(label);
300
301 gaim_button(_("Log all conversations"), &logging_options, OPT_LOG_ALL, box);
302 gaim_button(_("Strip HTML from conversationlogs"), &logging_options, OPT_LOG_STRIP_HTML, box);
303
304 sep = gtk_hseparator_new();
305 gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 5);
306 gtk_widget_show(sep);
307
308 label = gtk_label_new(_("Nothing below is implemented yet"));
309 gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5);
310 gtk_widget_show(label);
311
312 gaim_button(_("Log when buddies sign on/sign off"), &logging_options, OPT_LOG_BUDDY_SIGNON, box);
313 gaim_button(_("Log when buddies become idle/un-idle"), &logging_options, OPT_LOG_BUDDY_IDLE, box);
314 gaim_button(_("Log when buddies go away/come back"), &logging_options, OPT_LOG_BUDDY_AWAY, box);
315 gaim_button(_("Log your own signons/idleness/awayness (as set by options above)"), &logging_options, OPT_LOG_MY_SIGNON, box);
316 gaim_button(_("Individual log file for each buddy's signons"), &logging_options, OPT_LOG_INDIVIDUAL, box);
317
318 gtk_widget_show(prefdialog);
319 }
320
167 static void buddy_page() 321 static void buddy_page()
168 { 322 {
169 GtkWidget *parent; 323 GtkWidget *parent;
170 GtkWidget *box; 324 GtkWidget *box;
171 GtkWidget *label; 325 GtkWidget *label;
254 gaim_button(_("Show graphical smileys"), &display_options, OPT_DISP_SHOW_SMILEY, box); 408 gaim_button(_("Show graphical smileys"), &display_options, OPT_DISP_SHOW_SMILEY, box);
255 gaim_button(_("Show timestamp on messages"), &display_options, OPT_DISP_SHOW_TIME, box); 409 gaim_button(_("Show timestamp on messages"), &display_options, OPT_DISP_SHOW_TIME, box);
256 gaim_button(_("Ignore colors"), &display_options, OPT_DISP_IGNORE_COLOUR, box); 410 gaim_button(_("Ignore colors"), &display_options, OPT_DISP_IGNORE_COLOUR, box);
257 gaim_button(_("Ignore font faces"), &display_options, OPT_DISP_IGNORE_FONTS, box); 411 gaim_button(_("Ignore font faces"), &display_options, OPT_DISP_IGNORE_FONTS, box);
258 gaim_button(_("Ignore font sizes"), &display_options, OPT_DISP_IGNORE_SIZES, box); 412 gaim_button(_("Ignore font sizes"), &display_options, OPT_DISP_IGNORE_SIZES, box);
259
260 sep = gtk_hseparator_new();
261 gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 5);
262 gtk_widget_show(sep);
263
264 gaim_button(_("Log all conversations"), &general_options, OPT_GEN_LOG_ALL, box);
265 gaim_button(_("Strip HTML from logs"), &general_options, OPT_GEN_STRIP_HTML, box);
266 413
267 sep = gtk_hseparator_new(); 414 sep = gtk_hseparator_new();
268 gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 5); 415 gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 5);
269 gtk_widget_show(sep); 416 gtk_widget_show(sep);
270 417
1411 gtk_widget_show(prefs_away_menu); 1558 gtk_widget_show(prefs_away_menu);
1412 1559
1413 gtk_widget_show(prefdialog); 1560 gtk_widget_show(prefdialog);
1414 } 1561 }
1415 1562
1416 static GtkWidget *browser_entry = NULL;
1417 static GtkWidget *new_window = NULL;
1418
1419 static void set_browser(GtkWidget *w, int *data)
1420 {
1421 web_browser = (int)data;
1422 if (web_browser != BROWSER_MANUAL) {
1423 if (browser_entry)
1424 gtk_widget_set_sensitive(browser_entry, FALSE);
1425 } else {
1426 if (browser_entry)
1427 gtk_widget_set_sensitive(browser_entry, TRUE);
1428 }
1429
1430 if (web_browser != BROWSER_NETSCAPE) {
1431 if (new_window)
1432 gtk_widget_set_sensitive(new_window, FALSE);
1433 } else {
1434 if (new_window)
1435 gtk_widget_set_sensitive(new_window, TRUE);
1436 }
1437
1438
1439 save_prefs();
1440 }
1441
1442 static int manualentry_key_pressed(GtkWidget *w, GdkEvent *event, void *dummy)
1443 {
1444 g_snprintf(web_command, sizeof(web_command), "%s", gtk_entry_get_text(GTK_ENTRY(browser_entry)));
1445 save_prefs();
1446 return TRUE;
1447 }
1448
1449 static GtkWidget *browser_radio(char *label, int which, GtkWidget *box, GtkWidget *set)
1450 {
1451 GtkWidget *opt;
1452
1453 if (!set)
1454 opt = gtk_radio_button_new_with_label(NULL, label);
1455 else
1456 opt =
1457 gtk_radio_button_new_with_label(gtk_radio_button_group(GTK_RADIO_BUTTON(set)),
1458 label);
1459 gtk_box_pack_start(GTK_BOX(box), opt, FALSE, FALSE, 0);
1460 gtk_signal_connect(GTK_OBJECT(opt), "clicked", GTK_SIGNAL_FUNC(set_browser), (void *)which);
1461 gtk_widget_show(opt);
1462 if (web_browser == which)
1463 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(opt), TRUE);
1464
1465 return opt;
1466 }
1467
1468 static void brentdes(GtkWidget *m, gpointer n)
1469 {
1470 browser_entry = NULL;
1471 new_window = NULL;
1472 }
1473
1474 static void browser_page()
1475 {
1476 GtkWidget *parent;
1477 GtkWidget *box;
1478 GtkWidget *label;
1479 GtkWidget *opt;
1480
1481 parent = prefdialog->parent;
1482 gtk_widget_destroy(prefdialog);
1483
1484 prefdialog = gtk_frame_new(_("Browser Options"));
1485 gtk_container_add(GTK_CONTAINER(parent), prefdialog);
1486
1487 box = gtk_vbox_new(FALSE, 5);
1488 gtk_container_set_border_width(GTK_CONTAINER(box), 5);
1489 gtk_container_add(GTK_CONTAINER(prefdialog), box);
1490 gtk_widget_show(box);
1491
1492 label = gtk_label_new(_("All options take effect immediately unless otherwise noted."));
1493 gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 5);
1494 gtk_widget_show(label);
1495
1496 opt = browser_radio(_("Netscape"), BROWSER_NETSCAPE, box, NULL);
1497 opt = browser_radio(_("KFM"), BROWSER_KFM, box, opt);
1498 #ifdef USE_GNOME
1499 opt = browser_radio(_("GNOME URL Handler"), BROWSER_GNOME, box, opt);
1500 #endif /* USE_GNOME */
1501 opt = browser_radio(_("Manual"), BROWSER_MANUAL, box, opt);
1502
1503 browser_entry = gtk_entry_new();
1504 gtk_box_pack_start(GTK_BOX(box), browser_entry, FALSE, FALSE, 0);
1505 gtk_entry_set_text(GTK_ENTRY(browser_entry), web_command);
1506 gtk_signal_connect(GTK_OBJECT(browser_entry), "focus_out_event",
1507 GTK_SIGNAL_FUNC(manualentry_key_pressed), NULL);
1508 gtk_signal_connect(GTK_OBJECT(browser_entry), "destroy", GTK_SIGNAL_FUNC(brentdes), NULL);
1509 gtk_widget_show(browser_entry);
1510
1511 new_window =
1512 gaim_button(_("Pop up new window by default"), &general_options, OPT_GEN_BROWSER_POPUP, box);
1513
1514 if (web_browser != BROWSER_MANUAL) {
1515 gtk_widget_set_sensitive(browser_entry, FALSE);
1516 } else {
1517 gtk_widget_set_sensitive(browser_entry, TRUE);
1518 }
1519
1520 if (web_browser != BROWSER_NETSCAPE) {
1521 gtk_widget_set_sensitive(new_window, FALSE);
1522 } else {
1523 gtk_widget_set_sensitive(new_window, TRUE);
1524 }
1525
1526 gtk_widget_show(prefdialog);
1527 }
1528
1529 static GtkWidget *deny_conn_hbox = NULL; 1563 static GtkWidget *deny_conn_hbox = NULL;
1530 static GtkWidget *deny_opt_menu = NULL; 1564 static GtkWidget *deny_opt_menu = NULL;
1531 static struct gaim_connection *current_deny_gc = NULL; 1565 static struct gaim_connection *current_deny_gc = NULL;
1532 static gboolean current_is_deny = FALSE; 1566 static gboolean current_is_deny = FALSE;
1533 static GtkWidget *allow_list = NULL; 1567 static GtkWidget *allow_list = NULL;
1936 prefs_build_general(); 1970 prefs_build_general();
1937 prefs_build_buddy(); 1971 prefs_build_buddy();
1938 prefs_build_convo(); 1972 prefs_build_convo();
1939 prefs_build_sound(); 1973 prefs_build_sound();
1940 prefs_build_away(); 1974 prefs_build_away();
1941 prefs_build_browser();
1942 prefs_build_deny(); 1975 prefs_build_deny();
1943 1976
1944 //general_page(); 1977 //general_page();
1945 1978
1946 hbox = gtk_hbox_new(FALSE, 5); 1979 hbox = gtk_hbox_new(FALSE, 5);
2063 2096
2064 void set_general_option(GtkWidget *w, int *option) 2097 void set_general_option(GtkWidget *w, int *option)
2065 { 2098 {
2066 general_options = general_options ^ (int)option; 2099 general_options = general_options ^ (int)option;
2067 2100
2068 if ((int)option == OPT_GEN_LOG_ALL)
2069 update_log_convs();
2070
2071 if ((int)option == OPT_GEN_CHECK_SPELLING) 2101 if ((int)option == OPT_GEN_CHECK_SPELLING)
2072 toggle_spellchk(); 2102 toggle_spellchk();
2073 2103
2074 save_prefs(); 2104 save_prefs();
2075 } 2105 }
2114 void set_font_option(GtkWidget *w, int *option) 2144 void set_font_option(GtkWidget *w, int *option)
2115 { 2145 {
2116 font_options = font_options ^ (int)option; 2146 font_options = font_options ^ (int)option;
2117 2147
2118 update_font_buttons(); 2148 update_font_buttons();
2149
2150 save_prefs();
2151 }
2152
2153 void set_logging_option(GtkWidget *w, int *option)
2154 {
2155 logging_options = logging_options ^ (int)option;
2156
2157 if ((int)option == OPT_LOG_ALL)
2158 update_log_convs();
2119 2159
2120 save_prefs(); 2160 save_prefs();
2121 } 2161 }
2122 2162
2123 GtkWidget *gaim_button(const char *text, int *options, int option, GtkWidget *page) 2163 GtkWidget *gaim_button(const char *text, int *options, int option, GtkWidget *page)
2128 gtk_box_pack_start(GTK_BOX(page), button, FALSE, FALSE, 0); 2168 gtk_box_pack_start(GTK_BOX(page), button, FALSE, FALSE, 0);
2129 2169
2130 if (options == &font_options) 2170 if (options == &font_options)
2131 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_font_option), 2171 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_font_option),
2132 (int *)option); 2172 (int *)option);
2133
2134 if (options == &sound_options) 2173 if (options == &sound_options)
2135 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_sound_option), 2174 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_sound_option),
2136 (int *)option); 2175 (int *)option);
2137 if (options == &display_options) 2176 if (options == &display_options)
2138 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_display_option), 2177 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_display_option),
2139 (int *)option); 2178 (int *)option);
2140
2141 if (options == &general_options) 2179 if (options == &general_options)
2142 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_general_option), 2180 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_general_option),
2143 (int *)option); 2181 (int *)option);
2182 if (options == &logging_options)
2183 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(set_logging_option),
2184 (int *)option);
2144 gtk_widget_show(button); 2185 gtk_widget_show(button);
2145 2186
2146 return button; 2187 return button;
2147 } 2188 }
2148 2189
2149 void prefs_build_general() 2190 void prefs_build_general()
2150 { 2191 {
2192 GtkCTreeNode *node;
2151 char *text[1]; 2193 char *text[1];
2152 2194
2153 text[0] = _("General"); 2195 text[0] = _("General");
2154 general_node = gtk_ctree_insert_node(GTK_CTREE(preftree), NULL, NULL, 2196 general_node = gtk_ctree_insert_node(GTK_CTREE(preftree), NULL, NULL,
2155 text, 5, NULL, NULL, NULL, NULL, 0, 1); 2197 text, 5, NULL, NULL, NULL, NULL, 0, 1);
2156 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), general_node, general_page); 2198 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), general_node, general_page);
2157 2199
2200 text[0] = _("Browser");
2201 node = gtk_ctree_insert_node(GTK_CTREE(preftree), general_node, NULL,
2202 text, 5, NULL, NULL, NULL, NULL, 0, 1);
2203 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), node, browser_page);
2204
2205 text[0] = _("Logging");
2206 node = gtk_ctree_insert_node(GTK_CTREE(preftree), general_node, NULL,
2207 text, 5, NULL, NULL, NULL, NULL, 0, 1);
2208 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), node, logging_page);
2209
2158 gtk_ctree_select(GTK_CTREE(preftree), general_node); 2210 gtk_ctree_select(GTK_CTREE(preftree), general_node);
2159 } 2211 }
2160 2212
2161 void prefs_build_buddy() 2213 void prefs_build_buddy()
2162 { 2214 {
2223 2275
2224 text[0] = _("Away Messages"); 2276 text[0] = _("Away Messages");
2225 parent = gtk_ctree_insert_node(GTK_CTREE(preftree), NULL, NULL, 2277 parent = gtk_ctree_insert_node(GTK_CTREE(preftree), NULL, NULL,
2226 text, 5, NULL, NULL, NULL, NULL, 0, 1); 2278 text, 5, NULL, NULL, NULL, NULL, 0, 1);
2227 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), parent, away_page); 2279 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), parent, away_page);
2228 }
2229
2230 void prefs_build_browser()
2231 {
2232 GtkCTreeNode *parent;
2233 char *text[1];
2234
2235 text[0] = _("Browser");
2236 parent = gtk_ctree_insert_node(GTK_CTREE(preftree), NULL, NULL,
2237 text, 5, NULL, NULL, NULL, NULL, 0, 1);
2238 gtk_ctree_node_set_row_data(GTK_CTREE(preftree), parent, browser_page);
2239 } 2280 }
2240 2281
2241 void prefs_build_deny() 2282 void prefs_build_deny()
2242 { 2283 {
2243 char *text[1]; 2284 char *text[1];