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;