Mercurial > pidgin
comparison src/gnome_applet_mgr.c @ 82:05077cb276d4
[gaim-migrate @ 92]
Made it very easy to switch between penguin and devil icons in the applet.
Also made it so that it would find the icons better (through use of nifty
GNOME functions I accidentally found). Other little touch-ups here and there.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Wed, 05 Apr 2000 08:22:38 +0000 |
parents | bfdc427b936d |
children | 8a98f129c849 |
comparison
equal
deleted
inserted
replaced
81:7a24bb75a97b | 82:05077cb276d4 |
---|---|
38 gint num_of_buddies_online; /* how many of them are online */ | 38 gint num_of_buddies_online; /* how many of them are online */ |
39 | 39 |
40 gboolean buddy_created = FALSE; | 40 gboolean buddy_created = FALSE; |
41 gboolean applet_draw_open = FALSE; | 41 gboolean applet_draw_open = FALSE; |
42 GtkWidget *applet_popup = NULL; | 42 GtkWidget *applet_popup = NULL; |
43 | |
44 gchar GAIM_GNOME_OFFLINE_ICON[255] = GAIM_GNOME_PENGUIN_OFFLINE; | |
45 gchar GAIM_GNOME_CONNECT_ICON[255] = GAIM_GNOME_PENGUIN_CONNECT; | |
46 gchar GAIM_GNOME_ONLINE_ICON[255] = GAIM_GNOME_PENGUIN_ONLINE; | |
43 | 47 |
44 GtkWidget *applet; | 48 GtkWidget *applet; |
45 GtkWidget *button; | 49 GtkWidget *button; |
46 GtkWidget *status_label; | 50 GtkWidget *status_label; |
47 | 51 |
85 ** | 89 ** |
86 ****************************************************************/ | 90 ****************************************************************/ |
87 | 91 |
88 gboolean load_applet_icon( const char *name, int height, int width, GdkPixmap **pm, GdkBitmap **bm ){ | 92 gboolean load_applet_icon( const char *name, int height, int width, GdkPixmap **pm, GdkBitmap **bm ){ |
89 gboolean result = TRUE; | 93 gboolean result = TRUE; |
90 char path[255] = GAIM_GNOME_PIXMAP_DIR; | 94 char *path; |
91 GdkImlibImage *im; | 95 GdkImlibImage *im; |
92 GdkPixmap *temp_pm; | 96 GdkPixmap *temp_pm; |
93 GdkPixmap *temp_bm; | 97 GdkPixmap *temp_bm; |
94 | 98 |
95 strcat( path, name); | 99 path = gnome_pixmap_file(name); |
96 | 100 |
97 im=gdk_imlib_load_image( path ); | 101 im=gdk_imlib_load_image( path ); |
98 | 102 |
99 if ((*pm)!=NULL) | 103 if ((*pm)!=NULL) |
100 gdk_imlib_free_pixmap((*pm)); | 104 gdk_imlib_free_pixmap((*pm)); |
101 | 105 |
109 result = FALSE; | 113 result = FALSE; |
110 sprintf(debug_buff,"file not found: %s\n",path); | 114 sprintf(debug_buff,"file not found: %s\n",path); |
111 debug_print(debug_buff); | 115 debug_print(debug_buff); |
112 } | 116 } |
113 | 117 |
118 free(path); | |
114 return result; | 119 return result; |
115 } | 120 } |
116 | 121 |
117 /*************************************************************** | 122 /*************************************************************** |
118 ** | 123 ** |
119 ** function update_applet | 124 ** function update_applet |
120 ** visibility - private | 125 ** visibility - private |
121 ** | 126 ** |
122 ** input: | 127 ** input: |
123 ** ap - not in use | 128 ** ap - if not NULL, was called from update_pixmaps, and |
129 ** should update them | |
124 ** | 130 ** |
125 ** description - takes care of swapping status icons and | 131 ** description - takes care of swapping status icons and |
126 ** updating the status label | 132 ** updating the status label |
127 ** | 133 ** |
128 ****************************************************************/ | 134 ****************************************************************/ |
138 } else { | 144 } else { |
139 sprintf(debug_buff, "Drawer is closed\n"); | 145 sprintf(debug_buff, "Drawer is closed\n"); |
140 debug_print(debug_buff); | 146 debug_print(debug_buff); |
141 } | 147 } |
142 | 148 |
143 if( MRI_user_status != old_user_status ){ | 149 if( MRI_user_status != old_user_status || ap){ |
144 | 150 |
145 switch( MRI_user_status ){ | 151 switch( MRI_user_status ){ |
146 case offline: | 152 case offline: |
147 gtk_pixmap_set( GTK_PIXMAP(icon), | 153 gtk_pixmap_set( GTK_PIXMAP(icon), |
148 icon_offline_pm, | 154 icon_offline_pm, |
171 icon_msg_pending_bm ); | 177 icon_msg_pending_bm ); |
172 gtk_label_set( GTK_LABEL(status_label), "msg" ); | 178 gtk_label_set( GTK_LABEL(status_label), "msg" ); |
173 break; | 179 break; |
174 case away: | 180 case away: |
175 gtk_pixmap_set( GTK_PIXMAP(icon), | 181 gtk_pixmap_set( GTK_PIXMAP(icon), |
176 icon_away_pm, | 182 icon_online_pm, |
177 icon_away_bm ); | 183 icon_online_bm ); |
178 gtk_label_set( GTK_LABEL(status_label), "Away" ); | 184 gtk_label_set( GTK_LABEL(status_label), "Away" ); |
179 break; | 185 break; |
180 } | 186 } |
181 old_user_status = MRI_user_status; | 187 old_user_status = MRI_user_status; |
182 } | 188 } |
204 #endif /*_USE_BUDDY_COUNT_*/ | 210 #endif /*_USE_BUDDY_COUNT_*/ |
205 return TRUE; | 211 return TRUE; |
206 | 212 |
207 } | 213 } |
208 | 214 |
215 void update_pixmaps() { | |
216 if (display_options & OPT_DISP_DEVIL_PIXMAPS) { | |
217 sprintf(GAIM_GNOME_OFFLINE_ICON, "%s", GAIM_GNOME_DEVIL_OFFLINE); | |
218 sprintf(GAIM_GNOME_CONNECT_ICON, "%s", GAIM_GNOME_DEVIL_CONNECT); | |
219 sprintf(GAIM_GNOME_ONLINE_ICON, "%s", GAIM_GNOME_DEVIL_ONLINE); | |
220 } else { | |
221 sprintf(GAIM_GNOME_OFFLINE_ICON, "%s", GAIM_GNOME_PENGUIN_OFFLINE); | |
222 sprintf(GAIM_GNOME_CONNECT_ICON, "%s", GAIM_GNOME_PENGUIN_CONNECT); | |
223 sprintf(GAIM_GNOME_ONLINE_ICON, "%s", GAIM_GNOME_PENGUIN_ONLINE); | |
224 } | |
225 load_applet_icon( GAIM_GNOME_OFFLINE_ICON, 32, 34, | |
226 &icon_offline_pm, &icon_offline_bm ); | |
227 load_applet_icon( GAIM_GNOME_CONNECT_ICON, 32, 34, | |
228 &icon_connect_pm, &icon_connect_bm ); | |
229 load_applet_icon( GAIM_GNOME_ONLINE_ICON, 32, 34, | |
230 &icon_online_pm, &icon_online_bm ); | |
231 update_applet((gpointer *)applet); | |
232 } | |
233 | |
209 | 234 |
210 /*************************************************************** | 235 /*************************************************************** |
211 ** | 236 ** |
212 ** function make_buddy | 237 ** function make_buddy |
213 ** visibility - private | 238 ** visibility - private |
285 a); | 310 a); |
286 | 311 |
287 awy = awy->next; | 312 awy = awy->next; |
288 free(awayname); | 313 free(awayname); |
289 } | 314 } |
315 | |
316 MRI_user_status = online; | |
290 } | 317 } |
291 | 318 |
292 void remove_applet_away() { | 319 void remove_applet_away() { |
293 GList *awy = away_messages; | 320 GList *awy = away_messages; |
294 struct away_message *a; | 321 struct away_message *a; |
308 awy = awy->next; | 335 awy = awy->next; |
309 free(awayname); | 336 free(awayname); |
310 } | 337 } |
311 applet_widget_unregister_callback_dir(APPLET_WIDGET(applet), "away/"); | 338 applet_widget_unregister_callback_dir(APPLET_WIDGET(applet), "away/"); |
312 applet_widget_unregister_callback(APPLET_WIDGET(applet), "away"); | 339 applet_widget_unregister_callback(APPLET_WIDGET(applet), "away"); |
340 | |
341 MRI_user_status = away; | |
313 } | 342 } |
314 | 343 |
315 /*************************************************************** | 344 /*************************************************************** |
316 ** | 345 ** |
317 ** function applet_show_about | 346 ** function applet_show_about |
325 void applet_show_about(AppletWidget *widget, gpointer data) { | 354 void applet_show_about(AppletWidget *widget, gpointer data) { |
326 | 355 |
327 const gchar *authors[] = {"Mark Spencer <markster@marko.net>", | 356 const gchar *authors[] = {"Mark Spencer <markster@marko.net>", |
328 "Jim Duchek <jimduchek@ou.edu>", | 357 "Jim Duchek <jimduchek@ou.edu>", |
329 "Rob Flynn <rflynn@blueridge.net>", | 358 "Rob Flynn <rflynn@blueridge.net>", |
330 | 359 "Eric Warmenhoven <warmenhoven@yahoo.com>", |
331 NULL}; | 360 NULL}; |
332 | 361 |
333 GtkWidget *about=gnome_about_new(_("GAIM"), | 362 GtkWidget *about=gnome_about_new(_("GAIM"), |
334 _(VERSION), | 363 _(VERSION), |
335 _(""), | 364 _(""), |
685 return 0; | 714 return 0; |
686 } | 715 } |
687 | 716 |
688 void setUserState( enum gaim_user_states state ){ | 717 void setUserState( enum gaim_user_states state ){ |
689 MRI_user_status = state; | 718 MRI_user_status = state; |
690 update_applet( (gpointer *)applet ); | 719 update_applet(NULL); |
691 } | 720 } |
692 | 721 |
693 void setTotalBuddies( gint num ){ | 722 void setTotalBuddies( gint num ){ |
694 total_num_of_buddies = num; | 723 total_num_of_buddies = num; |
695 } | 724 } |