Mercurial > pidgin
annotate src/buddy.c @ 780:c714def9cebb
[gaim-migrate @ 790]
You may be a geek if...
You've ever used a computer on Friday, Saturday and Sunday of the
same weekend.
You find yourself interrupting computer store salesman to correct
something he said.
The first thing you notice when walking in a business is their
computer system. ...and offer advice on how you would change it.
You've ever mounted a magnetic tape reel.
You own any shareware.
You know more IP addresses than phone numbers.
You've ever accidentally dialed an IP address.
Your friends use you as tech support.
You've ever named a computer.
You have your local computer store on speed dial.
You can't carry on a conversation without talking about computers.
Co-workers have to E-mail you about the fire alarm to get you out of
the building.
You've ever found "stray" diskettes when doing laundry.
Your computer has it's own phone line - but your teenager doesn't.
You check the national weather service web page for current weather
conditions (rather than look out the window).
You know more URLs than street addresses.
Your pet has a web page.
You get really excited when Yahoo adds your link.
committer: Tailor Script <tailor@pidgin.im>
| author | Eric Warmenhoven <eric@warmenhoven.org> |
|---|---|
| date | Tue, 29 Aug 2000 03:59:01 +0000 |
| parents | b61607d6c2af |
| children | 4c292b3f74ea |
| rev | line source |
|---|---|
| 1 | 1 /* |
| 2 * gaim | |
| 3 * | |
| 4 * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | |
| 5 * | |
| 6 * This program is free software; you can redistribute it and/or modify | |
| 7 * it under the terms of the GNU General Public License as published by | |
| 8 * the Free Software Foundation; either version 2 of the License, or | |
| 9 * (at your option) any later version. | |
| 10 * | |
| 11 * This program is distributed in the hope that it will be useful, | |
| 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 14 * GNU General Public License for more details. | |
| 15 * | |
| 16 * You should have received a copy of the GNU General Public License | |
| 17 * along with this program; if not, write to the Free Software | |
| 18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 19 * | |
| 20 */ | |
| 21 | |
|
349
b402a23f35df
[gaim-migrate @ 359]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
342
diff
changeset
|
22 #ifdef HAVE_CONFIG_H |
|
b402a23f35df
[gaim-migrate @ 359]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
342
diff
changeset
|
23 #include "../config.h" |
|
b402a23f35df
[gaim-migrate @ 359]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
342
diff
changeset
|
24 #endif |
| 1 | 25 #ifdef USE_APPLET |
| 26 #include <gnome.h> | |
| 27 #include <applet-widget.h> | |
| 84 | 28 #include "gnome_applet_mgr.h" |
| 1 | 29 #endif /* USE_APPLET */ |
|
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
30 #ifdef GAIM_PLUGINS |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
31 #include <dlfcn.h> |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
32 #endif /* GAIM_PLUGINS */ |
| 1 | 33 #include <string.h> |
| 34 #include <stdio.h> | |
| 35 #include <stdlib.h> | |
| 36 #include <math.h> | |
| 37 #include <time.h> | |
| 38 | |
| 39 #include <gtk/gtk.h> | |
| 40 #include <gdk/gdkx.h> | |
| 41 #include "gaim.h" | |
|
513
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
42 #include <aim.h> |
| 1 | 43 #include "pixmaps/admin_icon.xpm" |
| 44 #include "pixmaps/aol_icon.xpm" | |
| 45 #include "pixmaps/free_icon.xpm" | |
| 46 #include "pixmaps/dt_icon.xpm" | |
| 47 #include "pixmaps/no_icon.xpm" | |
| 48 #include "pixmaps/login_icon.xpm" | |
| 49 #include "pixmaps/logout_icon.xpm" | |
| 50 | |
| 51 #include "pixmaps/buddyadd.xpm" | |
| 52 #include "pixmaps/buddydel.xpm" | |
| 53 #include "pixmaps/buddychat.xpm" | |
| 54 #include "pixmaps/im.xpm" | |
| 55 #include "pixmaps/info.xpm" | |
| 56 #include "pixmaps/away_icon.xpm" | |
| 57 | |
|
150
d4e99c17e399
[gaim-migrate @ 160]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
146
diff
changeset
|
58 #include "pixmaps/daemon-buddyadd.xpm" |
|
d4e99c17e399
[gaim-migrate @ 160]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
146
diff
changeset
|
59 #include "pixmaps/daemon-buddydel.xpm" |
|
d4e99c17e399
[gaim-migrate @ 160]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
146
diff
changeset
|
60 #include "pixmaps/daemon-buddychat.xpm" |
|
d4e99c17e399
[gaim-migrate @ 160]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
146
diff
changeset
|
61 #include "pixmaps/daemon-im.xpm" |
|
d4e99c17e399
[gaim-migrate @ 160]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
146
diff
changeset
|
62 #include "pixmaps/daemon-info.xpm" |
|
d4e99c17e399
[gaim-migrate @ 160]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
146
diff
changeset
|
63 |
| 714 | 64 #include "pixmaps/add_small.xpm" |
| 718 | 65 #include "pixmaps/import_small.xpm" |
| 733 | 66 #include "pixmaps/export_small.xpm" |
|
747
eec93c5929b9
[gaim-migrate @ 757]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
746
diff
changeset
|
67 #ifdef USE_APPLET |
| 727 | 68 #include "pixmaps/close_small.xpm" |
|
747
eec93c5929b9
[gaim-migrate @ 757]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
746
diff
changeset
|
69 #endif |
| 727 | 70 #include "pixmaps/exit_small.xpm" |
| 714 | 71 |
| 1 | 72 static GtkTooltips *tips; |
| 73 static GtkWidget *editpane; | |
| 74 static GtkWidget *buddypane; | |
|
696
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
75 static GtkWidget *imchatbox; |
| 1 | 76 static GtkWidget *edittree; |
| 77 static GtkWidget *imbutton, *infobutton, *chatbutton; | |
|
577
aa9a8bcddd80
[gaim-migrate @ 587]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
544
diff
changeset
|
78 static GtkWidget *addbutton, *groupbutton, *rembutton; |
| 1 | 79 |
| 436 | 80 extern int ticker_prefs; |
| 1 | 81 |
| 82 GtkWidget *blist = NULL; | |
| 83 GtkWidget *bpmenu; | |
| 84 GtkWidget *buddies; | |
| 85 int permdeny; | |
| 86 | |
| 430 | 87 void BuddyTickerLogonTimeout( gpointer data ); |
| 88 void BuddyTickerLogoutTimeout( gpointer data ); | |
| 1 | 89 |
| 90 /* Predefine some functions */ | |
| 91 static void new_bp_callback(GtkWidget *w, char *name); | |
| 92 static void log_callback(GtkWidget *w, char *name); | |
| 93 | |
| 94 | |
| 95 void destroy_buddy() | |
| 96 { | |
| 97 if (blist) | |
| 98 gtk_widget_destroy(blist); | |
| 99 blist=NULL; | |
|
700
d904bf694bd7
[gaim-migrate @ 710]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
696
diff
changeset
|
100 imchatbox = NULL; |
| 1 | 101 } |
| 102 | |
| 103 void update_num_groups() | |
| 104 { | |
| 105 GList *grp = groups; | |
| 106 GList *mem; | |
| 107 struct buddy *b; | |
| 108 struct group *g; | |
| 109 int pres, total; | |
| 110 char buf[BUF_LONG]; | |
| 111 | |
|
342
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
341
diff
changeset
|
112 #ifndef USE_APPLET |
| 1 | 113 if (!(display_options & OPT_DISP_SHOW_GRPNUM)) |
| 114 return; | |
|
342
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
341
diff
changeset
|
115 #else |
|
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
341
diff
changeset
|
116 int onl = 0; |
|
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
341
diff
changeset
|
117 int all = 0; |
|
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
341
diff
changeset
|
118 #endif |
| 1 | 119 |
| 120 while(grp) { | |
| 121 g = (struct group *)grp->data; | |
| 122 mem = g->members; | |
| 123 pres = 0; | |
| 124 total = 0; | |
| 125 while(mem) { | |
| 126 b = (struct buddy *)mem->data; | |
| 127 if (b->present) | |
| 128 pres++; | |
| 129 total++; | |
| 130 | |
| 131 | |
| 132 mem = mem->next; | |
| 133 } | |
| 134 | |
| 135 g_snprintf(buf, sizeof(buf), "%s (%d/%d)", g->name, pres, total); | |
| 136 | |
|
342
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
341
diff
changeset
|
137 #ifdef USE_APPLET |
|
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
341
diff
changeset
|
138 onl += pres; |
|
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
341
diff
changeset
|
139 all += total; |
|
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
341
diff
changeset
|
140 if (display_options & OPT_DISP_SHOW_GRPNUM) |
|
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
341
diff
changeset
|
141 #endif |
| 1 | 142 gtk_label_set(GTK_LABEL(g->label), buf); |
| 143 grp = grp->next; | |
| 144 } | |
|
342
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
341
diff
changeset
|
145 #ifdef USE_APPLET |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
146 g_snprintf(buf, sizeof(buf), _("%d/%d Buddies Online"), onl, all); |
|
342
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
341
diff
changeset
|
147 applet_set_tooltips(buf); |
|
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
341
diff
changeset
|
148 #endif |
| 1 | 149 } |
| 150 | |
| 151 void update_show_idlepix() | |
| 152 { | |
| 153 GList *grp = groups; | |
| 154 GList *mem; | |
| 155 struct group *g; | |
| 156 struct buddy *b; | |
| 157 | |
| 158 while (grp) { | |
| 159 g = (struct group *)grp->data; | |
| 160 mem = g->members; | |
| 161 | |
| 162 while(mem) { | |
| 163 b = (struct buddy *)mem->data; | |
| 164 | |
| 165 if (display_options & OPT_DISP_SHOW_IDLETIME) | |
| 166 gtk_widget_show(b->idletime); | |
| 167 else | |
| 168 gtk_widget_hide(b->idletime); | |
| 169 | |
| 170 if (display_options & OPT_DISP_SHOW_PIXMAPS) | |
| 171 gtk_widget_show(b->pix); | |
| 172 else | |
| 173 gtk_widget_hide(b->pix); | |
| 174 mem = mem->next; | |
| 175 } | |
| 176 grp = grp->next; | |
| 177 } | |
| 178 } | |
| 179 | |
| 180 void update_all_buddies() | |
| 181 { | |
| 182 GList *grp = groups; | |
| 183 GList *mem; | |
| 184 struct buddy *b; | |
| 185 struct group *g; | |
| 186 | |
| 187 while(grp) { | |
| 188 g = (struct group *)grp->data; | |
| 189 mem = g->members; | |
| 190 while(mem) { | |
| 191 b = (struct buddy *)mem->data; | |
| 192 | |
| 59 | 193 if (b->present || !GTK_WIDGET_VISIBLE(b->item)) |
| 194 set_buddy(b); | |
| 1 | 195 |
| 196 mem = mem->next; | |
| 197 } | |
| 198 grp = grp->next; | |
| 199 } | |
| 200 | |
| 201 | |
| 202 } | |
| 203 | |
| 204 static void adjust_pic(GtkWidget *button, const char *c, gchar **xpm) | |
| 205 { | |
| 206 GdkPixmap *pm; | |
| 207 GdkBitmap *bm; | |
| 208 GtkWidget *pic; | |
| 209 GtkWidget *label; | |
| 210 | |
| 211 /*if the user had opted to put pictures on the buttons*/ | |
|
577
aa9a8bcddd80
[gaim-migrate @ 587]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
544
diff
changeset
|
212 if (display_options & OPT_DISP_SHOW_BUTTON_XPM && xpm) { |
| 1 | 213 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, |
| 214 NULL, xpm); | |
| 215 pic = gtk_pixmap_new(pm, bm); | |
| 216 gtk_widget_show(pic); | |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
217 gdk_pixmap_unref(pm); |
| 1 | 218 label = GTK_BIN(button)->child; |
| 219 gtk_container_remove(GTK_CONTAINER(button), label); | |
| 220 gtk_container_add(GTK_CONTAINER(button), pic); | |
| 221 } else { | |
| 222 label = gtk_label_new(c); | |
| 223 gtk_widget_show(label); | |
| 224 pic = GTK_BIN(button)->child; | |
| 225 gtk_container_remove(GTK_CONTAINER(button), pic); | |
| 226 gtk_container_add(GTK_CONTAINER(button), label); | |
| 227 } | |
| 228 | |
| 229 } | |
| 230 | |
| 231 | |
| 232 void update_button_pix() | |
| 233 { | |
| 234 | |
|
150
d4e99c17e399
[gaim-migrate @ 160]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
146
diff
changeset
|
235 if (display_options & OPT_DISP_DEVIL_PIXMAPS) { |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
236 adjust_pic(addbutton, _("Add"), (gchar **)daemon_buddyadd_xpm); |
|
577
aa9a8bcddd80
[gaim-migrate @ 587]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
544
diff
changeset
|
237 adjust_pic(groupbutton, _("Group"), NULL); |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
238 adjust_pic(rembutton, _("Remove"), (gchar **)daemon_buddydel_xpm); |
|
696
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
239 if (!(display_options & OPT_DISP_NO_BUTTONS)) { |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
240 adjust_pic(chatbutton, _("Chat"), (gchar **)daemon_buddychat_xpm); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
241 adjust_pic(imbutton, _("IM"), (gchar **)daemon_im_xpm); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
242 adjust_pic(infobutton, _("Info"), (gchar **)daemon_info_xpm); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
243 } |
|
678
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
660
diff
changeset
|
244 /* adjust_pic(addpermbutton, _("Add"), (gchar **)daemon_permadd_xpm); |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
245 adjust_pic(rempermbutton, _("Remove"), (gchar **)daemon_permdel_xpm); |
|
678
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
660
diff
changeset
|
246 */ } else { |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
247 adjust_pic(addbutton, _("Add"), (gchar **)buddyadd_xpm); |
|
577
aa9a8bcddd80
[gaim-migrate @ 587]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
544
diff
changeset
|
248 adjust_pic(groupbutton, _("Group"), NULL); |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
249 adjust_pic(rembutton, _("Remove"), (gchar **)buddydel_xpm); |
|
696
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
250 if (!(display_options & OPT_DISP_NO_BUTTONS)) { |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
251 adjust_pic(chatbutton, _("Chat"), (gchar **)buddychat_xpm); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
252 adjust_pic(imbutton, _("IM"), (gchar **)im_xpm); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
253 adjust_pic(infobutton, _("Info"), (gchar **)info_xpm); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
254 } |
|
678
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
660
diff
changeset
|
255 /* adjust_pic(addpermbutton, _("Add"), (gchar **)permadd_xpm); |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
256 adjust_pic(rempermbutton, _("Remove"), (gchar **)permdel_xpm); |
|
678
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
660
diff
changeset
|
257 */ } |
|
544
53a85529d670
[gaim-migrate @ 554]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
535
diff
changeset
|
258 gtk_widget_hide(addbutton->parent); |
|
53a85529d670
[gaim-migrate @ 554]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
535
diff
changeset
|
259 gtk_widget_show(addbutton->parent); |
|
696
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
260 if (!(display_options & OPT_DISP_NO_BUTTONS)) { |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
261 gtk_widget_hide(chatbutton->parent); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
262 gtk_widget_show(chatbutton->parent); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
263 } |
|
678
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
660
diff
changeset
|
264 /* gtk_widget_hide(addpermbutton->parent); |
|
544
53a85529d670
[gaim-migrate @ 554]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
535
diff
changeset
|
265 gtk_widget_show(addpermbutton->parent); |
|
678
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
660
diff
changeset
|
266 */} |
| 1 | 267 |
| 268 | |
| 269 | |
| 270 #ifdef USE_APPLET | |
| 271 gint applet_destroy_buddy( GtkWidget *widget, GdkEvent *event,gpointer *data ) { | |
|
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
733
diff
changeset
|
272 applet_buddy_show = FALSE; |
|
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
733
diff
changeset
|
273 gtk_widget_hide(blist); |
| 1 | 274 return (TRUE); |
| 275 } | |
| 276 | |
| 277 #endif | |
| 278 | |
| 279 | |
| 280 void signoff() | |
| 281 { | |
| 282 GList *mem; | |
|
94
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
90
diff
changeset
|
283 |
|
780
c714def9cebb
[gaim-migrate @ 790]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
774
diff
changeset
|
284 plugin_event(event_signoff, 0, 0, 0); |
|
94
9f6ce50ffb78
[gaim-migrate @ 104]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
90
diff
changeset
|
285 |
| 1 | 286 while(groups) { |
| 287 mem = ((struct group *)groups->data)->members; | |
| 288 while(mem) { | |
| 289 g_free(mem->data); | |
| 290 mem = g_list_remove(mem, mem->data); | |
| 291 } | |
| 292 g_free(groups->data); | |
| 293 groups = g_list_remove(groups, groups->data); | |
| 294 } | |
| 295 | |
| 296 serv_close(); | |
| 297 destroy_all_dialogs(); | |
| 298 destroy_buddy(); | |
| 299 hide_login_progress(""); | |
| 300 #ifdef USE_APPLET | |
|
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
733
diff
changeset
|
301 set_user_state(offline); |
|
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
733
diff
changeset
|
302 applet_buddy_show = FALSE; |
| 1 | 303 applet_widget_unregister_callback(APPLET_WIDGET(applet),"signoff"); |
| 18 | 304 remove_applet_away(); |
| 1 | 305 applet_widget_register_callback(APPLET_WIDGET(applet), |
| 306 "signon", | |
| 307 _("Signon"), | |
|
342
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
341
diff
changeset
|
308 applet_do_signon, |
| 1 | 309 NULL); |
| 310 #else | |
| 311 show_login(); | |
| 312 #endif /* USE_APPLET */ | |
| 436 | 313 if ( ticker_prefs & OPT_DISP_SHOW_BUDDYTICKER ) |
| 314 BuddyTickerSignoff(); | |
| 1 | 315 } |
| 316 | |
| 317 void handle_click_group(GtkWidget *widget, GdkEventButton *event, gpointer func_data) | |
| 318 { | |
| 319 if (event->type == GDK_2BUTTON_PRESS) { | |
| 320 if (GTK_TREE_ITEM(widget)->expanded) | |
| 321 gtk_tree_item_collapse(GTK_TREE_ITEM(widget)); | |
| 322 else | |
| 323 gtk_tree_item_expand(GTK_TREE_ITEM(widget)); | |
| 324 } else { | |
| 325 } | |
| 326 } | |
| 327 | |
| 328 void pressed_im(GtkWidget *widget, struct buddy *b) | |
| 329 { | |
| 330 struct conversation *c; | |
| 331 | |
| 332 c = find_conversation(b->name); | |
| 333 | |
| 334 if (c != NULL) { | |
| 87 | 335 gdk_window_show(c->window->window); |
| 1 | 336 } else { |
| 337 c = new_conversation(b->name); | |
| 338 } | |
| 339 } | |
| 340 | |
| 438 | 341 void pressed_ticker(char *buddy) |
| 342 { | |
| 343 struct conversation *c; | |
| 344 | |
| 345 c = find_conversation(buddy); | |
| 346 | |
| 347 if (c != NULL) { | |
| 348 gdk_window_show(c->window->window); | |
| 349 } else { | |
| 350 c = new_conversation(buddy); | |
| 351 } | |
| 352 } | |
| 353 | |
| 1 | 354 void pressed_info(GtkWidget *widget, struct buddy *b) |
| 355 { | |
| 356 serv_get_info(b->name); | |
|
710
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
703
diff
changeset
|
357 } |
| 1 | 358 |
|
710
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
703
diff
changeset
|
359 void pressed_alias(GtkWidget *widget, struct buddy *b) |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
703
diff
changeset
|
360 { |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
703
diff
changeset
|
361 alias_dialog(b); |
| 1 | 362 } |
| 363 | |
| 364 void pressed_dir_info(GtkWidget *widget, struct buddy *b) | |
| 365 { | |
| 366 serv_get_dir(b->name); | |
| 367 | |
| 368 } | |
| 369 | |
|
249
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
228
diff
changeset
|
370 void pressed_away_msg(GtkWidget *widget, struct buddy *b) |
|
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
228
diff
changeset
|
371 { |
|
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
228
diff
changeset
|
372 serv_get_away_msg(b->name); |
|
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
228
diff
changeset
|
373 |
|
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
228
diff
changeset
|
374 } |
|
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
228
diff
changeset
|
375 |
| 1 | 376 void handle_click_buddy(GtkWidget *widget, GdkEventButton *event, struct buddy *b) |
| 377 { | |
| 378 if (event->type == GDK_2BUTTON_PRESS && event->button == 1) { | |
| 379 struct conversation *c; | |
| 380 | |
| 381 c = find_conversation(b->name); | |
| 382 | |
| 383 if (c != NULL) { | |
| 87 | 384 gdk_window_show(c->window->window); |
| 1 | 385 } else { |
| 386 c = new_conversation(b->name); | |
| 387 } | |
| 388 } else if (event->type == GDK_BUTTON_PRESS && event->button == 3) { | |
| 389 GtkWidget *menu, *button; | |
| 390 /* We're gonna make us a menu right here */ | |
| 391 | |
| 392 menu = gtk_menu_new(); | |
| 393 | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
394 button = gtk_menu_item_new_with_label(_("IM")); |
| 1 | 395 gtk_signal_connect(GTK_OBJECT(button), "activate", |
| 396 GTK_SIGNAL_FUNC(pressed_im), b); | |
| 397 gtk_menu_append(GTK_MENU(menu), button); | |
| 398 gtk_widget_show(button); | |
| 399 | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
400 button = gtk_menu_item_new_with_label(_("Info")); |
| 1 | 401 gtk_signal_connect(GTK_OBJECT(button), "activate", |
| 402 GTK_SIGNAL_FUNC(pressed_info), b); | |
| 403 gtk_menu_append(GTK_MENU(menu), button); | |
| 404 gtk_widget_show(button); | |
| 405 | |
|
710
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
703
diff
changeset
|
406 button = gtk_menu_item_new_with_label(_("Alias")); |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
703
diff
changeset
|
407 gtk_signal_connect(GTK_OBJECT(button), "activate", |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
703
diff
changeset
|
408 GTK_SIGNAL_FUNC(pressed_alias), b); |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
703
diff
changeset
|
409 gtk_menu_append(GTK_MENU(menu), button); |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
703
diff
changeset
|
410 gtk_widget_show(button); |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
703
diff
changeset
|
411 |
|
760
d2eef8a40a77
[gaim-migrate @ 770]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
747
diff
changeset
|
412 if (!USE_OSCAR) { |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
413 button = gtk_menu_item_new_with_label(_("Dir Info")); |
| 1 | 414 gtk_signal_connect(GTK_OBJECT(button), "activate", |
| 415 GTK_SIGNAL_FUNC(pressed_dir_info), b); | |
| 416 gtk_menu_append(GTK_MENU(menu), button); | |
| 417 gtk_widget_show(button); | |
|
760
d2eef8a40a77
[gaim-migrate @ 770]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
747
diff
changeset
|
418 } else { |
| 1 | 419 |
|
515
b33ed0a7f49b
[gaim-migrate @ 525]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
514
diff
changeset
|
420 button = gtk_menu_item_new_with_label(_("Direct IM")); |
|
b33ed0a7f49b
[gaim-migrate @ 525]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
514
diff
changeset
|
421 gtk_signal_connect(GTK_OBJECT(button), "activate", |
|
b33ed0a7f49b
[gaim-migrate @ 525]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
514
diff
changeset
|
422 GTK_SIGNAL_FUNC(serv_do_imimage), b->name); |
|
b33ed0a7f49b
[gaim-migrate @ 525]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
514
diff
changeset
|
423 gtk_menu_append(GTK_MENU(menu), button); |
|
b33ed0a7f49b
[gaim-migrate @ 525]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
514
diff
changeset
|
424 gtk_widget_show(button); |
|
b33ed0a7f49b
[gaim-migrate @ 525]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
514
diff
changeset
|
425 |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
426 button = gtk_menu_item_new_with_label(_("Away Msg")); |
|
249
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
228
diff
changeset
|
427 gtk_signal_connect(GTK_OBJECT(button), "activate", |
|
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
228
diff
changeset
|
428 GTK_SIGNAL_FUNC(pressed_away_msg), b); |
|
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
228
diff
changeset
|
429 gtk_menu_append(GTK_MENU(menu), button); |
|
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
228
diff
changeset
|
430 gtk_widget_show(button); |
|
423
0d4e80bdb96b
[gaim-migrate @ 433]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
403
diff
changeset
|
431 } |
|
249
810c595258c8
[gaim-migrate @ 259]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
228
diff
changeset
|
432 |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
433 button = gtk_menu_item_new_with_label(_("Toggle Logging")); |
| 1 | 434 gtk_signal_connect(GTK_OBJECT(button), "activate", |
| 435 GTK_SIGNAL_FUNC(log_callback), b->name); | |
| 436 gtk_menu_append(GTK_MENU(menu), button); | |
| 437 gtk_widget_show(button); | |
| 438 | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
439 button = gtk_menu_item_new_with_label(_("Add Buddy Pounce")); |
| 1 | 440 gtk_signal_connect(GTK_OBJECT(button), "activate", |
| 441 GTK_SIGNAL_FUNC(new_bp_callback), b->name); | |
| 442 gtk_menu_append(GTK_MENU(menu), button); | |
| 443 gtk_widget_show(button); | |
| 444 | |
| 445 | |
| 446 | |
| 447 gtk_menu_popup(GTK_MENU(menu), NULL, NULL, NULL, NULL, | |
| 448 event->button, event->time); | |
| 449 | |
| 450 } else if (event->type == GDK_3BUTTON_PRESS && event->button == 2) { | |
| 451 if (!strcasecmp("zilding", normalize(b->name))) | |
| 452 show_ee_dialog(0); | |
| 453 else if (!strcasecmp("robflynn", normalize(b->name))) | |
| 454 show_ee_dialog(1); | |
| 455 else if (!strcasecmp("flynorange", normalize(b->name))) | |
| 456 show_ee_dialog(2); | |
|
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
318
diff
changeset
|
457 else if (!strcasecmp("ewarmenhoven", normalize(b->name))) |
|
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
318
diff
changeset
|
458 show_ee_dialog(3); |
| 1 | 459 |
| 460 } else { | |
| 461 | |
| 462 /* Anything for other buttons? :) */ | |
| 463 } | |
| 464 } | |
| 465 | |
| 466 | |
| 467 | |
| 468 void remove_buddy(struct group *rem_g, struct buddy *rem_b) | |
| 469 { | |
| 470 GList *grp; | |
| 471 GList *mem; | |
| 472 | |
| 473 struct group *delg; | |
| 474 struct buddy *delb; | |
| 475 | |
| 476 grp = g_list_find(groups, rem_g); | |
| 477 delg = (struct group *)grp->data; | |
| 478 mem = delg->members; | |
| 479 | |
| 480 mem = g_list_find(mem, rem_b); | |
| 481 delb = (struct buddy *)mem->data; | |
| 482 | |
| 483 gtk_tree_remove_items(GTK_TREE(delg->tree), g_list_append(NULL, delb->item)); | |
| 484 delg->members = g_list_remove(delg->members, delb); | |
| 485 serv_remove_buddy(delb->name); | |
| 486 g_free(delb); | |
| 487 | |
| 488 serv_save_config(); | |
| 228 | 489 |
| 490 // flush buddy list to cache | |
| 491 | |
| 492 do_export( (GtkWidget *) NULL, 0 ); | |
| 1 | 493 |
| 494 update_num_groups(); | |
| 495 | |
| 496 | |
| 497 } | |
| 498 | |
| 499 void remove_group(struct group *rem_g) | |
| 500 { | |
| 501 GList *grp; | |
| 502 GList *mem; | |
| 503 | |
| 504 struct group *delg; | |
| 505 struct buddy *delb; | |
| 506 | |
| 507 grp = g_list_find(groups, rem_g); | |
| 508 delg = (struct group *)grp->data; | |
| 509 mem = delg->members; | |
| 510 | |
| 511 while(delg->members) { | |
| 512 delb = (struct buddy *)delg->members->data; | |
| 513 gtk_tree_remove_items(GTK_TREE(delg->tree), g_list_append(NULL, delb->item)); | |
| 514 delg->members = g_list_remove(delg->members, delb); | |
| 515 serv_remove_buddy(delb->name); | |
| 516 g_free(delb); | |
| 517 } | |
| 518 | |
| 519 | |
| 520 gtk_tree_remove_items(GTK_TREE(buddies), g_list_append(NULL, delg->item)); | |
| 521 groups = g_list_remove(groups, delg); | |
| 522 g_free(delg); | |
| 523 | |
| 524 serv_save_config(); | |
| 228 | 525 |
| 526 // flush buddy list to cache | |
| 527 | |
| 528 do_export( (GtkWidget *) NULL, 0 ); | |
| 1 | 529 } |
| 530 | |
| 531 | |
| 532 | |
| 533 | |
| 534 | |
| 535 gboolean edit_drag_compare_func (GtkCTree *ctree, GtkCTreeNode *source_node, | |
| 536 GtkCTreeNode *new_parent, GtkCTreeNode *new_sibling) | |
| 537 { | |
| 538 gboolean leaf; | |
| 539 | |
| 540 gtk_ctree_get_node_info (ctree, source_node, NULL, | |
| 541 NULL, NULL, NULL, NULL, NULL, &leaf, NULL); | |
| 542 | |
| 543 | |
| 544 if (leaf) { | |
| 545 if (!new_parent) | |
| 546 return FALSE; | |
| 547 } else { | |
| 548 | |
| 549 if (new_parent) | |
| 550 return FALSE; | |
| 551 | |
| 552 } | |
| 553 | |
| 554 return TRUE; | |
| 555 } | |
| 556 | |
| 557 | |
| 558 | |
| 559 static void edit_tree_move (GtkCTree *ctree, GtkCTreeNode *child, GtkCTreeNode *parent, | |
| 560 GtkCTreeNode *sibling, gpointer data) | |
| 561 { | |
| 562 char *source; | |
| 563 char *target1; | |
| 564 char *target2; | |
| 565 | |
| 566 gtk_ctree_get_node_info (ctree, child, &source, | |
| 567 NULL, NULL, NULL, NULL, NULL, NULL, NULL); | |
| 568 if (parent) | |
| 569 gtk_ctree_get_node_info (ctree, parent, &target1, | |
| 570 NULL, NULL, NULL, NULL, NULL, NULL, NULL); | |
| 571 if (sibling) | |
| 572 gtk_ctree_get_node_info (ctree, sibling, &target2, | |
| 573 NULL, NULL, NULL, NULL, NULL, NULL, NULL); | |
| 574 | |
| 575 | |
| 576 if (!parent) { | |
| 577 GList *grps, *buds; | |
| 578 struct group *g, *g2; | |
| 579 GList *tmp; | |
| 580 int pos; | |
| 581 struct buddy *b; | |
| 582 /* Okay we've moved group order... */ | |
| 583 | |
| 584 g = find_group(source); | |
| 585 | |
| 586 gtk_widget_ref(g->tree); | |
| 587 | |
| 588 buds = g->members; | |
| 589 while(buds) { | |
| 590 b = (struct buddy *)buds->data; | |
| 591 gtk_widget_ref(b->item); | |
| 592 gtk_widget_ref(b->label); | |
| 593 gtk_widget_ref(b->idletime); | |
| 594 gtk_widget_ref(b->pix); | |
| 595 buds = buds->next; | |
| 596 } | |
| 597 | |
| 598 | |
| 599 | |
| 600 | |
| 601 pos = g_list_index(GTK_TREE(buddies)->children, g->item); | |
| 602 | |
| 603 tmp = g_list_append(NULL, g->item); | |
| 604 gtk_tree_remove_items(GTK_TREE(buddies), tmp); | |
| 605 g_list_free(tmp); | |
| 606 | |
| 607 groups = g_list_remove(groups, g); | |
| 608 | |
| 609 g->item = gtk_tree_item_new_with_label(g->name); | |
| 610 gtk_widget_show(g->item); | |
| 611 | |
| 612 if (sibling) { | |
| 613 g2 = find_group(target2); | |
| 614 pos = g_list_index(groups, g2); | |
| 615 if (pos == 0) { | |
| 616 groups = g_list_prepend(groups, g); | |
| 617 gtk_tree_prepend(GTK_TREE(buddies), g->item); | |
| 618 } else { | |
| 619 groups = g_list_insert(groups, g, pos); | |
| 620 gtk_tree_insert(GTK_TREE(buddies), g->item, pos); | |
| 621 } | |
| 622 | |
| 623 } else { | |
| 624 groups = g_list_append(groups, g); | |
| 625 gtk_tree_append(GTK_TREE(buddies), g->item); | |
| 626 | |
| 627 } | |
| 628 | |
| 629 gtk_tree_item_set_subtree (GTK_TREE_ITEM(g->item), g->tree); | |
| 630 gtk_tree_item_expand (GTK_TREE_ITEM(g->item)); | |
| 631 gtk_signal_connect(GTK_OBJECT(g->item), "button_press_event", | |
| 632 GTK_SIGNAL_FUNC(handle_click_group), | |
| 633 NULL); | |
| 634 gtk_object_set_user_data(GTK_OBJECT(g->item), NULL); | |
| 635 | |
| 636 gtk_widget_unref(g->tree); | |
| 637 | |
| 638 update_num_groups(); | |
| 639 | |
| 640 | |
| 641 buds = g->members; | |
| 642 | |
| 643 while(buds) { | |
| 644 b = (struct buddy *)buds->data; | |
| 645 set_buddy(b); | |
| 646 buds = buds->next; | |
| 647 } | |
| 648 | |
| 649 grps = groups; | |
| 650 while(grps) { | |
| 651 g = (struct group *)grps->data; | |
| 652 grps = grps->next; | |
| 653 } | |
| 654 | |
| 655 } else { | |
| 656 struct group *new_g, *old_g; | |
| 657 struct buddy *b, *s; | |
| 658 GtkWidget *gtree; | |
| 659 GtkWidget *owner; | |
| 660 GList *temp; | |
| 661 int pos; | |
| 662 | |
| 663 b = find_buddy(source); | |
| 664 new_g = find_group(target1); | |
| 665 old_g = find_group_by_buddy(source); | |
| 666 gtree = old_g->tree; | |
| 667 if (sibling) | |
| 668 s = find_buddy(target2); | |
| 669 else | |
| 670 s = NULL; | |
| 671 | |
| 672 old_g->members = g_list_remove(old_g->members, b); | |
| 673 | |
| 674 gtk_widget_ref(b->item); | |
| 675 gtk_widget_ref(b->label); | |
| 676 gtk_widget_ref(b->pix); | |
| 677 gtk_widget_ref(b->idletime); | |
| 678 gtk_widget_ref(gtree); | |
| 679 | |
| 680 owner = GTK_TREE(gtree)->tree_owner; | |
| 681 | |
| 682 temp = g_list_append(NULL, b->item); | |
| 683 gtk_tree_remove_items(GTK_TREE(old_g->tree), temp); | |
| 684 g_list_free(temp); | |
| 685 | |
| 686 if (gtree->parent == NULL){ | |
| 687 gtk_tree_item_set_subtree (GTK_TREE_ITEM(owner), gtree); | |
| 688 gtk_tree_item_expand (GTK_TREE_ITEM(owner)); | |
| 689 } | |
| 690 | |
| 691 if (!sibling) { | |
| 692 gtk_tree_append(GTK_TREE(new_g->tree), b->item); | |
| 693 new_g->members = g_list_append(new_g->members, b); | |
| 694 } else { | |
| 695 pos = g_list_index(new_g->members, s); | |
| 696 if (pos != 0) { | |
| 697 new_g->members = g_list_insert(new_g->members, b, pos); | |
| 698 gtk_tree_insert(GTK_TREE(new_g->tree), b->item, pos); | |
| 699 } else { | |
| 700 new_g->members = g_list_prepend(new_g->members, b); | |
| 701 gtk_tree_prepend(GTK_TREE(new_g->tree), b->item); | |
| 702 | |
| 703 } | |
| 704 } | |
| 705 | |
| 706 gtk_widget_unref(b->item); | |
| 707 gtk_widget_unref(b->label); | |
| 708 gtk_widget_unref(b->pix); | |
| 709 gtk_widget_unref(b->idletime); | |
| 710 gtk_widget_unref(gtree); | |
| 711 | |
| 712 gtk_ctree_expand(ctree, parent); | |
| 713 | |
| 714 update_num_groups(); | |
| 715 update_show_idlepix(); | |
| 716 set_buddy(b); | |
| 717 | |
| 718 | |
| 719 | |
| 720 | |
| 721 | |
| 722 } | |
| 723 | |
| 724 serv_save_config(); | |
| 228 | 725 |
| 726 // flush buddy list to cache | |
| 727 | |
| 728 do_export( (GtkWidget *) NULL, 0 ); | |
| 1 | 729 } |
| 730 | |
| 731 | |
| 732 | |
| 733 void build_edit_tree() | |
| 734 { | |
| 735 GtkCTreeNode *p = NULL, *n; | |
| 736 GList *grp = groups; | |
| 737 GList *mem; | |
| 738 struct group *g; | |
| 739 struct buddy *b; | |
| 740 char *text[1]; | |
| 741 | |
| 742 gtk_clist_freeze(GTK_CLIST(edittree)); | |
| 743 gtk_clist_clear(GTK_CLIST(edittree)); | |
| 744 | |
| 745 | |
| 746 while(grp) { | |
| 747 g = (struct group *)grp->data; | |
| 748 | |
| 749 text[0] = g->name; | |
| 750 | |
| 751 p = gtk_ctree_insert_node(GTK_CTREE(edittree), NULL, | |
| 752 NULL, text, 5, NULL, NULL, | |
| 753 NULL, NULL, 0, 1); | |
| 754 | |
| 755 n = NULL; | |
| 756 | |
| 757 mem = g->members; | |
| 758 | |
| 759 while(mem) { | |
| 760 b = (struct buddy *)mem->data; | |
| 761 | |
| 762 text[0] = b->name; | |
| 763 | |
| 764 n = gtk_ctree_insert_node(GTK_CTREE(edittree), | |
| 765 p, NULL, text, 5, | |
| 766 NULL, NULL, | |
| 767 NULL, NULL, 1, 1); | |
| 768 | |
| 769 mem = mem->next; | |
| 770 | |
| 771 } | |
| 772 grp = grp->next; | |
| 773 } | |
| 774 | |
| 775 gtk_clist_thaw(GTK_CLIST(edittree)); | |
| 776 | |
| 777 } | |
| 778 | |
|
710
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
703
diff
changeset
|
779 struct buddy *add_buddy(char *group, char *buddy, char *show) |
| 1 | 780 { |
| 781 struct buddy *b; | |
| 782 struct group *g; | |
| 783 GdkPixmap *pm; | |
| 784 GdkBitmap *bm; | |
| 785 GtkWidget *box; | |
| 786 | |
| 787 | |
| 788 if ((b = find_buddy(buddy)) != NULL) | |
| 789 return b; | |
| 790 | |
| 791 g = find_group(group); | |
| 792 | |
| 793 if (g == NULL) | |
| 794 g = add_group(group); | |
| 795 | |
| 796 b = (struct buddy *)g_new0(struct buddy, 1); | |
| 797 | |
| 798 if (!b) | |
| 799 return NULL; | |
| 800 | |
| 801 b->present = 0; | |
| 802 b->item = gtk_tree_item_new(); | |
| 803 | |
| 804 g_snprintf(b->name, sizeof(b->name), "%s", buddy); | |
|
710
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
703
diff
changeset
|
805 g_snprintf(b->show, sizeof(b->show), "%s", show ? (show[0] ? show : buddy) : buddy); |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
703
diff
changeset
|
806 |
| 1 | 807 g->members = g_list_append(g->members, b); |
| 808 | |
| 809 | |
| 810 if (blist == NULL) | |
| 811 return b; | |
| 812 | |
| 813 box = gtk_hbox_new(FALSE, 1); | |
| 814 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, | |
| 815 NULL, (gchar **)login_icon_xpm); | |
| 816 b->pix = gtk_pixmap_new(pm, bm); | |
| 817 | |
| 818 b->idle = 0; | |
|
515
b33ed0a7f49b
[gaim-migrate @ 525]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
514
diff
changeset
|
819 b->caps = 0; |
| 1 | 820 |
| 821 gtk_widget_show(b->pix); | |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
822 gdk_pixmap_unref(pm); |
| 1 | 823 |
| 824 b->label = gtk_label_new(buddy); | |
| 825 gtk_misc_set_alignment(GTK_MISC(b->label), 0.0, 0.5); | |
| 826 | |
| 827 b->idletime = gtk_label_new(""); | |
| 828 | |
| 829 gtk_tree_append(GTK_TREE(g->tree),b->item); | |
| 830 gtk_container_add(GTK_CONTAINER(b->item), box); | |
| 831 | |
| 832 gtk_box_pack_start(GTK_BOX(box), b->pix, FALSE, FALSE, 1); | |
| 833 gtk_box_pack_start(GTK_BOX(box), b->label, TRUE, TRUE, 1); | |
| 834 gtk_box_pack_start(GTK_BOX(box), b->idletime, FALSE, FALSE, 1); | |
| 835 | |
| 836 gtk_widget_show(b->label); | |
| 837 gtk_widget_show(box); | |
| 838 | |
| 839 gtk_object_set_user_data(GTK_OBJECT(b->item), b); | |
| 840 | |
| 841 gtk_signal_connect(GTK_OBJECT(b->item), "button_press_event", | |
| 842 GTK_SIGNAL_FUNC(handle_click_buddy), b); | |
| 430 | 843 |
| 1 | 844 return b; |
| 845 } | |
| 846 | |
| 847 | |
| 848 struct group *add_group(char *group) | |
| 849 { | |
|
318
35796808896a
[gaim-migrate @ 328]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
281
diff
changeset
|
850 struct group *g = find_group(group); |
|
35796808896a
[gaim-migrate @ 328]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
281
diff
changeset
|
851 if (g) |
|
35796808896a
[gaim-migrate @ 328]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
281
diff
changeset
|
852 return g; |
| 1 | 853 g = (struct group *)g_new0(struct group, 1); |
| 854 if (!g) | |
| 855 return NULL; | |
| 856 | |
| 857 strncpy(g->name, group, sizeof(g->name)); | |
| 858 groups = g_list_append(groups, g); | |
| 859 | |
| 860 if (blist == NULL) | |
| 861 return g; | |
| 862 | |
| 863 g->item = gtk_tree_item_new(); | |
| 864 g->label = gtk_label_new(g->name); | |
| 865 gtk_misc_set_alignment(GTK_MISC(g->label), 0.0, 0.5); | |
| 866 gtk_widget_show(g->label); | |
| 867 gtk_container_add(GTK_CONTAINER(g->item), g->label); | |
| 868 g->tree = gtk_tree_new(); | |
| 869 gtk_widget_show(g->item); | |
| 870 gtk_widget_show(g->tree); | |
| 871 gtk_tree_append(GTK_TREE(buddies), g->item); | |
| 872 gtk_tree_item_set_subtree(GTK_TREE_ITEM(g->item), g->tree); | |
| 873 gtk_tree_item_expand(GTK_TREE_ITEM(g->item)); | |
| 874 gtk_signal_connect(GTK_OBJECT(g->item), "button_press_event", | |
| 875 GTK_SIGNAL_FUNC(handle_click_group), | |
| 876 NULL); | |
| 877 gtk_object_set_user_data(GTK_OBJECT(g->item), NULL); | |
| 878 g->members = NULL; | |
| 879 | |
| 880 | |
| 881 build_edit_tree(); | |
| 882 | |
| 883 return g; | |
| 884 | |
| 885 } | |
| 886 | |
| 887 | |
| 888 static void do_del_buddy(GtkWidget *w, GtkCTree *ctree) | |
| 889 { | |
| 890 GtkCTreeNode *node; | |
| 891 char *bud, *grp; | |
| 892 struct buddy *b; | |
| 893 struct group *g; | |
| 894 GList *i; | |
| 895 | |
| 896 i = GTK_CLIST(edittree)->selection; | |
| 897 if (i) { | |
| 898 node = i->data; | |
| 899 | |
| 900 if (GTK_CTREE_ROW(node)->is_leaf) { | |
| 901 gtk_ctree_get_node_info (GTK_CTREE(edittree), node, &bud, | |
| 902 NULL, NULL, NULL, NULL, NULL, NULL, NULL); | |
| 903 | |
| 904 b = find_buddy(bud); | |
| 905 g = find_group_by_buddy(bud); | |
| 906 remove_buddy(g, b); | |
| 907 } else { | |
| 908 gtk_ctree_get_node_info (ctree, node, &grp, | |
| 909 NULL, NULL, NULL, NULL, NULL, NULL, NULL); | |
| 910 g = find_group(grp); | |
| 911 remove_group(g); | |
| 912 } | |
| 913 | |
| 914 build_edit_tree(); | |
| 915 serv_save_config(); | |
| 228 | 916 |
| 917 // flush buddy list to cache | |
| 918 | |
| 919 do_export( (GtkWidget *) NULL, 0 ); | |
| 920 | |
| 1 | 921 } else { |
| 922 /* Nothing selected. */ | |
| 923 } | |
| 924 update_num_groups(); | |
| 925 } | |
| 926 | |
| 927 | |
| 928 void gaimreg_callback(GtkWidget *widget) | |
| 929 { | |
| 930 show_register_dialog(); | |
| 931 } | |
| 932 | |
| 933 void import_callback(GtkWidget *widget, void *null) | |
| 934 { | |
| 935 show_import_dialog(); | |
| 936 } | |
| 937 | |
| 938 void export_callback(GtkWidget *widget, void *null) | |
| 939 { | |
| 940 show_export_dialog(); | |
| 941 } | |
| 942 | |
| 943 | |
| 944 | |
| 945 void do_quit() | |
| 946 { | |
|
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
947 #ifdef GAIM_PLUGINS |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
948 GList *c; |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
949 struct gaim_plugin *p; |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
950 void (*gaim_plugin_remove)(); |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
951 char *error; |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
952 |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
953 /* first we tell those who have requested it we're quitting */ |
|
780
c714def9cebb
[gaim-migrate @ 790]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
774
diff
changeset
|
954 plugin_event(event_quit, 0, 0, 0); |
|
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
955 |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
956 /* then we remove everyone in a mass suicide */ |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
957 c = plugins; |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
958 while (c) { |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
959 p = (struct gaim_plugin *)c->data; |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
960 gaim_plugin_remove = dlsym(p->handle, "gaim_plugin_remove"); |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
961 if ((error = (char *)dlerror()) == NULL) |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
962 (*gaim_plugin_remove)(); |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
963 /* we don't need to worry about removing callbacks since |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
964 * there won't be any more chance to call them back :) */ |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
965 dlclose(p->handle); |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
966 g_free(p->filename); /* why do i bother? */ |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
967 g_free(p); |
|
403
d6f02d7f78d8
[gaim-migrate @ 413]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
391
diff
changeset
|
968 c = c->next; |
|
391
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
969 } |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
970 #endif |
|
be408b41c172
[gaim-migrate @ 401]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
971 |
| 1 | 972 exit(0); |
| 973 } | |
| 974 | |
| 975 void add_buddy_callback(GtkWidget *widget, void *dummy) | |
| 976 { | |
| 977 char *grp = NULL; | |
| 978 GtkCTreeNode *node; | |
| 979 GList *i; | |
| 980 | |
| 981 i = GTK_CLIST(edittree)->selection; | |
| 982 if (i) { | |
| 983 node = i->data; | |
| 984 | |
| 985 if (GTK_CTREE_ROW(node)->is_leaf) { | |
| 986 node = GTK_CTREE_ROW(node)->parent; | |
| 987 } | |
| 988 | |
| 989 gtk_ctree_get_node_info (GTK_CTREE(edittree), node, &grp, | |
| 990 NULL, NULL, NULL, NULL, NULL, NULL, NULL); | |
| 991 } | |
| 992 show_add_buddy(NULL, grp); | |
| 993 | |
| 994 } | |
| 995 | |
|
577
aa9a8bcddd80
[gaim-migrate @ 587]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
544
diff
changeset
|
996 void add_group_callback(GtkWidget *widget, void *dummy) |
|
aa9a8bcddd80
[gaim-migrate @ 587]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
544
diff
changeset
|
997 { |
|
aa9a8bcddd80
[gaim-migrate @ 587]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
544
diff
changeset
|
998 show_add_group(); |
|
aa9a8bcddd80
[gaim-migrate @ 587]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
544
diff
changeset
|
999 } |
|
aa9a8bcddd80
[gaim-migrate @ 587]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
544
diff
changeset
|
1000 |
| 1 | 1001 static void info_callback(GtkWidget *widget, GtkTree *tree) |
| 1002 { | |
| 1003 GList *i; | |
| 1004 struct buddy *b = NULL; | |
| 1005 i = GTK_TREE_SELECTION(tree); | |
| 1006 if (i) { | |
| 1007 b = gtk_object_get_user_data(GTK_OBJECT(i->data)); | |
| 1008 } else { | |
| 1009 return; | |
| 1010 } | |
| 1011 if (!b->name) | |
| 1012 return; | |
| 1013 serv_get_info(b->name); | |
| 1014 } | |
| 1015 | |
| 1016 | |
| 1017 void chat_callback(GtkWidget *widget, GtkTree *tree) | |
| 1018 { | |
| 1019 join_chat(); | |
| 1020 } | |
| 1021 | |
| 1022 struct group *find_group(char *group) | |
| 1023 { | |
| 1024 struct group *g; | |
| 1025 GList *grp = groups; | |
| 1026 char *grpname = g_malloc(strlen(group) + 1); | |
| 1027 | |
| 1028 strcpy(grpname, normalize(group)); | |
| 1029 while (grp) { | |
| 1030 g = (struct group *)grp->data; | |
| 1031 if (!strcasecmp(normalize(g->name), grpname)) { | |
| 1032 g_free(grpname); | |
| 1033 return g; | |
| 1034 } | |
| 1035 grp = grp->next; | |
| 1036 } | |
| 1037 | |
| 1038 g_free(grpname); | |
| 1039 return NULL; | |
| 1040 | |
| 1041 } | |
| 1042 | |
| 1043 | |
| 1044 struct group *find_group_by_buddy(char *who) | |
| 1045 { | |
| 1046 struct group *g; | |
| 1047 struct buddy *b; | |
| 1048 GList *grp = groups; | |
| 1049 GList *mem; | |
| 1050 char *whoname = g_malloc(strlen(who) + 1); | |
| 1051 | |
| 1052 strcpy(whoname, normalize(who)); | |
| 1053 | |
| 1054 while(grp) { | |
| 1055 g = (struct group *)grp->data; | |
| 1056 | |
| 1057 mem = g->members; | |
| 1058 while(mem) { | |
| 1059 b = (struct buddy *)mem->data; | |
| 1060 if (!strcasecmp(normalize(b->name), whoname)) { | |
| 1061 g_free(whoname); | |
| 1062 return g; | |
| 1063 } | |
| 1064 mem = mem->next; | |
| 1065 } | |
| 1066 grp = grp->next; | |
| 1067 } | |
| 1068 g_free(whoname); | |
| 1069 return NULL; | |
| 1070 } | |
| 1071 | |
| 1072 | |
| 1073 struct buddy *find_buddy(char *who) | |
| 1074 { | |
| 1075 struct group *g; | |
| 1076 struct buddy *b; | |
| 1077 GList *grp = groups; | |
| 1078 GList *mem; | |
| 1079 char *whoname = g_malloc(strlen(who) + 1); | |
| 1080 | |
| 1081 strcpy(whoname, normalize(who)); | |
| 1082 | |
| 1083 while(grp) { | |
| 1084 g = (struct group *)grp->data; | |
| 1085 | |
| 1086 mem = g->members; | |
| 1087 while(mem) { | |
| 1088 b = (struct buddy *)mem->data; | |
| 1089 if (!strcasecmp(normalize(b->name), whoname)) { | |
| 1090 g_free(whoname); | |
| 1091 return b; | |
| 1092 } | |
| 1093 mem = mem->next; | |
| 1094 } | |
| 1095 grp = grp->next; | |
| 1096 } | |
| 1097 g_free(whoname); | |
| 1098 return NULL; | |
| 1099 } | |
| 1100 | |
| 1101 | |
| 1102 void rem_bp(GtkWidget *w, struct buddy_pounce *b) | |
| 1103 { | |
| 1104 buddy_pounces = g_list_remove(buddy_pounces, b); | |
|
689
4e3f5d9cacd5
[gaim-migrate @ 699]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
1105 do_bp_menu(); |
|
4e3f5d9cacd5
[gaim-migrate @ 699]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
678
diff
changeset
|
1106 save_prefs(); |
| 1 | 1107 } |
| 1108 | |
| 1109 void do_pounce(char *name) | |
| 1110 { | |
| 26 | 1111 char *who; |
| 1 | 1112 |
| 1113 struct buddy_pounce *b; | |
| 1114 struct conversation *c; | |
| 1115 | |
| 1116 GList *bp = buddy_pounces; | |
| 1117 | |
| 26 | 1118 who = g_strdup(normalize(name)); |
| 1 | 1119 |
| 1120 while(bp) { | |
| 1121 b = (struct buddy_pounce *)bp->data;; | |
| 26 | 1122 bp = bp->next; /* increment the list here because rem_bp can make our handle bad */ |
| 1123 | |
| 1 | 1124 if (!strcasecmp(who, normalize(b->name))) { |
| 1125 if (b->popup == 1) | |
| 1126 { | |
| 1127 c = find_conversation(name); | |
| 1128 if (c == NULL) | |
| 1129 c = new_conversation(name); | |
| 1130 } | |
| 1131 if (b->sendim == 1) | |
| 1132 { | |
| 1133 c = find_conversation(name); | |
| 1134 if (c == NULL) | |
| 1135 c = new_conversation(name); | |
| 1136 | |
|
472
6a92cd7322cc
[gaim-migrate @ 482]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
438
diff
changeset
|
1137 write_to_conv(c, b->message, WFLAG_SEND, NULL); |
| 1 | 1138 |
| 1139 escape_text(b->message); | |
| 1140 | |
| 1141 serv_send_im(name, b->message, 0); | |
| 1142 } | |
| 1143 | |
| 1144 rem_bp(NULL, b); | |
| 1145 | |
| 1146 } | |
| 1147 } | |
| 1148 g_free(who); | |
| 1149 } | |
| 1150 | |
| 1151 static void new_bp_callback(GtkWidget *w, char *name) | |
| 1152 { | |
| 1153 show_new_bp(name); | |
| 1154 } | |
| 1155 | |
| 1156 static void log_callback(GtkWidget *w, char *name) | |
| 1157 { | |
| 1158 struct conversation *c = find_conversation(name); | |
| 1159 | |
| 1160 if (find_log_info(name)) | |
| 1161 { | |
| 1162 if (c) { | |
| 1163 set_state_lock(1); | |
| 1164 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->log_button), FALSE); | |
| 1165 set_state_lock(0); | |
| 1166 } | |
| 1167 rm_log(find_log_info(name)); | |
| 1168 } | |
| 1169 else | |
| 1170 { | |
| 1171 if (c) { | |
|
700
d904bf694bd7
[gaim-migrate @ 710]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
696
diff
changeset
|
1172 show_log_dialog(c); |
| 1 | 1173 set_state_lock(1); |
| 1174 gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(c->log_button), TRUE); | |
| 1175 set_state_lock(0); | |
| 1176 } | |
| 1177 } | |
| 1178 } | |
| 1179 | |
| 1180 void do_bp_menu() | |
| 1181 { | |
| 1182 GtkWidget *menuitem, *mess, *messmenu; | |
| 1183 static GtkWidget *remmenu; | |
| 1184 GtkWidget *remitem; | |
| 1185 GtkWidget *sep; | |
| 1186 GList *l; | |
| 1187 struct buddy_pounce *b; | |
| 1188 GList *bp = buddy_pounces; | |
| 1189 | |
| 1190 l = gtk_container_children(GTK_CONTAINER(bpmenu)); | |
| 1191 | |
| 1192 while(l) { | |
| 1193 gtk_widget_destroy(GTK_WIDGET(l->data)); | |
| 1194 l = l->next; | |
| 1195 } | |
| 1196 | |
| 1197 remmenu = gtk_menu_new(); | |
| 1198 | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1199 menuitem = gtk_menu_item_new_with_label(_("New Buddy Pounce")); |
| 1 | 1200 gtk_menu_append(GTK_MENU(bpmenu), menuitem); |
| 1201 gtk_widget_show(menuitem); | |
| 1202 gtk_signal_connect(GTK_OBJECT(menuitem), "activate", GTK_SIGNAL_FUNC(new_bp_callback), NULL); | |
| 1203 | |
| 1204 | |
| 1205 while(bp) { | |
| 1206 | |
| 1207 b = (struct buddy_pounce *)bp->data; | |
| 1208 remitem = gtk_menu_item_new_with_label(b->name); | |
| 1209 gtk_menu_append(GTK_MENU(remmenu), remitem); | |
| 1210 gtk_widget_show(remitem); | |
| 1211 gtk_signal_connect(GTK_OBJECT(remitem), "activate", GTK_SIGNAL_FUNC(rem_bp), b); | |
| 1212 | |
| 1213 bp = bp->next; | |
| 1214 | |
| 1215 } | |
| 1216 | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1217 menuitem = gtk_menu_item_new_with_label(_("Remove Buddy Pounce")); |
| 1 | 1218 gtk_menu_append(GTK_MENU(bpmenu), menuitem); |
| 1219 gtk_widget_show(menuitem); | |
| 1220 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), remmenu); | |
| 1221 gtk_widget_show(remmenu); | |
| 1222 | |
| 1223 | |
| 1224 sep = gtk_hseparator_new(); | |
| 1225 menuitem = gtk_menu_item_new(); | |
| 1226 gtk_menu_append(GTK_MENU(bpmenu), menuitem); | |
| 1227 gtk_container_add(GTK_CONTAINER(menuitem), sep); | |
| 1228 gtk_widget_set_sensitive(menuitem, FALSE); | |
| 1229 gtk_widget_show(menuitem); | |
| 1230 gtk_widget_show(sep); | |
| 1231 | |
| 1232 bp = buddy_pounces;; | |
| 1233 | |
| 1234 while(bp) { | |
| 1235 | |
| 1236 b = (struct buddy_pounce *)bp->data; | |
| 1237 | |
| 1238 menuitem = gtk_menu_item_new_with_label(b->name); | |
| 1239 gtk_menu_append(GTK_MENU(bpmenu), menuitem); | |
| 1240 messmenu = gtk_menu_new(); | |
| 1241 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), messmenu); | |
| 1242 gtk_widget_show(menuitem); | |
| 1243 | |
| 1244 | |
| 1245 | |
| 1246 mess = gtk_menu_item_new_with_label(b->message); | |
| 1247 gtk_menu_append(GTK_MENU(messmenu), mess); | |
| 1248 gtk_widget_show(mess); | |
| 1249 | |
| 1250 bp = bp->next; | |
| 1251 | |
| 1252 } | |
| 1253 | |
| 1254 } | |
| 1255 | |
| 1256 | |
| 1257 gint log_timeout(char *name) | |
| 1258 { | |
| 1259 struct buddy *b; | |
|
119
66ec3865bd46
[gaim-migrate @ 129]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
107
diff
changeset
|
1260 struct group *g; |
| 1 | 1261 |
| 1262 b = find_buddy(name); | |
| 1263 | |
| 1264 if(!b) | |
| 1265 return FALSE; | |
| 1266 | |
| 1267 b->log_timer = 0; | |
| 1268 | |
|
119
66ec3865bd46
[gaim-migrate @ 129]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
107
diff
changeset
|
1269 if (!b->present) { |
| 1 | 1270 gtk_widget_hide(b->item); |
|
119
66ec3865bd46
[gaim-migrate @ 129]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
107
diff
changeset
|
1271 g = find_group_by_buddy(name); |
|
120
991d5f0c6c90
[gaim-migrate @ 130]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
119
diff
changeset
|
1272 if (GTK_TREE_ITEM(g->item)->expanded) { |
|
991d5f0c6c90
[gaim-migrate @ 130]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
119
diff
changeset
|
1273 gtk_tree_item_collapse(GTK_TREE_ITEM(g->item)); |
|
991d5f0c6c90
[gaim-migrate @ 130]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
119
diff
changeset
|
1274 gtk_tree_item_expand(GTK_TREE_ITEM(g->item)); |
|
991d5f0c6c90
[gaim-migrate @ 130]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
119
diff
changeset
|
1275 } |
|
119
66ec3865bd46
[gaim-migrate @ 129]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
107
diff
changeset
|
1276 } else |
| 1 | 1277 set_buddy(b); |
| 1278 | |
| 1279 return FALSE; | |
| 1280 } | |
| 1281 | |
| 1282 | |
|
513
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1283 static char *caps_string(u_short caps) |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1284 { |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1285 static char buf[BUF_LEN]; |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1286 int count = 0, i = 0; |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1287 u_short bit = 1; |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1288 while (bit <= AIM_CAPS_SENDFILE) { |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1289 if (bit & caps) { |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1290 switch (bit) { |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1291 case AIM_CAPS_BUDDYICON: |
|
514
44123888a941
[gaim-migrate @ 524]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
513
diff
changeset
|
1292 i += g_snprintf(buf + i, sizeof(buf) - i, _("%sBuddy Icon"), count ? ", " : ""); |
|
513
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1293 break; |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1294 case AIM_CAPS_VOICE: |
|
514
44123888a941
[gaim-migrate @ 524]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
513
diff
changeset
|
1295 i += g_snprintf(buf + i, sizeof(buf) - i, _("%sVoice"), count ? ", " : ""); |
|
513
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1296 break; |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1297 case AIM_CAPS_IMIMAGE: |
|
514
44123888a941
[gaim-migrate @ 524]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
513
diff
changeset
|
1298 i += g_snprintf(buf + i, sizeof(buf) - i, _("%sIM Image"), count ? ", " : ""); |
|
513
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1299 break; |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1300 case AIM_CAPS_CHAT: |
|
514
44123888a941
[gaim-migrate @ 524]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
513
diff
changeset
|
1301 i += g_snprintf(buf + i, sizeof(buf) - i, _("%sChat"), count ? ", " : ""); |
|
513
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1302 break; |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1303 case AIM_CAPS_GETFILE: |
|
514
44123888a941
[gaim-migrate @ 524]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
513
diff
changeset
|
1304 i += g_snprintf(buf + i, sizeof(buf) - i, _("%sGet File"), count ? ", " : ""); |
|
513
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1305 break; |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1306 case AIM_CAPS_SENDFILE: |
|
514
44123888a941
[gaim-migrate @ 524]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
513
diff
changeset
|
1307 i += g_snprintf(buf + i, sizeof(buf) - i, _("%sSend File"), count ? ", " : ""); |
|
513
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1308 break; |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1309 } |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1310 count++; |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1311 } |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1312 bit <<= 1; |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1313 } |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1314 return buf; |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1315 } |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1316 |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1317 |
| 1 | 1318 void set_buddy(struct buddy *b) |
| 1319 { | |
| 1320 char infotip[256]; | |
| 1321 char idlet[16]; | |
| 1322 char warn[256]; | |
|
513
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1323 char caps[256]; |
| 70 | 1324 char *who; |
| 1 | 1325 int i; |
| 1326 int ihrs, imin; | |
| 1327 time_t t; | |
| 1328 GdkPixmap *pm; | |
| 1329 GdkBitmap *bm; | |
| 1330 char *itime, *sotime; | |
| 1331 | |
| 1332 if (b->present) { | |
| 1333 time(&t); | |
| 1334 | |
| 1335 ihrs = (t - b->idle) / 3600; | |
| 1336 imin = ((t - b->idle) / 60) % 60; | |
| 1337 | |
| 1338 if (ihrs) | |
| 1339 g_snprintf(idlet, sizeof(idlet), "(%d:%02d)", ihrs, imin); | |
| 1340 else | |
| 1341 g_snprintf(idlet, sizeof(idlet), "(%02d)", imin); | |
| 1342 | |
| 1343 gtk_widget_hide(b->idletime); | |
| 1344 | |
| 1345 if (b->idle) | |
| 1346 gtk_label_set(GTK_LABEL(b->idletime), idlet); | |
| 1347 else | |
| 1348 gtk_label_set(GTK_LABEL(b->idletime), ""); | |
| 1349 if (display_options & OPT_DISP_SHOW_IDLETIME) | |
| 1350 gtk_widget_show(b->idletime); | |
| 1351 | |
| 1352 | |
| 1353 sotime = sec_to_text(t - b->signon + correction_time); | |
| 1354 if (b->idle) { | |
| 1355 itime = sec_to_text(t - b->idle); | |
| 1356 } else { | |
| 1357 itime = g_malloc(1); | |
| 1358 itime[0] = 0; | |
| 1359 } | |
| 1360 | |
| 1361 if (b->evil) { | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1362 g_snprintf(warn, sizeof(warn), _("Warnings: %d%%\n"), b->evil); |
| 1 | 1363 |
| 1364 } else | |
| 1365 warn[0] = '\0'; | |
| 1366 | |
|
513
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1367 if (b->caps) { |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1368 g_snprintf(caps, sizeof(caps), _("Capabilities: %s\n"), caps_string(b->caps)); |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1369 } else |
|
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1370 caps[0] = '\0'; |
| 1 | 1371 |
|
710
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
703
diff
changeset
|
1372 i = g_snprintf(infotip, sizeof(infotip), _("Name: %s \nLogged in: %s\n%s%s%s%s%s"), b->show, sotime, warn, ((b->idle) ? _("Idle: ") : ""), itime, ((b->idle) ? "\n" : ""), caps); |
|
513
eaddaa0dbbcb
[gaim-migrate @ 523]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
511
diff
changeset
|
1373 |
| 1 | 1374 gtk_tooltips_set_tip(tips, GTK_WIDGET(b->item), infotip, ""); |
| 1375 | |
| 1376 g_free(sotime); | |
| 1377 g_free(itime); | |
| 1378 | |
| 1379 | |
| 1380 | |
|
121
3571b593f423
[gaim-migrate @ 131]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
120
diff
changeset
|
1381 /* this check should also depend on whether they left, |
|
3571b593f423
[gaim-migrate @ 131]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
120
diff
changeset
|
1382 * and signed on again before they got erased */ |
|
3571b593f423
[gaim-migrate @ 131]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
120
diff
changeset
|
1383 if (!GTK_WIDGET_VISIBLE(b->item) || b->present == 1) { |
|
780
c714def9cebb
[gaim-migrate @ 790]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
774
diff
changeset
|
1384 plugin_event(event_buddy_signon, b->name, 0, 0); |
| 1 | 1385 |
| 1386 play_sound(BUDDY_ARRIVE); | |
|
121
3571b593f423
[gaim-migrate @ 131]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
120
diff
changeset
|
1387 b->present = 2; |
| 1 | 1388 |
|
710
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
703
diff
changeset
|
1389 who = g_malloc(sizeof(b->show) + 10); |
|
efd72a117875
[gaim-migrate @ 720]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
703
diff
changeset
|
1390 strcpy(who, b->show); |
| 70 | 1391 gtk_label_set(GTK_LABEL(b->label), who); |
| 1392 g_free(who); | |
| 1393 | |
| 1 | 1394 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, |
| 1395 NULL, (gchar **)login_icon_xpm); | |
| 1396 gtk_widget_hide(b->pix); | |
| 1397 gtk_pixmap_set(GTK_PIXMAP(b->pix), pm, bm); | |
| 1398 if (display_options & OPT_DISP_SHOW_PIXMAPS) | |
| 1399 gtk_widget_show(b->pix); | |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1400 gdk_pixmap_unref(pm); |
| 1 | 1401 |
| 430 | 1402 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, |
| 1403 NULL, (gchar **)login_icon_xpm); | |
| 1404 | |
| 436 | 1405 if ( ticker_prefs & OPT_DISP_SHOW_BUDDYTICKER ) |
| 1406 BuddyTickerAddUser( b->name, pm, bm ); | |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1407 gdk_pixmap_unref(pm); |
| 430 | 1408 |
| 1 | 1409 if (display_options & OPT_DISP_SHOW_LOGON) { |
| 1410 struct conversation *c = find_conversation(b->name); | |
| 1411 if (c) { | |
| 1412 char tmp[1024]; | |
| 1413 | |
| 1414 | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1415 g_snprintf(tmp, sizeof(tmp), _("<HR><B>%s logged in%s%s.</B><BR><HR>"), b->name, |
| 1 | 1416 ((display_options & OPT_DISP_SHOW_TIME) ? " @ " : ""), |
| 1417 ((display_options & OPT_DISP_SHOW_TIME) ? date() : "")); | |
| 1418 | |
| 1419 | |
|
472
6a92cd7322cc
[gaim-migrate @ 482]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
438
diff
changeset
|
1420 write_to_conv(c, tmp, WFLAG_SYSTEM, NULL); |
| 1 | 1421 |
| 1422 } | |
| 1423 } | |
| 1424 | |
| 1425 | |
| 1426 gtk_widget_show(b->item); | |
| 1427 gtk_widget_show(b->label); | |
| 58 | 1428 b->log_timer = gtk_timeout_add(10000, (GtkFunction) log_timeout, b->name); |
| 436 | 1429 if ( ticker_prefs & OPT_DISP_SHOW_BUDDYTICKER ) |
| 1430 gtk_timeout_add(10000, (GtkFunction) BuddyTickerLogonTimeout, b->name); | |
| 1 | 1431 update_num_groups(); |
| 1432 update_show_idlepix(); | |
| 1433 setup_buddy_chats(); | |
| 1434 return; | |
| 1435 } | |
| 1436 | |
| 1437 | |
| 1438 | |
| 1439 if (!b->log_timer) { | |
| 1440 gtk_widget_hide(b->pix); | |
| 1441 if (b->uc & UC_UNAVAILABLE) { | |
| 1442 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, | |
| 1443 NULL, (gchar **)away_icon_xpm); | |
| 1444 gtk_pixmap_set(GTK_PIXMAP(b->pix), pm, bm); | |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1445 gdk_pixmap_unref(pm); |
| 436 | 1446 if ( ticker_prefs & OPT_DISP_SHOW_BUDDYTICKER ) |
| 1447 { | |
| 1448 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, | |
| 430 | 1449 NULL, (gchar **)away_icon_xpm); |
| 436 | 1450 BuddyTickerSetPixmap(b->name, pm, bm); |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1451 gdk_pixmap_unref(pm); |
| 436 | 1452 } |
| 1 | 1453 } else if (b->uc & UC_AOL) { |
| 1454 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, | |
| 1455 NULL, (gchar **)aol_icon_xpm); | |
| 1456 gtk_pixmap_set(GTK_PIXMAP(b->pix), pm, bm); | |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1457 gdk_pixmap_unref(pm); |
| 436 | 1458 if ( ticker_prefs & OPT_DISP_SHOW_BUDDYTICKER ) |
| 1459 { | |
| 1460 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, | |
| 430 | 1461 NULL, (gchar **)aol_icon_xpm); |
| 436 | 1462 BuddyTickerSetPixmap(b->name, pm, bm); |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1463 gdk_pixmap_unref(pm); |
| 436 | 1464 } |
| 1 | 1465 } else if (b->uc & UC_NORMAL) { |
| 1466 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, | |
| 1467 NULL, (gchar **)free_icon_xpm); | |
| 1468 gtk_pixmap_set(GTK_PIXMAP(b->pix), pm, bm); | |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1469 gdk_pixmap_unref(pm); |
| 436 | 1470 if ( ticker_prefs & OPT_DISP_SHOW_BUDDYTICKER ) |
| 1471 { | |
| 1472 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, | |
| 430 | 1473 NULL, (gchar **)free_icon_xpm); |
| 436 | 1474 BuddyTickerSetPixmap(b->name, pm, bm); |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1475 gdk_pixmap_unref(pm); |
| 436 | 1476 } |
| 1 | 1477 } else if (b->uc & UC_ADMIN) { |
| 1478 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, | |
| 1479 NULL, (gchar **)admin_icon_xpm); | |
| 1480 gtk_pixmap_set(GTK_PIXMAP(b->pix), pm, bm); | |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1481 gdk_pixmap_unref(pm); |
| 436 | 1482 if ( ticker_prefs & OPT_DISP_SHOW_BUDDYTICKER ) |
| 1483 { | |
| 1484 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, | |
| 430 | 1485 NULL, (gchar **)admin_icon_xpm); |
| 436 | 1486 BuddyTickerSetPixmap(b->name, pm, bm); |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1487 gdk_pixmap_unref(pm); |
| 436 | 1488 } |
| 1 | 1489 } else if (b->uc & UC_UNCONFIRMED) { |
| 1490 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, | |
| 1491 NULL, (gchar **)dt_icon_xpm); | |
| 1492 gtk_pixmap_set(GTK_PIXMAP(b->pix), pm, bm); | |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1493 gdk_pixmap_unref(pm); |
| 436 | 1494 if ( ticker_prefs & OPT_DISP_SHOW_BUDDYTICKER ) |
| 1495 { | |
| 1496 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, | |
| 430 | 1497 NULL, (gchar **)dt_icon_xpm); |
| 436 | 1498 BuddyTickerSetPixmap(b->name, pm, bm); |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1499 gdk_pixmap_unref(pm); |
| 436 | 1500 } |
| 1 | 1501 } else { |
| 1502 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, | |
| 1503 NULL, (gchar **)no_icon_xpm); | |
| 1504 gtk_pixmap_set(GTK_PIXMAP(b->pix), pm, bm); | |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1505 gdk_pixmap_unref(pm); |
| 436 | 1506 if ( ticker_prefs & OPT_DISP_SHOW_BUDDYTICKER ) |
| 1507 { | |
| 1508 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, | |
| 430 | 1509 NULL, (gchar **)no_icon_xpm); |
| 436 | 1510 BuddyTickerSetPixmap(b->name, pm, bm); |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1511 gdk_pixmap_unref(pm); |
| 436 | 1512 } |
| 1 | 1513 } |
| 1514 if (display_options & OPT_DISP_SHOW_PIXMAPS) | |
| 1515 gtk_widget_show(b->pix); | |
| 1516 } | |
| 1517 | |
| 1518 | |
| 1519 | |
| 1520 } else { | |
| 59 | 1521 if (GTK_WIDGET_VISIBLE(b->item)) { |
|
780
c714def9cebb
[gaim-migrate @ 790]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
774
diff
changeset
|
1522 plugin_event(event_buddy_signoff, b->name, 0, 0); |
| 1 | 1523 play_sound(BUDDY_LEAVE); |
| 1524 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, | |
| 1525 NULL, (gchar **)logout_icon_xpm); | |
| 1526 gtk_widget_hide(b->pix); | |
| 1527 gtk_pixmap_set(GTK_PIXMAP(b->pix), pm, bm); | |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1528 if (display_options & OPT_DISP_SHOW_PIXMAPS) |
|
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1529 gtk_widget_show(b->pix); |
|
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1530 gdk_pixmap_unref(pm); |
| 430 | 1531 pm = gdk_pixmap_create_from_xpm_d(blist->window, &bm, |
| 1532 NULL, (gchar **)logout_icon_xpm); | |
| 436 | 1533 if ( ticker_prefs & OPT_DISP_SHOW_BUDDYTICKER ) |
| 1534 BuddyTickerSetPixmap( b->name, pm, bm ); | |
|
644
b3900e312d8e
[gaim-migrate @ 654]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
608
diff
changeset
|
1535 gdk_pixmap_unref(pm); |
| 1 | 1536 if (display_options & OPT_DISP_SHOW_LOGON) { |
| 1537 struct conversation *c = find_conversation(b->name); | |
| 1538 if (c) { | |
| 1539 char tmp[1024]; | |
| 1540 | |
| 1541 | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1542 g_snprintf(tmp, sizeof(tmp), _("<HR><B>%s logged out%s%s.</B><BR><HR>"), b->name, |
| 1 | 1543 ((display_options & OPT_DISP_SHOW_TIME) ? " @ " : ""), |
| 1544 ((display_options & OPT_DISP_SHOW_TIME) ? date() : "")); | |
| 1545 | |
| 1546 | |
|
472
6a92cd7322cc
[gaim-migrate @ 482]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
438
diff
changeset
|
1547 write_to_conv(c, tmp, WFLAG_SYSTEM, NULL); |
| 1 | 1548 |
| 1549 } | |
| 1550 } | |
| 58 | 1551 b->log_timer = gtk_timeout_add(10000, (GtkFunction)log_timeout, b->name); |
| 436 | 1552 if ( ticker_prefs & OPT_DISP_SHOW_BUDDYTICKER ) |
| 1553 gtk_timeout_add(10000, (GtkFunction)BuddyTickerLogoutTimeout, b->name); | |
| 1 | 1554 update_num_groups(); |
| 1555 update_show_idlepix(); | |
| 1556 } | |
| 1557 } | |
| 1558 setup_buddy_chats(); | |
| 1559 } | |
| 1560 | |
| 1561 | |
| 1562 static void move_blist_window(GtkWidget *w, GdkEventConfigure *e, void *dummy) | |
| 1563 { | |
| 1564 int x, y, width, height; | |
| 1565 int save = 0; | |
| 1566 gdk_window_get_position(blist->window, &x, &y); | |
| 1567 gdk_window_get_size(blist->window, &width, &height); | |
| 1568 | |
| 1569 if(e->send_event) { /* Is a position event */ | |
| 1570 if (blist_pos.x != x || blist_pos.y != y) | |
| 1571 save = 1; | |
| 1572 blist_pos.x = x; | |
| 1573 blist_pos.y = y; | |
| 1574 } else { /* Is a size event */ | |
| 1575 if (blist_pos.xoff != x || blist_pos.yoff != y || | |
| 1576 blist_pos.width != width || blist_pos.width != width) | |
| 1577 save = 1; | |
| 1578 | |
| 1579 blist_pos.width = width; | |
| 1580 blist_pos.height = height; | |
| 1581 blist_pos.xoff = x; | |
| 1582 blist_pos.yoff = y; | |
| 1583 } | |
| 1584 | |
| 1585 if (save) | |
| 1586 save_prefs(); | |
| 1587 | |
| 1588 } | |
| 1589 | |
| 1590 | |
| 1591 /******************************************************************* | |
| 1592 * | |
| 1593 * Helper funs for making the menu | |
| 1594 * | |
| 1595 *******************************************************************/ | |
| 1596 | |
| 1597 void gaim_seperator(GtkWidget *menu) | |
| 1598 { | |
| 1599 GtkWidget *sep, *menuitem; | |
| 1600 sep = gtk_hseparator_new(); | |
| 1601 menuitem = gtk_menu_item_new(); | |
| 1602 gtk_menu_append(GTK_MENU(menu), menuitem); | |
| 1603 gtk_container_add(GTK_CONTAINER(menuitem), sep); | |
| 1604 gtk_widget_set_sensitive(menuitem, FALSE); | |
| 1605 gtk_widget_show(menuitem); | |
| 1606 gtk_widget_show(sep); | |
| 1607 } | |
| 1608 | |
| 1609 GtkWidget *gaim_new_item(GtkWidget *menu, const char *str, GtkSignalFunc sf) | |
| 1610 { | |
| 1611 GtkWidget *menuitem; | |
| 1612 menuitem = gtk_menu_item_new_with_label(str); | |
| 1613 if (menu) | |
| 1614 gtk_menu_append(GTK_MENU(menu), menuitem); | |
| 1615 gtk_widget_show(menuitem); | |
| 1616 if (sf) | |
| 1617 gtk_signal_connect(GTK_OBJECT(menuitem), "activate", sf, NULL); | |
| 1618 return menuitem; | |
| 1619 } | |
| 1620 | |
| 714 | 1621 GtkWidget *gaim_new_item_with_pixmap(GtkWidget *menu, const char *str, char **xpm, GtkSignalFunc sf) |
| 1622 { | |
| 1623 GtkWidget *menuitem; | |
| 1624 GtkWidget *hbox; | |
| 1625 GtkWidget *label; | |
| 1626 GtkWidget *pixmap; | |
| 1627 GdkPixmap *pm; | |
| 1628 GdkBitmap *mask; | |
| 1629 | |
| 1630 menuitem = gtk_menu_item_new(); | |
| 1631 gtk_widget_show(menuitem); | |
| 1632 | |
| 1633 /* Create our container */ | |
| 718 | 1634 hbox = gtk_hbox_new(FALSE, 2); |
| 714 | 1635 |
| 1636 /* Create our pixmap and pack it */ | |
|
719
7e5523de52e2
[gaim-migrate @ 729]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
718
diff
changeset
|
1637 gtk_widget_realize(menu->parent); |
| 714 | 1638 pm = gdk_pixmap_create_from_xpm_d(menu->parent->window, &mask, NULL, xpm); |
| 1639 | |
| 1640 pixmap = gtk_pixmap_new(pm, mask); | |
| 1641 gtk_widget_show(pixmap); | |
| 1642 | |
| 718 | 1643 gtk_box_pack_start(GTK_BOX(hbox), pixmap, FALSE, FALSE, 2); |
| 1644 | |
| 1645 /* Create our label and pack it */ | |
| 714 | 1646 |
| 718 | 1647 label = gtk_label_new(str); |
| 1648 gtk_widget_show(label); | |
| 1649 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 2); | |
| 1650 | |
| 714 | 1651 /* And finally, pack our box within our menu item */ |
| 1652 | |
| 1653 gtk_container_add(GTK_CONTAINER(menuitem), hbox); | |
| 1654 gtk_widget_show(hbox); | |
| 1655 | |
| 1656 if (menu) | |
| 1657 gtk_menu_append(GTK_MENU(menu), menuitem); | |
| 1658 | |
| 1659 if (sf) | |
| 1660 gtk_signal_connect(GTK_OBJECT(menuitem), "activate", sf, NULL); | |
| 1661 return menuitem; | |
| 1662 } | |
| 1663 | |
| 1 | 1664 |
| 1665 | |
|
696
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1666 void build_imchat_box(gboolean on) |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1667 { |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1668 if (on) { |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1669 if (imchatbox) return; |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1670 |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1671 imbutton = gtk_button_new_with_label(_("IM")); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1672 infobutton = gtk_button_new_with_label(_("Info")); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1673 chatbutton = gtk_button_new_with_label(_("Chat")); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1674 |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1675 imchatbox = gtk_hbox_new(TRUE, 10); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1676 |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1677 if (display_options & OPT_DISP_COOL_LOOK) |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1678 { |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1679 gtk_button_set_relief(GTK_BUTTON(imbutton), GTK_RELIEF_NONE); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1680 gtk_button_set_relief(GTK_BUTTON(infobutton), GTK_RELIEF_NONE); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1681 gtk_button_set_relief(GTK_BUTTON(chatbutton), GTK_RELIEF_NONE); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1682 } |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1683 |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1684 /* Put the buttons in the hbox */ |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1685 gtk_widget_show(imbutton); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1686 gtk_widget_show(chatbutton); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1687 gtk_widget_show(infobutton); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1688 |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1689 gtk_box_pack_start(GTK_BOX(imchatbox), imbutton, TRUE, TRUE, 0); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1690 gtk_box_pack_start(GTK_BOX(imchatbox), infobutton, TRUE, TRUE, 0); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1691 gtk_box_pack_start(GTK_BOX(imchatbox), chatbutton, TRUE, TRUE, 0); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1692 gtk_container_border_width(GTK_CONTAINER(imchatbox), 10); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1693 |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1694 gtk_signal_connect(GTK_OBJECT(imbutton), "clicked", GTK_SIGNAL_FUNC(show_im_dialog), buddies); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1695 gtk_signal_connect(GTK_OBJECT(infobutton), "clicked", GTK_SIGNAL_FUNC(info_callback), buddies); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1696 gtk_signal_connect(GTK_OBJECT(chatbutton), "clicked", GTK_SIGNAL_FUNC(chat_callback), buddies); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1697 |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1698 gtk_tooltips_set_tip(tips,infobutton, _("Information on selected Buddy"), "Penguin"); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1699 gtk_tooltips_set_tip(tips,imbutton, _("Send Instant Message"), "Penguin"); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1700 gtk_tooltips_set_tip(tips,chatbutton, _("Start/join a Buddy Chat"), "Penguin"); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1701 |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1702 gtk_box_pack_start(GTK_BOX(buddypane), imchatbox, FALSE, FALSE, 0); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1703 |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1704 gtk_widget_show(imchatbox); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1705 } else { |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1706 if (imchatbox) |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1707 gtk_widget_destroy(imchatbox); |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1708 imchatbox = NULL; |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1709 } |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1710 } |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1711 |
| 1 | 1712 |
| 1713 | |
| 1714 void show_buddy_list() | |
| 1715 { | |
| 1716 | |
| 1717 /* Build the buddy list, based on *config */ | |
| 1718 | |
| 1719 GtkWidget *sw; | |
| 1720 GtkWidget *menu; | |
| 1721 GtkWidget *findmenu; | |
| 1722 GtkWidget *setmenu; | |
| 1723 GtkWidget *menubar; | |
| 1724 GtkWidget *vbox; | |
| 1725 GtkWidget *menuitem; | |
| 1726 GtkWidget *notebook; | |
| 1727 GtkWidget *label; | |
| 1728 GtkWidget *bbox; | |
| 1729 GtkWidget *tbox; | |
| 1730 | |
| 1731 | |
| 1732 #ifdef USE_APPLET | |
| 1733 blist = gtk_window_new(GTK_WINDOW_DIALOG); | |
| 1734 #else | |
| 1735 blist = gtk_window_new(GTK_WINDOW_TOPLEVEL); | |
| 1736 #endif | |
| 1737 | |
| 1738 gtk_widget_realize(blist); | |
| 1739 aol_icon(blist->window); | |
| 1740 | |
| 1741 gtk_window_set_policy(GTK_WINDOW(blist), TRUE, TRUE, TRUE); | |
| 1742 | |
| 1743 menubar = gtk_menu_bar_new(); | |
| 1744 | |
| 1745 menu = gtk_menu_new(); | |
| 1746 | |
| 1747 | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1748 menuitem = gaim_new_item(NULL, _("File"), NULL); |
| 1 | 1749 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu); |
| 1750 gtk_menu_bar_append(GTK_MENU_BAR(menubar), menuitem); | |
| 1751 | |
| 714 | 1752 // gaim_new_item(menu, _("Add A Buddy"), GTK_SIGNAL_FUNC(add_buddy_callback)); |
| 1753 gaim_new_item_with_pixmap(menu, _("Add A Buddy"), add_small_xpm, GTK_SIGNAL_FUNC(add_buddy_callback)); | |
| 718 | 1754 gaim_new_item_with_pixmap(menu, _("Join A Chat"), add_small_xpm, GTK_SIGNAL_FUNC(chat_callback)); |
| 1 | 1755 gaim_seperator(menu); |
| 718 | 1756 gaim_new_item_with_pixmap(menu, _("Import Buddy List"), import_small_xpm, GTK_SIGNAL_FUNC(import_callback)); |
| 733 | 1757 gaim_new_item_with_pixmap(menu, _("Export Buddy List"), export_small_xpm,GTK_SIGNAL_FUNC(export_callback)); |
| 1 | 1758 if (!(general_options & OPT_GEN_REGISTERED)) |
| 1759 { | |
| 1760 gaim_seperator(menu); | |
| 718 | 1761 gaim_new_item_with_pixmap(menu, _("Register"), add_small_xpm, GTK_SIGNAL_FUNC(gaimreg_callback)); |
| 1 | 1762 } |
| 1763 gaim_seperator(menu); | |
| 733 | 1764 gaim_new_item_with_pixmap(menu, _("Signoff"), logout_icon_xpm, GTK_SIGNAL_FUNC(signoff)); |
| 1 | 1765 |
| 1766 #ifndef USE_APPLET | |
| 727 | 1767 gaim_new_item_with_pixmap(menu, _("Quit"), exit_small_xpm, GTK_SIGNAL_FUNC(do_quit)); |
| 1 | 1768 #else |
| 727 | 1769 gaim_new_item_with_pixmap(menu, _("Close"), close_small_xpm, GTK_SIGNAL_FUNC(applet_destroy_buddy)); |
| 1 | 1770 #endif |
| 1771 | |
| 1772 menu = gtk_menu_new(); | |
| 1773 | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1774 menuitem = gaim_new_item(NULL, _("Tools"), NULL); |
| 1 | 1775 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu); |
| 1776 gtk_menu_bar_append(GTK_MENU_BAR(menubar), menuitem); | |
| 1777 | |
| 1778 awaymenu = gtk_menu_new(); | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1779 menuitem = gaim_new_item(menu, _("Away"), NULL); |
| 1 | 1780 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), awaymenu); |
| 1781 do_away_menu(); | |
| 1782 | |
| 1783 bpmenu = gtk_menu_new(); | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1784 menuitem = gaim_new_item(menu, _("Buddy Pounce"), NULL); |
| 1 | 1785 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), bpmenu); |
| 1786 do_bp_menu(); | |
| 1787 | |
| 1788 gaim_seperator(menu); | |
| 1789 | |
| 1790 findmenu = gtk_menu_new(); | |
| 1791 gtk_widget_show(findmenu); | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1792 menuitem = gaim_new_item(menu, _("Search for Buddy"), NULL); |
| 1 | 1793 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), findmenu); |
| 1794 gtk_widget_show(menuitem); | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1795 menuitem = gtk_menu_item_new_with_label(_("by Email")); |
| 1 | 1796 gtk_menu_append(GTK_MENU(findmenu), menuitem); |
| 1797 gtk_signal_connect(GTK_OBJECT(menuitem), "activate", GTK_SIGNAL_FUNC(show_find_email), NULL); | |
| 1798 gtk_widget_show(menuitem); | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1799 menuitem = gtk_menu_item_new_with_label(_("by Dir Info")); |
| 1 | 1800 gtk_menu_append(GTK_MENU(findmenu), menuitem); |
| 1801 gtk_signal_connect(GTK_OBJECT(menuitem), "activate", GTK_SIGNAL_FUNC(show_find_info), NULL); | |
| 1802 gtk_widget_show(menuitem); | |
| 1803 | |
| 1804 setmenu = gtk_menu_new(); | |
| 1805 gtk_widget_show(setmenu); | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1806 menuitem = gaim_new_item(menu, _("Settings"), NULL); |
| 1 | 1807 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), setmenu); |
| 1808 gtk_widget_show(menuitem); | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1809 menuitem = gtk_menu_item_new_with_label(_("User Info")); |
| 1 | 1810 gtk_menu_append(GTK_MENU(setmenu), menuitem); |
| 1811 gtk_signal_connect(GTK_OBJECT(menuitem), "activate", GTK_SIGNAL_FUNC(show_set_info), NULL); | |
| 1812 gtk_widget_show(menuitem); | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1813 menuitem = gtk_menu_item_new_with_label(_("Directory Info")); |
| 1 | 1814 gtk_menu_append(GTK_MENU(setmenu), menuitem); |
| 1815 gtk_signal_connect(GTK_OBJECT(menuitem), "activate", GTK_SIGNAL_FUNC(show_set_dir), NULL); | |
| 1816 gtk_widget_show(menuitem); | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1817 menuitem = gtk_menu_item_new_with_label(_("Change Password")); |
| 146 | 1818 gtk_menu_append(GTK_MENU(setmenu), menuitem); |
| 1819 gtk_signal_connect(GTK_OBJECT(menuitem), "activate", GTK_SIGNAL_FUNC(show_change_passwd), NULL); | |
| 1820 gtk_widget_show(menuitem); | |
| 1 | 1821 gaim_seperator(menu); |
| 1822 | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1823 gaim_new_item(menu, _("Preferences"), GTK_SIGNAL_FUNC(show_prefs)); |
|
90
f5b305c0d974
[gaim-migrate @ 100]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
87
diff
changeset
|
1824 |
|
152
cb0d3ec5a4c8
[gaim-migrate @ 162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
150
diff
changeset
|
1825 #ifdef GAIM_PLUGINS |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1826 gaim_new_item(menu, _("Plugins"), GTK_SIGNAL_FUNC(show_plugins)); |
|
152
cb0d3ec5a4c8
[gaim-migrate @ 162]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
150
diff
changeset
|
1827 #endif |
|
90
f5b305c0d974
[gaim-migrate @ 100]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
87
diff
changeset
|
1828 |
| 1 | 1829 menu = gtk_menu_new(); |
| 1830 | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1831 menuitem = gaim_new_item(NULL, _("Help"), NULL); |
| 1 | 1832 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menu); |
| 1833 gtk_menu_item_right_justify(GTK_MENU_ITEM(menuitem)); | |
| 1834 gtk_menu_bar_append(GTK_MENU_BAR(menubar), menuitem); | |
| 1835 | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1836 gaim_new_item(menu, _("About"), show_about); |
| 1 | 1837 |
| 1838 gtk_widget_show(menubar); | |
| 1839 | |
| 1840 vbox = gtk_vbox_new(FALSE, 10); | |
| 1841 | |
| 1842 notebook = gtk_notebook_new(); | |
| 1843 | |
| 1844 | |
| 1845 | |
| 1846 | |
| 1847 /* Do buddy list stuff */ | |
| 1848 | |
| 1849 buddypane = gtk_vbox_new(FALSE, 0); | |
| 1850 | |
| 1851 buddies = gtk_tree_new(); | |
| 1852 sw = gtk_scrolled_window_new(NULL, NULL); | |
| 1853 | |
| 1854 tips = gtk_tooltips_new(); | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1855 gtk_object_set_data(GTK_OBJECT(blist), _("Buddy List"), tips); |
| 1 | 1856 |
| 1857 /* Now the buddy list */ | |
| 1858 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw),buddies); | |
| 1859 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | |
| 1860 GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC); | |
| 1861 gtk_widget_set_usize(sw,200,200); | |
| 1862 gtk_widget_show(buddies); | |
| 1863 gtk_widget_show(sw); | |
| 1864 | |
| 1865 gtk_box_pack_start(GTK_BOX(buddypane), sw, TRUE, TRUE, 0); | |
| 1866 gtk_widget_show(buddypane); | |
| 1867 | |
|
696
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1868 if (!(display_options & OPT_DISP_NO_BUTTONS)) |
|
97b75ed155b0
[gaim-migrate @ 706]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
689
diff
changeset
|
1869 build_imchat_box(TRUE); |
| 1 | 1870 |
| 1871 | |
| 1872 /* Swing the edit buddy */ | |
| 1873 editpane = gtk_vbox_new(FALSE, 0); | |
| 1874 | |
| 1875 | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1876 addbutton = gtk_button_new_with_label(_("Add")); |
|
577
aa9a8bcddd80
[gaim-migrate @ 587]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
544
diff
changeset
|
1877 groupbutton = gtk_button_new_with_label(_("Group")); |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1878 rembutton = gtk_button_new_with_label(_("Remove")); |
|
535
f03f041c1aa9
[gaim-migrate @ 545]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
515
diff
changeset
|
1879 |
|
f03f041c1aa9
[gaim-migrate @ 545]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
515
diff
changeset
|
1880 if (display_options & OPT_DISP_COOL_LOOK) |
|
f03f041c1aa9
[gaim-migrate @ 545]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
515
diff
changeset
|
1881 { |
|
f03f041c1aa9
[gaim-migrate @ 545]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
515
diff
changeset
|
1882 gtk_button_set_relief(GTK_BUTTON(addbutton), GTK_RELIEF_NONE); |
|
577
aa9a8bcddd80
[gaim-migrate @ 587]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
544
diff
changeset
|
1883 gtk_button_set_relief(GTK_BUTTON(groupbutton), GTK_RELIEF_NONE); |
|
535
f03f041c1aa9
[gaim-migrate @ 545]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
515
diff
changeset
|
1884 gtk_button_set_relief(GTK_BUTTON(rembutton), GTK_RELIEF_NONE); |
|
f03f041c1aa9
[gaim-migrate @ 545]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
515
diff
changeset
|
1885 } |
|
f03f041c1aa9
[gaim-migrate @ 545]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
515
diff
changeset
|
1886 |
| 1 | 1887 edittree = gtk_ctree_new(1, 0); |
| 1888 gtk_ctree_set_line_style (GTK_CTREE(edittree), GTK_CTREE_LINES_SOLID); | |
| 1889 gtk_ctree_set_expander_style(GTK_CTREE(edittree), GTK_CTREE_EXPANDER_SQUARE); | |
| 1890 gtk_clist_set_reorderable(GTK_CLIST(edittree), TRUE); | |
| 1891 | |
| 1892 gtk_ctree_set_drag_compare_func (GTK_CTREE(edittree), | |
| 1893 (GtkCTreeCompareDragFunc)edit_drag_compare_func); | |
| 1894 | |
| 1895 | |
| 1896 gtk_signal_connect_after (GTK_OBJECT (edittree), "tree_move", | |
| 1897 GTK_SIGNAL_FUNC (edit_tree_move), NULL); | |
| 1898 | |
| 1899 | |
| 1900 bbox = gtk_hbox_new(TRUE, 10); | |
| 1901 tbox = gtk_scrolled_window_new(NULL, NULL); | |
| 1902 /* Put the buttons in the box */ | |
|
577
aa9a8bcddd80
[gaim-migrate @ 587]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
544
diff
changeset
|
1903 gtk_box_pack_start(GTK_BOX(bbox), addbutton, TRUE, TRUE, 0); |
|
aa9a8bcddd80
[gaim-migrate @ 587]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
544
diff
changeset
|
1904 gtk_box_pack_start(GTK_BOX(bbox), groupbutton, TRUE, TRUE, 0); |
|
aa9a8bcddd80
[gaim-migrate @ 587]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
544
diff
changeset
|
1905 gtk_box_pack_start(GTK_BOX(bbox), rembutton, TRUE, TRUE, 0); |
| 1 | 1906 |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1907 gtk_tooltips_set_tip(tips, addbutton, _("Add a new Buddy"), "Penguin"); |
|
577
aa9a8bcddd80
[gaim-migrate @ 587]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
544
diff
changeset
|
1908 gtk_tooltips_set_tip(tips, groupbutton, _("Add a new Group"), "Penguin"); |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1909 gtk_tooltips_set_tip(tips, rembutton, _("Remove selected Buddy"), "Penguin"); |
| 1 | 1910 |
| 1911 /* And the boxes in the box */ | |
| 1912 gtk_box_pack_start(GTK_BOX(editpane), tbox, TRUE, TRUE, 5); | |
| 1913 gtk_box_pack_start(GTK_BOX(editpane), bbox, FALSE, FALSE, 5); | |
| 1914 | |
| 1915 /* Handle closes right */ | |
| 1916 | |
| 1917 | |
| 1918 | |
| 1919 /* Finish up */ | |
| 1920 gtk_widget_show(addbutton); | |
|
577
aa9a8bcddd80
[gaim-migrate @ 587]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
544
diff
changeset
|
1921 gtk_widget_show(groupbutton); |
| 1 | 1922 gtk_widget_show(rembutton); |
| 1923 gtk_widget_show(edittree); | |
| 1924 gtk_widget_show(tbox); | |
| 1925 gtk_widget_show(bbox); | |
| 1926 gtk_widget_show(editpane); | |
| 1927 | |
| 1928 | |
|
535
f03f041c1aa9
[gaim-migrate @ 545]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
515
diff
changeset
|
1929 |
|
703
20553b584ccb
[gaim-migrate @ 713]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
700
diff
changeset
|
1930 update_button_pix(); |
|
20553b584ccb
[gaim-migrate @ 713]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
700
diff
changeset
|
1931 |
| 1 | 1932 |
| 1933 | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1934 label = gtk_label_new(_("Online")); |
| 1 | 1935 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), buddypane, label); |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1936 label = gtk_label_new(_("Edit Buddies")); |
| 1 | 1937 gtk_notebook_append_page(GTK_NOTEBOOK(notebook), editpane, label); |
| 1938 | |
| 1939 gtk_widget_show_all(notebook); | |
| 1940 | |
| 1941 /* Pack things in the vbox */ | |
| 1942 gtk_widget_show(vbox); | |
| 1943 | |
| 1944 | |
| 1945 gtk_widget_show(notebook); | |
| 1946 | |
| 1947 /* Enable buttons */ | |
| 1948 | |
| 1949 gtk_signal_connect(GTK_OBJECT(rembutton), "clicked", GTK_SIGNAL_FUNC(do_del_buddy), edittree); | |
| 1950 gtk_signal_connect(GTK_OBJECT(addbutton), "clicked", GTK_SIGNAL_FUNC(add_buddy_callback), NULL); | |
|
577
aa9a8bcddd80
[gaim-migrate @ 587]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
544
diff
changeset
|
1951 gtk_signal_connect(GTK_OBJECT(groupbutton), "clicked", GTK_SIGNAL_FUNC(add_group_callback), NULL); |
| 1 | 1952 gtk_box_pack_start(GTK_BOX(vbox), menubar, FALSE, TRUE, 0); |
| 1953 gtk_box_pack_start(GTK_BOX(vbox), notebook, TRUE, TRUE, 0); | |
| 1954 | |
| 1955 gtk_container_add(GTK_CONTAINER(blist), vbox); | |
| 1956 | |
| 1957 #ifndef USE_APPLET | |
| 1958 gtk_signal_connect(GTK_OBJECT(blist), "delete_event", GTK_SIGNAL_FUNC(do_quit), blist); | |
| 1959 #else | |
| 1960 gtk_signal_connect(GTK_OBJECT(blist), "delete_event", GTK_SIGNAL_FUNC(applet_destroy_buddy), NULL); | |
| 1961 #endif | |
| 1962 | |
| 1963 gtk_signal_connect(GTK_OBJECT(blist), "configure_event", GTK_SIGNAL_FUNC(move_blist_window), NULL); | |
| 1964 | |
| 1965 | |
| 1966 | |
| 1967 /* The edit tree */ | |
| 1968 gtk_container_add(GTK_CONTAINER(tbox), edittree); | |
| 1969 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(tbox), | |
| 1970 GTK_POLICY_NEVER,GTK_POLICY_AUTOMATIC); | |
| 1971 | |
| 1972 | |
|
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
1973 gtk_window_set_title(GTK_WINDOW(blist), _("Gaim - Buddy List")); |
| 1 | 1974 |
| 1975 if (general_options & OPT_GEN_SAVED_WINDOWS) { | |
| 1976 if (blist_pos.width != 0) { /* Sanity check! */ | |
| 1977 gtk_widget_set_uposition(blist, blist_pos.x - blist_pos.xoff, blist_pos.y - blist_pos.yoff); | |
| 1978 gtk_widget_set_usize(blist, blist_pos.width, blist_pos.height); | |
| 1979 } | |
| 1980 } | |
| 1981 } | |
| 1982 | |
| 1983 void refresh_buddy_window() | |
| 1984 { | |
| 1985 build_edit_tree(); | |
|
678
c72f58814e9f
[gaim-migrate @ 688]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
660
diff
changeset
|
1986 build_permit_tree(); |
| 1 | 1987 |
| 1988 update_button_pix(); | |
| 1989 gtk_widget_show(blist); | |
| 1990 } | |
| 1991 |
