Mercurial > pidgin
annotate src/gnome_applet_mgr.c @ 1114:c61f9c384413
[gaim-migrate @ 1124]
update to STATUS, pass -Wall, and fix some applet stupidity for failed signons.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Tue, 21 Nov 2000 01:00:45 +0000 |
parents | 46c10fa4e557 |
children | 35476475f794 |
rev | line source |
---|---|
1 | 1 /************************************************************** |
2 ** | |
3 ** GaimGnomeAppletMgr | |
4 ** Author - Quinticent (John Palmieri: johnp@martianrock.com) | |
5 ** | |
6 ** Purpose - Takes over the task of managing the GNOME applet | |
7 ** code and provides a centralized codebase for | |
8 ** GNOME integration for Gaim. | |
9 ** | |
10 ** | |
11 ** gaim | |
12 ** | |
13 ** Copyright (C) 1998-1999, Mark Spencer <markster@marko.net> | |
14 ** | |
15 ** This program is free software; you can redistribute it and/or modify | |
16 ** it under the terms of the GNU General Public License as published by | |
17 ** the Free Software Foundation; either version 2 of the License, or | |
18 ** (at your option) any later version. | |
19 ** | |
20 ** This program is distributed in the hope that it will be useful, | |
21 ** but WITHOUT ANY WARRANTY; without even the implied warranty of | |
22 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
23 ** GNU General Public License for more details. | |
24 ** | |
25 ** You should have received a copy of the GNU General Public License | |
26 ** along with this program; if not, write to the Free Software | |
27 ** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
28 */ | |
29 | |
349
b402a23f35df
[gaim-migrate @ 359]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
342
diff
changeset
|
30 #ifdef HAVE_CONFIG_H |
b402a23f35df
[gaim-migrate @ 359]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
342
diff
changeset
|
31 #include "../config.h" |
b402a23f35df
[gaim-migrate @ 359]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
342
diff
changeset
|
32 #endif |
1 | 33 #ifdef USE_APPLET |
34 #include <string.h> | |
35 #include <gdk_imlib.h> | |
36 #include "gaim.h" | |
37 #include "gnome_applet_mgr.h" | |
38 | |
39 enum gaim_user_states MRI_user_status; | |
40 | |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
41 gboolean applet_buddy_show = FALSE; |
1 | 42 GtkWidget *applet_popup = NULL; |
43 | |
776
626975d79bff
[gaim-migrate @ 786]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
746
diff
changeset
|
44 /* |
82 | 45 gchar GAIM_GNOME_OFFLINE_ICON[255] = GAIM_GNOME_PENGUIN_OFFLINE; |
46 gchar GAIM_GNOME_CONNECT_ICON[255] = GAIM_GNOME_PENGUIN_CONNECT; | |
47 gchar GAIM_GNOME_ONLINE_ICON[255] = GAIM_GNOME_PENGUIN_ONLINE; | |
776
626975d79bff
[gaim-migrate @ 786]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
746
diff
changeset
|
48 */ |
82 | 49 |
1 | 50 GtkWidget *applet; |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
51 GtkWidget *appletframe; |
1 | 52 GtkWidget *status_label; |
53 | |
54 GtkWidget *icon; | |
55 GdkPixmap *icon_offline_pm=NULL; | |
56 GdkPixmap *icon_offline_bm=NULL; | |
57 | |
58 GdkPixmap *icon_online_pm=NULL; | |
59 GdkPixmap *icon_online_bm=NULL; | |
60 | |
61 GdkPixmap *icon_connect_pm=NULL; | |
62 GdkPixmap *icon_connect_bm=NULL; | |
63 | |
64 GdkPixmap *icon_msg_pending_pm=NULL; | |
65 GdkPixmap *icon_msg_pending_bm=NULL; | |
66 | |
67 GdkPixmap *icon_away_pm=NULL; | |
68 GdkPixmap *icon_away_bm=NULL; | |
69 | |
340
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
70 static GtkAllocation get_applet_pos(gboolean); |
374
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
71 gint sizehint=48; |
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
72 |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
73 static gboolean load_applet_icon(const char *name, int height, int width, |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
74 GdkPixmap **pm, GdkBitmap **bm) |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
75 { |
1 | 76 gboolean result = TRUE; |
82 | 77 char *path; |
1 | 78 GdkImlibImage *im; |
82 | 79 |
80 path = gnome_pixmap_file(name); | |
81 | |
1 | 82 im=gdk_imlib_load_image( path ); |
83 | |
84 if ((*pm)!=NULL) | |
85 gdk_imlib_free_pixmap((*pm)); | |
86 | |
87 if( im!= NULL ){ | |
88 gdk_imlib_render(im,width,height); | |
89 | |
90 (*pm) = gdk_imlib_move_image(im); | |
91 (*bm) = gdk_imlib_move_mask(im); | |
92 | |
93 } else { | |
94 result = FALSE; | |
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
95 sprintf(debug_buff,_("file not found: %s\n"),path); |
1 | 96 debug_print(debug_buff); |
97 } | |
98 | |
82 | 99 free(path); |
1 | 100 return result; |
101 } | |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
102 |
374
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
103 #ifdef HAVE_PANEL_PIXEL_SIZE |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
104 static void applet_change_pixel_size(GtkWidget *w, int size, gpointer data) |
374
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
105 { |
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
106 sizehint = size; |
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
107 update_pixmaps(); |
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
108 } |
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
109 #endif |
1 | 110 |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
111 static gboolean update_applet(gboolean force_update){ |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
112 static enum gaim_user_states old_user_status = offline; |
1104
46c10fa4e557
[gaim-migrate @ 1114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1031
diff
changeset
|
113 char buf[BUF_LONG]; |
46c10fa4e557
[gaim-migrate @ 1114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1031
diff
changeset
|
114 GSList *c = connections; |
1 | 115 |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
116 if( MRI_user_status != old_user_status || force_update) { |
1 | 117 |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
118 switch( MRI_user_status ){ |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
119 case offline: |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
120 gtk_pixmap_set( GTK_PIXMAP(icon), |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
121 icon_offline_pm, |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
122 icon_offline_bm ); |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
123 gtk_label_set( GTK_LABEL(status_label), _MSG_OFFLINE_ ); |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
124 applet_set_tooltips(_("Offilne. Click to bring up login box.")); |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
125 break; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
126 case signing_on: |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
127 gtk_pixmap_set( GTK_PIXMAP(icon), |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
128 icon_connect_pm, |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
129 icon_connect_bm ); |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
130 gtk_label_set( GTK_LABEL(status_label), _MSG_CONNECT_ ); |
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
131 applet_set_tooltips(_("Attempting to sign on....")); |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
132 break; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
133 case online: |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
134 gtk_pixmap_set( GTK_PIXMAP(icon), |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
135 icon_online_pm, |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
136 icon_online_bm ); |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
137 gtk_label_set( GTK_LABEL(status_label), _MSG_ONLINE_ ); |
1104
46c10fa4e557
[gaim-migrate @ 1114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1031
diff
changeset
|
138 g_snprintf(buf, sizeof buf, "Online: "); |
46c10fa4e557
[gaim-migrate @ 1114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1031
diff
changeset
|
139 while (c) { |
46c10fa4e557
[gaim-migrate @ 1114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1031
diff
changeset
|
140 strcat(buf, ((struct gaim_connection *)c->data)->username); |
46c10fa4e557
[gaim-migrate @ 1114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1031
diff
changeset
|
141 c = g_slist_next(c); |
46c10fa4e557
[gaim-migrate @ 1114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1031
diff
changeset
|
142 if (c) strcat(buf, ", "); |
46c10fa4e557
[gaim-migrate @ 1114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1031
diff
changeset
|
143 } |
46c10fa4e557
[gaim-migrate @ 1114]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1031
diff
changeset
|
144 applet_set_tooltips(buf); |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
145 break; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
146 case away: |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
147 gtk_pixmap_set( GTK_PIXMAP(icon), |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
148 icon_online_pm, |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
149 icon_online_bm ); |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
150 gtk_label_set( GTK_LABEL(status_label), _("Away") ); |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
151 break; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
152 } |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
153 old_user_status = MRI_user_status; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
154 } |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
155 return TRUE; |
1 | 156 } |
157 | |
82 | 158 void update_pixmaps() { |
776
626975d79bff
[gaim-migrate @ 786]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
746
diff
changeset
|
159 /* |
82 | 160 if (display_options & OPT_DISP_DEVIL_PIXMAPS) { |
161 sprintf(GAIM_GNOME_OFFLINE_ICON, "%s", GAIM_GNOME_DEVIL_OFFLINE); | |
162 sprintf(GAIM_GNOME_CONNECT_ICON, "%s", GAIM_GNOME_DEVIL_CONNECT); | |
163 sprintf(GAIM_GNOME_ONLINE_ICON, "%s", GAIM_GNOME_DEVIL_ONLINE); | |
164 } else { | |
165 sprintf(GAIM_GNOME_OFFLINE_ICON, "%s", GAIM_GNOME_PENGUIN_OFFLINE); | |
166 sprintf(GAIM_GNOME_CONNECT_ICON, "%s", GAIM_GNOME_PENGUIN_CONNECT); | |
167 sprintf(GAIM_GNOME_ONLINE_ICON, "%s", GAIM_GNOME_PENGUIN_ONLINE); | |
168 } | |
776
626975d79bff
[gaim-migrate @ 786]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
746
diff
changeset
|
169 */ |
374
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
170 load_applet_icon( GAIM_GNOME_OFFLINE_ICON, (sizehint-16), (sizehint-12), |
82 | 171 &icon_offline_pm, &icon_offline_bm ); |
374
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
172 load_applet_icon( GAIM_GNOME_CONNECT_ICON, (sizehint-16), (sizehint-12), |
82 | 173 &icon_connect_pm, &icon_connect_bm ); |
374
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
174 load_applet_icon( GAIM_GNOME_ONLINE_ICON, (sizehint-16), (sizehint-12), |
82 | 175 &icon_online_pm, &icon_online_bm ); |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
176 update_applet(TRUE); |
374
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
177 gtk_widget_set_usize(appletframe, sizehint, sizehint); |
82 | 178 } |
179 | |
1 | 180 |
340
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
181 extern GtkWidget *mainwindow; |
1 | 182 void applet_show_login(AppletWidget *widget, gpointer data) { |
183 show_login(); | |
340
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
184 if (general_options & OPT_GEN_NEAR_APPLET) { |
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
185 GtkAllocation a = get_applet_pos(FALSE); |
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
186 gtk_widget_set_uposition(mainwindow, a.x, a.y); |
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
187 } |
1 | 188 } |
189 | |
342
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
190 void applet_do_signon(AppletWidget *widget, gpointer data) { |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
191 applet_show_login(NULL, 0); |
342
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
192 } |
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
193 |
18 | 194 void insert_applet_away() { |
940 | 195 GSList *awy = away_messages; |
18 | 196 struct away_message *a; |
197 char *awayname; | |
198 | |
199 applet_widget_register_callback_dir(APPLET_WIDGET(applet), | |
46 | 200 "away/", |
18 | 201 _("Away")); |
202 applet_widget_register_callback(APPLET_WIDGET(applet), | |
203 "away/new", | |
204 _("New Away Message"), | |
205 (AppletCallbackFunc)create_away_mess, | |
206 NULL); | |
207 | |
208 while(awy) { | |
209 a = (struct away_message *)awy->data; | |
210 | |
79 | 211 awayname = g_malloc(sizeof *awayname * (6 + strlen(a->name))); |
18 | 212 awayname[0] = '\0'; |
213 strcat(awayname, "away/"); | |
214 strcat(awayname, a->name); | |
215 applet_widget_register_callback(APPLET_WIDGET(applet), | |
216 awayname, | |
217 a->name, | |
218 (AppletCallbackFunc)do_away_message, | |
219 a); | |
220 | |
940 | 221 awy = g_slist_next(awy); |
23 | 222 free(awayname); |
18 | 223 } |
224 } | |
225 | |
226 void remove_applet_away() { | |
940 | 227 GSList *awy = away_messages; |
18 | 228 struct away_message *a; |
229 char *awayname; | |
230 | |
231 applet_widget_unregister_callback(APPLET_WIDGET(applet), "away/new"); | |
232 | |
233 while (awy) { | |
234 a = (struct away_message *)awy->data; | |
235 | |
79 | 236 awayname = g_malloc(sizeof *awayname * (6 + strlen(a->name))); |
18 | 237 awayname[0] = '\0'; |
238 strcat(awayname, "away/"); | |
239 strcat(awayname, a->name); | |
240 applet_widget_unregister_callback(APPLET_WIDGET(applet), awayname); | |
241 | |
940 | 242 awy = g_slist_next(awy); |
23 | 243 free(awayname); |
18 | 244 } |
46 | 245 applet_widget_unregister_callback_dir(APPLET_WIDGET(applet), "away/"); |
18 | 246 applet_widget_unregister_callback(APPLET_WIDGET(applet), "away"); |
247 } | |
248 | |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
249 static void applet_show_about(AppletWidget *widget, gpointer data) { |
1 | 250 |
251 const gchar *authors[] = {"Mark Spencer <markster@marko.net>", | |
252 "Jim Duchek <jimduchek@ou.edu>", | |
253 "Rob Flynn <rflynn@blueridge.net>", | |
82 | 254 "Eric Warmenhoven <warmenhoven@yahoo.com>", |
178
5d62a5d50c89
[gaim-migrate @ 188]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
107
diff
changeset
|
255 "Syd Logan", |
1 | 256 NULL}; |
257 | |
258 GtkWidget *about=gnome_about_new(_("GAIM"), | |
259 _(VERSION), | |
260 _(""), | |
261 authors, | |
262 "", | |
263 NULL); | |
264 gtk_widget_show(about); | |
265 } | |
266 | |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
267 static GtkAllocation get_applet_pos(gboolean for_blist) { |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
268 gint x,y,pad; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
269 GtkRequisition buddy_req, applet_req; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
270 GtkAllocation result; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
271 GNOME_Panel_OrientType orient = applet_widget_get_panel_orient( APPLET_WIDGET(applet) ); |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
272 pad = 5; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
273 |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
274 gdk_window_get_position(gtk_widget_get_parent_window(appletframe), &x, &y); |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
275 if (for_blist) { |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
276 if (general_options & OPT_GEN_SAVED_WINDOWS) { |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
277 buddy_req.width = blist_pos.width; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
278 buddy_req.height = blist_pos.height; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
279 } else { |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
280 buddy_req = blist->requisition; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
281 } |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
282 } else { |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
283 buddy_req = mainwindow->requisition; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
284 } |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
285 applet_req = appletframe->requisition; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
286 |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
287 /* FIXME : we need to be smarter here */ |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
288 switch( orient ){ |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
289 case ORIENT_UP: |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
290 result.x=x; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
291 result.y=y-(buddy_req.height+pad); |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
292 break; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
293 case ORIENT_DOWN: |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
294 result.x=x; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
295 result.y=y+applet_req.height+pad; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
296 break; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
297 case ORIENT_LEFT: |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
298 result.x=x-(buddy_req.width + pad ); |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
299 result.y=y; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
300 break; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
301 case ORIENT_RIGHT: |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
302 result.x=x+applet_req.width+pad; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
303 result.y=y; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
304 break; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
305 } |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
306 return result; |
1 | 307 } |
308 | |
309 void createOnlinePopup(){ | |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
310 GtkAllocation al; |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
311 if (blist) gtk_widget_show(blist); |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
312 al = get_applet_pos(TRUE); |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
313 if (general_options & OPT_GEN_NEAR_APPLET) |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
314 gtk_widget_set_uposition ( blist, al.x, al.y ); |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
315 else if (general_options & OPT_GEN_SAVED_WINDOWS) |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
316 gtk_widget_set_uposition(blist, blist_pos.x - blist_pos.xoff, blist_pos.y - blist_pos.yoff); |
1 | 317 } |
318 | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
319 void AppletClicked( GtkWidget *sender, GdkEventButton *ev, gpointer data ){ |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
320 if (!ev || ev->button != 1 || ev->type != GDK_BUTTON_PRESS) |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
321 return; |
1 | 322 |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
323 if(applet_buddy_show) { |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
324 applet_buddy_show = FALSE; |
1 | 325 switch( MRI_user_status ){ |
326 case offline: | |
941
0c3bdd59f983
[gaim-migrate @ 951]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
940
diff
changeset
|
327 if (mainwindow) |
0c3bdd59f983
[gaim-migrate @ 951]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
940
diff
changeset
|
328 gtk_widget_hide(mainwindow); |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
329 break; |
1 | 330 case online: |
331 case away: | |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
332 applet_destroy_buddy(0, 0, 0); |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
333 break; |
1 | 334 } |
335 } else { | |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
336 applet_buddy_show = TRUE; |
1 | 337 switch( MRI_user_status ){ |
338 case offline: | |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
339 applet_show_login( APPLET_WIDGET(applet), NULL ); |
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
340 break; |
1 | 341 case online: |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
342 case away: |
1 | 343 createOnlinePopup(); |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
344 break; |
1 | 345 } |
346 } | |
347 } | |
348 | |
349 | |
350 /*************************************************************** | |
351 ** | |
352 ** Initialize GNOME stuff | |
353 ** | |
354 ****************************************************************/ | |
355 | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
356 gint init_applet_mgr(int argc, char *argv[]) { |
1 | 357 GtkWidget *vbox; |
358 | |
359 GtkStyle *label_style; | |
360 GdkFont *label_font = NULL; | |
361 | |
362 applet_widget_init("GAIM",VERSION,argc,argv,NULL,0,NULL); | |
363 | |
364 /*init imlib for graphics*/ | |
365 gdk_imlib_init(); | |
366 gtk_widget_push_visual(gdk_imlib_get_visual()); | |
367 gtk_widget_push_colormap(gdk_imlib_get_colormap()); | |
342
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
368 |
1 | 369 applet=applet_widget_new("gaim_applet"); |
370 if(!applet) g_error(_("Can't create GAIM applet!")); | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
371 gtk_widget_set_events(applet, gtk_widget_get_events(applet) | |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
372 GDK_BUTTON_PRESS_MASK); |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
373 |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
374 appletframe = gtk_frame_new(NULL); |
374
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
375 #ifdef HAVE_PANEL_PIXEL_SIZE |
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
376 gtk_widget_set_usize(appletframe, 5, 5); |
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
377 #else |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
378 gtk_widget_set_usize(appletframe, 48, 48); |
374
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
379 #endif |
1 | 380 |
381 /*load offline icon*/ | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
382 load_applet_icon( GAIM_GNOME_OFFLINE_ICON, 32, 32, |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
383 &icon_offline_pm, &icon_offline_bm ); |
1 | 384 |
385 /*load connecting icon*/ | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
386 load_applet_icon( GAIM_GNOME_CONNECT_ICON, 32, 32, |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
387 &icon_connect_pm, &icon_connect_bm ); |
1 | 388 |
389 /*load online icon*/ | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
390 load_applet_icon( GAIM_GNOME_ONLINE_ICON, 32, 32, |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
391 &icon_online_pm, &icon_online_bm ); |
1 | 392 |
393 /*icon_away and icon_msg_pennding need to be implemented*/ | |
394 | |
395 icon=gtk_pixmap_new(icon_offline_pm,icon_offline_bm); | |
396 | |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
397 update_applet(FALSE); |
1 | 398 |
399 vbox = gtk_vbox_new(FALSE,0); | |
400 | |
401 gtk_box_pack_start(GTK_BOX(vbox), icon, FALSE, TRUE, 0); | |
402 | |
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
403 status_label = gtk_label_new(_("Offline")); |
1 | 404 /*set this label's font*/ |
405 label_style = gtk_widget_get_style( status_label ); | |
406 | |
407 label_font = gdk_font_load( _MSG_FONT_ ); | |
408 | |
409 | |
410 if( label_font != NULL ){ | |
411 label_style->font = label_font; | |
412 gtk_widget_set_style( status_label, label_style ); | |
413 } else { | |
350
fd3cc0a28d5d
[gaim-migrate @ 360]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
349
diff
changeset
|
414 sprintf(debug_buff, _("Font does not exist") ); |
1 | 415 debug_print(debug_buff); |
416 } | |
417 | |
418 gtk_box_pack_start(GTK_BOX(vbox), status_label, FALSE, TRUE, 0); | |
419 | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
420 gtk_container_add( GTK_CONTAINER(appletframe), vbox ); |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
421 applet_widget_add(APPLET_WIDGET(applet), appletframe); |
1 | 422 |
423 gtk_widget_show( status_label ); | |
424 gtk_widget_show( vbox ); | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
425 gtk_widget_show( appletframe ); |
1 | 426 |
427 applet_widget_register_stock_callback(APPLET_WIDGET(applet), | |
428 "about", | |
429 GNOME_STOCK_MENU_ABOUT, | |
430 _("About..."), | |
431 applet_show_about, | |
432 NULL); | |
433 | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
434 gtk_signal_connect( GTK_OBJECT(applet), "button_press_event", GTK_SIGNAL_FUNC( AppletClicked), NULL); |
1 | 435 |
425
ae7c762775cd
[gaim-migrate @ 435]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
411
diff
changeset
|
436 gtk_signal_connect( GTK_OBJECT(applet), "destroy", GTK_SIGNAL_FUNC( do_quit), NULL); |
ae7c762775cd
[gaim-migrate @ 435]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
411
diff
changeset
|
437 |
374
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
438 #ifdef HAVE_PANEL_PIXEL_SIZE |
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
439 gtk_signal_connect(GTK_OBJECT(applet), "change_pixel_size", |
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
440 GTK_SIGNAL_FUNC(applet_change_pixel_size), NULL); |
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
441 #endif |
7493af3a4ce2
[gaim-migrate @ 384]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
350
diff
changeset
|
442 |
1 | 443 gtk_widget_show(icon); |
444 gtk_widget_show(applet); | |
445 return 0; | |
446 } | |
447 | |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
448 void set_user_state( enum gaim_user_states state ){ |
1 | 449 MRI_user_status = state; |
746
5a908dd5cfc4
[gaim-migrate @ 756]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
425
diff
changeset
|
450 update_applet(FALSE); |
1 | 451 } |
452 | |
342
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
453 void applet_set_tooltips(char *msg) { |
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
454 applet_widget_set_tooltip(APPLET_WIDGET(applet), msg); |
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
455 } |
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
456 |
1 | 457 #endif /*USE_APPLET*/ |