Mercurial > pidgin
diff src/prpl.c @ 5498:cce2d7868c78
[gaim-migrate @ 5894]
Bye bye do_ask_dialog()! Mwahahahahhaha!
And wit -> with. What wit with the witty with wit comment, wit you jutht
thaw.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Fri, 23 May 2003 02:42:52 +0000 |
parents | b7c0be69c749 |
children | f7dc3f656f03 |
line wrap: on
line diff
--- a/src/prpl.c Fri May 23 01:45:17 2003 +0000 +++ b/src/prpl.c Fri May 23 02:42:52 2003 +0000 @@ -66,118 +66,6 @@ return NULL; } -static GSList *do_ask_dialogs = NULL; - -struct doaskstruct { - GtkWidget *dialog; - GModule *handle; - void (*yesfunc)(gpointer); - void (*nofunc)(gpointer); - gpointer data; -}; - -void do_ask_cancel_by_handle(void *handle) -{ - GSList *d = do_ask_dialogs; - - gaim_debug(GAIM_DEBUG_MISC, "prpl", - "%d dialogs to search\n", g_slist_length(d)); - - while (d) { - struct doaskstruct *doask = d->data; - - d = d->next; - - if (doask->handle == handle) { - gaim_debug(GAIM_DEBUG_MISC, "prpl", - "Removing dialog, %d remain\n", g_slist_length(d)); - gtk_dialog_response(GTK_DIALOG(doask->dialog), GTK_RESPONSE_NONE); - } - } -} - -static void do_ask_callback(GtkDialog *d, gint resp, struct doaskstruct *doask) -{ - switch (resp) - { - case GTK_RESPONSE_YES: - if (doask->yesfunc) - doask->yesfunc(doask->data); - break; - default: - if (doask->nofunc) - doask->nofunc(doask->data); - break; - } - do_ask_dialogs = g_slist_remove(do_ask_dialogs, doask); - g_free(doask); - gtk_widget_destroy(GTK_WIDGET(d)); -} - -#define STOCK_ITEMIZE(r, l) if (!strcmp(r,yestext)) \ - yestext = l; \ - if (!strcmp(r,notext)) \ - notext = l; - -void do_ask_dialog(const char *prim, const char *sec, void *data, char *yestext, void *doit, char *notext, void *dont, GModule *handle, gboolean modal) -{ - GtkWidget *window; - GtkWidget *hbox; - GtkWidget *label; - char labeltext[1024 * 2]; - GtkWidget *img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG); - struct doaskstruct *doask = g_new0(struct doaskstruct, 1); - - gtk_misc_set_alignment(GTK_MISC(img), 0, 0); - - /* This is ugly. GTK Stock items will take a button with a label "gtk-cancel" and turn it into a - * Cancel button with a Cancel icon and whatnot. We want to avoid using anything gtk in the prpls - * so we replace "Cancel" with "gtk-cancel" right here. */ - STOCK_ITEMIZE("Add", GTK_STOCK_ADD); - STOCK_ITEMIZE("Apply", GTK_STOCK_APPLY); - STOCK_ITEMIZE("Cancel", GTK_STOCK_CANCEL); - STOCK_ITEMIZE("Close", GTK_STOCK_CLOSE); - STOCK_ITEMIZE("Delete", GTK_STOCK_DELETE); - STOCK_ITEMIZE("Remove", GTK_STOCK_REMOVE); - STOCK_ITEMIZE("Yes", GTK_STOCK_YES); - STOCK_ITEMIZE("No", GTK_STOCK_NO); - - window = gtk_dialog_new_with_buttons("", NULL, 0, notext, GTK_RESPONSE_NO, yestext, GTK_RESPONSE_YES, NULL); - - if (modal) { - gtk_window_set_modal(GTK_WINDOW(window), TRUE); - } - - gtk_dialog_set_default_response (GTK_DIALOG(window), GTK_RESPONSE_YES); - g_signal_connect(G_OBJECT(window), "response", G_CALLBACK(do_ask_callback), doask); - - 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); - - g_snprintf(labeltext, sizeof(labeltext), "<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s", prim, sec ? sec : ""); - label = gtk_label_new(NULL); - gtk_label_set_markup(GTK_LABEL(label), labeltext); - gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); - gtk_misc_set_alignment(GTK_MISC(label), 0, 0); - gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0); - - doask->dialog = window; - doask->handle = handle; - doask->yesfunc = doit; - doask->nofunc = dont; - doask->data = data; - do_ask_dialogs = g_slist_append(do_ask_dialogs, doask); - - gtk_widget_show_all(window); -} - static void proto_act(GtkObject *obj, struct proto_actions_menu *pam) { if (pam->callback && pam->gc) @@ -628,8 +516,10 @@ gaim_notify_info(NULL, NULL, _("Gaim - Information"), buf); } else - do_ask_dialog(_("Gaim - Confirm"), buf, ga, - _("Add"), do_add, _("Cancel"), dont_add, NULL, FALSE); + gaim_request_action(NULL, NULL, _("Add buddy to your list?"), buf, + 0, ga, 2, + _("Add"), G_CALLBACK(do_add), + _("Cancel"), G_CALLBACK(dont_add)); } static GtkWidget *regdlg = NULL;