| 91 static void pidgin_status_box_popdown(PidginStatusBox *box); |
91 static void pidgin_status_box_popdown(PidginStatusBox *box); |
| 92 |
92 |
| 93 static void do_colorshift (GdkPixbuf *dest, GdkPixbuf *src, int shift); |
93 static void do_colorshift (GdkPixbuf *dest, GdkPixbuf *src, int shift); |
| 94 static void icon_choose_cb(const char *filename, gpointer data); |
94 static void icon_choose_cb(const char *filename, gpointer data); |
| 95 static void remove_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box); |
95 static void remove_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box); |
| |
96 static void choose_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box); |
| 96 |
97 |
| 97 enum { |
98 enum { |
| 98 /** A PidginStatusBoxItemType */ |
99 /** A PidginStatusBoxItemType */ |
| 99 TYPE_COLUMN, |
100 TYPE_COLUMN, |
| 100 |
101 |
| 315 if (box->icon_box_menu) |
316 if (box->icon_box_menu) |
| 316 gtk_widget_destroy(box->icon_box_menu); |
317 gtk_widget_destroy(box->icon_box_menu); |
| 317 |
318 |
| 318 box->icon_box_menu = gtk_menu_new(); |
319 box->icon_box_menu = gtk_menu_new(); |
| 319 |
320 |
| |
321 menu_item = pidgin_new_item_from_stock(box->icon_box_menu, _("Select Buddy Icon"), NULL, |
| |
322 G_CALLBACK(choose_buddy_icon_cb), |
| |
323 box, 0, 0, NULL); |
| |
324 |
| 320 menu_item = pidgin_new_item_from_stock(box->icon_box_menu, _("Remove"), GTK_STOCK_REMOVE, |
325 menu_item = pidgin_new_item_from_stock(box->icon_box_menu, _("Remove"), GTK_STOCK_REMOVE, |
| 321 G_CALLBACK(remove_buddy_icon_cb), |
326 G_CALLBACK(remove_buddy_icon_cb), |
| 322 box, 0, 0, NULL); |
327 box, 0, 0, NULL); |
| 323 if (purple_prefs_get_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon") == NULL) |
328 if (purple_prefs_get_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon") == NULL) |
| 324 gtk_widget_set_sensitive(menu_item, FALSE); |
329 gtk_widget_set_sensitive(menu_item, FALSE); |
| 325 |
330 |
| 326 gtk_menu_popup(GTK_MENU(box->icon_box_menu), NULL, NULL, NULL, NULL, |
331 gtk_menu_popup(GTK_MENU(box->icon_box_menu), NULL, NULL, NULL, NULL, |
| 327 event->button, event->time); |
332 event->button, event->time); |
| 328 |
333 |
| 329 } else { |
334 } else { |
| 330 if (box->buddy_icon_sel) { |
335 choose_buddy_icon_cb(widget, box); |
| 331 gtk_window_present(GTK_WINDOW(box->buddy_icon_sel)); |
|
| 332 return FALSE; |
|
| 333 } |
|
| 334 |
|
| 335 box->buddy_icon_sel = pidgin_buddy_icon_chooser_new(GTK_WINDOW(gtk_widget_get_toplevel(widget)), icon_choose_cb, box); |
|
| 336 gtk_widget_show_all(box->buddy_icon_sel); |
|
| 337 } |
336 } |
| 338 return FALSE; |
337 return FALSE; |
| 339 } |
338 } |
| 340 |
339 |
| 341 static void |
340 static void |
| 1524 else |
1523 else |
| 1525 buddy_icon_set_cb(NULL, box); |
1524 buddy_icon_set_cb(NULL, box); |
| 1526 |
1525 |
| 1527 gtk_widget_destroy(box->icon_box_menu); |
1526 gtk_widget_destroy(box->icon_box_menu); |
| 1528 box->icon_box_menu = NULL; |
1527 box->icon_box_menu = NULL; |
| |
1528 } |
| |
1529 |
| |
1530 static void |
| |
1531 choose_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box) |
| |
1532 { |
| |
1533 if (box->buddy_icon_sel) { |
| |
1534 gtk_window_present(GTK_WINDOW(box->buddy_icon_sel)); |
| |
1535 } else { |
| |
1536 box->buddy_icon_sel = pidgin_buddy_icon_chooser_new(GTK_WINDOW(gtk_widget_get_toplevel(w)), icon_choose_cb, box); |
| |
1537 gtk_widget_show_all(box->buddy_icon_sel); |
| |
1538 } |
| 1529 } |
1539 } |
| 1530 |
1540 |
| 1531 static void |
1541 static void |
| 1532 icon_choose_cb(const char *filename, gpointer data) |
1542 icon_choose_cb(const char *filename, gpointer data) |
| 1533 { |
1543 { |