comparison pidgin/gtkutils.c @ 26817:3912f55a1633

propagate from branch 'im.pidgin.pidgin' (head fbb4fe5da444943eecc76bdcd6c8ba967790b6c8) to branch 'im.pidgin.cpw.darkrain42.xmpp.bosh' (head 601bc627c9430320848361f0ed81c6c4c6ee53e0)
author Paul Aurich <paul@darkrain42.org>
date Tue, 28 Apr 2009 18:43:57 +0000
parents 4a3a0c47dfe1
children 89f613b16e2b
comparison
equal deleted inserted replaced
26743:de9816c970fe 26817:3912f55a1633
356 pidgin_set_accessible_label (menuitem, label); 356 pidgin_set_accessible_label (menuitem, label);
357 return menuitem; 357 return menuitem;
358 } 358 }
359 359
360 GtkWidget *pidgin_new_check_item(GtkWidget *menu, const char *str, 360 GtkWidget *pidgin_new_check_item(GtkWidget *menu, const char *str,
361 GtkSignalFunc sf, gpointer data, gboolean checked) 361 GCallback cb, gpointer data, gboolean checked)
362 { 362 {
363 GtkWidget *menuitem; 363 GtkWidget *menuitem;
364 menuitem = gtk_check_menu_item_new_with_mnemonic(str); 364 menuitem = gtk_check_menu_item_new_with_mnemonic(str);
365 365
366 if (menu) 366 if (menu)
367 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); 367 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
368 368
369 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), checked); 369 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), checked);
370 370
371 if (sf) 371 if (cb)
372 g_signal_connect(G_OBJECT(menuitem), "activate", sf, data); 372 g_signal_connect(G_OBJECT(menuitem), "activate", cb, data);
373 373
374 gtk_widget_show_all(menuitem); 374 gtk_widget_show_all(menuitem);
375 375
376 return menuitem; 376 return menuitem;
377 } 377 }
437 437
438 return button; 438 return button;
439 } 439 }
440 440
441 441
442 GtkWidget *pidgin_new_item_from_stock(GtkWidget *menu, const char *str, const char *icon, GtkSignalFunc sf, gpointer data, guint accel_key, guint accel_mods, char *mod) 442 GtkWidget *pidgin_new_item_from_stock(GtkWidget *menu, const char *str, const char *icon, GCallback cb, gpointer data, guint accel_key, guint accel_mods, char *mod)
443 { 443 {
444 GtkWidget *menuitem; 444 GtkWidget *menuitem;
445 /* 445 /*
446 GtkWidget *hbox; 446 GtkWidget *hbox;
447 GtkWidget *label; 447 GtkWidget *label;
454 menuitem = gtk_image_menu_item_new_with_mnemonic(str); 454 menuitem = gtk_image_menu_item_new_with_mnemonic(str);
455 455
456 if (menu) 456 if (menu)
457 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem); 457 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
458 458
459 if (sf) 459 if (cb)
460 g_signal_connect(G_OBJECT(menuitem), "activate", sf, data); 460 g_signal_connect(G_OBJECT(menuitem), "activate", cb, data);
461 461
462 if (icon != NULL) { 462 if (icon != NULL) {
463 image = gtk_image_new_from_stock(icon, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)); 463 image = gtk_image_new_from_stock(icon, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
464 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image); 464 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
465 } 465 }
1462 purple_notify_error(NULL, NULL, 1462 purple_notify_error(NULL, NULL,
1463 _("Failed to load image"), 1463 _("Failed to load image"),
1464 str); 1464 str);
1465 g_free(str); 1465 g_free(str);
1466 1466
1467 return; 1467 break;
1468 } 1468 }
1469 1469
1470 buddy = purple_find_buddy(data->account, data->who); 1470 buddy = purple_find_buddy(data->account, data->who);
1471 if (!buddy) { 1471 if (!buddy) {
1472 purple_debug_info("custom-icon", "You can only set custom icons for people on your buddylist.\n"); 1472 purple_debug_info("custom-icon", "You can only set custom icons for people on your buddylist.\n");
1492 str); 1492 str);
1493 1493
1494 g_error_free(err); 1494 g_error_free(err);
1495 g_free(str); 1495 g_free(str);
1496 1496
1497 return; 1497 break;
1498 } 1498 }
1499 id = purple_imgstore_add_with_id(filedata, size, data->filename); 1499 id = purple_imgstore_add_with_id(filedata, size, data->filename);
1500 1500
1501 gtk_text_buffer_get_iter_at_mark(GTK_IMHTML(gtkconv->entry)->text_buffer, &iter, 1501 gtk_text_buffer_get_iter_at_mark(GTK_IMHTML(gtkconv->entry)->text_buffer, &iter,
1502 gtk_text_buffer_get_insert(GTK_IMHTML(gtkconv->entry)->text_buffer)); 1502 gtk_text_buffer_get_insert(GTK_IMHTML(gtkconv->entry)->text_buffer));
1625 account, who, NULL, 1625 account, who, NULL,
1626 data, 1626 data,
1627 _("Set as buddy icon"), DND_BUDDY_ICON, 1627 _("Set as buddy icon"), DND_BUDDY_ICON,
1628 (ft ? _("Send image file") : _("Insert in message")), (ft ? DND_FILE_TRANSFER : DND_IM_IMAGE), 1628 (ft ? _("Send image file") : _("Insert in message")), (ft ? DND_FILE_TRANSFER : DND_IM_IMAGE),
1629 NULL); 1629 NULL);
1630 gdk_pixbuf_unref(pb); 1630 g_object_unref(G_OBJECT(pb));
1631 return; 1631 return;
1632 } 1632 }
1633 1633
1634 #ifndef _WIN32 1634 #ifndef _WIN32
1635 /* Are we trying to send a .desktop file? */ 1635 /* Are we trying to send a .desktop file? */
1713 1713
1714 GdkPixbuf * pidgin_create_status_icon(PurpleStatusPrimitive prim, GtkWidget *w, const char *size) 1714 GdkPixbuf * pidgin_create_status_icon(PurpleStatusPrimitive prim, GtkWidget *w, const char *size)
1715 { 1715 {
1716 GtkIconSize icon_size = gtk_icon_size_from_name(size); 1716 GtkIconSize icon_size = gtk_icon_size_from_name(size);
1717 GdkPixbuf *pixbuf = NULL; 1717 GdkPixbuf *pixbuf = NULL;
1718 1718 const char *stock = pidgin_stock_id_from_status_primitive(prim);
1719 if (prim == PURPLE_STATUS_UNAVAILABLE) 1719
1720 pixbuf = gtk_widget_render_icon (w, PIDGIN_STOCK_STATUS_BUSY, 1720 pixbuf = gtk_widget_render_icon (w, stock ? stock : PIDGIN_STOCK_STATUS_AVAILABLE,
1721 icon_size, "GtkWidget"); 1721 icon_size, "GtkWidget");
1722 else if (prim == PURPLE_STATUS_AWAY)
1723 pixbuf = gtk_widget_render_icon (w, PIDGIN_STOCK_STATUS_AWAY,
1724 icon_size, "GtkWidget");
1725 else if (prim == PURPLE_STATUS_EXTENDED_AWAY)
1726 pixbuf = gtk_widget_render_icon (w, PIDGIN_STOCK_STATUS_XA,
1727 icon_size, "GtkWidget");
1728 else if (prim == PURPLE_STATUS_INVISIBLE)
1729 pixbuf = gtk_widget_render_icon (w, PIDGIN_STOCK_STATUS_INVISIBLE,
1730 icon_size, "GtkWidget");
1731 else if (prim == PURPLE_STATUS_OFFLINE)
1732 pixbuf = gtk_widget_render_icon (w, PIDGIN_STOCK_STATUS_OFFLINE,
1733 icon_size, "GtkWidget");
1734 else
1735 pixbuf = gtk_widget_render_icon (w, PIDGIN_STOCK_STATUS_AVAILABLE,
1736 icon_size, "GtkWidget");
1737 return pixbuf; 1722 return pixbuf;
1738 1723 }
1739 } 1724
1740 1725 const char *
1726 pidgin_stock_id_from_status_primitive(PurpleStatusPrimitive prim)
1727 {
1728 const char *stock = NULL;
1729 switch (prim) {
1730 case PURPLE_STATUS_UNSET:
1731 stock = NULL;
1732 break;
1733 case PURPLE_STATUS_UNAVAILABLE:
1734 stock = PIDGIN_STOCK_STATUS_BUSY;
1735 break;
1736 case PURPLE_STATUS_AWAY:
1737 stock = PIDGIN_STOCK_STATUS_AWAY;
1738 break;
1739 case PURPLE_STATUS_EXTENDED_AWAY:
1740 stock = PIDGIN_STOCK_STATUS_XA;
1741 break;
1742 case PURPLE_STATUS_INVISIBLE:
1743 stock = PIDGIN_STOCK_STATUS_INVISIBLE;
1744 break;
1745 case PURPLE_STATUS_OFFLINE:
1746 stock = PIDGIN_STOCK_STATUS_OFFLINE;
1747 break;
1748 default:
1749 stock = PIDGIN_STOCK_STATUS_AVAILABLE;
1750 break;
1751 }
1752 return stock;
1753 }
1741 1754
1742 GdkPixbuf * 1755 GdkPixbuf *
1743 pidgin_create_prpl_icon(PurpleAccount *account, PidginPrplIconSize size) 1756 pidgin_create_prpl_icon(PurpleAccount *account, PidginPrplIconSize size)
1744 { 1757 {
1745 PurplePlugin *prpl; 1758 PurplePlugin *prpl;
2941 #else 2954 #else
2942 /* do something else? */ 2955 /* do something else? */
2943 #endif 2956 #endif
2944 } 2957 }
2945 2958
2946 GSList *minidialogs = NULL; 2959 static GSList *minidialogs = NULL;
2947 2960
2948 static void * 2961 static void *
2949 pidgin_utils_get_handle(void) 2962 pidgin_utils_get_handle(void)
2950 { 2963 {
2951 static int handle; 2964 static int handle;