annotate src/applet.c @ 3147:3805d9d344f2

[gaim-migrate @ 3163] Please test this. Yahoo changed it's authentication method and has started disallowing older clients (and third party clients using the older method) to connect to their servers. This impliments the new authentication method so that we won't get blocked from Yahoo, and Indian users (who have already been blocked) can connect again. It's not perfect--it should fail about 1 out of 16 times. It's an easy bug to find and fix, but I want to go to bed now. If you find yourself failing to connect more than this 1 of 16, please let me know, and I'll tell you how to help me debug it. Thanks. committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Sun, 14 Apr 2002 07:50:48 +0000
parents 22c84cbcd5a6
children 01279615a5fe
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
1 /**************************************************************
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
2 **
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
3 ** GaimGnomeAppletMgr
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
4 ** Author - Quinticent (John Palmieri: johnp@martianrock.com)
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
5 **
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
6 ** Purpose - Takes over the task of managing the GNOME applet
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
7 ** code and provides a centralized codebase for
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
8 ** GNOME integration for Gaim.
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
9 **
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
10 **
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
11 ** gaim
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
12 **
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
13 ** Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
14 **
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
15 ** This program is free software; you can redistribute it and/or modify
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
16 ** it under the terms of the GNU General Public License as published by
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
17 ** the Free Software Foundation; either version 2 of the License, or
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
18 ** (at your option) any later version.
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
19 **
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
20 ** This program is distributed in the hope that it will be useful,
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
21 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
22 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
23 ** GNU General Public License for more details.
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
24 **
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
25 ** You should have received a copy of the GNU General Public License
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
26 ** along with this program; if not, write to the Free Software
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
27 ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
28 */
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
29
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
30 #ifdef HAVE_CONFIG_H
2090
b66aca8e8dce [gaim-migrate @ 2100]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1815
diff changeset
31 #include <config.h>
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
32 #endif
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
33 #ifdef USE_APPLET
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
34 #include <string.h>
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
35 #include <gdk-pixbuf/gdk-pixbuf.h>
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
36 #include <libart_lgpl/art_affine.h>
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
37 #include <libart_lgpl/art_rgb_affine.h>
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
38 #include <libart_lgpl/art_rgb_rgba_affine.h>
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
39 #include "gaim.h"
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
40 #include "applet.h"
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
41 #include "pixmaps/aimicon.xpm"
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
42
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
43 static int connecting = 0;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
44
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
45 gboolean applet_buddy_show = FALSE;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
46
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
47 GtkWidget *applet;
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
48 static GtkWidget *icon;
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
49
2549
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
50 static GtkAllocation *get_applet_pos(gboolean);
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
51 static gint sizehint = 48;
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
52
2629
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
53 static PanelBackType backtype = PANEL_BACK_NONE;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
54 static GdkColor *backcolor = NULL;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
55 static char *backfile = NULL;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
56
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
57 static void make_background(guchar *dest)
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
58 {
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
59 guchar *p;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
60 int r,g,b,i;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
61
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
62 if (backcolor && (backtype == PANEL_BACK_COLOR)) {
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
63 guchar *p;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
64 int r,g,b,i;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
65
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
66 r = backcolor->red>>8;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
67 g = backcolor->green>>8;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
68 b = backcolor->blue>>8;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
69 p = dest;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
70 for (i = 0; i < sizehint * sizehint; i++) {
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
71 *p++ = r;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
72 *p++ = g;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
73 *p++ = b;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
74 }
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
75 return;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
76 } else if (backfile && (backtype == PANEL_BACK_PIXMAP)) {
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
77 GdkPixbuf *pb = gdk_pixbuf_new_from_file(backfile);
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
78 if (pb) {
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
79 int dw = sizehint;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
80 int dh = sizehint;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
81 int offx = applet->allocation.x;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
82 int offy = applet->allocation.y;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
83 int drs = dw * 3;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
84 guchar *tile = gdk_pixbuf_get_pixels(pb);
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
85 int w = gdk_pixbuf_get_width(pb);
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
86 int h = gdk_pixbuf_get_height(pb);
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
87 int rowstride = gdk_pixbuf_get_rowstride(pb);
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
88 int has_alpha = gdk_pixbuf_get_has_alpha(pb);
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
89
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
90 guchar *p;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
91 int i,j,x,y,a;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
92 guchar *imgrow;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
93 int off;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
94
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
95 p = dest;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
96 y = offy % h;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
97 off = drs - (dw*3); /*the space after width ends until next row*/
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
98 for(j=0;j<dh;j++) {
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
99 x = offx % w;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
100 imgrow = tile + y * rowstride + (has_alpha?/*x*4*/x<<2:x*3);
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
101 for(i=0;i<dw;i++) {
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
102 *(p++) = *(imgrow++);
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
103 *(p++) = *(imgrow++);
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
104 *(p++) = *(imgrow++);
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
105 if(has_alpha) {
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
106 a = *(imgrow++);
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
107 if(a!=255) {
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
108 guchar *pp = p-3;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
109 pp[0] = (pp[0]*a)>>8;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
110 pp[1] = (pp[1]*a)>>8;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
111 pp[2] = (pp[2]*a)>>8;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
112 }
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
113 }
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
114 x++;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
115 if(x>=w) {
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
116 x = 0;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
117 imgrow = tile + y * rowstride;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
118 }
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
119 }
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
120 p += off;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
121 y++;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
122 if(y>=h)
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
123 y = 0;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
124 }
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
125 gdk_pixbuf_unref(pb);
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
126 return;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
127 }
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
128 }
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
129
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
130 r = applet->style->bg[GTK_WIDGET_STATE(applet)].red>>8;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
131 g = applet->style->bg[GTK_WIDGET_STATE(applet)].green>>8;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
132 b = applet->style->bg[GTK_WIDGET_STATE(applet)].blue>>8;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
133 p = dest;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
134 for (i = 0; i < sizehint * sizehint; i++) {
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
135 *p++ = r;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
136 *p++ = g;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
137 *p++ = b;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
138 }
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
139 }
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
140
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
141 static GdkPixmap *get_applet_icon(const char *name)
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
142 {
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
143 GdkPixmap *cache;
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
144 GdkGC *gc;
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
145 char *path;
2843
87d11d2a7d59 [gaim-migrate @ 2856]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2731
diff changeset
146 GdkPixbuf *pb, *scale = NULL;
2629
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
147 guchar *dst;
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
148 double affine[6];
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
149
2567
f0e8cf09d8a3 [gaim-migrate @ 2580]
Rob Flynn <gaim@robflynn.com>
parents: 2549
diff changeset
150 if (!applet)
f0e8cf09d8a3 [gaim-migrate @ 2580]
Rob Flynn <gaim@robflynn.com>
parents: 2549
diff changeset
151 return NULL;
f0e8cf09d8a3 [gaim-migrate @ 2580]
Rob Flynn <gaim@robflynn.com>
parents: 2549
diff changeset
152
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
153 cache = gdk_pixmap_new(applet->window, sizehint, sizehint,
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
154 gtk_widget_get_visual(applet)->depth);
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
155 gc = gdk_gc_new(cache);
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
156 gdk_gc_copy(gc, applet->style->bg_gc[GTK_WIDGET_STATE(applet)]);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
157
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
158 path = gnome_pixmap_file(name);
2843
87d11d2a7d59 [gaim-migrate @ 2856]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2731
diff changeset
159 if (path)
87d11d2a7d59 [gaim-migrate @ 2856]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2731
diff changeset
160 scale = gdk_pixbuf_new_from_file(path);
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
161 g_free(path);
2486
cf3218cd9f94 [gaim-migrate @ 2499]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2484
diff changeset
162 if (!scale)
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
163 return NULL;
2486
cf3218cd9f94 [gaim-migrate @ 2499]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2484
diff changeset
164 pb = gdk_pixbuf_scale_simple(scale, sizehint, sizehint, GDK_INTERP_HYPER);
2729
e70908d3e0c8 [gaim-migrate @ 2742]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2716
diff changeset
165 gdk_pixbuf_unref(scale);
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
166
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
167 dst = g_new0(guchar, sizehint*sizehint*3);
2629
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
168 make_background(dst);
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
169
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
170 art_affine_identity(affine);
2497
be88e02789e0 [gaim-migrate @ 2510]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2492
diff changeset
171 if (gdk_pixbuf_get_has_alpha(pb))
be88e02789e0 [gaim-migrate @ 2510]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2492
diff changeset
172 art_rgb_rgba_affine(dst, 0, 0, sizehint, sizehint, sizehint * 3,
be88e02789e0 [gaim-migrate @ 2510]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2492
diff changeset
173 gdk_pixbuf_get_pixels(pb), gdk_pixbuf_get_width(pb),
be88e02789e0 [gaim-migrate @ 2510]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2492
diff changeset
174 gdk_pixbuf_get_height(pb), gdk_pixbuf_get_rowstride(pb),
be88e02789e0 [gaim-migrate @ 2510]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2492
diff changeset
175 affine, ART_FILTER_NEAREST, NULL);
be88e02789e0 [gaim-migrate @ 2510]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2492
diff changeset
176 else
be88e02789e0 [gaim-migrate @ 2510]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2492
diff changeset
177 art_rgb_affine(dst, 0, 0, sizehint, sizehint, sizehint * 3,
be88e02789e0 [gaim-migrate @ 2510]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2492
diff changeset
178 gdk_pixbuf_get_pixels(pb), gdk_pixbuf_get_width(pb),
be88e02789e0 [gaim-migrate @ 2510]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2492
diff changeset
179 gdk_pixbuf_get_height(pb), gdk_pixbuf_get_rowstride(pb),
be88e02789e0 [gaim-migrate @ 2510]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2492
diff changeset
180 affine, ART_FILTER_NEAREST, NULL);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
181
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
182 gdk_pixbuf_unref(pb);
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
183 gdk_draw_rgb_image(cache, gc, 0, 0, sizehint, sizehint,
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
184 GDK_RGB_DITHER_NORMAL, dst, sizehint * 3);
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
185 g_free(dst);
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
186
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
187 gdk_gc_unref(gc);
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
188 return cache;
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
189 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
190
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
191 static gboolean update_applet()
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
192 {
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
193 char buf[BUF_LONG];
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
194 GSList *c = connections;
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
195 GdkPixmap *newpix;
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
196
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
197 if (connecting) {
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
198 newpix = get_applet_icon(GAIM_GNOME_CONNECT_ICON);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
199 applet_set_tooltips(_("Attempting to sign on...."));
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
200 } else if (!connections) {
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
201 newpix = get_applet_icon(GAIM_GNOME_OFFLINE_ICON);
1815
f15d449b3167 [gaim-migrate @ 1825]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1689
diff changeset
202 applet_set_tooltips(_("Offline. Click to bring up login box."));
2468
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
203 } else if (awaymessage) {
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
204 int dsr = 0;
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
205
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
206 if ((away_options & OPT_AWAY_QUEUE) && message_queue) {
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
207 GSList *m = message_queue;
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
208 while (m) {
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
209 struct queued_message *qm = m->data;
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
210 if (qm->flags & WFLAG_RECV)
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
211 dsr++;
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
212 m = m->next;
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
213 }
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
214 }
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
215
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
216 if (dsr) {
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
217 newpix = get_applet_icon(GAIM_GNOME_MSG_PENDING_ICON);
2468
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
218 g_snprintf(buf, sizeof(buf), _("Away: %d pending."), dsr);
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
219 } else {
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
220 newpix = get_applet_icon(GAIM_GNOME_AWAY_ICON);
2468
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
221 g_snprintf(buf, sizeof(buf), _("Away."));
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
222 }
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
223
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
224 applet_set_tooltips(buf);
16e8b83b10a2 [gaim-migrate @ 2481]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2372
diff changeset
225 } else {
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
226 newpix = get_applet_icon(GAIM_GNOME_ONLINE_ICON);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
227 g_snprintf(buf, sizeof buf, "Online: ");
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
228 while (c) {
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
229 strcat(buf, ((struct gaim_connection *)c->data)->username);
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
230 c = g_slist_next(c);
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
231 if (c)
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
232 strcat(buf, ", ");
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
233 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
234 applet_set_tooltips(buf);
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
235 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
236
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
237 if (newpix) {
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
238 gtk_pixmap_set(GTK_PIXMAP(icon), newpix, NULL);
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
239 gdk_pixmap_unref(newpix);
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
240 }
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
241
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
242 return TRUE;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
243 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
244
2629
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
245 static void back_changed(AppletWidget *applet, PanelBackType type, char *file, GdkColor *clr)
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
246 {
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
247 backtype = type;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
248 if (backfile)
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
249 g_free(backfile);
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
250 if (file)
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
251 backfile = g_strdup(file);
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
252 else
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
253 backfile = NULL;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
254 if (backcolor)
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
255 gdk_color_free(backcolor);
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
256 if (clr)
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
257 backcolor = gdk_color_copy(clr);
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
258 else
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
259 backcolor = NULL;
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
260 update_applet();
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
261 }
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
262
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
263 #ifdef HAVE_PANEL_PIXEL_SIZE
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
264 static void applet_change_pixel_size(GtkWidget *w, int size, gpointer data)
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
265 {
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
266 sizehint = size;
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
267 gtk_widget_set_usize(icon, sizehint, sizehint);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
268 update_applet();
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
269 }
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
270 #endif
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
271
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
272 extern GtkWidget *mainwindow;
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
273 void applet_show_login(AppletWidget *widget, gpointer data)
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
274 {
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
275 show_login();
2314
64b4c69c1c5e [gaim-migrate @ 2324]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2090
diff changeset
276 if (blist_options & OPT_BLIST_NEAR_APPLET) {
2549
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
277 GtkAllocation *a = get_applet_pos(FALSE);
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
278 gtk_widget_set_uposition(mainwindow, a->x, a->y);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
279 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
280 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
281
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
282 void applet_do_signon(AppletWidget *widget, gpointer data)
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
283 {
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
284 applet_show_login(NULL, 0);
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
285 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
286
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
287 void insert_applet_away()
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
288 {
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
289 GSList *awy = away_messages;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
290 struct away_message *a;
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
291 char *awayname;
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
292
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
293 applet_widget_register_callback_dir(APPLET_WIDGET(applet), "away/", _("Away"));
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
294 applet_widget_register_callback(APPLET_WIDGET(applet),
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
295 "away/new",
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
296 _("New Away Message"),
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
297 (AppletCallbackFunc)create_away_mess, NULL);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
298
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
299 while (awy) {
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
300 a = (struct away_message *)awy->data;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
301
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
302 awayname = g_malloc(sizeof *awayname * (6 + strlen(a->name)));
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
303 awayname[0] = '\0';
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
304 strcat(awayname, "away/");
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
305 strcat(awayname, a->name);
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
306 applet_widget_register_callback(APPLET_WIDGET(applet),
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
307 awayname,
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
308 a->name, (AppletCallbackFunc)do_away_message, a);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
309
2731
e9e624d8803e [gaim-migrate @ 2744]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2729
diff changeset
310 awy = awy->next;
1421
13a34fb4abb0 [gaim-migrate @ 1431]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1420
diff changeset
311 g_free(awayname);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
312 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
313 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
314
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
315 void remove_applet_away()
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
316 {
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
317 GSList *awy = away_messages;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
318 struct away_message *a;
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
319 char *awayname;
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
320
1591
5c74d8b6cb57 [gaim-migrate @ 1601]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1456
diff changeset
321 if (!applet)
5c74d8b6cb57 [gaim-migrate @ 1601]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1456
diff changeset
322 return;
5c74d8b6cb57 [gaim-migrate @ 1601]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1456
diff changeset
323
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
324 applet_widget_unregister_callback(APPLET_WIDGET(applet), "away/new");
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
325
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
326 while (awy) {
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
327 a = (struct away_message *)awy->data;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
328
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
329 awayname = g_malloc(sizeof *awayname * (6 + strlen(a->name)));
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
330 awayname[0] = '\0';
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
331 strcat(awayname, "away/");
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
332 strcat(awayname, a->name);
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
333 applet_widget_unregister_callback(APPLET_WIDGET(applet), awayname);
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
334
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
335 awy = g_slist_next(awy);
2492
1a25e4869e7d [gaim-migrate @ 2505]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2489
diff changeset
336 g_free(awayname);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
337 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
338 applet_widget_unregister_callback_dir(APPLET_WIDGET(applet), "away/");
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
339 applet_widget_unregister_callback(APPLET_WIDGET(applet), "away");
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
340 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
341
2549
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
342 static GtkAllocation *get_applet_pos(gboolean for_blist)
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
343 {
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
344 gint x, y, pad;
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
345 GtkRequisition buddy_req, applet_req;
2549
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
346 GtkAllocation *result = g_new0(GtkAllocation, 1);
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
347 GNOME_Panel_OrientType orient = applet_widget_get_panel_orient(APPLET_WIDGET(applet));
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
348 pad = 5;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
349
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
350 gdk_window_get_position(gtk_widget_get_parent_window(icon), &x, &y);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
351 if (for_blist) {
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
352 if (blist_options & OPT_BLIST_SAVED_WINDOWS) {
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
353 buddy_req.width = blist_pos.width;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
354 buddy_req.height = blist_pos.height;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
355 } else {
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
356 buddy_req = blist->requisition;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
357 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
358 } else {
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
359 buddy_req = mainwindow->requisition;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
360 }
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
361 applet_req = icon->requisition;
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
362
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
363 switch (orient) {
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
364 case ORIENT_UP:
2549
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
365 result->x = x;
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
366 result->y = y - (buddy_req.height + pad);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
367 break;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
368 case ORIENT_DOWN:
2549
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
369 result->x = x;
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
370 result->y = y + applet_req.height + pad;
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
371 break;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
372 case ORIENT_LEFT:
2549
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
373 result->x = x - (buddy_req.width + pad);
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
374 result->y = y;
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
375 break;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
376 case ORIENT_RIGHT:
2549
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
377 result->x = x + applet_req.width + pad;
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
378 result->y = y;
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
379 break;
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
380 }
2549
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
381
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
382 if (result->x < 0)
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
383 result->x = 0;
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
384 if (result->y < 0)
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
385 result->y = 0;
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
386 if (result->x > gdk_screen_width() - buddy_req.width)
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
387 result->x = gdk_screen_width() - buddy_req.width;
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
388 if (result->y > gdk_screen_height() - buddy_req.height)
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
389 result->y = gdk_screen_height() - buddy_req.height;
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
390
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
391 return result;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
392 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
393
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
394 void createOnlinePopup()
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
395 {
2549
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
396 GtkAllocation *al;
3063
22c84cbcd5a6 [gaim-migrate @ 3077]
Sean Egan <seanegan@gmail.com>
parents: 2985
diff changeset
397 if (!blist)
22c84cbcd5a6 [gaim-migrate @ 3077]
Sean Egan <seanegan@gmail.com>
parents: 2985
diff changeset
398 return;
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
399 al = get_applet_pos(TRUE);
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
400 if (blist_options & OPT_BLIST_NEAR_APPLET)
2549
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
401 gtk_widget_set_uposition(blist, al->x, al->y);
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
402 else if (blist_options & OPT_BLIST_SAVED_WINDOWS)
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
403 gtk_widget_set_uposition(blist, blist_pos.x - blist_pos.xoff,
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
404 blist_pos.y - blist_pos.yoff);
3063
22c84cbcd5a6 [gaim-migrate @ 3077]
Sean Egan <seanegan@gmail.com>
parents: 2985
diff changeset
405 gtk_widget_show(blist);
2549
7c64b3ad0c3d [gaim-migrate @ 2562]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2534
diff changeset
406 g_free(al);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
407 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
408
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
409 void AppletClicked(GtkWidget *sender, GdkEventButton *ev, gpointer data)
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
410 {
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
411 if (!ev || ev->button != 1 || ev->type != GDK_BUTTON_PRESS)
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
412 return;
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
413
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
414 if (applet_buddy_show) {
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
415 applet_buddy_show = FALSE;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
416 if (!connections && mainwindow)
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
417 gtk_widget_hide(mainwindow);
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
418 else
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
419 gtk_widget_hide(blist);
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
420 } else {
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
421 applet_buddy_show = TRUE;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
422 if (!connections)
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
423 applet_show_login(APPLET_WIDGET(applet), NULL);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
424 else
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
425 createOnlinePopup();
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
426 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
427 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
428
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
429
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
430 /***************************************************************
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
431 **
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
432 ** Initialize GNOME stuff
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
433 **
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
434 ****************************************************************/
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
435
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
436 gint init_applet_mgr(int argc, char *argv[])
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
437 {
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
438 GdkPixmap *pm;
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
439
2534
2bc6ee172103 [gaim-migrate @ 2547]
Rob Flynn <gaim@robflynn.com>
parents: 2497
diff changeset
440 applet_widget_init("Gaim", VERSION, argc, argv, NULL, 0, NULL);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
441
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
442 applet = applet_widget_new("gaim_applet");
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
443 if (!applet)
2534
2bc6ee172103 [gaim-migrate @ 2547]
Rob Flynn <gaim@robflynn.com>
parents: 2497
diff changeset
444 g_error(_("Can't create Gaim applet!"));
2629
b74421e92d55 [gaim-migrate @ 2642]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2567
diff changeset
445 gtk_signal_connect(GTK_OBJECT(applet), "back_change", GTK_SIGNAL_FUNC(back_changed), NULL);
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
446 gtk_widget_set_events(applet, gtk_widget_get_events(applet) | GDK_BUTTON_PRESS_MASK);
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
447 gtk_widget_realize(applet);
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
448
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
449 pm = get_applet_icon(GAIM_GNOME_OFFLINE_ICON);
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
450 if (!pm)
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
451 pm = gdk_pixmap_create_from_xpm_d(applet->window, NULL,
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
452 &applet->style->bg[GTK_WIDGET_STATE(applet)], aimicon_xpm);
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
453 icon = gtk_pixmap_new(pm, NULL);
2716
48274976c79b [gaim-migrate @ 2729]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2629
diff changeset
454 #ifdef HAVE_PANEL_PIXEL_SIZE
48274976c79b [gaim-migrate @ 2729]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2629
diff changeset
455 gtk_widget_set_usize(icon, 5, 5);
48274976c79b [gaim-migrate @ 2729]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2629
diff changeset
456 #else
48274976c79b [gaim-migrate @ 2729]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2629
diff changeset
457 gtk_widget_set_usize(icon, 48, 48);
48274976c79b [gaim-migrate @ 2729]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2629
diff changeset
458 #endif
2484
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
459 gdk_pixmap_unref(pm);
a4647b25dbf1 [gaim-migrate @ 2497]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2468
diff changeset
460 applet_widget_add(APPLET_WIDGET(applet), icon);
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
461
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
462 applet_widget_register_stock_callback(APPLET_WIDGET(applet),
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
463 "about",
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
464 GNOME_STOCK_MENU_ABOUT,
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
465 _("About..."), (AppletCallbackFunc)show_about, NULL);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
466
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
467 gtk_signal_connect(GTK_OBJECT(applet), "button_press_event", GTK_SIGNAL_FUNC(AppletClicked),
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
468 NULL);
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
469
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
470 gtk_signal_connect(GTK_OBJECT(applet), "destroy", GTK_SIGNAL_FUNC(do_quit), NULL);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
471
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
472 #ifdef HAVE_PANEL_PIXEL_SIZE
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
473 gtk_signal_connect(GTK_OBJECT(applet), "change_pixel_size",
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
474 GTK_SIGNAL_FUNC(applet_change_pixel_size), NULL);
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
475 #endif
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
476
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
477 gtk_widget_show(icon);
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
478 gtk_widget_show(applet);
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
479 return 0;
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
480 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
481
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
482 void set_user_state(enum gaim_user_states state)
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
483 {
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
484 if (state == signing_on)
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
485 connecting++;
2985
32c78c57b351 [gaim-migrate @ 2998]
Rob Flynn <gaim@robflynn.com>
parents: 2843
diff changeset
486 else if ((state == offline || state == away || state == online) && connecting > 0)
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
487 connecting--;
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
488 update_applet();
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
489 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
490
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
491 void applet_set_tooltips(char *msg)
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
492 {
1591
5c74d8b6cb57 [gaim-migrate @ 1601]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1456
diff changeset
493 if (!applet)
5c74d8b6cb57 [gaim-migrate @ 1601]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 1456
diff changeset
494 return;
1261
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
495 applet_widget_set_tooltip(APPLET_WIDGET(applet), msg);
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
496 }
07f0bb41bbe1 [gaim-migrate @ 1271]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
diff changeset
497
2372
2927c2c26fe6 [gaim-migrate @ 2385]
Eric Warmenhoven <eric@warmenhoven.org>
parents: 2314
diff changeset
498 #endif /*USE_APPLET */