From 840e1c8b34542acf017d3e0caf921062827c280b Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Mon, 3 Aug 2009 19:25:05 +0100 Subject: Okay, now it is the offending function in it. --- configure.ac | 1 + libindicate-gtk/Makefile.am | 4 +-- libindicate-gtk/indicator.c | 71 ++++++++++++++++++++++++++++++++++++++++++++- libindicate-gtk/indicator.h | 44 ++++++++++++++++++++++++++++ 4 files changed, 117 insertions(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 13f4b6c..beed048 100644 --- a/configure.ac +++ b/configure.ac @@ -64,6 +64,7 @@ AC_SUBST(LIBINDICATE_LIBS) PKG_CHECK_MODULES(LIBINDICATEGTK, glib-2.0 >= $GLIB_REQUIRED_VERSION gio-2.0 >= $GIO_REQUIRED_VERSION gdk-pixbuf-2.0 >= $GDK_PIXBUF_REQUIRED_VERSION + gtk+-2.0 >= $GTK_REQUIRED_VERSION dbus-glib-1 >= $DBUS_REQUIRED_VERSION libxml-2.0 >= $XML_REQUIRED_VERSION) AC_SUBST(LIBINDICATEGTK_CFLAGS) diff --git a/libindicate-gtk/Makefile.am b/libindicate-gtk/Makefile.am index 0e1d08d..a6a50fa 100644 --- a/libindicate-gtk/Makefile.am +++ b/libindicate-gtk/Makefile.am @@ -14,10 +14,10 @@ indicate_gtk_headers = \ indicator.h libindicate_gtkinclude_HEADERS = \ - $(indicate_headers) + $(indicate_gtk_headers) libindicate_gtk_la_SOURCES = \ - $(indicate_headers) \ + $(indicate_gtk_headers) \ indicator.c libindicate_gtk_la_LDFLAGS = \ diff --git a/libindicate-gtk/indicator.c b/libindicate-gtk/indicator.c index d5f07ef..a575849 100644 --- a/libindicate-gtk/indicator.c +++ b/libindicate-gtk/indicator.c @@ -1,5 +1,74 @@ +/* +A library to allow applictions to provide simple indications of +information to be displayed to users of the application through the +interface shell. -void var (void) { +Copyright 2009 Canonical Ltd. + +Authors: + Ted Gould + +This program is free software: you can redistribute it and/or modify it +under the terms of either or both of the following licenses: + +1) the GNU Lesser General Public License version 3, as published by the +Free Software Foundation; and/or +2) the GNU Lesser General Public License version 2.1, as published by +the Free Software Foundation. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranties of +MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR +PURPOSE. See the applicable version of the GNU Lesser General Public +License for more details. + +You should have received a copy of both the GNU Lesser General Public +License version 3 and version 2.1 along with this program. If not, see + +*/ + +#include "indicator.h" + +/** + indicate_indicator_set_property_icon: + @indicator: a #IndicateIndicator to act on + @key: name of the property + @data: icon to set property with + + This is a helper function that wraps around #indicate_indicator_set_property + but takes an #GdkPixbuf parameter. It then takes the @data + parameter, turns it into a PNG, base64 encodes it and then + uses that data to call #indicate_indicator_set_property. +*/ +void +indicate_indicator_set_property_icon (IndicateIndicator * indicator, const gchar * key, const GdkPixbuf * data) +{ + if (!GDK_IS_PIXBUF(data)) { + g_warning("Invalide GdkPixbuf"); + return; + } + + GError * error = NULL; + gchar * png_data; + gsize png_data_len; + + 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; + } + + gchar * prop_str = g_base64_encode((guchar *)png_data, png_data_len); + indicate_indicator_set_property(indicator, key, prop_str); + + g_free(prop_str); + g_free(png_data); return; } diff --git a/libindicate-gtk/indicator.h b/libindicate-gtk/indicator.h index e69de29..43e264f 100644 --- a/libindicate-gtk/indicator.h +++ b/libindicate-gtk/indicator.h @@ -0,0 +1,44 @@ +/* +A library to allow applictions to provide simple indications of +information to be displayed to users of the application through the +interface shell. + +Copyright 2009 Canonical Ltd. + +Authors: + Ted Gould + +This program is free software: you can redistribute it and/or modify it +under the terms of either or both of the following licenses: + +1) the GNU Lesser General Public License version 3, as published by the +Free Software Foundation; and/or +2) the GNU Lesser General Public License version 2.1, as published by +the Free Software Foundation. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranties of +MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR +PURPOSE. See the applicable version of the GNU Lesser General Public +License for more details. + +You should have received a copy of both the GNU Lesser General Public +License version 3 and version 2.1 along with this program. If not, see + +*/ + +#ifndef INDICATE_GTK_INDICATOR_H_INCLUDED__ +#define INDICATE_GTK_INDICATOR_H_INCLUDED__ 1 + +#include +#include +#include "libindicate/indicator.h" + +G_BEGIN_DECLS + +/* Properties handling */ +void indicate_indicator_set_property_icon (IndicateIndicator * indicator, const gchar * key, const GdkPixbuf * data); + +G_END_DECLS + +#endif /* INDICATE_GTK_INDICATOR_H_INCLUDED__ */ -- cgit v1.2.3