diff options
author | Ted Gould <ted@canonical.com> | 2009-08-04 10:27:08 +0100 |
---|---|---|
committer | Ted Gould <ted@canonical.com> | 2009-08-04 10:27:08 +0100 |
commit | 5909ee4172e2913f7ef65b4632c4a283431adae4 (patch) | |
tree | 977b8970244ec952fc55ddaf7a9cb9aec8e794e9 /libindicate-gtk/indicator.c | |
parent | 064740bd411abe73a67a9c75f469f04d8259afdb (diff) | |
parent | 63ed0ba9f0de5d60f31e5c52849cb6fb7a070cd9 (diff) | |
download | libayatana-indicator-5909ee4172e2913f7ef65b4632c4a283431adae4.tar.gz libayatana-indicator-5909ee4172e2913f7ef65b4632c4a283431adae4.tar.bz2 libayatana-indicator-5909ee4172e2913f7ef65b4632c4a283431adae4.zip |
* Merging in upstream code to split out libindicate-gtk
* debian/control:
* Changing the version number of libindcate to 2 to match
the .so numbering.
* Creating packages for libindicate-gtk
* Added libindicate-gtk-dev.install and libindicate-gtk0.install
for the new library.
* Renamed libindicate1.install to libindicate2.install to match
the package name change.
* Modified libindicate-dev to be more specific about the header
files that it grabs.
Diffstat (limited to 'libindicate-gtk/indicator.c')
-rw-r--r-- | libindicate-gtk/indicator.c | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/libindicate-gtk/indicator.c b/libindicate-gtk/indicator.c new file mode 100644 index 0000000..a575849 --- /dev/null +++ b/libindicate-gtk/indicator.c @@ -0,0 +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. + +Copyright 2009 Canonical Ltd. + +Authors: + Ted Gould <ted@canonical.com> + +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 +<http://www.gnu.org/licenses/> +*/ + +#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; +} |