Mercurial > pidgin
comparison src/prpl.c @ 2232:14e8978f86bb
[gaim-migrate @ 2242]
heh.
committer: Tailor Script <tailor@pidgin.im>
| author | Eric Warmenhoven <eric@warmenhoven.org> |
|---|---|
| date | Fri, 07 Sep 2001 08:58:24 +0000 |
| parents | 5014b802eb41 |
| children | 08387976d367 |
comparison
equal
deleted
inserted
replaced
| 2231:8c4ff1a368bd | 2232:14e8978f86bb |
|---|---|
| 28 #include "pixmaps/cancel.xpm" | 28 #include "pixmaps/cancel.xpm" |
| 29 #include "pixmaps/register.xpm" | 29 #include "pixmaps/register.xpm" |
| 30 | 30 |
| 31 GSList *protocols = NULL; | 31 GSList *protocols = NULL; |
| 32 | 32 |
| 33 static GtkWidget *regdialog = NULL; | |
| 34 static GtkWidget *regbox = NULL; | |
| 35 static struct prpl *regprpl = NULL; | |
| 36 | |
| 37 GtkWidget *protomenu = NULL; | 33 GtkWidget *protomenu = NULL; |
| 38 | 34 |
| 39 struct _prompt { | 35 struct _prompt { |
| 40 GtkWidget *window; | 36 GtkWidget *window; |
| 41 GtkWidget *entry; | 37 GtkWidget *entry; |
| 80 p = g_new0(struct prpl, 1); | 76 p = g_new0(struct prpl, 1); |
| 81 pi(p); | 77 pi(p); |
| 82 if ((old = find_prpl(p->protocol)) == NULL) | 78 if ((old = find_prpl(p->protocol)) == NULL) |
| 83 unload_protocol(old); | 79 unload_protocol(old); |
| 84 protocols = g_slist_insert_sorted(protocols, p, (GCompareFunc)proto_compare); | 80 protocols = g_slist_insert_sorted(protocols, p, (GCompareFunc)proto_compare); |
| 85 if (regdialog) | |
| 86 gtk_widget_destroy(regdialog); | |
| 87 regenerate_user_list(); | 81 regenerate_user_list(); |
| 88 } | 82 } |
| 89 | 83 |
| 90 void unload_protocol(struct prpl *p) | 84 void unload_protocol(struct prpl *p) |
| 91 { | 85 { |
| 233 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(act_prompt), p); | 227 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(act_prompt), p); |
| 234 | 228 |
| 235 gtk_widget_show_all(window); | 229 gtk_widget_show_all(window); |
| 236 } | 230 } |
| 237 | 231 |
| 238 static void delete_reg(gpointer a, gpointer b) | |
| 239 { | |
| 240 GtkWidget *tmp = regdialog; | |
| 241 if (regdialog) { | |
| 242 regdialog = NULL; | |
| 243 gtk_widget_destroy(tmp); | |
| 244 } | |
| 245 } | |
| 246 | |
| 247 void prepare_regbox_for_next() | |
| 248 { | |
| 249 while (GTK_BOX(regbox)->children) | |
| 250 gtk_container_remove(GTK_CONTAINER(regbox), | |
| 251 ((GtkBoxChild *)GTK_BOX(regbox)->children->data)->widget); | |
| 252 } | |
| 253 | |
| 254 static void reg_prpl(gpointer a, struct prpl *p) | |
| 255 { | |
| 256 prepare_regbox_for_next(); | |
| 257 regprpl = p; | |
| 258 (*regprpl->draw_new_user)(regbox); | |
| 259 } | |
| 260 | |
| 261 static void do_reg(gpointer a, gpointer b) | |
| 262 { | |
| 263 if (regprpl->do_new_user) | |
| 264 (*regprpl->do_new_user)(); | |
| 265 } | |
| 266 | |
| 267 void register_user(gpointer a, gpointer b) | |
| 268 { | |
| 269 GSList *pr = protocols; | |
| 270 struct prpl *p = NULL, *q; | |
| 271 GtkWidget *box; | |
| 272 GtkWidget *frame; | |
| 273 GtkWidget *vbox; | |
| 274 GtkWidget *hbox; | |
| 275 GtkWidget *label; | |
| 276 GtkWidget *optmenu; | |
| 277 GtkWidget *menu; | |
| 278 GtkWidget *opt; | |
| 279 GtkWidget *button; | |
| 280 | |
| 281 if (regdialog) | |
| 282 return; | |
| 283 | |
| 284 while (pr) { | |
| 285 p = pr->data; | |
| 286 if (p->draw_new_user) | |
| 287 break; | |
| 288 pr = pr->next; | |
| 289 p = NULL; | |
| 290 } | |
| 291 if (p == NULL) | |
| 292 /* this should never happen because I said so. Hi mom. */ | |
| 293 return; | |
| 294 pr = protocols; | |
| 295 | |
| 296 regdialog = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
| 297 gtk_window_set_wmclass(GTK_WINDOW(regdialog), "registration", "Gaim"); | |
| 298 gtk_container_set_border_width(GTK_CONTAINER(regdialog), 5); | |
| 299 gtk_window_set_title(GTK_WINDOW(regdialog), _("Gaim - New User Registration")); | |
| 300 gtk_signal_connect(GTK_OBJECT(regdialog), "destroy", GTK_SIGNAL_FUNC(delete_reg), NULL); | |
| 301 gtk_widget_realize(regdialog); | |
| 302 aol_icon(regdialog->window); | |
| 303 | |
| 304 box = gtk_vbox_new(FALSE, 5); | |
| 305 gtk_container_add(GTK_CONTAINER(regdialog), box); | |
| 306 gtk_widget_show(box); | |
| 307 | |
| 308 frame = gtk_frame_new(_("New User Registration")); | |
| 309 gtk_box_pack_start(GTK_BOX(box), frame, FALSE, FALSE, 5); | |
| 310 gtk_widget_show(frame); | |
| 311 | |
| 312 vbox = gtk_vbox_new(FALSE, 5); | |
| 313 gtk_container_add(GTK_CONTAINER(frame), vbox); | |
| 314 gtk_widget_show(vbox); | |
| 315 | |
| 316 hbox = gtk_hbox_new(FALSE, 5); | |
| 317 gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 5); | |
| 318 gtk_widget_show(hbox); | |
| 319 | |
| 320 label = gtk_label_new(_("Register new user for")); | |
| 321 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); | |
| 322 gtk_widget_show(label); | |
| 323 | |
| 324 optmenu = gtk_option_menu_new(); | |
| 325 gtk_box_pack_start(GTK_BOX(hbox), optmenu, FALSE, FALSE, 5); | |
| 326 gtk_widget_show(optmenu); | |
| 327 | |
| 328 menu = gtk_menu_new(); | |
| 329 | |
| 330 while (pr) { | |
| 331 q = pr->data; | |
| 332 if (q->draw_new_user) { | |
| 333 opt = gtk_menu_item_new_with_label((*q->name)()); | |
| 334 gtk_signal_connect(GTK_OBJECT(opt), "activate", GTK_SIGNAL_FUNC(reg_prpl), q); | |
| 335 gtk_menu_append(GTK_MENU(menu), opt); | |
| 336 gtk_widget_show(opt); | |
| 337 } | |
| 338 pr = pr->next; | |
| 339 } | |
| 340 | |
| 341 gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), menu); | |
| 342 gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), 0); | |
| 343 regprpl = p; | |
| 344 | |
| 345 regbox = gtk_vbox_new(FALSE, 5); | |
| 346 gtk_box_pack_start(GTK_BOX(vbox), regbox, FALSE, FALSE, 5); | |
| 347 gtk_widget_show(regbox); | |
| 348 | |
| 349 (*regprpl->draw_new_user)(regbox); | |
| 350 | |
| 351 hbox = gtk_hbox_new(FALSE, 5); | |
| 352 gtk_box_pack_end(GTK_BOX(box), hbox, FALSE, FALSE, 5); | |
| 353 gtk_widget_show(hbox); | |
| 354 | |
| 355 button = picture_button(regdialog, _("Close"), cancel_xpm); | |
| 356 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 5); | |
| 357 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(delete_reg), NULL); | |
| 358 | |
| 359 button = picture_button(regdialog, _("Register"), register_xpm); | |
| 360 gtk_box_pack_end(GTK_BOX(hbox), button, FALSE, FALSE, 5); | |
| 361 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(do_reg), NULL); | |
| 362 | |
| 363 gtk_widget_show(regdialog); | |
| 364 } | |
| 365 | |
| 366 static void proto_act(GtkObject *obj, struct gaim_connection *gc) | 232 static void proto_act(GtkObject *obj, struct gaim_connection *gc) |
| 367 { | 233 { |
| 368 char *act = gtk_object_get_user_data(obj); | 234 char *act = gtk_object_get_user_data(obj); |
| 369 (*gc->prpl->do_action)(gc, act); | 235 (*gc->prpl->do_action)(gc, act); |
| 370 } | 236 } |
