summaryrefslogtreecommitdiff
path: root/src/util.c
diff options
context:
space:
mode:
authorGlynn Foster <glynn.foster@sun.com>2004-09-13 07:51:51 +0000
committerGlynn Foster <gman@src.gnome.org>2004-09-13 07:51:51 +0000
commit3e05834b4c23a5d5951403719b8594ff3d9fe30b (patch)
treef35532d3b2d0adb7ca74cd7c224c58c250d0ec62 /src/util.c
parent03f3e5b060977c9566bd66bc8e4eaac14c4ee781 (diff)
Add new notification icon. Update for new files. Restructure code a little
2004-09-13 Glynn Foster <glynn.foster@sun.com> * data/Makefile.am, data/zenity-notification.png: Add new notification icon. * src/Makefile.am: Update for new files. * src/about.c, src/calendar.c, src/entry.c, src/fileselection.c, src/progress.c, src/text.c, src/tree.c, src/msg.c: Restructure code a little bit for new utility functions for setting window icons. * src/eggtrayicon.c, src/eggtrayicon.h: New files for notification area support. * src/main.c, src/notification.c, src/util.c, src/util.h, src/zenity.h: Add support for notification area. * data/zenity.1, help/*: Update docs for notification and new file selection changes.
Diffstat (limited to 'src/util.c')
-rw-r--r--src/util.c73
1 files changed, 35 insertions, 38 deletions
diff --git a/src/util.c b/src/util.c
index 3364e30..b839d42 100644
--- a/src/util.c
+++ b/src/util.c
@@ -143,56 +143,53 @@ zenity_util_fill_file_buffer (GtkTextBuffer *buffer, const gchar *filename)
return TRUE;
}
-static GList *
-zenity_util_list_from_char_array (const char **s)
+GdkPixbuf *
+zenity_util_pixbuf_new_from_file (GtkWidget *widget, gchar *filename)
{
- GList *list = NULL;
- gint i;
-
- for (i = 0; s[i]; i++) {
- GdkPixbuf *pixbuf;
-
- pixbuf = gdk_pixbuf_new_from_file (s[i], NULL);
- if (pixbuf)
- list = g_list_prepend (list, pixbuf);
- }
-
- return list;
-}
-
-static void
-zenity_util_free_list (GList *list)
-{
- g_list_foreach (list, (GFunc) g_object_unref, NULL);
- g_list_free (list);
+ if (!strcmp (g_strdown (filename), "warning"))
+ return gtk_widget_render_icon (widget, GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_BUTTON, NULL);
+ if (!strcmp (g_strdown (filename), "info"))
+ return gtk_widget_render_icon (widget, GTK_STOCK_DIALOG_INFO, GTK_ICON_SIZE_BUTTON, NULL);
+ if (!strcmp (g_strdown (filename), "question"))
+ return gtk_widget_render_icon (widget, GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_BUTTON, NULL);
+ if (!strcmp (g_strdown (filename), "error"))
+ return gtk_widget_render_icon (widget, GTK_STOCK_DIALOG_ERROR, GTK_ICON_SIZE_BUTTON, NULL);
+ else
+ return gdk_pixbuf_new_from_file (filename, NULL);
}
void
-zenity_util_set_window_icon (GtkWidget *widget, const gchar *filename)
+zenity_util_set_window_icon (GtkWidget *widget, const gchar *filename, const gchar *default_file)
{
- const gchar *filenames[2] = { NULL};
- GList *list;
-
- g_return_if_fail (widget != NULL);
- g_return_if_fail (GTK_IS_WINDOW (widget));
+ GdkPixbuf *pixbuf;
- if (filename == NULL)
- return;
+ if (filename != NULL)
+ pixbuf = zenity_util_pixbuf_new_from_file (widget, (gchar *) filename);
+ else
+ pixbuf = gdk_pixbuf_new_from_file (default_file, NULL);
- filenames[0] = filename;
- list = zenity_util_list_from_char_array (filenames);
- gtk_window_set_icon_list (GTK_WINDOW (widget), list);
- zenity_util_free_list (list);
+ if (pixbuf != NULL) {
+ gtk_window_set_icon (GTK_WINDOW (widget), pixbuf);
+ g_object_unref (pixbuf);
+ }
}
void
-zenity_util_set_window_icon_from_stock (GtkWidget *widget, const gchar *stock_id)
+zenity_util_set_window_icon_from_stock (GtkWidget *widget, const gchar *filename, const gchar *default_stock_id)
{
GdkPixbuf *pixbuf;
-
- pixbuf = gtk_widget_render_icon (widget, stock_id, (GtkIconSize) -1, NULL);
- gtk_window_set_icon (GTK_WINDOW (widget), pixbuf);
- g_object_unref (pixbuf);
+
+ if (filename != NULL) {
+ pixbuf = zenity_util_pixbuf_new_from_file (widget, (gchar *) filename);
+ }
+ else {
+ pixbuf = gtk_widget_render_icon (widget, default_stock_id, GTK_ICON_SIZE_BUTTON, NULL);
+ }
+
+ if (pixbuf != NULL) {
+ gtk_window_set_icon (GTK_WINDOW (widget), pixbuf);
+ g_object_unref (pixbuf);
+ }
}
void