Mercurial > pidgin.yaz
comparison plugins/notify.c @ 4203:ec6d0c5e5c23
[gaim-migrate @ 4439]
- Should fix the Urgent hint crash (really this time).
- Fixes the apply to conversations button (count is now kept across
applications).
- Other general cleanups.
Thanks deryni.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Sun, 05 Jan 2003 04:36:41 +0000 |
parents | 59751fe608c5 |
children | fac89c0d55c2 |
comparison
equal
deleted
inserted
replaced
4202:59751fe608c5 | 4203:ec6d0c5e5c23 |
---|---|
8 * Cleaned up code | 8 * Cleaned up code |
9 * Added option to notify on click as it's own option | 9 * Added option to notify on click as it's own option |
10 * rather then as what happens when on focus isn't clicked | 10 * rather then as what happens when on focus isn't clicked |
11 * Added apply button to change the denotification methods for | 11 * Added apply button to change the denotification methods for |
12 * open conversation windows | 12 * open conversation windows |
13 * Fixed apply to conversations, count now keeps count across applies | |
14 * Fixed(?) memory leak, and in the process fixed some stupidities | |
15 * Hit enter when done editing the title string entry box to save it | |
13 * | 16 * |
14 * Thanks to Carles Pina i Estany <carles@pinux.info> | 17 * Thanks to Carles Pina i Estany <carles@pinux.info> |
15 * for count of new messages option | 18 * for count of new messages option |
16 */ | 19 */ |
17 | 20 |
47 #define METHOD_URGENT 0x00000004 | 50 #define METHOD_URGENT 0x00000004 |
48 #define METHOD_COUNT 0x00000008 | 51 #define METHOD_COUNT 0x00000008 |
49 | 52 |
50 void *handle; | 53 void *handle; |
51 GtkWidget *Entry; | 54 GtkWidget *Entry; |
52 gchar *title_string = "(*) "; | 55 gchar *title_string; |
56 int Number = 0; | |
53 | 57 |
54 /* predefine some functions, less warnings */ | 58 /* predefine some functions, less warnings */ |
55 void options(GtkWidget *widget, gpointer data); | 59 void options(GtkWidget *widget, gpointer data); |
56 void un_star(GtkWidget *widget, gpointer data); | |
57 /* this returns an int so that typing events don't get stopped here */ | 60 /* this returns an int so that typing events don't get stopped here */ |
58 int un_star_window(GtkWidget *widget, gpointer data); | 61 int un_star(GtkWidget *widget, gpointer data); |
59 int counter (char *buf, int *length); | 62 int counter (char *buf, int *length); |
60 /*string functions */ | 63 /*string functions */ |
61 void string_add(GtkWidget *widget); | 64 void string_add(GtkWidget *widget); |
62 gboolean string_remove(GtkWidget *widget); | 65 gboolean string_remove(GtkWidget *widget); |
63 /* count functions */ | 66 /* count functions */ |
64 void count_add(GtkWidget *widget); | 67 void count_add(GtkWidget *widget, int number); |
65 gboolean count_remove(GtkWidget *widget); | 68 gboolean count_remove(GtkWidget *widget); |
66 /* quote functions */ | 69 /* quote functions */ |
67 void quote_add(GtkWidget *widget); | 70 void quote_add(GtkWidget *widget); |
68 gboolean quote_remove(GtkWidget *widget); | 71 gboolean quote_remove(GtkWidget *widget); |
69 /* urgent functions */ | 72 /* urgent functions */ |
89 Window focus_return; | 92 Window focus_return; |
90 int revert_to_return; | 93 int revert_to_return; |
91 | 94 |
92 XGetInputFocus(GDK_WINDOW_XDISPLAY(cnv->window->window), &focus_return, &revert_to_return); | 95 XGetInputFocus(GDK_WINDOW_XDISPLAY(cnv->window->window), &focus_return, &revert_to_return); |
93 | 96 |
94 if ((choice & NOTIFY_IN_FOCUS) || focus_return != GDK_WINDOW_XWINDOW(cnv->window->window)) { | 97 if ((choice & NOTIFY_IN_FOCUS) || |
98 focus_return != GDK_WINDOW_XWINDOW(cnv->window->window)) { | |
95 if (method & METHOD_STRING) | 99 if (method & METHOD_STRING) |
96 string_add(cnv->window); | 100 string_add(cnv->window); |
97 if (method & METHOD_COUNT) | 101 if (method & METHOD_COUNT) |
98 count_add(cnv->window); | 102 count_add(cnv->window, 0); |
99 if (method & METHOD_QUOTE) | 103 if (method & METHOD_QUOTE) |
100 quote_add(cnv->window); | 104 quote_add(cnv->window); |
101 if (method & METHOD_URGENT) | 105 if (method & METHOD_URGENT) |
102 urgent_add(cnv); | 106 urgent_add(cnv); |
103 } | 107 } |
114 * and if that method is currently selected. | 118 * and if that method is currently selected. |
115 * If we did and it is then set option so that it can be re-added */ | 119 * If we did and it is then set option so that it can be re-added */ |
116 if (clean || (method & METHOD_QUOTE)) | 120 if (clean || (method & METHOD_QUOTE)) |
117 if (quote_remove(c->window) && (method & METHOD_QUOTE)) | 121 if (quote_remove(c->window) && (method & METHOD_QUOTE)) |
118 option ^= METHOD_QUOTE; | 122 option ^= METHOD_QUOTE; |
123 | |
119 if (clean || (method & METHOD_COUNT)) | 124 if (clean || (method & METHOD_COUNT)) |
120 if (count_remove(c->window) && (method & METHOD_COUNT)) | 125 if (count_remove(c->window) && (method & METHOD_COUNT)) |
121 option ^= METHOD_COUNT; | 126 option ^= METHOD_COUNT; |
127 | |
122 if (clean || (method & METHOD_STRING)) | 128 if (clean || (method & METHOD_STRING)) |
123 if (string_remove(c->window) && (method & METHOD_STRING)) | 129 if (string_remove(c->window) && (method & METHOD_STRING)) |
124 option ^= METHOD_STRING; | 130 option ^= METHOD_STRING; |
131 | |
125 if (clean || (method & METHOD_URGENT)) | 132 if (clean || (method & METHOD_URGENT)) |
126 if (urgent_remove(c) && (method & METHOD_URGENT)) | 133 if (urgent_remove(c) && (method & METHOD_URGENT)) |
127 option ^= METHOD_URGENT; | 134 option ^= METHOD_URGENT; |
135 | |
128 return option; | 136 return option; |
129 } | 137 } |
130 | 138 |
131 void chat_recv_im(struct gaim_connection *gc, int id, char **who, char **text) { | 139 void chat_recv_im(struct gaim_connection *gc, int id, char **who, char **text) { |
132 struct conversation *c = find_chat(gc, id); | 140 struct conversation *c = find_chat(gc, id); |
166 } | 174 } |
167 | 175 |
168 if (choice & NOTIFY_CLICK) { | 176 if (choice & NOTIFY_CLICK) { |
169 g_signal_connect(G_OBJECT(c->window), "button_press_event", G_CALLBACK(un_star), NULL); | 177 g_signal_connect(G_OBJECT(c->window), "button_press_event", G_CALLBACK(un_star), NULL); |
170 | 178 |
171 g_signal_connect(G_OBJECT(c->text), "button_press_event", G_CALLBACK(un_star_window), NULL); | 179 g_signal_connect_swapped(G_OBJECT(c->text), "button_press_event", G_CALLBACK(un_star), G_OBJECT(c->window)); |
172 | 180 |
173 g_signal_connect(G_OBJECT(c->entry), "button_press_event", G_CALLBACK(un_star_window), NULL); | 181 g_signal_connect_swapped(G_OBJECT(c->entry), "button_press_event", G_CALLBACK(un_star), G_OBJECT(c->window)); |
174 } | 182 } |
175 | 183 |
176 if (choice & NOTIFY_TYPE) { | 184 if (choice & NOTIFY_TYPE) { |
177 g_signal_connect(G_OBJECT(c->entry), "key-press-event", G_CALLBACK(un_star_window), NULL); | 185 g_signal_connect_swapped(G_OBJECT(c->entry), "key-press-event", G_CALLBACK(un_star), G_OBJECT(c->window)); |
178 } | 186 } |
179 | 187 |
180 g_object_set_data(G_OBJECT(c->window), "user_data", c); | 188 g_object_set_data(G_OBJECT(c->window), "user_data", c); |
181 g_object_set_data(G_OBJECT(c->window), "notify_data", GUINT_TO_POINTER(choice)); | 189 g_object_set_data(G_OBJECT(c->window), "notify_data", GUINT_TO_POINTER(choice)); |
182 return 0; | 190 return 0; |
183 } | 191 } |
184 | 192 |
193 void detach_signals(struct conversation *c) { | |
194 guint options = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(c->window), "notify_data")); | |
195 | |
196 if (options & NOTIFY_FOCUS) { | |
197 g_signal_handlers_disconnect_by_func(G_OBJECT(c->window), un_star, NULL); | |
198 } | |
199 if (options & NOTIFY_CLICK) { | |
200 g_signal_handlers_disconnect_by_func(G_OBJECT(c->window), un_star, NULL); | |
201 g_signal_handlers_disconnect_by_func(G_OBJECT(c->text), un_star, c->window); | |
202 g_signal_handlers_disconnect_by_func(G_OBJECT(c->entry), un_star, c->window); | |
203 } | |
204 | |
205 if (options & NOTIFY_TYPE) { | |
206 g_signal_handlers_disconnect_by_func(G_OBJECT(c->entry), un_star, c->window); | |
207 } | |
208 } | |
209 | |
185 void new_conv(char *who) { | 210 void new_conv(char *who) { |
186 struct conversation *c = find_conversation(who); | 211 struct conversation *c = find_conversation(who); |
187 | 212 |
188 if (c && (type & TYPE_IM)) | 213 if (c && (type & TYPE_IM)) |
189 attach_signals(c); | 214 attach_signals(c); |
196 if (c && (type & TYPE_CHAT)) | 221 if (c && (type & TYPE_CHAT)) |
197 attach_signals(c); | 222 attach_signals(c); |
198 return; | 223 return; |
199 } | 224 } |
200 | 225 |
201 void un_star(GtkWidget *widget, gpointer data) { | 226 int un_star(GtkWidget *widget, gpointer data) { |
202 struct conversation *c = g_object_get_data(G_OBJECT(widget), "user_data"); | 227 struct conversation *c = g_object_get_data(G_OBJECT(widget), "user_data"); |
203 | 228 |
204 if (method & METHOD_QUOTE) | 229 if (method & METHOD_QUOTE) |
205 quote_remove(widget); | 230 quote_remove(widget); |
206 if (method & METHOD_COUNT) | 231 if (method & METHOD_COUNT) |
207 count_remove(widget); | 232 count_remove(widget); |
208 if (method & METHOD_STRING) | 233 if (method & METHOD_STRING) |
209 string_remove(widget); | 234 string_remove(widget); |
210 if (c && method & METHOD_URGENT) | 235 if (c && method & METHOD_URGENT) |
211 urgent_remove(c); | 236 urgent_remove(c); |
212 return; | |
213 } | |
214 | |
215 int un_star_window(GtkWidget *widget, gpointer data) { | |
216 GtkWidget *parent = gtk_widget_get_ancestor(widget, GTK_TYPE_WINDOW); | |
217 un_star(parent, data); | |
218 /* return 0 so that the event continues to propagate */ | |
219 return 0; | 237 return 0; |
220 } | 238 } |
221 | 239 |
222 /* This function returns the number in [ ]'s or 0 */ | 240 /* This function returns the number in [ ]'s or 0 */ |
223 int counter (char *buf, int *length) { | 241 int counter (char *buf, int *length) { |
262 return TRUE; | 280 return TRUE; |
263 } | 281 } |
264 return FALSE; | 282 return FALSE; |
265 } | 283 } |
266 | 284 |
267 void count_add(GtkWidget *widget) { | 285 void count_add(GtkWidget *widget, int number) { |
268 char buf[256]; | 286 char buf[256]; |
269 int c, length; | 287 int c, length; |
270 GtkWindow *win = GTK_WINDOW(widget); | 288 GtkWindow *win = GTK_WINDOW(widget); |
271 | 289 |
272 strncpy(buf, win->title, sizeof(buf)); | 290 strncpy(buf, win->title, sizeof(buf)); |
273 c = counter(buf, &length); | 291 c = counter(buf, &length); |
274 if (!c) { | 292 if (number) { |
293 g_snprintf(buf, sizeof(buf), "[%d] %s", number, win->title); | |
294 } else if (!c) { | |
275 g_snprintf(buf, sizeof(buf), "[1] %s", win->title); | 295 g_snprintf(buf, sizeof(buf), "[1] %s", win->title); |
276 } | 296 } else if (!g_strncasecmp(buf, "[", 1)) { |
277 else if (!g_strncasecmp(buf, "[", 1)) { | |
278 g_snprintf(buf, sizeof(buf), "[%d] %s", c+1, &win->title[3+length]); | 297 g_snprintf(buf, sizeof(buf), "[%d] %s", c+1, &win->title[3+length]); |
279 } | 298 } |
280 gtk_window_set_title(win, buf); | 299 gtk_window_set_title(win, buf); |
281 } | 300 } |
282 | 301 |
285 GtkWindow *win = GTK_WINDOW(widget); | 304 GtkWindow *win = GTK_WINDOW(widget); |
286 int length; | 305 int length; |
287 | 306 |
288 strncpy(buf, win->title, sizeof(buf)); | 307 strncpy(buf, win->title, sizeof(buf)); |
289 if (!g_strncasecmp(buf, "[", 1)) { | 308 if (!g_strncasecmp(buf, "[", 1)) { |
290 counter(buf, &length); | 309 Number = counter(buf, &length); |
291 g_snprintf(buf, sizeof(buf), "%s", &win->title[3+length]); | 310 g_snprintf(buf, sizeof(buf), "%s", &win->title[3+length]); |
292 gtk_window_set_title(win, buf); | 311 gtk_window_set_title(win, buf); |
293 return TRUE; | 312 return TRUE; |
294 } | 313 } |
295 return FALSE; | 314 return FALSE; |
324 hints->flags |= XUrgencyHint; | 343 hints->flags |= XUrgencyHint; |
325 XSetWMHints(GDK_WINDOW_XDISPLAY(c->window->window), GDK_WINDOW_XWINDOW(c->window->window), hints); | 344 XSetWMHints(GDK_WINDOW_XDISPLAY(c->window->window), GDK_WINDOW_XWINDOW(c->window->window), hints); |
326 } | 345 } |
327 | 346 |
328 gboolean urgent_remove(struct conversation *c) { | 347 gboolean urgent_remove(struct conversation *c) { |
329 GdkWindow *win = c->window->window; | 348 if ((c->is_chat && (chat_options & OPT_CHAT_ONE_WINDOW)) || (!c->is_chat && (im_options & OPT_IM_ONE_WINDOW))) { |
330 | 349 if (c->is_chat) { |
331 XWMHints *hints = XGetWMHints(GDK_WINDOW_XDISPLAY(win), GDK_WINDOW_XWINDOW(win)); | 350 struct conversation *c = (struct conversation *)chats->data; |
332 if (hints->flags & XUrgencyHint) { | 351 GdkWindow *win = c->window->window; |
333 hints->flags &= ~XUrgencyHint; | 352 |
334 XSetWMHints(GDK_WINDOW_XDISPLAY(win), GDK_WINDOW_XWINDOW(win), hints); | 353 XWMHints *hints = XGetWMHints(GDK_WINDOW_XDISPLAY(win), GDK_WINDOW_XWINDOW(win)); |
335 return TRUE; | 354 if (hints->flags & XUrgencyHint) { |
336 } | 355 hints->flags &= ~XUrgencyHint; |
337 return FALSE; | 356 XSetWMHints(GDK_WINDOW_XDISPLAY(c->window->window), GDK_WINDOW_XWINDOW(c->window->window), hints); |
357 return TRUE; | |
358 } | |
359 return FALSE; | |
360 } else { | |
361 struct conversation *c = (struct conversation *)conversations->data; | |
362 GdkWindow *win = c->window->window; | |
363 | |
364 XWMHints *hints = XGetWMHints(GDK_WINDOW_XDISPLAY(win), GDK_WINDOW_XWINDOW(win)); | |
365 if (hints->flags & XUrgencyHint) { | |
366 hints->flags &= ~XUrgencyHint; | |
367 XSetWMHints(GDK_WINDOW_XDISPLAY(c->window->window), GDK_WINDOW_XWINDOW(c->window->window), hints); | |
368 return TRUE; | |
369 } | |
370 return FALSE; | |
371 } | |
372 } else { | |
373 XWMHints *hints = XGetWMHints(GDK_WINDOW_XDISPLAY(c->window->window), GDK_WINDOW_XWINDOW(c->window->window)); | |
374 if (hints->flags & XUrgencyHint) { | |
375 hints->flags &= ~XUrgencyHint; | |
376 XSetWMHints(GDK_WINDOW_XDISPLAY(c->window->window), GDK_WINDOW_XWINDOW(c->window->window), hints); | |
377 return TRUE; | |
378 } | |
379 return FALSE; | |
380 } | |
338 } | 381 } |
339 | 382 |
340 void save_notify_prefs() { | 383 void save_notify_prefs() { |
341 gchar buf[1000]; | 384 gchar buf[1000]; |
342 FILE *fp; | 385 FILE *fp; |
370 type = atoi(parsed[0]); | 413 type = atoi(parsed[0]); |
371 if (!strcmp(parsed[1], "CHOICE")) | 414 if (!strcmp(parsed[1], "CHOICE")) |
372 choice = atoi(parsed[0]); | 415 choice = atoi(parsed[0]); |
373 if (!strcmp(parsed[1], "METHOD")) | 416 if (!strcmp(parsed[1], "METHOD")) |
374 method = atoi(parsed[0]); | 417 method = atoi(parsed[0]); |
375 if (!strcmp(parsed[1], "STRING")) | 418 if (!strcmp(parsed[1], "STRING")) { |
376 if (title_string != NULL) g_free(title_string); | 419 if (title_string != NULL) |
377 title_string = g_strdup(parsed[0]); | 420 g_free(title_string); |
421 title_string = g_strdup(parsed[0]); | |
422 } | |
378 } | 423 } |
379 g_strfreev(parsed); | 424 g_strfreev(parsed); |
380 } | 425 } |
381 fclose(fp); | 426 fclose(fp); |
382 return; | 427 return; |
408 method ^= METHOD_COUNT; | 453 method ^= METHOD_COUNT; |
409 else if (option == 8) | 454 else if (option == 8) |
410 type ^= TYPE_IM; | 455 type ^= TYPE_IM; |
411 else if (option == 9) | 456 else if (option == 9) |
412 type ^= TYPE_CHAT; | 457 type ^= TYPE_CHAT; |
458 else if (option == 10) { | |
459 /* I made an option for this as at least a way to have it save correctly | |
460 * I'd much rather there were better ways, and I don't want to save this | |
461 * no matter which pref is changed, that's too much of a hack */ | |
462 if (title_string != NULL) { | |
463 g_free(title_string); | |
464 title_string = g_strdup(gtk_entry_get_text(GTK_ENTRY(Entry))); | |
465 } | |
466 } | |
413 | 467 |
414 save_notify_prefs(); | 468 save_notify_prefs(); |
415 } | 469 } |
416 | 470 |
417 void apply_options(GtkWidget *widget, gpointer data) { | 471 void apply_options(GtkWidget *widget, gpointer data) { |
418 GList *cnv = conversations; | 472 GList *cnv = conversations; |
419 | 473 |
420 while (cnv) { | 474 while (cnv) { |
421 guint notification; | 475 guint notification; |
422 struct conversation *c = (struct conversation *) cnv->data; | 476 struct conversation *c = (struct conversation *) cnv->data; |
423 guint options = GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(c->window), "notify_data")); | 477 |
424 | 478 /* remove old notification signals */ |
425 if (options & NOTIFY_FOCUS) | 479 detach_signals(c); |
426 g_signal_handlers_disconnect_by_func(G_OBJECT(c->window), un_star, NULL); | 480 |
427 | |
428 if (options & NOTIFY_CLICK) { | |
429 g_signal_handlers_disconnect_by_func(G_OBJECT(c->window), un_star, NULL); | |
430 g_signal_handlers_disconnect_by_func(G_OBJECT(c->text), un_star_window, NULL); | |
431 g_signal_handlers_disconnect_by_func(G_OBJECT(c->entry), un_star_window, NULL); | |
432 } | |
433 | |
434 if (options & NOTIFY_TYPE) | |
435 g_signal_handlers_disconnect_by_func(G_OBJECT(c->entry), un_star_window, NULL); | |
436 | |
437 /* works except for count, always get reset to [1] */ | |
438 /* clean off all notification markings */ | 481 /* clean off all notification markings */ |
439 notification = unnotify(c, TRUE); | 482 notification = unnotify(c, TRUE); |
483 | |
440 /* re-add appropriate notification methods cleaned above */ | 484 /* re-add appropriate notification methods cleaned above */ |
441 if (notification & METHOD_STRING) /* re-add string */ | 485 if (notification & METHOD_STRING) /* re-add string */ |
442 string_add(c->window); | 486 string_add(c->window); |
443 if (notification & METHOD_QUOTE) /* re-add quote */ | 487 if (notification & METHOD_QUOTE) /* re-add quote */ |
444 quote_add(c->window); | 488 quote_add(c->window); |
445 if (notification & METHOD_COUNT) /* re-add count */ | 489 if (notification & METHOD_COUNT) /* re-add count */ |
446 count_add(c->window); | 490 count_add(c->window, Number); |
447 if (notification & METHOD_URGENT) /* re-add urgent */ | 491 if (notification & METHOD_URGENT) /* re-add urgent */ |
448 urgent_add(c); | 492 urgent_add(c); |
493 | |
449 /* attach new unnotification signals */ | 494 /* attach new unnotification signals */ |
450 attach_signals(c); | 495 attach_signals(c); |
451 | 496 |
452 cnv = cnv->next; | 497 cnv = cnv->next; |
453 } | 498 } |
455 return; | 500 return; |
456 } | 501 } |
457 | 502 |
458 char *gaim_plugin_init(GModule *hndl) { | 503 char *gaim_plugin_init(GModule *hndl) { |
459 handle = hndl; | 504 handle = hndl; |
505 title_string = g_strdup("(*) "); | |
460 | 506 |
461 load_notify_prefs(); | 507 load_notify_prefs(); |
462 | 508 |
463 gaim_signal_connect(handle, event_im_recv, im_recv_im, NULL); | 509 gaim_signal_connect(handle, event_im_recv, im_recv_im, NULL); |
464 gaim_signal_connect(handle, event_chat_recv, chat_recv_im, NULL); | 510 gaim_signal_connect(handle, event_chat_recv, chat_recv_im, NULL); |
472 void gaim_plugin_remove() { | 518 void gaim_plugin_remove() { |
473 GList *c = conversations; | 519 GList *c = conversations; |
474 | 520 |
475 while (c) { | 521 while (c) { |
476 struct conversation *cnv = (struct conversation *)c->data; | 522 struct conversation *cnv = (struct conversation *)c->data; |
523 | |
524 detach_signals(cnv); | |
477 un_star(cnv->window, NULL); | 525 un_star(cnv->window, NULL); |
526 | |
478 c = c->next; | 527 c = c->next; |
479 } | 528 } |
529 | |
530 /* this might be a hack I'm not sure, I don't think so but... */ | |
531 g_free(title_string); | |
480 } | 532 } |
481 | 533 |
482 struct gaim_plugin_description desc; | 534 struct gaim_plugin_description desc; |
483 struct gaim_plugin_description *gaim_plugin_desc() { | 535 struct gaim_plugin_description *gaim_plugin_desc() { |
484 desc.api_version = PLUGIN_API_VERSION; | 536 desc.api_version = PLUGIN_API_VERSION; |
508 | 560 |
509 vbox = make_frame(ret, _("Notify For")); | 561 vbox = make_frame(ret, _("Notify For")); |
510 toggle = gtk_check_button_new_with_mnemonic(_("_IM windows")); | 562 toggle = gtk_check_button_new_with_mnemonic(_("_IM windows")); |
511 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | 563 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); |
512 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), type & TYPE_IM); | 564 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), type & TYPE_IM); |
513 g_signal_connect(GTK_OBJECT(toggle), "toggled", G_CALLBACK(options), GINT_TO_POINTER(7)); | 565 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options), GINT_TO_POINTER(8)); |
514 | 566 |
515 toggle = gtk_check_button_new_with_mnemonic(_("_Chat windows")); | 567 toggle = gtk_check_button_new_with_mnemonic(_("_Chat windows")); |
516 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | 568 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); |
517 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), type & TYPE_CHAT); | 569 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), type & TYPE_CHAT); |
518 g_signal_connect(GTK_OBJECT(toggle), "toggled", G_CALLBACK(options), GINT_TO_POINTER(8)); | 570 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options), GINT_TO_POINTER(9)); |
519 | 571 |
520 /*--------------*/ | 572 /*--------------*/ |
521 vbox = make_frame(ret, _("Notification Methods")); | 573 vbox = make_frame(ret, _("Notification Methods")); |
522 hbox = gtk_hbox_new(FALSE, 18); | 574 hbox = gtk_hbox_new(FALSE, 18); |
523 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); | 575 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
524 toggle = gtk_check_button_new_with_mnemonic(_("Prepend _string into window title:")); | 576 toggle = gtk_check_button_new_with_mnemonic(_("Prepend _string into window title (hit enter to save):")); |
525 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), method & METHOD_STRING); | 577 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), method & METHOD_STRING); |
526 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options), GINT_TO_POINTER(3)); | 578 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options), GINT_TO_POINTER(3)); |
527 gtk_box_pack_start(GTK_BOX(hbox), toggle, FALSE, FALSE, 0); | 579 gtk_box_pack_start(GTK_BOX(hbox), toggle, FALSE, FALSE, 0); |
528 Entry = gtk_entry_new_with_max_length(7); | 580 Entry = gtk_entry_new(); |
581 gtk_entry_set_max_length(GTK_ENTRY(Entry), 10); | |
529 gtk_widget_set_sensitive(GTK_WIDGET(Entry), method & METHOD_STRING); | 582 gtk_widget_set_sensitive(GTK_WIDGET(Entry), method & METHOD_STRING); |
530 gtk_box_pack_start(GTK_BOX(hbox), Entry, FALSE, FALSE, 0); | 583 gtk_box_pack_start(GTK_BOX(hbox), Entry, FALSE, FALSE, 0); |
531 gtk_entry_set_text(GTK_ENTRY(Entry), title_string); | 584 gtk_entry_set_text(GTK_ENTRY(Entry), title_string); |
585 g_signal_connect(G_OBJECT(Entry), "activate", G_CALLBACK(options), GINT_TO_POINTER(10)); | |
532 | 586 |
533 toggle = gtk_check_button_new_with_mnemonic(_("_Quote window title")); | 587 toggle = gtk_check_button_new_with_mnemonic(_("_Quote window title")); |
534 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); | 588 gtk_box_pack_start(GTK_BOX(vbox), toggle, FALSE, FALSE, 0); |
535 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), method & METHOD_QUOTE); | 589 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(toggle), method & METHOD_QUOTE); |
536 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options), GINT_TO_POINTER(4)); | 590 g_signal_connect(G_OBJECT(toggle), "toggled", G_CALLBACK(options), GINT_TO_POINTER(4)); |