Mercurial > pidgin.yaz
diff src/dialogs.c @ 3802:9bcb42faccc0
[gaim-migrate @ 3945]
Rewrote show_im_dialog and show_info_dialog.
Ported to gtkspell2. Gtkspell2 is a library available from
gtkspell.sf.net. It requires the pspell library. If you want the
"highlight misspelled words" feature to work, you must have this
library installed. If installed, configure will detect it and link
against it.
committer: Tailor Script <tailor@pidgin.im>
| author | Sean Egan <seanegan@gmail.com> |
|---|---|
| date | Sat, 26 Oct 2002 06:41:13 +0000 |
| parents | 7469dcf5ada5 |
| children | f9775881ea94 |
line wrap: on
line diff
--- a/src/dialogs.c Fri Oct 25 11:50:40 2002 +0000 +++ b/src/dialogs.c Sat Oct 26 06:41:13 2002 +0000 @@ -559,47 +559,52 @@ -static void do_im(GtkWidget *widget, GtkWidget *imentry) +static void do_im(GtkWidget *widget, int resp, GtkWidget *imentry) { char *who; struct conversation *c; - who = g_strdup(gtk_entry_get_text(GTK_ENTRY(imentry))); - destroy_dialog(NULL, imdialog); - imdialog = NULL; - - if (!g_strcasecmp(who, "")) { + if (resp == GTK_RESPONSE_OK) { + who = g_strdup(gtk_entry_get_text(GTK_ENTRY(imentry))); + destroy_dialog(NULL, imdialog); + imdialog = NULL; + + if (!g_strcasecmp(who, "")) { + g_free(who); + return; + } + + c = find_conversation(who); + + if (c == NULL) { + c = new_conversation(who); + } else { + gdk_window_raise(c->window->window); + } g_free(who); - return; } - - c = find_conversation(who); - - if (c == NULL) { - c = new_conversation(who); - } else { - gdk_window_raise(c->window->window); - } - g_free(who); + + destroy_dialog(NULL, widget); } -static void do_info(GtkWidget *widget, struct getuserinfo *info) +static void do_info(GtkWidget *widget, int resp, struct getuserinfo *info) { char *who; - who = g_strdup(normalize(gtk_entry_get_text(GTK_ENTRY(info->entry)))); - destroy_dialog(NULL, info->window); - - if (!g_strcasecmp(who, "")) { + if (resp == GTK_RESPONSE_OK) { + who = g_strdup(normalize(gtk_entry_get_text(GTK_ENTRY(info->entry)))); + + if (!g_strcasecmp(who, "")) { + g_free(who); + return; + } + + /* what do we want to do about this case? */ + if (info->gc) + serv_get_info(info->gc, who); g_free(who); - return; } - - /* what do we want to do about this case? */ - if (info->gc) - serv_get_info(info->gc, who); - - g_free(who); + gtk_widget_destroy(GTK_WIDGET(widget)); } void show_ee_dialog(int ee) @@ -663,56 +668,55 @@ void show_im_dialog() { - GtkWidget *mainbox; - GtkWidget *frame; - GtkWidget *fbox; - GtkWidget *bbox; - GtkWidget *button; - GtkWidget *imentry; + GtkWidget *hbox, *vbox; GtkWidget *label; + char *filename = g_build_filename(DATADIR, "pixmaps", "gaim", "dialogs", "gaim_question.png", NULL); + GtkWidget *img = gtk_image_new_from_file(filename); + GtkWidget *entry; if (!imdialog) { - GAIM_DIALOG(imdialog); - gtk_window_set_wmclass(GTK_WINDOW(imdialog), "imdialog", "Gaim"); - gtk_window_set_policy(GTK_WINDOW(imdialog), FALSE, TRUE, TRUE); - gtk_window_set_title(GTK_WINDOW(imdialog), _("Gaim - IM user")); - gtk_signal_connect(GTK_OBJECT(imdialog), "destroy", - GTK_SIGNAL_FUNC(destroy_dialog), imdialog); - gtk_widget_realize(imdialog); - - mainbox = gtk_vbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(mainbox), 5); - gtk_container_add(GTK_CONTAINER(imdialog), mainbox); - - frame = gtk_frame_new(_("Send Instant Message")); - gtk_box_pack_start(GTK_BOX(mainbox), frame, TRUE, TRUE, 0); - - fbox = gtk_hbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(fbox), 5); - gtk_container_add(GTK_CONTAINER(frame), fbox); - - label = gtk_label_new(_("IM who:")); - gtk_box_pack_start(GTK_BOX(fbox), label, FALSE, FALSE, 0); - - imentry = gtk_entry_new(); - gtk_box_pack_start(GTK_BOX(fbox), imentry, TRUE, TRUE, 0); - gtk_signal_connect(GTK_OBJECT(imentry), "activate", GTK_SIGNAL_FUNC(do_im), imentry); - gtk_widget_grab_focus(imentry); - - bbox = gtk_hbox_new(FALSE, 5); - gtk_box_pack_start(GTK_BOX(mainbox), bbox, FALSE, FALSE, 0); - - button = picture_button(imdialog, _("Cancel"), cancel_xpm); - gtk_box_pack_end(GTK_BOX(bbox), button, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - GTK_SIGNAL_FUNC(destroy_dialog), imdialog); - - button = picture_button(imdialog, _("OK"), ok_xpm); - gtk_box_pack_end(GTK_BOX(bbox), button, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(do_im), imentry); + imdialog = gtk_dialog_new_with_buttons("", NULL, GTK_DIALOG_MODAL, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); + gtk_dialog_set_default_response (GTK_DIALOG(imdialog), GTK_RESPONSE_OK); + gtk_container_set_border_width (GTK_CONTAINER(imdialog), 6); + gtk_window_set_resizable(GTK_WINDOW(imdialog), FALSE); + gtk_dialog_set_has_separator(GTK_DIALOG(imdialog), FALSE); + gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(imdialog)->vbox), 12); + gtk_container_set_border_width (GTK_CONTAINER(GTK_DIALOG(imdialog)->vbox), 6); + + hbox = gtk_hbox_new(FALSE, 12); + gtk_container_add(GTK_CONTAINER(GTK_DIALOG(imdialog)->vbox), hbox); + gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); + gtk_misc_set_alignment(GTK_MISC(img), 0, 0); + + vbox = gtk_vbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(hbox), vbox); + + label = gtk_label_new(_("Please enter the screenname of the person you would like to IM.\n")); + gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0); + gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); + + hbox = gtk_hbox_new(FALSE, 6); + gtk_container_add(GTK_CONTAINER(vbox), hbox); + + label = gtk_label_new(NULL); + gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Screenname")); + gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); + + entry = gtk_entry_new(); + gtk_entry_set_activates_default (GTK_ENTRY(entry), TRUE); + gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 0); + gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(entry)); + + g_signal_connect(G_OBJECT(imdialog), "response", G_CALLBACK(do_info), entry); + + dialogwindows = g_list_prepend(dialogwindows, imdialog->window); } gtk_widget_show_all(imdialog); + if (entry) + gtk_widget_grab_focus(GTK_WIDGET(entry)); } void show_info_select_account(GtkObject *w, struct gaim_connection *gc) @@ -723,58 +727,75 @@ void show_info_dialog() { - GtkWidget *mainbox; - GtkWidget *frame; - GtkWidget *table; - GtkWidget *bbox; - GtkWidget *button; + GtkWidget *window, *hbox, *vbox; GtkWidget *label; - GtkWidget *menu, *opt; - char buf[2048]; + char *filename = g_build_filename(DATADIR, "pixmaps", "gaim", "dialogs", "gaim_question.png", NULL); + GtkWidget *img = gtk_image_new_from_file(filename); + GtkWidget *table, *menu, *opt; GSList *g = connections; struct gaim_connection *c; - struct getuserinfo *info = g_new0(struct getuserinfo, 1); + char buf[256]; + info->gc = connections->data; - GAIM_DIALOG(info->window); - gtk_window_set_wmclass(GTK_WINDOW(info->window), "infodialog", "Gaim"); - gtk_window_set_policy(GTK_WINDOW(info->window), FALSE, TRUE, TRUE); - gtk_widget_realize(info->window); - - mainbox = gtk_vbox_new(FALSE, 5); - gtk_container_set_border_width(GTK_CONTAINER(mainbox), 5); - gtk_container_add(GTK_CONTAINER(info->window), mainbox); - - frame = gtk_frame_new(_("Get User Info")); - gtk_box_pack_start(GTK_BOX(mainbox), frame, TRUE, TRUE, 0); - + window = gtk_dialog_new_with_buttons("", blist ? GTK_WINDOW(blist) : NULL, GTK_DIALOG_MODAL, + GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); + gtk_dialog_set_default_response (GTK_DIALOG(window), GTK_RESPONSE_OK); + gtk_container_set_border_width (GTK_CONTAINER(window), 6); + gtk_window_set_resizable(GTK_WINDOW(window), FALSE); + gtk_dialog_set_has_separator(GTK_DIALOG(window), FALSE); + gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(window)->vbox), 12); + gtk_container_set_border_width (GTK_CONTAINER(GTK_DIALOG(window)->vbox), 6); + + hbox = gtk_hbox_new(FALSE, 12); + gtk_container_add(GTK_CONTAINER(GTK_DIALOG(window)->vbox), hbox); + gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); + gtk_misc_set_alignment(GTK_MISC(img), 0, 0); + + vbox = gtk_vbox_new(FALSE, 0); + gtk_container_add(GTK_CONTAINER(hbox), vbox); + + label = gtk_label_new(_("Please enter the screenname of the person whose info you would like to view.\n")); + gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0); + gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0); + table = gtk_table_new(2, 2, FALSE); - gtk_table_set_row_spacings(GTK_TABLE(table), 5); - gtk_table_set_col_spacings(GTK_TABLE(table), 5); - gtk_container_set_border_width(GTK_CONTAINER(table), 5); - gtk_container_add(GTK_CONTAINER(frame), table); - - label = gtk_label_new(_("User:")); + gtk_table_set_row_spacings(GTK_TABLE(table), 6); + gtk_table_set_col_spacings(GTK_TABLE(table), 6); + gtk_container_set_border_width(GTK_CONTAINER(table), 12); + gtk_box_pack_start(GTK_BOX(vbox), table, FALSE, FALSE, 0); + + label = gtk_label_new(NULL); + gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Screenname:")); + gtk_misc_set_alignment(GTK_LABEL(img), 0, 0); gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 0, 1); - gtk_widget_show(label); info->entry = gtk_entry_new(); gtk_table_attach_defaults(GTK_TABLE(table), info->entry, 1, 2, 0, 1); - + gtk_entry_set_activates_default (GTK_ENTRY(info->entry), TRUE); + gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(info->entry)); + if (connections->next) { - label = gtk_label_new(_("Account:")); + label = gtk_label_new(NULL); gtk_table_attach_defaults(GTK_TABLE(table), label, 0, 1, 1, 2); - gtk_widget_show(label); + gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), _("_Account:")); + gtk_misc_set_alignment(GTK_MISC(label), 0, 0); info->account = gtk_option_menu_new(); gtk_table_attach_defaults(GTK_TABLE(table), info->account, 1, 2, 1, 2); - + gtk_label_set_mnemonic_widget(GTK_LABEL(label), GTK_WIDGET(info->account)); + menu = gtk_menu_new(); while (g) { c = (struct gaim_connection *)g->data; + if (!c->prpl->get_info) { + g = g->next; + continue; + } g_snprintf(buf, sizeof(buf), "%s (%s)", c->username, c->prpl->name); opt = gtk_menu_item_new_with_label(buf); gtk_object_set_user_data(GTK_OBJECT(opt), info); @@ -783,40 +804,18 @@ GTK_SIGNAL_FUNC(show_info_select_account), c); gtk_menu_append(GTK_MENU(menu), opt); - gtk_widget_show(opt); - g = g->next; } - - gtk_widget_show(menu); + gtk_option_menu_set_menu(GTK_OPTION_MENU(info->account), menu); - gtk_widget_show(info->account); } - /* Handle closes right */ - gtk_signal_connect(GTK_OBJECT(info->entry), "activate", - GTK_SIGNAL_FUNC(do_info), info); - gtk_signal_connect(GTK_OBJECT(info->window), "destroy", - GTK_SIGNAL_FUNC(destroy_dialog), info->window); - - /* Buttons */ - bbox = gtk_hbox_new(FALSE, 5); - gtk_box_pack_start(GTK_BOX(mainbox), bbox, FALSE, FALSE, 0); - - button = picture_button(info->window, _("Cancel"), cancel_xpm); - gtk_box_pack_end(GTK_BOX(bbox), button, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(button), "clicked", - GTK_SIGNAL_FUNC(destroy_dialog), info->window); - - button = picture_button(info->window, _("OK"), ok_xpm); - gtk_box_pack_end(GTK_BOX(bbox), button, FALSE, FALSE, 0); - gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(do_info), info); - - /* Finish up */ - gtk_window_set_title(GTK_WINDOW(info->window), _("Gaim - Get User Info")); - gtk_widget_grab_focus(info->entry); - - gtk_widget_show_all(info->window); + g_signal_connect(G_OBJECT(window), "response", G_CALLBACK(do_info), info); + + + gtk_widget_show_all(window); + if (info->entry) + gtk_widget_grab_focus(GTK_WIDGET(info->entry)); }
