comparison src/dialogs.c @ 2602:c9192dea2bb1

[gaim-migrate @ 2615] desensitises the buttons while conversation is still being parsed.. thanks, BMiller. :) committer: Tailor Script <tailor@pidgin.im>
author Rob Flynn <gaim@robflynn.com>
date Thu, 25 Oct 2001 02:30:12 +0000
parents b2800bca74fe
children e0d4a23aac89
comparison
equal deleted inserted replaced
2601:61952dde7677 2602:c9192dea2bb1
3392 } 3392 }
3393 3393
3394 static void log_show_convo(GtkWidget *w, GtkWidget *layout) 3394 static void log_show_convo(GtkWidget *w, GtkWidget *layout)
3395 { 3395 {
3396 gchar buf[BUF_LONG]; 3396 gchar buf[BUF_LONG];
3397 long offset = (long)gtk_object_get_user_data(GTK_OBJECT(w)); 3397 long offset;
3398 int options = (int)gtk_object_get_data(GTK_OBJECT(w), "options"); 3398 int options;
3399 gchar *name = gtk_object_get_data(GTK_OBJECT(w), "name"); 3399 gchar *name;
3400 GtkWidget *bbox;
3401 GtkWidget *window;
3400 FILE *fp; 3402 FILE *fp;
3401 char filename[256]; 3403 char filename[256];
3402 int i=0; 3404 int i=0;
3403 GString *string; 3405 GString *string;
3404 3406 guint block;
3407
3408 offset = (long)gtk_object_get_user_data(GTK_OBJECT(w));
3409 options = (int)gtk_object_get_data(GTK_OBJECT(w), "options");
3410 name = gtk_object_get_data(GTK_OBJECT(w), "name");
3411 bbox = gtk_object_get_data(GTK_OBJECT(w), "box");
3412 window = gtk_object_get_data(GTK_OBJECT(w), "window");
3405 string = g_string_new(""); 3413 string = g_string_new("");
3406 3414
3407 if (name) { 3415 if (name) {
3408 char *tmp = gaim_user_dir(); 3416 char *tmp = gaim_user_dir();
3409 g_snprintf(filename, 256, "%s/logs/%s.log", tmp, normalize(name)); 3417 g_snprintf(filename, 256, "%s/logs/%s.log", tmp, normalize(name));
3416 if ((fp = fopen(filename, "r")) == NULL) { 3424 if ((fp = fopen(filename, "r")) == NULL) {
3417 g_snprintf(buf, BUF_LONG, "Unable to open log file %s", filename); 3425 g_snprintf(buf, BUF_LONG, "Unable to open log file %s", filename);
3418 do_error_dialog(buf, "Error!"); 3426 do_error_dialog(buf, "Error!");
3419 return; 3427 return;
3420 } 3428 }
3429
3430 gtk_widget_set_sensitive(bbox, FALSE);
3431 gtk_signal_disconnect_by_func(GTK_OBJECT(window), GTK_SIGNAL_FUNC(destroy_dialog), window);
3432 block = gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(dont_destroy), window);
3421 3433
3422 fseek(fp, offset, SEEK_SET); 3434 fseek(fp, offset, SEEK_SET);
3423 gtk_imhtml_clear(GTK_IMHTML(layout)); 3435 gtk_imhtml_clear(GTK_IMHTML(layout));
3424 while (gtk_events_pending()) 3436 while (gtk_events_pending())
3425 gtk_main_iteration(); 3437 gtk_main_iteration();
3442 } 3454 }
3443 3455
3444 } 3456 }
3445 gtk_imhtml_append_text(GTK_IMHTML(layout), string->str, options); 3457 gtk_imhtml_append_text(GTK_IMHTML(layout), string->str, options);
3446 gtk_imhtml_append_text(GTK_IMHTML(layout), "<BR>", options); 3458 gtk_imhtml_append_text(GTK_IMHTML(layout), "<BR>", options);
3459
3460 gtk_widget_set_sensitive(bbox, TRUE);
3461 gtk_signal_disconnect(GTK_OBJECT(window), block);
3462 gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(destroy_dialog), window);
3447 g_string_free(string, TRUE); 3463 g_string_free(string, TRUE);
3448 fclose(fp); 3464 fclose(fp);
3449 } 3465 }
3450 3466
3451 void show_log(char *name) 3467 void show_log(char *name)
3454 gchar buf[BUF_LONG]; 3470 gchar buf[BUF_LONG];
3455 FILE *fp; 3471 FILE *fp;
3456 GtkWidget *window; 3472 GtkWidget *window;
3457 GtkWidget *box; 3473 GtkWidget *box;
3458 GtkWidget *hbox; 3474 GtkWidget *hbox;
3475 GtkWidget *bbox;
3459 GtkWidget *sw; 3476 GtkWidget *sw;
3460 GtkWidget *layout; 3477 GtkWidget *layout;
3461 GtkWidget *close_button; 3478 GtkWidget *close_button;
3462 GtkWidget *clear_button; 3479 GtkWidget *clear_button;
3463 GtkWidget *save_button; 3480 GtkWidget *save_button;
3493 GTK_SIGNAL_FUNC(dont_destroy), window); 3510 GTK_SIGNAL_FUNC(dont_destroy), window);
3494 gtk_widget_realize(window); 3511 gtk_widget_realize(window);
3495 aol_icon(window->window); 3512 aol_icon(window->window);
3496 3513
3497 layout = gtk_imhtml_new(NULL, NULL); 3514 layout = gtk_imhtml_new(NULL, NULL);
3515 bbox = gtk_hbox_new(FALSE, 0);
3516
3498 3517
3499 box = gtk_vbox_new(FALSE, 5); 3518 box = gtk_vbox_new(FALSE, 5);
3500 gtk_container_add(GTK_CONTAINER(window), box); 3519 gtk_container_add(GTK_CONTAINER(window), box);
3501 3520
3502 hbox = gtk_hbox_new(FALSE, 5); 3521 hbox = gtk_hbox_new(FALSE, 5);
3539 g_snprintf(convo_start, length, "%s", temp); 3558 g_snprintf(convo_start, length, "%s", temp);
3540 item = gtk_list_item_new_with_label(convo_start); 3559 item = gtk_list_item_new_with_label(convo_start);
3541 gtk_object_set_user_data(GTK_OBJECT(item), (gpointer)offset); 3560 gtk_object_set_user_data(GTK_OBJECT(item), (gpointer)offset);
3542 gtk_object_set_data(GTK_OBJECT(item), "options", (gpointer)options); 3561 gtk_object_set_data(GTK_OBJECT(item), "options", (gpointer)options);
3543 gtk_object_set_data(GTK_OBJECT(item), "name", (gpointer)name); 3562 gtk_object_set_data(GTK_OBJECT(item), "name", (gpointer)name);
3563 gtk_object_set_data(GTK_OBJECT(item), "box", (gpointer)bbox);
3564 gtk_object_set_data(GTK_OBJECT(item), "window", (gpointer)window);
3544 gtk_signal_connect(GTK_OBJECT(item), "select", GTK_SIGNAL_FUNC(log_show_convo), layout); 3565 gtk_signal_connect(GTK_OBJECT(item), "select", GTK_SIGNAL_FUNC(log_show_convo), layout);
3545 gtk_container_add(GTK_CONTAINER(list), item); 3566 gtk_container_add(GTK_CONTAINER(list), item);
3546 gtk_widget_show(item); 3567 gtk_widget_show(item);
3547 } 3568 }
3548 } 3569 }
3549 fclose(fp); 3570 fclose(fp);
3550 } 3571 }
3551 3572
3573 gtk_signal_disconnect(GTK_OBJECT(window), block);
3574 gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(destroy_dialog), window);
3575
3552 frame = gtk_frame_new(_("Conversation")); 3576 frame = gtk_frame_new(_("Conversation"));
3553 gtk_widget_show(frame); 3577 gtk_widget_show(frame);
3554 3578
3555 sw = gtk_scrolled_window_new(NULL, NULL); 3579 sw = gtk_scrolled_window_new(NULL, NULL);
3556 gtk_container_set_border_width(GTK_CONTAINER(sw), 5); 3580 gtk_container_set_border_width(GTK_CONTAINER(sw), 5);
3561 3585
3562 gtk_signal_connect(GTK_OBJECT(layout), "url_clicked", open_url_nw, NULL); 3586 gtk_signal_connect(GTK_OBJECT(layout), "url_clicked", open_url_nw, NULL);
3563 gtk_container_add(GTK_CONTAINER(sw), layout); 3587 gtk_container_add(GTK_CONTAINER(sw), layout);
3564 gaim_setup_imhtml(layout); 3588 gaim_setup_imhtml(layout);
3565 3589
3566 hbox = gtk_hbox_new(FALSE, 0); 3590 gtk_box_pack_start(GTK_BOX(box), bbox, FALSE, FALSE, 0);
3567 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0); 3591 gtk_widget_set_sensitive(bbox, FALSE);
3568 3592
3569 close_button = picture_button(window, _("Close"), cancel_xpm); 3593 close_button = picture_button(window, _("Close"), cancel_xpm);
3570 gtk_box_pack_end(GTK_BOX(hbox), close_button, FALSE, FALSE, 5); 3594 gtk_box_pack_end(GTK_BOX(bbox), close_button, FALSE, FALSE, 5);
3571 gtk_widget_set_sensitive(close_button, FALSE); 3595 gtk_signal_connect(GTK_OBJECT(close_button), "clicked", GTK_SIGNAL_FUNC(destroy_dialog), window);
3572 3596
3573 clear_button = picture_button(window, _("Clear"), close_xpm); 3597 clear_button = picture_button(window, _("Clear"), close_xpm);
3574 gtk_object_set_user_data(GTK_OBJECT(clear_button), window); 3598 gtk_object_set_user_data(GTK_OBJECT(clear_button), window);
3575 gtk_box_pack_end(GTK_BOX(hbox), clear_button, FALSE, FALSE, 5); 3599 gtk_box_pack_end(GTK_BOX(bbox), clear_button, FALSE, FALSE, 5);
3576 gtk_widget_set_sensitive(clear_button, FALSE); 3600 gtk_signal_connect(GTK_OBJECT(clear_button), "clicked", GTK_SIGNAL_FUNC(show_clear_log), name);
3577 3601
3578 save_button = picture_button(window, _("Save"), save_xpm); 3602 save_button = picture_button(window, _("Save"), save_xpm);
3579 gtk_box_pack_end(GTK_BOX(hbox), save_button, FALSE, FALSE, 5); 3603 gtk_box_pack_end(GTK_BOX(bbox), save_button, FALSE, FALSE, 5);
3580 gtk_widget_set_sensitive(save_button, FALSE); 3604 gtk_signal_connect(GTK_OBJECT(save_button), "clicked", GTK_SIGNAL_FUNC(show_save_log), name);
3581 3605
3582 gtk_widget_show_all(window); 3606 gtk_widget_show_all(window);
3583 3607
3584 if (!name) { 3608 if (!name) {
3585 gtk_object_set_user_data(GTK_OBJECT(layout), (gpointer)0); 3609 gtk_object_set_user_data(GTK_OBJECT(layout), (gpointer)0);
3586 gtk_object_set_data(GTK_OBJECT(layout), "options", (gpointer)options); 3610 gtk_object_set_data(GTK_OBJECT(layout), "options", (gpointer)options);
3587 gtk_object_set_data(GTK_OBJECT(layout), "name", (gpointer)NULL); 3611 gtk_object_set_data(GTK_OBJECT(layout), "name", (gpointer)NULL);
3612 gtk_object_set_data(GTK_OBJECT(layout), "box", (gpointer)bbox);
3613 gtk_object_set_data(GTK_OBJECT(layout), "window", (gpointer)window);
3588 log_show_convo(layout, layout); 3614 log_show_convo(layout, layout);
3589 } else { 3615 } else {
3590 gtk_list_select_item(GTK_LIST(list), 0); 3616 gtk_list_select_item(GTK_LIST(list), 0);
3591 } 3617 }
3592
3593 gtk_signal_disconnect(GTK_OBJECT(window), block);
3594 gtk_signal_connect(GTK_OBJECT(window), "delete_event", GTK_SIGNAL_FUNC(destroy_dialog), window);
3595 gtk_signal_connect(GTK_OBJECT(close_button), "clicked", GTK_SIGNAL_FUNC(destroy_dialog), window);
3596 gtk_signal_connect(GTK_OBJECT(clear_button), "clicked", GTK_SIGNAL_FUNC(show_clear_log), name);
3597 gtk_signal_connect(GTK_OBJECT(save_button), "clicked", GTK_SIGNAL_FUNC(show_save_log), name);
3598 3618
3599 gtk_widget_set_sensitive(close_button, TRUE); 3619 gtk_widget_set_sensitive(bbox, TRUE);
3600 gtk_widget_set_sensitive(clear_button, TRUE);
3601 gtk_widget_set_sensitive(save_button, TRUE);
3602 3620
3603 return; 3621 return;
3604 } 3622 }
3605 3623
3606 /*------------------------------------------------------------------------*/ 3624 /*------------------------------------------------------------------------*/