Mercurial > pidgin
comparison src/multi.c @ 2402:6e3dc0b3b9b1
[gaim-migrate @ 2415]
whoops. *now* multi.h doesn't depend on gtk.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Mon, 01 Oct 2001 07:50:07 +0000 |
parents | 520257562955 |
children | 8555e48c02df |
comparison
equal
deleted
inserted
replaced
2401:86c9b44a35ae | 2402:6e3dc0b3b9b1 |
---|---|
883 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(acctedit_close), W); | 883 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(acctedit_close), W); |
884 | 884 |
885 gtk_widget_show_all(acctedit); | 885 gtk_widget_show_all(acctedit); |
886 } | 886 } |
887 | 887 |
888 struct signon_meter { | |
889 struct gaim_connection *gc; | |
890 GtkWidget *window; | |
891 GtkWidget *progress; | |
892 GtkWidget *status; | |
893 }; | |
894 static GSList *meters = NULL; | |
895 | |
896 static struct signon_meter *find_signon_meter(struct gaim_connection *gc) | |
897 { | |
898 GSList *m = meters; | |
899 while (m) { | |
900 if (((struct signon_meter *)m->data)->gc == gc) | |
901 return m->data; | |
902 m = m->next; | |
903 } | |
904 return NULL; | |
905 } | |
906 | |
888 void account_online(struct gaim_connection *gc) | 907 void account_online(struct gaim_connection *gc) |
889 { | 908 { |
890 int i; | 909 int i; |
910 struct signon_meter *meter = find_signon_meter(gc); | |
891 | 911 |
892 /* first we hide the login progress meter */ | 912 /* first we hide the login progress meter */ |
893 if (gc->meter) | 913 if (meter) { |
894 gtk_widget_destroy(gc->meter); | 914 gtk_widget_destroy(meter->window); |
895 gc->meter = NULL; | 915 meters = g_slist_remove(meters, meter); |
916 g_free(meter); | |
917 } | |
896 | 918 |
897 /* then we do the buddy list stuff */ | 919 /* then we do the buddy list stuff */ |
898 if (mainwindow) | 920 if (mainwindow) |
899 gtk_widget_hide(mainwindow); | 921 gtk_widget_hide(mainwindow); |
900 | 922 |
951 } | 973 } |
952 | 974 |
953 void account_offline(struct gaim_connection *gc) | 975 void account_offline(struct gaim_connection *gc) |
954 { | 976 { |
955 int i; | 977 int i; |
956 if (gc->meter) | 978 struct signon_meter *meter = find_signon_meter(gc); |
957 gtk_widget_destroy(gc->meter); | 979 if (meter) { |
958 gc->meter = NULL; | 980 gtk_widget_destroy(meter->window); |
981 meters = g_slist_remove(meters, meter); | |
982 g_free(meter); | |
983 } | |
959 gc->user->gc = NULL; /* wasn't that awkward? */ | 984 gc->user->gc = NULL; /* wasn't that awkward? */ |
960 if (!acctedit) | 985 if (!acctedit) |
961 return; | 986 return; |
962 i = gtk_clist_find_row_from_data(GTK_CLIST(list), gc->user); | 987 i = gtk_clist_find_row_from_data(GTK_CLIST(list), gc->user); |
963 gtk_clist_set_text(GTK_CLIST(list), i, 1, "No"); | 988 gtk_clist_set_text(GTK_CLIST(list), i, 1, "No"); |
978 } | 1003 } |
979 u = u->next; | 1004 u = u->next; |
980 } | 1005 } |
981 } | 1006 } |
982 | 1007 |
983 static void cancel_signon(GtkWidget *button, struct gaim_connection *gc) | 1008 static void cancel_signon(GtkWidget *button, struct signon_meter *meter) |
984 { | 1009 { |
985 gc->wants_to_die = TRUE; | 1010 meter->gc->wants_to_die = TRUE; |
986 signoff(gc); | 1011 signoff(meter->gc); |
987 } | 1012 } |
988 | 1013 |
989 static gint meter_destroy(GtkWidget *meter, GdkEvent *evt, struct gaim_connection *gc) | 1014 static gint meter_destroy(GtkWidget *window, GdkEvent *evt, struct signon_meter *meter) |
990 { | 1015 { |
991 return TRUE; | 1016 return TRUE; |
992 } | 1017 } |
993 | 1018 |
994 void set_login_progress(struct gaim_connection *gc, float howfar, char *message) | 1019 void set_login_progress(struct gaim_connection *gc, float howfar, char *message) |
995 { | 1020 { |
1021 struct signon_meter *meter = find_signon_meter(gc); | |
1022 | |
996 if (mainwindow) | 1023 if (mainwindow) |
997 gtk_widget_hide(mainwindow); | 1024 gtk_widget_hide(mainwindow); |
998 | 1025 |
999 if (!gc->meter) { | 1026 if (!meter) { |
1000 GtkWidget *box, *label, *button; | 1027 GtkWidget *box, *label, *button; |
1001 char buf[256]; | 1028 char buf[256]; |
1002 | 1029 |
1003 gc->meter = gtk_window_new(GTK_WINDOW_DIALOG); | 1030 meter = g_new0(struct signon_meter, 1); |
1004 gtk_window_set_policy(GTK_WINDOW(gc->meter), 0, 0, 1); | 1031 meter->gc = gc; |
1005 gtk_window_set_wmclass(GTK_WINDOW(gc->meter), "signon", "Gaim"); | 1032 |
1006 gtk_container_set_border_width(GTK_CONTAINER(gc->meter), 5); | 1033 meter->window = gtk_window_new(GTK_WINDOW_DIALOG); |
1034 gtk_window_set_policy(GTK_WINDOW(meter->window), 0, 0, 1); | |
1035 gtk_window_set_wmclass(GTK_WINDOW(meter->window), "signon", "Gaim"); | |
1036 gtk_container_set_border_width(GTK_CONTAINER(meter->window), 5); | |
1007 g_snprintf(buf, sizeof(buf), "%s Signing On", gc->username); | 1037 g_snprintf(buf, sizeof(buf), "%s Signing On", gc->username); |
1008 gtk_window_set_title(GTK_WINDOW(gc->meter), buf); | 1038 gtk_window_set_title(GTK_WINDOW(meter->window), buf); |
1009 gtk_signal_connect(GTK_OBJECT(gc->meter), "delete_event", | 1039 gtk_signal_connect(GTK_OBJECT(meter->window), "delete_event", |
1010 GTK_SIGNAL_FUNC(meter_destroy), gc); | 1040 GTK_SIGNAL_FUNC(meter_destroy), meter); |
1011 gtk_widget_realize(gc->meter); | 1041 gtk_widget_realize(meter->window); |
1012 aol_icon(gc->meter->window); | 1042 aol_icon(meter->window->window); |
1013 | 1043 |
1014 box = gtk_vbox_new(FALSE, 5); | 1044 box = gtk_vbox_new(FALSE, 5); |
1015 gtk_container_add(GTK_CONTAINER(gc->meter), box); | 1045 gtk_container_add(GTK_CONTAINER(meter->window), box); |
1016 gtk_widget_show(box); | 1046 gtk_widget_show(box); |
1017 | 1047 |
1018 label = gtk_label_new(buf); | 1048 label = gtk_label_new(buf); |
1019 gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); | 1049 gtk_box_pack_start(GTK_BOX(box), label, FALSE, FALSE, 0); |
1020 gtk_widget_show(label); | 1050 gtk_widget_show(label); |
1021 | 1051 |
1022 gc->progress = gtk_progress_bar_new(); | 1052 meter->progress = gtk_progress_bar_new(); |
1023 gtk_widget_set_usize(gc->progress, 150, 0); | 1053 gtk_widget_set_usize(meter->progress, 150, 0); |
1024 gtk_box_pack_start(GTK_BOX(box), gc->progress, FALSE, FALSE, 0); | 1054 gtk_box_pack_start(GTK_BOX(box), meter->progress, FALSE, FALSE, 0); |
1025 gtk_widget_show(gc->progress); | 1055 gtk_widget_show(meter->progress); |
1026 | 1056 |
1027 gc->status = gtk_statusbar_new(); | 1057 meter->status = gtk_statusbar_new(); |
1028 gtk_widget_set_usize(gc->status, 150, 0); | 1058 gtk_widget_set_usize(meter->status, 150, 0); |
1029 gtk_box_pack_start(GTK_BOX(box), gc->status, FALSE, FALSE, 0); | 1059 gtk_box_pack_start(GTK_BOX(box), meter->status, FALSE, FALSE, 0); |
1030 gtk_widget_show(gc->status); | 1060 gtk_widget_show(meter->status); |
1031 | 1061 |
1032 button = gtk_button_new_with_label(_("Cancel")); | 1062 button = gtk_button_new_with_label(_("Cancel")); |
1033 gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0); | 1063 gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 0); |
1034 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cancel_signon), gc); | 1064 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(cancel_signon), meter); |
1035 gtk_widget_show(button); | 1065 gtk_widget_show(button); |
1036 | 1066 |
1037 gtk_widget_show(gc->meter); | 1067 gtk_widget_show(meter->window); |
1038 } | 1068 } |
1039 | 1069 |
1040 gtk_progress_bar_update(GTK_PROGRESS_BAR(gc->progress), howfar / LOGIN_STEPS); | 1070 gtk_progress_bar_update(GTK_PROGRESS_BAR(meter->progress), howfar / LOGIN_STEPS); |
1041 gtk_statusbar_pop(GTK_STATUSBAR(gc->status), 1); | 1071 gtk_statusbar_pop(GTK_STATUSBAR(meter->status), 1); |
1042 gtk_statusbar_push(GTK_STATUSBAR(gc->status), 1, message); | 1072 gtk_statusbar_push(GTK_STATUSBAR(meter->status), 1, message); |
1043 } | 1073 } |
1044 | 1074 |
1045 static void set_kick_null(GtkObject *obj, struct aim_user *u) | 1075 static void set_kick_null(GtkObject *obj, struct aim_user *u) |
1046 { | 1076 { |
1047 u->kick_dlg = NULL; | 1077 u->kick_dlg = NULL; |
1048 } | 1078 } |
1049 | 1079 |
1050 void hide_login_progress(struct gaim_connection *gc, char *why) | 1080 void hide_login_progress(struct gaim_connection *gc, char *why) |
1051 { | 1081 { |
1052 char buf[2048]; | 1082 char buf[2048]; |
1083 struct signon_meter *meter = find_signon_meter(gc); | |
1053 sprintf(buf, _("%s\n%s was unable to sign on: %s"), full_date(), gc->username, why); | 1084 sprintf(buf, _("%s\n%s was unable to sign on: %s"), full_date(), gc->username, why); |
1054 if (gc->user->kick_dlg) | 1085 if (gc->user->kick_dlg) |
1055 gtk_widget_destroy(gc->user->kick_dlg); | 1086 gtk_widget_destroy(gc->user->kick_dlg); |
1056 gc->user->kick_dlg = do_error_dialog(buf, _("Signon Error")); | 1087 gc->user->kick_dlg = do_error_dialog(buf, _("Signon Error")); |
1057 gtk_signal_connect(GTK_OBJECT(gc->user->kick_dlg), "destroy", | 1088 gtk_signal_connect(GTK_OBJECT(gc->user->kick_dlg), "destroy", |
1058 GTK_SIGNAL_FUNC(set_kick_null), gc->user); | 1089 GTK_SIGNAL_FUNC(set_kick_null), gc->user); |
1059 if (gc->meter) | 1090 if (meter) { |
1060 gtk_widget_destroy(gc->meter); | 1091 gtk_widget_destroy(meter->window); |
1061 gc->meter = NULL; | 1092 meters = g_slist_remove(meters, meter); |
1093 g_free(meter); | |
1094 } | |
1062 } | 1095 } |
1063 | 1096 |
1064 void signoff_all(gpointer w, gpointer d) | 1097 void signoff_all(gpointer w, gpointer d) |
1065 { | 1098 { |
1066 GSList *c = connections; | 1099 GSList *c = connections; |