Mercurial > pidgin
comparison src/dialogs.c @ 5436:ad445074d239
[gaim-migrate @ 5818]
Another big commit. Ugh. I need a very smart regexp.
Core/UI split do_error_dialog(), and soon the mail dialogs! Yay! This
should work without problems at all, but standard disclaimer..
committer: Tailor Script <tailor@pidgin.im>
| author | Christian Hammond <chipx86@chipx86.com> |
|---|---|
| date | Sun, 18 May 2003 19:59:02 +0000 |
| parents | 2c4188300aba |
| children | cce2d7868c78 |
comparison
equal
deleted
inserted
replaced
| 5435:a2f26666de42 | 5436:ad445074d239 |
|---|---|
| 47 #include <gtk/gtk.h> | 47 #include <gtk/gtk.h> |
| 48 #include "gaim.h" | 48 #include "gaim.h" |
| 49 #include "gtkimhtml.h" | 49 #include "gtkimhtml.h" |
| 50 #include "prpl.h" | 50 #include "prpl.h" |
| 51 #include "gtkblist.h" | 51 #include "gtkblist.h" |
| 52 #include "notify.h" | |
| 52 | 53 |
| 53 #ifdef _WIN32 | 54 #ifdef _WIN32 |
| 54 #include "win32dep.h" | 55 #include "win32dep.h" |
| 55 #endif | 56 #endif |
| 56 | 57 |
| 484 } | 485 } |
| 485 | 486 |
| 486 /*------------------------------------------------------------------------*/ | 487 /*------------------------------------------------------------------------*/ |
| 487 /* The dialog for getting an error */ | 488 /* The dialog for getting an error */ |
| 488 /*------------------------------------------------------------------------*/ | 489 /*------------------------------------------------------------------------*/ |
| 489 | |
| 490 GtkWidget *do_error_dialog(const char *primary, const char *secondary, int type) | |
| 491 { | |
| 492 GtkWidget *d; | |
| 493 GtkWidget *label; | |
| 494 GtkWidget *img = NULL; | |
| 495 GtkWidget *hbox; | |
| 496 char labeltext[1024 * 2]; | |
| 497 const char *name = NULL; | |
| 498 | |
| 499 /* These are the GTK stock dialog icons with our little Gaim logo on top. | |
| 500 * Inspired by the GIMP. */ | |
| 501 switch (type){ | |
| 502 case GAIM_LOGO: | |
| 503 name = GAIM_STOCK_ICON_ONLINE; | |
| 504 break; | |
| 505 case GAIM_INFO: | |
| 506 name = GAIM_STOCK_DIALOG_INFO; | |
| 507 break; | |
| 508 case GAIM_WARNING: | |
| 509 name = GAIM_STOCK_DIALOG_WARNING; | |
| 510 break; | |
| 511 case GAIM_ERROR: | |
| 512 name = GAIM_STOCK_DIALOG_ERROR; | |
| 513 break; | |
| 514 } | |
| 515 | |
| 516 if (name) { | |
| 517 img = gtk_image_new_from_stock(name, GTK_ICON_SIZE_DIALOG); | |
| 518 gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
| 519 } | |
| 520 | |
| 521 d = gtk_dialog_new_with_buttons("", NULL, 0, GTK_STOCK_OK, GTK_RESPONSE_ACCEPT, NULL); | |
| 522 g_signal_connect(d, "response", G_CALLBACK(gtk_widget_destroy), NULL); | |
| 523 | |
| 524 gtk_container_set_border_width (GTK_CONTAINER(d), 6); | |
| 525 gtk_window_set_resizable(GTK_WINDOW(d), FALSE); | |
| 526 gtk_dialog_set_has_separator(GTK_DIALOG(d), FALSE); | |
| 527 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(d)->vbox), 12); | |
| 528 gtk_container_set_border_width (GTK_CONTAINER(GTK_DIALOG(d)->vbox), 6); | |
| 529 | |
| 530 hbox = gtk_hbox_new(FALSE, 12); | |
| 531 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(d)->vbox), hbox); | |
| 532 if (img) { | |
| 533 gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
| 534 } | |
| 535 | |
| 536 g_snprintf(labeltext, sizeof(labeltext), "<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s", primary, secondary ? secondary : ""); | |
| 537 | |
| 538 label = gtk_label_new(NULL); | |
| 539 gtk_label_set_markup(GTK_LABEL(label), labeltext); | |
| 540 gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
| 541 gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 542 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); | |
| 543 | |
| 544 gtk_widget_show_all(d); | |
| 545 | |
| 546 return d; | |
| 547 } | |
| 548 | |
| 549 static void do_im(GtkWidget *widget, int resp, struct getuserinfo *info) | 490 static void do_im(GtkWidget *widget, int resp, struct getuserinfo *info) |
| 550 { | 491 { |
| 551 const char *who; | 492 const char *who; |
| 552 struct gaim_conversation *conv; | 493 struct gaim_conversation *conv; |
| 553 struct gaim_account *account; | 494 struct gaim_account *account; |
| 1399 } | 1340 } |
| 1400 } | 1341 } |
| 1401 } | 1342 } |
| 1402 | 1343 |
| 1403 if (!ac->account) { | 1344 if (!ac->account) { |
| 1404 do_error_dialog( | 1345 gaim_notify_error(NULL, NULL, |
| 1405 _("You are not currently signed on with any protocols " | 1346 _("You are not currently signed on with any " |
| 1406 "that have the ability to chat."), NULL, GAIM_ERROR); | 1347 "protocols that have the ability to chat."), NULL); |
| 1407 return; | 1348 return; |
| 1408 } | 1349 } |
| 1409 | 1350 |
| 1410 ac->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); | 1351 ac->sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
| 1411 | 1352 |
| 1412 ac->window = gtk_dialog_new_with_buttons(_("Add Chat"), | 1353 ac->window = gtk_dialog_new_with_buttons(_("Add Chat"), |
| 2157 orig = gtk_entry_get_text(GTK_ENTRY(b->original)); | 2098 orig = gtk_entry_get_text(GTK_ENTRY(b->original)); |
| 2158 new1 = gtk_entry_get_text(GTK_ENTRY(b->new1)); | 2099 new1 = gtk_entry_get_text(GTK_ENTRY(b->new1)); |
| 2159 new2 = gtk_entry_get_text(GTK_ENTRY(b->new2)); | 2100 new2 = gtk_entry_get_text(GTK_ENTRY(b->new2)); |
| 2160 | 2101 |
| 2161 if (g_utf8_collate(new1, new2)) { | 2102 if (g_utf8_collate(new1, new2)) { |
| 2162 do_error_dialog(_("New Passwords Do Not Match"), NULL, GAIM_ERROR); | 2103 gaim_notify_error(NULL, NULL, |
| 2104 _("New passwords do not match."), NULL); | |
| 2163 return; | 2105 return; |
| 2164 } | 2106 } |
| 2165 | 2107 |
| 2166 if ((strlen(orig) < 1) || (strlen(new1) < 1) || (strlen(new2) < 1)) { | 2108 if ((strlen(orig) < 1) || (strlen(new1) < 1) || (strlen(new2) < 1)) { |
| 2167 do_error_dialog(_("Fill out all fields completely"), NULL, GAIM_ERROR); | 2109 gaim_notify_error(NULL, NULL, |
| 2110 _("Fill out all fields completely."), NULL); | |
| 2168 return; | 2111 return; |
| 2169 } | 2112 } |
| 2170 | 2113 |
| 2171 serv_change_passwd(b->gc, orig, new1); | 2114 serv_change_passwd(b->gc, orig, new1); |
| 2172 g_snprintf(b->gc->account->password, sizeof(b->gc->account->password), "%s", new1); | 2115 g_snprintf(b->gc->account->password, sizeof(b->gc->account->password), "%s", new1); |
| 3309 int check_away_mess(struct create_away *ca, int type) | 3252 int check_away_mess(struct create_away *ca, int type) |
| 3310 { | 3253 { |
| 3311 char *msg; | 3254 char *msg; |
| 3312 if ((strlen(gtk_entry_get_text(GTK_ENTRY(ca->entry))) == 0) && (type == 1)) { | 3255 if ((strlen(gtk_entry_get_text(GTK_ENTRY(ca->entry))) == 0) && (type == 1)) { |
| 3313 /* We shouldn't allow a blank title */ | 3256 /* We shouldn't allow a blank title */ |
| 3314 do_error_dialog(_("You cannot save an away message with a blank title"), | 3257 gaim_notify_error(NULL, NULL, |
| 3315 _("Please give the message a title, or choose \"Use\" to use " | 3258 _("You cannot save an away message with a " |
| 3316 "without saving."), GAIM_ERROR); | 3259 "blank title"), |
| 3260 _("Please give the message a title, or choose " | |
| 3261 "\"Use\" to use without saving.")); | |
| 3317 return 0; | 3262 return 0; |
| 3318 } | 3263 } |
| 3319 | 3264 |
| 3320 msg = gtk_text_view_get_text(GTK_TEXT_VIEW(ca->text), FALSE); | 3265 msg = gtk_text_view_get_text(GTK_TEXT_VIEW(ca->text), FALSE); |
| 3321 | 3266 |
| 3322 if (!msg && (type <= 1)) { | 3267 if (!msg && (type <= 1)) { |
| 3323 /* We shouldn't allow a blank message */ | 3268 /* We shouldn't allow a blank message */ |
| 3324 do_error_dialog(_("You cannot create an empty away message"), NULL, GAIM_ERROR); | 3269 gaim_notify_error(NULL, NULL, |
| 3270 _("You cannot create an empty away message"), NULL); | |
| 3325 return 0; | 3271 return 0; |
| 3326 } | 3272 } |
| 3327 | 3273 |
| 3328 g_free(msg); | 3274 g_free(msg); |
| 3329 | 3275 |
| 3843 return; | 3789 return; |
| 3844 | 3790 |
| 3845 if ((fp_new = fopen(path, "w")) == NULL) { | 3791 if ((fp_new = fopen(path, "w")) == NULL) { |
| 3846 g_snprintf(error, BUF_LONG, | 3792 g_snprintf(error, BUF_LONG, |
| 3847 _("Couldn't write to %s."), path); | 3793 _("Couldn't write to %s."), path); |
| 3848 do_error_dialog(error, strerror(errno), GAIM_ERROR); | 3794 gaim_notify_error(NULL, NULL, error, strerror(errno)); |
| 3849 return; | 3795 return; |
| 3850 } | 3796 } |
| 3851 | 3797 |
| 3852 if ((fp_old = fopen(filename, "r")) == NULL) { | 3798 if ((fp_old = fopen(filename, "r")) == NULL) { |
| 3853 g_snprintf(error, BUF_LONG, | 3799 g_snprintf(error, BUF_LONG, |
| 3854 _("Couldn't write to %s."), filename); | 3800 _("Couldn't write to %s."), filename); |
| 3855 do_error_dialog(error, strerror(errno), GAIM_ERROR); | 3801 gaim_notify_error(NULL, NULL, error, strerror(errno)); |
| 3856 fclose(fp_new); | 3802 fclose(fp_new); |
| 3857 return; | 3803 return; |
| 3858 } | 3804 } |
| 3859 | 3805 |
| 3860 while (fgets(buf, BUF_LONG, fp_old)) | 3806 while (fgets(buf, BUF_LONG, fp_old)) |
| 3904 g_snprintf(filename, 256, "%s" G_DIR_SEPARATOR_S "logs" G_DIR_SEPARATOR_S "%s%s", tmp, | 3850 g_snprintf(filename, 256, "%s" G_DIR_SEPARATOR_S "logs" G_DIR_SEPARATOR_S "%s%s", tmp, |
| 3905 name ? normalize(name) : "system", name ? ".log" : ""); | 3851 name ? normalize(name) : "system", name ? ".log" : ""); |
| 3906 | 3852 |
| 3907 if ((remove(filename)) == -1) { | 3853 if ((remove(filename)) == -1) { |
| 3908 g_snprintf(buf, 256, _("Couldn't remove file %s." ), filename); | 3854 g_snprintf(buf, 256, _("Couldn't remove file %s." ), filename); |
| 3909 do_error_dialog(buf, strerror(errno), GAIM_ERROR); | 3855 gaim_notify_error(NULL, NULL, buf, strerror(errno)); |
| 3910 } | 3856 } |
| 3911 | 3857 |
| 3912 window = g_object_get_data(G_OBJECT(w), "log_window"); | 3858 window = g_object_get_data(G_OBJECT(w), "log_window"); |
| 3913 destroy_dialog(NULL, window); | 3859 destroy_dialog(NULL, window); |
| 3914 } | 3860 } |
| 3977 g_snprintf(filename, 256, "%s" G_DIR_SEPARATOR_S "logs" G_DIR_SEPARATOR_S "system", tmp); | 3923 g_snprintf(filename, 256, "%s" G_DIR_SEPARATOR_S "logs" G_DIR_SEPARATOR_S "system", tmp); |
| 3978 } | 3924 } |
| 3979 if ((fp = fopen(filename, "r")) == NULL) { | 3925 if ((fp = fopen(filename, "r")) == NULL) { |
| 3980 if (view->name) { | 3926 if (view->name) { |
| 3981 g_snprintf(buf, BUF_LONG, _("Couldn't open log file %s."), filename); | 3927 g_snprintf(buf, BUF_LONG, _("Couldn't open log file %s."), filename); |
| 3982 do_error_dialog(buf, strerror(errno), GAIM_ERROR); | 3928 gaim_notify_error(NULL, NULL, buf, strerror(errno)); |
| 3983 } | 3929 } |
| 3984 /* If the system log doesn't exist.. no message just show empty system log window. | 3930 /* If the system log doesn't exist.. no message just show empty system log window. |
| 3985 That way user knows that the log is empty :) | 3931 That way user knows that the log is empty :) |
| 3986 */ | 3932 */ |
| 3987 return; | 3933 return; |
| 4139 if (name) { | 4085 if (name) { |
| 4140 char *tmp = gaim_user_dir(); | 4086 char *tmp = gaim_user_dir(); |
| 4141 g_snprintf(filename, 256, "%s" G_DIR_SEPARATOR_S "logs" G_DIR_SEPARATOR_S "%s.log", tmp, normalize(name)); | 4087 g_snprintf(filename, 256, "%s" G_DIR_SEPARATOR_S "logs" G_DIR_SEPARATOR_S "%s.log", tmp, normalize(name)); |
| 4142 if ((fp = fopen(filename, "r")) == NULL) { | 4088 if ((fp = fopen(filename, "r")) == NULL) { |
| 4143 g_snprintf(buf, BUF_LONG, _("Couldn't open log file %s"), filename); | 4089 g_snprintf(buf, BUF_LONG, _("Couldn't open log file %s"), filename); |
| 4144 do_error_dialog(buf, strerror(errno), GAIM_ERROR); | 4090 gaim_notify_error(NULL, NULL, buf, strerror(errno)); |
| 4145 return; | 4091 return; |
| 4146 } | 4092 } |
| 4147 | 4093 |
| 4148 list_store = gtk_list_store_new(2, | 4094 list_store = gtk_list_store_new(2, |
| 4149 G_TYPE_STRING, | 4095 G_TYPE_STRING, |
