aboutsummaryrefslogtreecommitdiff
path: root/libdbusmenu-gtk/menuitem.c
diff options
context:
space:
mode:
authorTed Gould <ted@canonical.com>2009-09-02 13:36:19 -0500
committerTed Gould <ted@canonical.com>2009-09-02 13:36:19 -0500
commit9cdda2c381c667563edce05889dd6cfb735cf020 (patch)
tree935880df429eb3cff38d555abddee7af8a65cce8 /libdbusmenu-gtk/menuitem.c
parent6c667b04e50850715e917cabcc005b6ec7947486 (diff)
downloadlibdbusmenu-9cdda2c381c667563edce05889dd6cfb735cf020.tar.gz
libdbusmenu-9cdda2c381c667563edce05889dd6cfb735cf020.tar.bz2
libdbusmenu-9cdda2c381c667563edce05889dd6cfb735cf020.zip
Fleshing out the setting function. Stealing from libindicate.
Diffstat (limited to 'libdbusmenu-gtk/menuitem.c')
-rw-r--r--libdbusmenu-gtk/menuitem.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/libdbusmenu-gtk/menuitem.c b/libdbusmenu-gtk/menuitem.c
index d2d0ee4..f3d9668 100644
--- a/libdbusmenu-gtk/menuitem.c
+++ b/libdbusmenu-gtk/menuitem.c
@@ -31,9 +31,34 @@ License version 3 and version 2.1 along with this program. If not, see
gboolean
dbusmenu_menuitem_property_set_image (DbusmenuMenuitem * menuitem, const gchar * property, const GdkPixbuf * data)
{
+ g_return_val_if_fail(GDK_IS_PIXBUF(data), FALSE);
+ g_return_val_if_fail(DBUSMENU_IS_MENUITEM(menuitem), FALSE);
+ g_return_val_if_fail(property != NULL && property[0] != '\0', FALSE);
+ GError * error = NULL;
+ gchar * png_data;
+ gsize png_data_len;
- return FALSE;
+ if (!gdk_pixbuf_save_to_buffer((GdkPixbuf *)data, &png_data, &png_data_len, "png", &error, NULL)) {
+ if (error == NULL) {
+ g_warning("Unable to create pixbuf data stream: %d", png_data_len);
+ } else {
+ g_warning("Unable to create pixbuf data stream: %s", error->message);
+ g_error_free(error);
+ error = NULL;
+ }
+
+ return FALSE;
+ }
+
+ gchar * prop_str = g_base64_encode((guchar *)png_data, png_data_len);
+ gboolean propreturn = FALSE;
+ propreturn = dbusmenu_menuitem_property_set(menuitem, property, prop_str);
+
+ g_free(prop_str);
+ g_free(png_data);
+
+ return propreturn;
}
GdkPixbuf *