| 383 destroy_dialog(NULL, icondlg); |
383 destroy_dialog(NULL, icondlg); |
| 384 icondlg = NULL; |
384 icondlg = NULL; |
| 385 } |
385 } |
| 386 } |
386 } |
| 387 |
387 |
| 388 static void do_warn(GtkWidget *widget, struct warning *w) |
388 static void do_warn(GtkWidget *widget, gint resp, struct warning *w) |
| 389 { |
389 { |
| 390 serv_warn(w->gc, w->who, (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w->anon))) ? 1 : 0); |
390 if (resp == GTK_RESPONSE_OK) |
| |
391 serv_warn(w->gc, w->who, (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w->anon))) ? 1 : 0); |
| 391 |
392 |
| 392 destroy_dialog(NULL, w->window); |
393 destroy_dialog(NULL, w->window); |
| 393 } |
|
| 394 |
|
| 395 static void free_warn_data(GtkObject *obj, struct warning *w) |
|
| 396 { |
|
| 397 g_free(w); |
394 g_free(w); |
| 398 } |
395 } |
| 399 |
396 |
| 400 void show_warn_dialog(struct gaim_connection *gc, char *who) |
397 void show_warn_dialog(struct gaim_connection *gc, char *who) |
| 401 { |
398 { |
| 402 GtkWidget *cancel; |
399 char *filename = g_build_filename(DATADIR, "pixmaps", "gaim", "dialogs", "gaim_warning.png", NULL); |
| 403 GtkWidget *warn; |
400 char *labeltext; |
| |
401 GtkWidget *hbox, *vbox; |
| 404 GtkWidget *label; |
402 GtkWidget *label; |
| 405 GtkWidget *vbox; |
403 GtkWidget *img = gtk_image_new_from_file(filename); |
| 406 GtkWidget *bbox; |
404 struct conversation *c = find_conversation(who); |
| 407 GtkWidget *frame; |
|
| 408 GtkWidget *fbox; |
|
| 409 char buf[128]; |
|
| 410 |
405 |
| 411 struct warning *w = g_new0(struct warning, 1); |
406 struct warning *w = g_new0(struct warning, 1); |
| 412 w->who = who; |
407 w->who = who; |
| 413 w->gc = gc; |
408 w->gc = gc; |
| 414 |
409 |
| 415 GAIM_DIALOG(w->window); |
410 g_free(filename); |
| |
411 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); |
| |
412 |
| |
413 w->window = gtk_dialog_new_with_buttons("", GTK_WINDOW(c->window), GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, "_Warn", GTK_RESPONSE_OK, NULL); |
| |
414 gtk_dialog_set_default_response (GTK_DIALOG(w->window), GTK_RESPONSE_OK); |
| |
415 g_signal_connect(G_OBJECT(w->window), "response", G_CALLBACK(do_warn), w); |
| |
416 |
| |
417 gtk_container_set_border_width (GTK_CONTAINER(w->window), 6); |
| |
418 gtk_window_set_resizable(GTK_WINDOW(w->window), FALSE); |
| |
419 gtk_dialog_set_has_separator(GTK_DIALOG(w->window), FALSE); |
| |
420 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(w->window)->vbox), 12); |
| |
421 gtk_container_set_border_width (GTK_CONTAINER(GTK_DIALOG(w->window)->vbox), 6); |
| |
422 |
| |
423 hbox = gtk_hbox_new(FALSE, 12); |
| |
424 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(w->window)->vbox), hbox); |
| |
425 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); |
| |
426 |
| |
427 vbox = gtk_vbox_new(FALSE, 0); |
| |
428 gtk_container_add(GTK_CONTAINER(hbox), vbox); |
| |
429 labeltext = g_strdup_printf(_("<span weight=\"bold\" size=\"larger\">Warn %s?</span>\n\n" |
| |
430 "This will increase %s's warning level and he or she will be subject to harsher rate limiting.\n"), who, who); |
| |
431 label = gtk_label_new(NULL); |
| |
432 gtk_label_set_markup(GTK_LABEL(label), labeltext); |
| |
433 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
| |
434 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
| |
435 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); |
| |
436 g_free(labeltext); |
| |
437 |
| |
438 w->anon = gtk_check_button_new_with_mnemonic(_("Warn _anonymously?")); |
| |
439 gtk_box_pack_start(GTK_BOX(vbox), w->anon, FALSE, FALSE, 0); |
| |
440 |
| |
441 hbox = gtk_hbox_new(FALSE, 6); |
| |
442 gtk_container_add(GTK_CONTAINER(vbox), hbox); |
| |
443 img = gtk_image_new_from_stock(GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_MENU); |
| |
444 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); |
| |
445 labeltext = _("<b>Anonymous warnings are less severe.</b>"); |
| |
446 /* labeltext = _("Anonymous warnings are less severe."); */ |
| |
447 label = gtk_label_new(NULL); |
| |
448 gtk_label_set_markup(GTK_LABEL(label), labeltext); |
| |
449 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
| |
450 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); |
| |
451 |
| 416 dialogwindows = g_list_prepend(dialogwindows, w->window); |
452 dialogwindows = g_list_prepend(dialogwindows, w->window); |
| 417 gtk_window_set_wmclass(GTK_WINDOW(w->window), "warning", "Gaim"); |
453 gtk_widget_show_all(w->window); |
| 418 gtk_window_set_policy(GTK_WINDOW(w->window), FALSE, FALSE, TRUE); |
|
| 419 gtk_window_set_title(GTK_WINDOW(w->window), _("Gaim - Warn user?")); |
|
| 420 gtk_container_set_border_width(GTK_CONTAINER(w->window), 5); |
|
| 421 gtk_signal_connect(GTK_OBJECT(w->window), "delete_event", |
|
| 422 GTK_SIGNAL_FUNC(destroy_dialog), w->window); |
|
| 423 gtk_signal_connect(GTK_OBJECT(w->window), "delete_event", GTK_SIGNAL_FUNC(free_warn_data), w); |
|
| 424 gtk_widget_realize(w->window); |
|
| 425 |
|
| 426 fbox = gtk_vbox_new(FALSE, 5); |
|
| 427 gtk_container_add(GTK_CONTAINER(w->window), fbox); |
|
| 428 gtk_widget_show(fbox); |
|
| 429 |
|
| 430 frame = gtk_frame_new(_("Warn")); |
|
| 431 gtk_box_pack_start(GTK_BOX(fbox), frame, FALSE, FALSE, 5); |
|
| 432 gtk_widget_show(frame); |
|
| 433 |
|
| 434 vbox = gtk_vbox_new(FALSE, 5); |
|
| 435 gtk_container_add(GTK_CONTAINER(frame), vbox); |
|
| 436 gtk_widget_show(vbox); |
|
| 437 |
|
| 438 g_snprintf(buf, 127, _("Do you really want to warn %s?"), who); |
|
| 439 label = gtk_label_new(buf); |
|
| 440 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 5); |
|
| 441 gtk_widget_show(label); |
|
| 442 |
|
| 443 w->anon = gtk_check_button_new_with_label(_("Warn anonymously?")); |
|
| 444 gtk_box_pack_start(GTK_BOX(vbox), w->anon, TRUE, TRUE, 5); |
|
| 445 gtk_widget_show(w->anon); |
|
| 446 |
|
| 447 label = gtk_label_new(_("Anonymous warnings are less harsh.")); |
|
| 448 gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 5); |
|
| 449 gtk_widget_show(label); |
|
| 450 |
|
| 451 bbox = gtk_hbox_new(TRUE, 10); |
|
| 452 gtk_box_pack_start(GTK_BOX(fbox), bbox, FALSE, FALSE, 5); |
|
| 453 gtk_widget_show(bbox); |
|
| 454 |
|
| 455 cancel = picture_button(w->window, _("Cancel"), cancel_xpm); |
|
| 456 gtk_box_pack_end(GTK_BOX(bbox), cancel, FALSE, FALSE, 5); |
|
| 457 gtk_signal_connect(GTK_OBJECT(cancel), "clicked", GTK_SIGNAL_FUNC(destroy_dialog), w->window); |
|
| 458 |
|
| 459 warn = picture_button(w->window, _("Warn"), warn_xpm); |
|
| 460 gtk_box_pack_end(GTK_BOX(bbox), warn, FALSE, FALSE, 5); |
|
| 461 gtk_signal_connect(GTK_OBJECT(warn), "clicked", GTK_SIGNAL_FUNC(do_warn), w); |
|
| 462 |
|
| 463 gtk_widget_show(w->window); |
|
| 464 } |
454 } |
| 465 |
455 |
| 466 void do_remove_buddy(struct buddy *b) |
456 void do_remove_buddy(struct buddy *b) |
| 467 { |
457 { |
| 468 struct group *g = find_group_by_buddy(b->gc, b->name); |
458 struct group *g = find_group_by_buddy(b->gc, b->name); |