Mercurial > pidgin.yaz
annotate src/gnome_applet_mgr.c @ 342:f4fba304b236
[gaim-migrate @ 352]
More changes to the applet: tooltips are set different, and choosing "Signon"
from the right-click menu actually tries to sign you on, as opposed to just
bringing up the login window.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Wed, 07 Jun 2000 01:50:55 +0000 |
parents | 0d9cfc3579a5 |
children | b402a23f35df |
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 | |
30 #ifdef USE_APPLET | |
31 #include <string.h> | |
32 #include <gdk_imlib.h> | |
33 #include "gaim.h" | |
34 #include "gnome_applet_mgr.h" | |
35 | |
36 enum gaim_user_states MRI_user_status; | |
37 | |
38 gboolean buddy_created = FALSE; | |
39 gboolean applet_draw_open = FALSE; | |
40 GtkWidget *applet_popup = NULL; | |
41 | |
82 | 42 gchar GAIM_GNOME_OFFLINE_ICON[255] = GAIM_GNOME_PENGUIN_OFFLINE; |
43 gchar GAIM_GNOME_CONNECT_ICON[255] = GAIM_GNOME_PENGUIN_CONNECT; | |
44 gchar GAIM_GNOME_ONLINE_ICON[255] = GAIM_GNOME_PENGUIN_ONLINE; | |
45 | |
1 | 46 GtkWidget *applet; |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
47 GtkWidget *appletframe; |
1 | 48 GtkWidget *status_label; |
49 | |
50 GtkWidget *icon; | |
51 GdkPixmap *icon_offline_pm=NULL; | |
52 GdkPixmap *icon_offline_bm=NULL; | |
53 | |
54 GdkPixmap *icon_online_pm=NULL; | |
55 GdkPixmap *icon_online_bm=NULL; | |
56 | |
57 GdkPixmap *icon_connect_pm=NULL; | |
58 GdkPixmap *icon_connect_bm=NULL; | |
59 | |
60 GdkPixmap *icon_msg_pending_pm=NULL; | |
61 GdkPixmap *icon_msg_pending_bm=NULL; | |
62 | |
63 GdkPixmap *icon_away_pm=NULL; | |
64 GdkPixmap *icon_away_bm=NULL; | |
65 | |
340
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
66 static GtkAllocation get_applet_pos(gboolean); |
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
67 |
1 | 68 /*************************************************************** |
69 ** | |
70 ** function load_applet_icon | |
71 ** visibility - private | |
72 ** | |
73 ** input: | |
74 ** name - the name of the file to load | |
75 ** height, width - the height and width | |
76 ** that the icon should be | |
77 ** scaled to. | |
78 ** | |
79 ** output: | |
80 ** TRUE - success | |
81 ** FALSE - failure | |
82 ** pm - a GdkPixmap structure that the icon is loaded into | |
83 ** bm - a GdkBitmap structure that the icon's transparancy | |
84 ** mask is loaded into | |
85 ** | |
86 ** description - loads an icon from | |
87 ** /usr/share/pixmap/gaim/gnome/ | |
88 ** and scales it using imlib | |
89 ** | |
90 ****************************************************************/ | |
91 | |
92 gboolean load_applet_icon( const char *name, int height, int width, GdkPixmap **pm, GdkBitmap **bm ){ | |
93 gboolean result = TRUE; | |
82 | 94 char *path; |
1 | 95 GdkImlibImage *im; |
82 | 96 |
97 path = gnome_pixmap_file(name); | |
98 | |
1 | 99 im=gdk_imlib_load_image( path ); |
100 | |
101 if ((*pm)!=NULL) | |
102 gdk_imlib_free_pixmap((*pm)); | |
103 | |
104 if( im!= NULL ){ | |
105 gdk_imlib_render(im,width,height); | |
106 | |
107 (*pm) = gdk_imlib_move_image(im); | |
108 (*bm) = gdk_imlib_move_mask(im); | |
109 | |
110 } else { | |
111 result = FALSE; | |
112 sprintf(debug_buff,"file not found: %s\n",path); | |
113 debug_print(debug_buff); | |
114 } | |
115 | |
82 | 116 free(path); |
1 | 117 return result; |
118 } | |
119 | |
120 /*************************************************************** | |
121 ** | |
122 ** function update_applet | |
123 ** visibility - private | |
124 ** | |
125 ** input: | |
82 | 126 ** ap - if not NULL, was called from update_pixmaps, and |
127 ** should update them | |
1 | 128 ** |
129 ** description - takes care of swapping status icons and | |
130 ** updating the status label | |
131 ** | |
132 ****************************************************************/ | |
133 | |
134 gboolean update_applet( gpointer *ap ){ | |
135 static enum gaim_user_states old_user_status = offline; | |
136 | |
82 | 137 if( MRI_user_status != old_user_status || ap){ |
1 | 138 |
139 switch( MRI_user_status ){ | |
140 case offline: | |
141 gtk_pixmap_set( GTK_PIXMAP(icon), | |
142 icon_offline_pm, | |
143 icon_offline_bm ); | |
144 gtk_label_set( GTK_LABEL(status_label), _MSG_OFFLINE_ ); | |
342
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
145 applet_set_tooltips("Offilne. Click to bring up login box."); |
1 | 146 break; |
147 case signing_on: | |
148 gtk_pixmap_set( GTK_PIXMAP(icon), | |
149 icon_connect_pm, | |
150 icon_connect_bm ); | |
151 gtk_label_set( GTK_LABEL(status_label), _MSG_CONNECT_ ); | |
342
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
152 applet_set_tooltips("Attempting to sign on...."); |
1 | 153 break; |
154 case online: | |
155 gtk_pixmap_set( GTK_PIXMAP(icon), | |
156 icon_online_pm, | |
157 icon_online_bm ); | |
158 | |
159 gtk_label_set( GTK_LABEL(status_label), _MSG_ONLINE_ ); | |
160 break; | |
161 | |
162 case unread_message_pending: | |
163 gtk_pixmap_set( GTK_PIXMAP(icon), | |
164 icon_msg_pending_pm, | |
165 icon_msg_pending_bm ); | |
166 gtk_label_set( GTK_LABEL(status_label), "msg" ); | |
167 break; | |
168 case away: | |
169 gtk_pixmap_set( GTK_PIXMAP(icon), | |
82 | 170 icon_online_pm, |
171 icon_online_bm ); | |
1 | 172 gtk_label_set( GTK_LABEL(status_label), "Away" ); |
173 break; | |
174 } | |
175 old_user_status = MRI_user_status; | |
176 } | |
177 return TRUE; | |
178 | |
179 } | |
180 | |
82 | 181 void update_pixmaps() { |
182 if (display_options & OPT_DISP_DEVIL_PIXMAPS) { | |
183 sprintf(GAIM_GNOME_OFFLINE_ICON, "%s", GAIM_GNOME_DEVIL_OFFLINE); | |
184 sprintf(GAIM_GNOME_CONNECT_ICON, "%s", GAIM_GNOME_DEVIL_CONNECT); | |
185 sprintf(GAIM_GNOME_ONLINE_ICON, "%s", GAIM_GNOME_DEVIL_ONLINE); | |
186 } else { | |
187 sprintf(GAIM_GNOME_OFFLINE_ICON, "%s", GAIM_GNOME_PENGUIN_OFFLINE); | |
188 sprintf(GAIM_GNOME_CONNECT_ICON, "%s", GAIM_GNOME_PENGUIN_CONNECT); | |
189 sprintf(GAIM_GNOME_ONLINE_ICON, "%s", GAIM_GNOME_PENGUIN_ONLINE); | |
190 } | |
191 load_applet_icon( GAIM_GNOME_OFFLINE_ICON, 32, 34, | |
192 &icon_offline_pm, &icon_offline_bm ); | |
193 load_applet_icon( GAIM_GNOME_CONNECT_ICON, 32, 34, | |
194 &icon_connect_pm, &icon_connect_bm ); | |
195 load_applet_icon( GAIM_GNOME_ONLINE_ICON, 32, 34, | |
196 &icon_online_pm, &icon_online_bm ); | |
197 update_applet((gpointer *)applet); | |
198 } | |
199 | |
1 | 200 |
201 /*************************************************************** | |
202 ** | |
203 ** function make_buddy | |
204 ** visibility - private | |
205 ** | |
206 ** description - If buddylist is not created create it | |
207 ** else show the buddy list | |
208 ** | |
209 ****************************************************************/ | |
210 void make_buddy(void) { | |
211 set_applet_draw_open(); | |
212 if( !buddy_created ){ | |
213 show_buddy_list(); | |
214 buddy_created = TRUE; | |
215 } else { | |
216 gnome_buddy_show(); | |
217 } | |
16 | 218 build_edit_tree(); |
246
2c5713cd9d8c
[gaim-migrate @ 256]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
200
diff
changeset
|
219 build_permit_tree(); |
1 | 220 |
221 } | |
222 | |
223 /*************************************************************** | |
224 ** | |
225 ** function applet_show_login | |
226 ** visibility - private | |
227 ** | |
228 ** input: | |
229 ** | |
230 ** | |
231 ** description - I guess it shows the login dialog | |
232 ** | |
233 ****************************************************************/ | |
340
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
234 extern GtkWidget *mainwindow; |
1 | 235 void applet_show_login(AppletWidget *widget, gpointer data) { |
236 show_login(); | |
340
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
237 if (general_options & OPT_GEN_NEAR_APPLET) { |
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
238 GtkAllocation a = get_applet_pos(FALSE); |
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
239 gtk_widget_set_uposition(mainwindow, a.x, a.y); |
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
240 } |
1 | 241 } |
242 | |
342
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
243 void applet_do_signon(AppletWidget *widget, gpointer data) { |
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
244 show_login(); |
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
245 if (general_options & OPT_GEN_REMEMBER_PASS) |
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
246 dologin(); |
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
247 } |
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
248 |
18 | 249 void insert_applet_away() { |
250 GList *awy = away_messages; | |
251 struct away_message *a; | |
252 char *awayname; | |
253 | |
254 applet_widget_register_callback_dir(APPLET_WIDGET(applet), | |
46 | 255 "away/", |
18 | 256 _("Away")); |
257 applet_widget_register_callback(APPLET_WIDGET(applet), | |
258 "away/new", | |
259 _("New Away Message"), | |
260 (AppletCallbackFunc)create_away_mess, | |
261 NULL); | |
262 | |
263 while(awy) { | |
264 a = (struct away_message *)awy->data; | |
265 | |
79 | 266 awayname = g_malloc(sizeof *awayname * (6 + strlen(a->name))); |
18 | 267 awayname[0] = '\0'; |
268 strcat(awayname, "away/"); | |
269 strcat(awayname, a->name); | |
270 applet_widget_register_callback(APPLET_WIDGET(applet), | |
271 awayname, | |
272 a->name, | |
273 (AppletCallbackFunc)do_away_message, | |
274 a); | |
275 | |
276 awy = awy->next; | |
23 | 277 free(awayname); |
18 | 278 } |
279 } | |
280 | |
281 void remove_applet_away() { | |
282 GList *awy = away_messages; | |
283 struct away_message *a; | |
284 char *awayname; | |
285 | |
286 applet_widget_unregister_callback(APPLET_WIDGET(applet), "away/new"); | |
287 | |
288 while (awy) { | |
289 a = (struct away_message *)awy->data; | |
290 | |
79 | 291 awayname = g_malloc(sizeof *awayname * (6 + strlen(a->name))); |
18 | 292 awayname[0] = '\0'; |
293 strcat(awayname, "away/"); | |
294 strcat(awayname, a->name); | |
295 applet_widget_unregister_callback(APPLET_WIDGET(applet), awayname); | |
296 | |
297 awy = awy->next; | |
23 | 298 free(awayname); |
18 | 299 } |
46 | 300 applet_widget_unregister_callback_dir(APPLET_WIDGET(applet), "away/"); |
18 | 301 applet_widget_unregister_callback(APPLET_WIDGET(applet), "away"); |
302 } | |
303 | |
1 | 304 /*************************************************************** |
305 ** | |
306 ** function applet_show_about | |
307 ** visibility - public | |
308 ** | |
309 ** | |
310 ** description - takes care of creating and | |
311 ** displaying the about box | |
312 ** | |
313 ****************************************************************/ | |
314 void applet_show_about(AppletWidget *widget, gpointer data) { | |
315 | |
316 const gchar *authors[] = {"Mark Spencer <markster@marko.net>", | |
317 "Jim Duchek <jimduchek@ou.edu>", | |
318 "Rob Flynn <rflynn@blueridge.net>", | |
82 | 319 "Eric Warmenhoven <warmenhoven@yahoo.com>", |
178
5d62a5d50c89
[gaim-migrate @ 188]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
107
diff
changeset
|
320 "Syd Logan", |
1 | 321 NULL}; |
322 | |
323 GtkWidget *about=gnome_about_new(_("GAIM"), | |
324 _(VERSION), | |
325 _(""), | |
326 authors, | |
327 "", | |
328 NULL); | |
329 gtk_widget_show(about); | |
330 } | |
331 | |
332 /*************************************************************** | |
333 ** | |
334 ** function AppletCancelLogin (name should be changed to | |
335 ** applet_cancel_login) | |
336 ** visibility - public | |
337 ** | |
338 ** description - called when user cancels login | |
339 ** | |
340 ****************************************************************/ | |
341 void AppletCancelLogon(){ | |
342 applet_widget_unregister_callback(APPLET_WIDGET(applet),"signoff"); | |
343 applet_widget_register_callback(APPLET_WIDGET(applet), | |
344 "signon", | |
345 _("Signon"), | |
342
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
346 applet_do_signon, |
1 | 347 NULL); |
348 } | |
349 | |
350 /*************************************************************** | |
351 ** | |
352 ** function get_applet_pos | |
353 ** visibility - private | |
354 ** | |
355 ** output: | |
356 ** GtKAllocation - a Gtk struct that holds the | |
357 ** position of the dialog | |
358 ** | |
359 ** description - returns the x,y position the buddy list should | |
360 ** should be placed based on the position | |
361 ** of the applet and the orientation | |
362 ** of the Gnome panel. | |
363 ** | |
364 ****************************************************************/ | |
340
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
365 GtkAllocation get_applet_pos(gboolean for_blist) { |
1 | 366 gint x,y,pad; |
367 GtkRequisition buddy_req, applet_req; | |
368 GtkAllocation result; | |
369 GNOME_Panel_OrientType orient = applet_widget_get_panel_orient( APPLET_WIDGET(applet) ); | |
370 pad = 5; | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
371 gdk_window_get_position(gtk_widget_get_parent_window(appletframe), &x, &y); |
340
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
372 if (for_blist) |
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
373 buddy_req = gnome_buddy_get_dimentions(); |
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
374 else |
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
375 buddy_req = mainwindow->requisition; |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
376 applet_req = appletframe->requisition; |
1 | 377 switch( orient ){ |
378 case ORIENT_UP: | |
379 result.x=x; | |
380 result.y=y-(buddy_req.height+pad); | |
381 break; | |
382 case ORIENT_DOWN: | |
383 result.x=x; | |
384 result.y=y+applet_req.height+pad; | |
385 | |
386 break; | |
387 case ORIENT_LEFT: | |
388 result.x=x-(buddy_req.width + pad ); | |
389 result.y=y; | |
390 break; | |
391 case ORIENT_RIGHT: | |
392 result.x=x+applet_req.width+pad; | |
393 result.y=y; | |
394 break; | |
395 } | |
396 | |
397 | |
398 return result; | |
399 } | |
400 | |
401 | |
402 | |
403 void createOfflinePopup(){ | |
404 applet_show_login( APPLET_WIDGET(applet), NULL ); | |
405 } | |
406 | |
407 | |
408 void createSignonPopup(){ | |
409 applet_draw_open = FALSE; | |
410 } | |
411 | |
412 | |
413 void createOnlinePopup(){ | |
414 GtkAllocation al; | |
415 make_buddy(); | |
340
0d9cfc3579a5
[gaim-migrate @ 350]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
338
diff
changeset
|
416 al = get_applet_pos(TRUE); |
1 | 417 gnome_buddy_set_pos( al.x, al.y ); |
418 } | |
419 | |
420 | |
421 void createPendingPopup(){ | |
422 applet_draw_open = FALSE; | |
423 } | |
424 | |
425 | |
426 void createAwayPopup(){ | |
83 | 427 createOnlinePopup(); |
1 | 428 } |
429 | |
430 | |
431 void closeOfflinePopup(){ | |
432 cancel_logon(); | |
433 set_applet_draw_closed(); | |
434 } | |
435 | |
436 | |
437 void closeSignonPopup(){ | |
438 | |
439 } | |
440 | |
441 | |
442 void closeOnlinePopup(){ | |
443 set_applet_draw_closed(); | |
444 applet_destroy_buddy(); | |
445 } | |
446 | |
447 | |
448 void closePendingPopup(){ | |
449 applet_draw_open = FALSE; | |
450 } | |
451 | |
452 | |
453 void closeAwayPopup(){ | |
83 | 454 closeOnlinePopup(); |
1 | 455 } |
456 | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
457 void AppletClicked( GtkWidget *sender, GdkEventButton *ev, gpointer data ){ |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
458 if (!ev || ev->button != 1 || ev->type != GDK_BUTTON_PRESS) |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
459 return; |
1 | 460 |
461 if( applet_draw_open ){ | |
462 switch( MRI_user_status ){ | |
463 case offline: | |
464 closeOfflinePopup(); | |
465 break; | |
466 case signing_on: | |
467 closeSignonPopup(); | |
468 break; | |
469 case online: | |
470 closeOnlinePopup(); | |
471 | |
472 break; | |
473 case unread_message_pending: | |
474 closePendingPopup(); | |
475 break; | |
476 case away: | |
477 closeAwayPopup(); | |
478 break; | |
479 } | |
480 } else { | |
481 set_applet_draw_open(); | |
482 switch( MRI_user_status ){ | |
483 case offline: | |
484 createOfflinePopup(); | |
485 break; | |
486 case signing_on: | |
487 createSignonPopup(); | |
488 break; | |
489 case online: | |
490 createOnlinePopup(); | |
491 break; | |
492 case unread_message_pending: | |
493 createPendingPopup(); | |
494 break; | |
495 case away: | |
496 createAwayPopup(); | |
497 break; | |
498 } | |
499 | |
500 | |
501 } | |
502 } | |
503 | |
504 | |
505 /*************************************************************** | |
506 ** | |
507 ** Initialize GNOME stuff | |
508 ** | |
509 ****************************************************************/ | |
510 | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
511 gint init_applet_mgr(int argc, char *argv[]) { |
1 | 512 GtkWidget *vbox; |
513 | |
514 GtkStyle *label_style; | |
515 GdkFont *label_font = NULL; | |
516 | |
517 applet_widget_init("GAIM",VERSION,argc,argv,NULL,0,NULL); | |
518 | |
519 /*init imlib for graphics*/ | |
520 gdk_imlib_init(); | |
521 gtk_widget_push_visual(gdk_imlib_get_visual()); | |
522 gtk_widget_push_colormap(gdk_imlib_get_colormap()); | |
342
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
523 |
1 | 524 applet=applet_widget_new("gaim_applet"); |
525 if(!applet) g_error(_("Can't create GAIM applet!")); | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
526 gtk_widget_set_events(applet, gtk_widget_get_events(applet) | |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
527 GDK_BUTTON_PRESS_MASK); |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
528 |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
529 appletframe = gtk_frame_new(NULL); |
1 | 530 |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
531 gtk_widget_set_usize(appletframe, 48, 48); |
1 | 532 |
533 | |
534 /*load offline icon*/ | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
535 load_applet_icon( GAIM_GNOME_OFFLINE_ICON, 32, 32, |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
536 &icon_offline_pm, &icon_offline_bm ); |
1 | 537 |
538 /*load connecting icon*/ | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
539 load_applet_icon( GAIM_GNOME_CONNECT_ICON, 32, 32, |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
540 &icon_connect_pm, &icon_connect_bm ); |
1 | 541 |
542 /*load online icon*/ | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
543 load_applet_icon( GAIM_GNOME_ONLINE_ICON, 32, 32, |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
544 &icon_online_pm, &icon_online_bm ); |
1 | 545 |
546 /*icon_away and icon_msg_pennding need to be implemented*/ | |
547 | |
548 icon=gtk_pixmap_new(icon_offline_pm,icon_offline_bm); | |
549 | |
342
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
550 update_applet(NULL); |
1 | 551 gtk_timeout_add( 1500, (GtkFunction)update_applet, NULL ); |
552 | |
553 vbox = gtk_vbox_new(FALSE,0); | |
554 | |
555 gtk_box_pack_start(GTK_BOX(vbox), icon, FALSE, TRUE, 0); | |
556 | |
557 status_label = gtk_label_new("Offline"); | |
558 /*set this label's font*/ | |
559 label_style = gtk_widget_get_style( status_label ); | |
560 | |
561 label_font = gdk_font_load( _MSG_FONT_ ); | |
562 | |
563 | |
564 if( label_font != NULL ){ | |
565 label_style->font = label_font; | |
566 gtk_widget_set_style( status_label, label_style ); | |
567 } else { | |
568 sprintf(debug_buff, "Font does not exist" ); | |
569 debug_print(debug_buff); | |
570 } | |
571 | |
572 gtk_box_pack_start(GTK_BOX(vbox), status_label, FALSE, TRUE, 0); | |
573 | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
574 gtk_container_add( GTK_CONTAINER(appletframe), vbox ); |
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
575 applet_widget_add(APPLET_WIDGET(applet), appletframe); |
1 | 576 |
577 gtk_widget_show( status_label ); | |
578 gtk_widget_show( vbox ); | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
579 gtk_widget_show( appletframe ); |
1 | 580 |
581 applet_widget_register_stock_callback(APPLET_WIDGET(applet), | |
582 "about", | |
583 GNOME_STOCK_MENU_ABOUT, | |
584 _("About..."), | |
585 applet_show_about, | |
586 NULL); | |
587 | |
338
9d258a0aa560
[gaim-migrate @ 348]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
246
diff
changeset
|
588 gtk_signal_connect( GTK_OBJECT(applet), "button_press_event", GTK_SIGNAL_FUNC( AppletClicked), NULL); |
1 | 589 |
590 gtk_widget_show(icon); | |
591 gtk_widget_show(applet); | |
592 return 0; | |
593 } | |
594 | |
595 void setUserState( enum gaim_user_states state ){ | |
596 MRI_user_status = state; | |
82 | 597 update_applet(NULL); |
1 | 598 } |
599 | |
600 enum gaim_user_states getUserState(){ | |
601 return MRI_user_status; | |
602 } | |
603 | |
604 void set_applet_draw_open(){ | |
605 applet_draw_open = TRUE; | |
606 } | |
607 | |
608 void set_applet_draw_closed(){ | |
609 applet_draw_open = FALSE; | |
610 } | |
611 | |
342
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
612 void applet_set_tooltips(char *msg) { |
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
613 applet_widget_set_tooltip(APPLET_WIDGET(applet), msg); |
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
614 } |
f4fba304b236
[gaim-migrate @ 352]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
340
diff
changeset
|
615 |
1 | 616 #endif /*USE_APPLET*/ |