Mercurial > pidgin.yaz
diff src/prpl.c @ 1500:a054c28735fb
[gaim-migrate @ 1510]
You can now select your active id in yahoo. still need a good way to show what your active id is though.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Sat, 24 Feb 2001 09:23:56 +0000 |
parents | de0b946e86a4 |
children | 0b6e4d52de63 |
line wrap: on
line diff
--- a/src/prpl.c Fri Feb 23 23:58:35 2001 +0000 +++ b/src/prpl.c Sat Feb 24 09:23:56 2001 +0000 @@ -36,6 +36,14 @@ GtkWidget *protomenu = NULL; +struct _prompt { + GtkWidget *window; + GtkWidget *entry; + void (*doit)(void *, char *); + void (*dont)(void *); + void *data; +}; + struct prpl *find_prpl(int prot) { GSList *e = protocols; @@ -159,6 +167,74 @@ gtk_widget_show_all(window); } +static void des_prompt(GtkWidget *w, struct _prompt *p) +{ + if (p->dont) + (p->dont)(p->data); + gtk_widget_destroy(p->window); + g_free(p); +} + +static void act_prompt(GtkWidget *w, struct _prompt *p) +{ + if (p->doit) + (p->doit)(p->data, gtk_entry_get_text(GTK_ENTRY(p->entry))); + gtk_widget_destroy(p->window); +} + +void do_prompt_dialog(const char *text, void *data, void *doit, void *dont) +{ + GtkWidget *window; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *label; + GtkWidget *entry; + GtkWidget *button; + struct _prompt *p; + + p = g_new0(struct _prompt, 1); + p->data = data; + p->doit = doit; + p->dont = dont; + + window = gtk_window_new(GTK_WINDOW_DIALOG); + p->window = window; + gtk_window_set_wmclass(GTK_WINDOW(window), "prompt", "Gaim"); + gtk_window_set_policy(GTK_WINDOW(window), FALSE, TRUE, TRUE); + gtk_window_set_title(GTK_WINDOW(window), _("Gaim - Prompt")); + gtk_signal_connect(GTK_OBJECT(window), "destroy", GTK_SIGNAL_FUNC(des_prompt), p); + gtk_widget_realize(window); + aol_icon(window->window); + + vbox = gtk_vbox_new(FALSE, 5); + gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); + gtk_container_add(GTK_CONTAINER(window), vbox); + + hbox = gtk_hbox_new(FALSE, 5); + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); + + label = gtk_label_new(text); + gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0); + + entry = gtk_entry_new(); + gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(entry), "activate", GTK_SIGNAL_FUNC(act_prompt), p); + p->entry = entry; + + hbox = gtk_hbox_new(FALSE, 5); + gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); + + button = picture_button(window, _("Cancel"), cancel_xpm); + gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(des_win), window); + + button = picture_button(window, _("Accept"), ok_xpm); + gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 0); + gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(act_prompt), p); + + gtk_widget_show_all(window); +} + static void delete_reg(gpointer a, gpointer b) { GtkWidget *tmp = regdialog;