From ac1babccac9876ebfe486cc2a3b71348c2cc28bf Mon Sep 17 00:00:00 2001 From: Havoc Pennington Date: Mon, 26 Jun 2000 20:28:05 +0000 Subject: [PATCH] sync; includes some sample stock images, and initial GtkImage hack --- ChangeLog | 10 + ChangeLog.pre-2-0 | 10 + ChangeLog.pre-2-10 | 10 + ChangeLog.pre-2-2 | 10 + ChangeLog.pre-2-4 | 10 + ChangeLog.pre-2-6 | 10 + ChangeLog.pre-2-8 | 10 + configure.in | 1 + gdk-pixbuf/ChangeLog | 6 + gdk-pixbuf/gdk-pixbuf-data.c | 74 +-- gdk-pixbuf/gdk-pixbuf-private.h | 10 + gdk-pixbuf/make-inline-pixbuf.c | 8 +- gtk/gtkiconfactory.c | 110 ++++- gtk/gtkimage.c | 486 +++++++++++++++++-- gtk/gtkimage.h | 86 +++- gtk/gtkstock.c | 52 +- gtk/gtkstock.h | 22 +- gtk/gtkstyle.h | 3 +- gtk/stock-icons/Makefile.am | 24 + gtk/stock-icons/dialog_default.png | Bin 0 -> 2923 bytes gtk/stock-icons/dialog_error.png | Bin 0 -> 2684 bytes gtk/stock-icons/dialog_error_48.png | Bin 0 -> 2684 bytes gtk/stock-icons/dialog_info.png | Bin 0 -> 3504 bytes gtk/stock-icons/dialog_info_48.png | Bin 0 -> 3504 bytes gtk/stock-icons/dialog_question.png | Bin 0 -> 1302 bytes gtk/stock-icons/dialog_question_48.png | Bin 0 -> 1302 bytes gtk/stock-icons/dialog_warning.png | Bin 0 -> 1968 bytes gtk/stock-icons/dialog_warning_48.png | Bin 0 -> 1968 bytes gtk/stock-icons/stock_apply_20.png | Bin 0 -> 452 bytes gtk/stock-icons/stock_button_apply.png | Bin 0 -> 452 bytes gtk/stock-icons/stock_button_apply_24.png | Bin 0 -> 452 bytes gtk/stock-icons/stock_button_cancel.png | Bin 0 -> 454 bytes gtk/stock-icons/stock_button_cancel_24.png | Bin 0 -> 454 bytes gtk/stock-icons/stock_button_close.png | Bin 0 -> 286 bytes gtk/stock-icons/stock_button_close_24.png | Bin 0 -> 286 bytes gtk/stock-icons/stock_button_no.png | Bin 0 -> 847 bytes gtk/stock-icons/stock_button_no_24.png | Bin 0 -> 847 bytes gtk/stock-icons/stock_button_ok.png | Bin 0 -> 661 bytes gtk/stock-icons/stock_button_ok_24.png | Bin 0 -> 661 bytes gtk/stock-icons/stock_button_yes.png | Bin 0 -> 806 bytes gtk/stock-icons/stock_button_yes_24.png | Bin 0 -> 806 bytes gtk/stock-icons/stock_cancel_20.png | Bin 0 -> 454 bytes gtk/stock-icons/stock_close.png | Bin 0 -> 290 bytes gtk/stock-icons/stock_close_20.png | Bin 0 -> 286 bytes gtk/stock-icons/stock_close_24.png | Bin 0 -> 290 bytes gtk/stock-icons/stock_dialog_error_48.png | Bin 0 -> 2684 bytes gtk/stock-icons/stock_dialog_info_48.png | Bin 0 -> 3504 bytes gtk/stock-icons/stock_dialog_question_48.png | Bin 0 -> 1302 bytes gtk/stock-icons/stock_dialog_warning_48.png | Bin 0 -> 1968 bytes gtk/stock-icons/stock_exit.png | Bin 0 -> 413 bytes gtk/stock-icons/stock_exit_24.png | Bin 0 -> 413 bytes gtk/stock-icons/stock_help.png | Bin 0 -> 480 bytes gtk/stock-icons/stock_help_24.png | Bin 0 -> 480 bytes gtk/stock-icons/stock_new.png | Bin 0 -> 771 bytes gtk/stock-icons/stock_new_24.png | Bin 0 -> 771 bytes gtk/stock-icons/stock_no_20.png | Bin 0 -> 847 bytes gtk/stock-icons/stock_ok_20.png | Bin 0 -> 661 bytes gtk/stock-icons/stock_open.png | Bin 0 -> 393 bytes gtk/stock-icons/stock_open_24.png | Bin 0 -> 393 bytes gtk/stock-icons/stock_save.png | Bin 0 -> 849 bytes gtk/stock-icons/stock_save_24.png | Bin 0 -> 849 bytes gtk/stock-icons/stock_yes_20.png | Bin 0 -> 806 bytes 62 files changed, 842 insertions(+), 110 deletions(-) create mode 100644 gtk/stock-icons/Makefile.am create mode 100644 gtk/stock-icons/dialog_default.png create mode 100644 gtk/stock-icons/dialog_error.png create mode 100644 gtk/stock-icons/dialog_error_48.png create mode 100644 gtk/stock-icons/dialog_info.png create mode 100644 gtk/stock-icons/dialog_info_48.png create mode 100644 gtk/stock-icons/dialog_question.png create mode 100644 gtk/stock-icons/dialog_question_48.png create mode 100644 gtk/stock-icons/dialog_warning.png create mode 100644 gtk/stock-icons/dialog_warning_48.png create mode 100644 gtk/stock-icons/stock_apply_20.png create mode 100644 gtk/stock-icons/stock_button_apply.png create mode 100644 gtk/stock-icons/stock_button_apply_24.png create mode 100644 gtk/stock-icons/stock_button_cancel.png create mode 100644 gtk/stock-icons/stock_button_cancel_24.png create mode 100644 gtk/stock-icons/stock_button_close.png create mode 100644 gtk/stock-icons/stock_button_close_24.png create mode 100644 gtk/stock-icons/stock_button_no.png create mode 100644 gtk/stock-icons/stock_button_no_24.png create mode 100644 gtk/stock-icons/stock_button_ok.png create mode 100644 gtk/stock-icons/stock_button_ok_24.png create mode 100644 gtk/stock-icons/stock_button_yes.png create mode 100644 gtk/stock-icons/stock_button_yes_24.png create mode 100644 gtk/stock-icons/stock_cancel_20.png create mode 100644 gtk/stock-icons/stock_close.png create mode 100644 gtk/stock-icons/stock_close_20.png create mode 100644 gtk/stock-icons/stock_close_24.png create mode 100644 gtk/stock-icons/stock_dialog_error_48.png create mode 100644 gtk/stock-icons/stock_dialog_info_48.png create mode 100644 gtk/stock-icons/stock_dialog_question_48.png create mode 100644 gtk/stock-icons/stock_dialog_warning_48.png create mode 100644 gtk/stock-icons/stock_exit.png create mode 100644 gtk/stock-icons/stock_exit_24.png create mode 100644 gtk/stock-icons/stock_help.png create mode 100644 gtk/stock-icons/stock_help_24.png create mode 100644 gtk/stock-icons/stock_new.png create mode 100644 gtk/stock-icons/stock_new_24.png create mode 100644 gtk/stock-icons/stock_no_20.png create mode 100644 gtk/stock-icons/stock_ok_20.png create mode 100644 gtk/stock-icons/stock_open.png create mode 100644 gtk/stock-icons/stock_open_24.png create mode 100644 gtk/stock-icons/stock_save.png create mode 100644 gtk/stock-icons/stock_save_24.png create mode 100644 gtk/stock-icons/stock_yes_20.png diff --git a/ChangeLog b/ChangeLog index 3d4babb6a1..0726d51ec5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2000-06-26 Havoc Pennington + + * gtk/gtkstock.c: Code to add sample default stock items. + + * gtk/gtkiconfactory.c: Code to add the sample default stock icons + to the default icon factory + + * gtk/stock-icons/Makefile.am: Add stock-icons directory with a + Makefile.am and some sample stock icons + Fri Jun 23 17:54:23 2000 Tim Janik * configure.in: make the current version number 1.3.1 (binary age 0, diff --git a/ChangeLog.pre-2-0 b/ChangeLog.pre-2-0 index 3d4babb6a1..0726d51ec5 100644 --- a/ChangeLog.pre-2-0 +++ b/ChangeLog.pre-2-0 @@ -1,3 +1,13 @@ +2000-06-26 Havoc Pennington + + * gtk/gtkstock.c: Code to add sample default stock items. + + * gtk/gtkiconfactory.c: Code to add the sample default stock icons + to the default icon factory + + * gtk/stock-icons/Makefile.am: Add stock-icons directory with a + Makefile.am and some sample stock icons + Fri Jun 23 17:54:23 2000 Tim Janik * configure.in: make the current version number 1.3.1 (binary age 0, diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 3d4babb6a1..0726d51ec5 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,13 @@ +2000-06-26 Havoc Pennington + + * gtk/gtkstock.c: Code to add sample default stock items. + + * gtk/gtkiconfactory.c: Code to add the sample default stock icons + to the default icon factory + + * gtk/stock-icons/Makefile.am: Add stock-icons directory with a + Makefile.am and some sample stock icons + Fri Jun 23 17:54:23 2000 Tim Janik * configure.in: make the current version number 1.3.1 (binary age 0, diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 3d4babb6a1..0726d51ec5 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,13 @@ +2000-06-26 Havoc Pennington + + * gtk/gtkstock.c: Code to add sample default stock items. + + * gtk/gtkiconfactory.c: Code to add the sample default stock icons + to the default icon factory + + * gtk/stock-icons/Makefile.am: Add stock-icons directory with a + Makefile.am and some sample stock icons + Fri Jun 23 17:54:23 2000 Tim Janik * configure.in: make the current version number 1.3.1 (binary age 0, diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 3d4babb6a1..0726d51ec5 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,13 @@ +2000-06-26 Havoc Pennington + + * gtk/gtkstock.c: Code to add sample default stock items. + + * gtk/gtkiconfactory.c: Code to add the sample default stock icons + to the default icon factory + + * gtk/stock-icons/Makefile.am: Add stock-icons directory with a + Makefile.am and some sample stock icons + Fri Jun 23 17:54:23 2000 Tim Janik * configure.in: make the current version number 1.3.1 (binary age 0, diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 3d4babb6a1..0726d51ec5 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,13 @@ +2000-06-26 Havoc Pennington + + * gtk/gtkstock.c: Code to add sample default stock items. + + * gtk/gtkiconfactory.c: Code to add the sample default stock icons + to the default icon factory + + * gtk/stock-icons/Makefile.am: Add stock-icons directory with a + Makefile.am and some sample stock icons + Fri Jun 23 17:54:23 2000 Tim Janik * configure.in: make the current version number 1.3.1 (binary age 0, diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 3d4babb6a1..0726d51ec5 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,13 @@ +2000-06-26 Havoc Pennington + + * gtk/gtkstock.c: Code to add sample default stock items. + + * gtk/gtkiconfactory.c: Code to add the sample default stock icons + to the default icon factory + + * gtk/stock-icons/Makefile.am: Add stock-icons directory with a + Makefile.am and some sample stock icons + Fri Jun 23 17:54:23 2000 Tim Janik * configure.in: make the current version number 1.3.1 (binary age 0, diff --git a/configure.in b/configure.in index a66940bb53..827ed307d3 100644 --- a/configure.in +++ b/configure.in @@ -1002,6 +1002,7 @@ gdk/nanox/Makefile gdk/linux-fb/Makefile gtk/Makefile gtk/gtkcompat.h +gtk/stock-icons/Makefile modules/Makefile modules/linux-fb/Makefile ], [chmod +x gtk-config]) diff --git a/gdk-pixbuf/ChangeLog b/gdk-pixbuf/ChangeLog index 72807ac5c3..298fad0ef6 100644 --- a/gdk-pixbuf/ChangeLog +++ b/gdk-pixbuf/ChangeLog @@ -1,3 +1,9 @@ +2000-06-26 Havoc Pennington + + * gdk-pixbuf-private.h (GdkPixbufInlineFormat): include an + enum here for the known formats of inlined pixbufs. + Also, #define our file magic here. + 2000-06-23 Havoc Pennington * image-to-inline.c: Small program that creates C variable diff --git a/gdk-pixbuf/gdk-pixbuf-data.c b/gdk-pixbuf/gdk-pixbuf-data.c index b2f6611f86..c674438dfe 100644 --- a/gdk-pixbuf/gdk-pixbuf-data.c +++ b/gdk-pixbuf/gdk-pixbuf-data.c @@ -98,15 +98,47 @@ read_bool (const guchar **p) return val; } -/* sync with image-to-inline.c */ -#define MAGIC_NUMBER 1804289383 - static void free_buffer (guchar *pixels, gpointer data) { free (pixels); } +static GdkPixbuf* +read_raw_inline (const guchar *data, gboolean copy_pixels) +{ + GdkPixbuf *pixbuf; + const guchar *p = data; + + pixbuf = GDK_PIXBUF (g_type_create_instance (GDK_TYPE_PIXBUF)); + + pixbuf->rowstride = read_int (&p); + pixbuf->width = read_int (&p); + pixbuf->height = read_int (&p); + pixbuf->has_alpha = read_bool (&p); + pixbuf->colorspace = read_int (&p); + pixbuf->n_channels = read_int (&p); + pixbuf->bits_per_sample = read_int (&p); + + if (copy_pixels) { + pixbuf->pixels = malloc (pixbuf->height * pixbuf->rowstride); + + if (pixbuf->pixels == NULL) { + g_object_unref (G_OBJECT (pixbuf)); + return NULL; + } + + pixbuf->destroy_fn = free_buffer; + pixbuf->destroy_fn_data = NULL; + + memcpy (pixbuf->pixels, p, pixbuf->height * pixbuf->rowstride); + } else { + pixbuf->pixels = (guchar *) p; + } + + return pixbuf; +} + /** * gdk_pixbuf_new_from_inline: * @data: An inlined GdkPixbuf @@ -132,40 +164,26 @@ gdk_pixbuf_new_from_inline (const guchar *inline_pixbuf, { const guchar *p; GdkPixbuf *pixbuf; - + GdkPixbufInlineFormat format; + p = inline_pixbuf; - if (read_int (&p) != MAGIC_NUMBER) { + if (read_int (&p) != GDK_PIXBUF_INLINE_MAGIC_NUMBER) { g_warning ("Bad inline data; wrong magic number"); return NULL; } - pixbuf = GDK_PIXBUF (g_type_create_instance (GDK_TYPE_PIXBUF)); + format = read_int (&p); - pixbuf->rowstride = read_int (&p); - pixbuf->width = read_int (&p); - pixbuf->height = read_int (&p); - pixbuf->has_alpha = read_bool (&p); - pixbuf->colorspace = read_int (&p); - pixbuf->n_channels = read_int (&p); - pixbuf->bits_per_sample = read_int (&p); - - if (copy_pixels) { - pixbuf->pixels = malloc (pixbuf->height * pixbuf->rowstride); + switch (format) + { + case GDK_PIXBUF_INLINE_RAW: + pixbuf = read_raw_inline (p, copy_pixels); + break; - if (pixbuf->pixels == NULL) { - g_object_unref (G_OBJECT (pixbuf)); - return NULL; - } - - pixbuf->destroy_fn = free_buffer; - pixbuf->destroy_fn_data = NULL; - - memcpy (pixbuf->pixels, p, pixbuf->height * pixbuf->rowstride); - } else { - pixbuf->pixels = (guchar *) p; + default: + return NULL; } - return pixbuf; } diff --git a/gdk-pixbuf/gdk-pixbuf-private.h b/gdk-pixbuf/gdk-pixbuf-private.h index 2aecb66234..d469916675 100644 --- a/gdk-pixbuf/gdk-pixbuf-private.h +++ b/gdk-pixbuf/gdk-pixbuf-private.h @@ -117,4 +117,14 @@ struct _GdkPixbufAnimationClass { +#define GDK_PIXBUF_INLINE_MAGIC_NUMBER 1804289383 + +typedef enum +{ + GDK_PIXBUF_INLINE_RAW = 0, + GDK_PIXBUF_INLINE_RLE = 1 +} GdkPixbufInlineFormat; + + + #endif diff --git a/gdk-pixbuf/make-inline-pixbuf.c b/gdk-pixbuf/make-inline-pixbuf.c index 2dcc2317c5..1570ea30ed 100644 --- a/gdk-pixbuf/make-inline-pixbuf.c +++ b/gdk-pixbuf/make-inline-pixbuf.c @@ -21,14 +21,11 @@ */ #include -#include "gdk-pixbuf.h" +#include "gdk-pixbuf-private.h" #include #include #include -/* sync with gdk-pixbuf-data.c */ -#define MAGIC_NUMBER 1804289383 - void output_int (FILE *outfile, int number, const char *comment) { @@ -81,7 +78,8 @@ output_pixbuf (FILE *outfile, gboolean ext_symbols, /* Sync the order of writing with the order of reading in * gdk-pixbuf-data.c */ - output_int (outfile, MAGIC_NUMBER, "File magic"); + output_int (outfile, GDK_PIXBUF_INLINE_MAGIC_NUMBER, "File magic"); + output_int (outfile, GDK_PIXBUF_INLINE_RAW, "Format of following stuff"); output_int (outfile, gdk_pixbuf_get_rowstride (pixbuf), "Rowstride"); output_int (outfile, gdk_pixbuf_get_width (pixbuf), "Width"); output_int (outfile, gdk_pixbuf_get_height (pixbuf), "Height"); diff --git a/gtk/gtkiconfactory.c b/gtk/gtkiconfactory.c index 932d5a64c9..611c63a6a8 100644 --- a/gtk/gtkiconfactory.c +++ b/gtk/gtkiconfactory.c @@ -25,12 +25,15 @@ */ #include "gtkiconfactory.h" +#include "stock-icons/gtkstockpixbufs.h" +#include "gtkstock.h" static gpointer parent_class = NULL; static void gtk_icon_factory_init (GtkIconFactory *icon_factory); static void gtk_icon_factory_class_init (GtkIconFactoryClass *klass); static void gtk_icon_factory_finalize (GObject *object); +static void get_default_icons (GtkIconFactory *icon_factory); GType gtk_icon_factory_get_type (void) @@ -175,16 +178,109 @@ gtk_default_icon_lookup (const gchar *stock_id) if (gtk_default_icons == NULL) { - /* FIXME create our default icons, should be kept - * in sync with the default stock items. - */ gtk_default_icons = gtk_icon_factory_new (); - + + get_default_icons (gtk_default_icons); } return gtk_icon_factory_lookup (gtk_default_icons, stock_id); } +static GtkIconSet * +sized_icon_set_from_inline (const guchar *inline_data, + GtkIconSizeType size) +{ + GtkIconSet *set; + + GtkIconSource source = { NULL, NULL, 0, 0, size, + TRUE, TRUE, FALSE }; + + set = gtk_icon_set_new (); + + source.pixbuf = gdk_pixbuf_new_from_inline (inline_data, FALSE); + + g_assert (source.pixbuf); + + gtk_icon_set_add_source (set, &source); + + return set; +} + +static GtkIconSet * +unsized_icon_set_from_inline (const guchar *inline_data) +{ + GtkIconSet *set; + + /* This icon can be used for any direction/state/size */ + GtkIconSource source = { NULL, NULL, 0, 0, 0, + TRUE, TRUE, TRUE }; + + set = gtk_icon_set_new (); + + source.pixbuf = gdk_pixbuf_new_from_inline (inline_data, FALSE); + + g_assert (source.pixbuf); + + gtk_icon_set_add_source (set, &source); + + return set; +} + +static void +add_sized (GtkIconFactory *factory, + const guchar *inline_data, + GtkIconSizeType size, + const gchar *stock_id) +{ + GtkIconSet *set; + + set = sized_icon_set_from_inline (inline_data, size); + + gtk_icon_factory_add (factory, stock_id, set); + + g_object_unref (G_OBJECT (set)); +} + +static void +add_unsized (GtkIconFactory *factory, + const guchar *inline_data, + const gchar *stock_id) +{ + GtkIconSet *set; + + set = unsized_icon_set_from_inline (inline_data); + + gtk_icon_factory_add (factory, stock_id, set); + + g_object_unref (G_OBJECT (set)); +} + +static void +get_default_icons (GtkIconFactory *factory) +{ + /* KEEP IN SYNC with gtkstock.c */ + + add_sized (factory, dialog_default, GTK_ICON_DIALOG, GTK_STOCK_DIALOG_GENERIC); + add_sized (factory, dialog_error, GTK_ICON_DIALOG, GTK_STOCK_DIALOG_ERROR); + add_sized (factory, dialog_info, GTK_ICON_DIALOG, GTK_STOCK_DIALOG_INFO); + add_sized (factory, dialog_question, GTK_ICON_DIALOG, GTK_STOCK_DIALOG_QUESTION); + add_sized (factory, dialog_warning, GTK_ICON_DIALOG, GTK_STOCK_DIALOG_WARNING); + + add_sized (factory, stock_button_apply, GTK_ICON_BUTTON, GTK_STOCK_BUTTON_APPLY); + add_sized (factory, stock_button_ok, GTK_ICON_BUTTON, GTK_STOCK_BUTTON_OK); + add_sized (factory, stock_button_cancel, GTK_ICON_BUTTON, GTK_STOCK_BUTTON_CANCEL); + add_sized (factory, stock_button_close, GTK_ICON_BUTTON, GTK_STOCK_BUTTON_CLOSE); + add_sized (factory, stock_button_yes, GTK_ICON_BUTTON, GTK_STOCK_BUTTON_YES); + add_sized (factory, stock_button_no, GTK_ICON_BUTTON, GTK_STOCK_BUTTON_NO); + + add_unsized (factory, stock_close, GTK_STOCK_CLOSE); + add_unsized (factory, stock_exit, GTK_STOCK_QUIT); + add_unsized (factory, stock_help, GTK_STOCK_HELP); + add_unsized (factory, stock_new, GTK_STOCK_NEW); + add_unsized (factory, stock_open, GTK_STOCK_OPEN); + add_unsized (factory, stock_save, GTK_STOCK_SAVE); +} + /* Sizes */ @@ -197,7 +293,8 @@ static gint widths[] = 16, /* menu */ 24, /* button */ 18, /* small toolbar */ - 24 /* large toolbar */ + 24, /* large toolbar */ + 48 /* dialog */ }; static gint heights[] = @@ -205,7 +302,8 @@ static gint heights[] = 16, /* menu */ 24, /* button */ 18, /* small toolbar */ - 24 /* large toolbar */ + 24, /* large toolbar */ + 48 /* dialog */ }; void diff --git a/gtk/gtkimage.c b/gtk/gtkimage.c index 185d62513c..4d56ed7afe 100644 --- a/gtk/gtkimage.c +++ b/gtk/gtkimage.c @@ -33,6 +33,10 @@ static void gtk_image_init (GtkImage *image); static gint gtk_image_expose (GtkWidget *widget, GdkEventExpose *event); +static void gtk_image_clear (GtkImage *image); +static void gtk_image_update_size (GtkImage *image, + gint image_width, + gint image_height); GtkType gtk_image_get_type (void) @@ -74,8 +78,258 @@ gtk_image_init (GtkImage *image) { GTK_WIDGET_SET_FLAGS (image, GTK_NO_WINDOW); - image->image = NULL; - image->mask = NULL; + image->representation_type = GTK_IMAGE_EMPTY; +} + +GtkWidget* +gtk_image_new_from_pixmap (GdkPixmap *pixmap, + GdkBitmap *mask) +{ + GtkImage *image; + + image = gtk_type_new (GTK_TYPE_IMAGE); + + gtk_image_set_from_pixmap (image, pixmap, mask); + + return GTK_WIDGET (image); +} + +GtkWidget* +gtk_image_new_from_image (GdkImage *gdk_image, + GdkBitmap *mask) +{ + GtkImage *image; + + image = gtk_type_new (GTK_TYPE_IMAGE); + + gtk_image_set_from_image (image, gdk_image, mask); + + return GTK_WIDGET (image); +} + +GtkWidget* +gtk_image_new_from_file (const gchar *filename) +{ + GtkImage *image; + + image = gtk_type_new (GTK_TYPE_IMAGE); + + gtk_image_set_from_file (image, filename); + + return GTK_WIDGET (image); +} + +GtkWidget* +gtk_image_new_from_pixbuf (GdkPixbuf *pixbuf) +{ + GtkImage *image; + + image = gtk_type_new (GTK_TYPE_IMAGE); + + gtk_image_set_from_pixbuf (image, pixbuf); + + return GTK_WIDGET (image); +} + +GtkWidget* +gtk_image_new_from_stock (const gchar *stock_id, + GtkIconSizeType size) +{ + GtkImage *image; + + image = gtk_type_new (GTK_TYPE_IMAGE); + + gtk_image_set_from_stock (image, stock_id, size); + + return GTK_WIDGET (image); +} + +void +gtk_image_set_from_pixmap (GtkImage *image, + GdkPixmap *pixmap, + GdkBitmap *mask) +{ + g_return_if_fail (GTK_IS_IMAGE (image)); + + if (pixmap) + g_object_ref (G_OBJECT (pixmap)); + + if (mask) + g_object_ref (G_OBJECT (mask)); + + gtk_image_clear (image); + + if (pixmap) + { + int width; + int height; + + image->representation_type = GTK_IMAGE_PIXMAP; + + image->data.pixmap.pixmap = pixmap; + image->data.pixmap.mask = mask; + + gdk_drawable_get_size (GDK_DRAWABLE (pixmap), &width, &height); + + gtk_image_update_size (image, width, height); + } + else + { + /* Clean up the mask if pixmap was NULL */ + if (mask) + g_object_unref (G_OBJECT (mask)); + } +} + +void +gtk_image_set_from_image (GtkImage *image, + GdkImage *gdk_image, + GdkBitmap *mask) +{ + g_return_if_fail (GTK_IS_IMAGE (image)); + + if (gdk_image) + g_object_ref (G_OBJECT (gdk_image)); + + if (mask) + g_object_ref (G_OBJECT (mask)); + + gtk_image_clear (image); + + if (gdk_image) + { + image->representation_type = GTK_IMAGE_IMAGE; + + image->data.image.image = gdk_image; + image->data.image.mask = mask; + + gtk_image_update_size (image, gdk_image->width, gdk_image->height); + } + else + { + /* Clean up the mask if gdk_image was NULL */ + if (mask) + g_object_unref (G_OBJECT (mask)); + } +} + +void +gtk_image_set_from_file (GtkImage *image, + const gchar *filename) +{ + GdkPixbuf *pixbuf; + + g_return_if_fail (GTK_IS_IMAGE (image)); + + gtk_image_clear (image); + + if (filename == NULL) + return; + + pixbuf = gdk_pixbuf_new_from_file (filename); + + if (pixbuf == NULL) + return; + + gtk_image_set_from_pixbuf (image, pixbuf); + + g_object_unref (G_OBJECT (pixbuf)); +} + +void +gtk_image_set_from_pixbuf (GtkImage *image, + GdkPixbuf *pixbuf) +{ + g_return_if_fail (GTK_IS_IMAGE (image)); + + if (pixbuf) + g_object_ref (G_OBJECT (pixbuf)); + + gtk_image_clear (image); + + if (pixbuf != NULL) + { + image->representation_type = GTK_IMAGE_PIXBUF; + + image->data.pixbuf.pixbuf = pixbuf; + + gtk_image_update_size (image, + gdk_pixbuf_get_width (pixbuf), + gdk_pixbuf_get_height (pixbuf)); + } +} + +void +gtk_image_set_from_stock (GtkImage *image, + const gchar *stock_id, + GtkIconSizeType size) +{ + g_return_if_fail (GTK_IS_IMAGE (image)); + + gtk_image_clear (image); + + if (stock_id) + { + image->representation_type = GTK_IMAGE_STOCK; + + image->data.stock.stock_id = g_strdup (stock_id); + image->data.stock.size = size; + } +} + +void +gtk_image_get_pixmap (GtkImage *image, + GdkPixmap **pixmap, + GdkBitmap **mask) +{ + g_return_if_fail (GTK_IS_IMAGE (image)); + g_return_if_fail (image->representation_type == GTK_IMAGE_PIXMAP); + + if (pixmap) + *pixmap = image->data.pixmap.pixmap; + + if (mask) + *mask = image->data.pixmap.mask; +} + +void +gtk_image_get_image (GtkImage *image, + GdkImage **gdk_image, + GdkBitmap **mask) +{ + g_return_if_fail (GTK_IS_IMAGE (image)); + g_return_if_fail (image->representation_type == GTK_IMAGE_IMAGE); + + if (gdk_image) + *gdk_image = image->data.image.image; + + if (mask) + *mask = image->data.image.mask; +} + +GdkPixbuf* +gtk_image_get_pixbuf (GtkImage *image) +{ + g_return_val_if_fail (GTK_IS_IMAGE (image), NULL); + g_return_val_if_fail (image->representation_type == GTK_IMAGE_PIXBUF, NULL); + + return image->data.pixbuf.pixbuf; +} + +void +gtk_image_get_stock (GtkImage *image, + gchar **stock_id, + GtkIconSizeType *size) +{ + g_return_if_fail (GTK_IS_IMAGE (image)); + g_return_if_fail (image->representation_type == GTK_IMAGE_STOCK); + + + if (stock_id) + *stock_id = g_strdup (image->data.stock.stock_id); + + if (size) + *size = image->data.stock.size; } GtkWidget* @@ -98,25 +352,9 @@ gtk_image_set (GtkImage *image, GdkImage *val, GdkBitmap *mask) { - g_return_if_fail (image != NULL); g_return_if_fail (GTK_IS_IMAGE (image)); - image->image = val; - image->mask = mask; - - if (image->image) - { - GTK_WIDGET (image)->requisition.width = image->image->width + GTK_MISC (image)->xpad * 2; - GTK_WIDGET (image)->requisition.height = image->image->height + GTK_MISC (image)->ypad * 2; - } - else - { - GTK_WIDGET (image)->requisition.width = 0; - GTK_WIDGET (image)->requisition.height = 0; - } - - if (GTK_WIDGET_VISIBLE (image)) - gtk_widget_queue_resize (GTK_WIDGET (image)); + gtk_image_set_from_image (image, val, mask); } void @@ -124,13 +362,9 @@ gtk_image_get (GtkImage *image, GdkImage **val, GdkBitmap **mask) { - g_return_if_fail (image != NULL); g_return_if_fail (GTK_IS_IMAGE (image)); - if (val) - *val = image->image; - if (mask) - *mask = image->mask; + gtk_image_get_image (image, val, mask); } @@ -141,13 +375,16 @@ gtk_image_expose (GtkWidget *widget, g_return_val_if_fail (widget != NULL, FALSE); g_return_val_if_fail (GTK_IS_IMAGE (widget), FALSE); g_return_val_if_fail (event != NULL, FALSE); - - if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_MAPPED (widget)) + + if (GTK_WIDGET_VISIBLE (widget) && GTK_WIDGET_MAPPED (widget) && + GTK_IMAGE (widget)->representation_type != GTK_IMAGE_EMPTY) { GtkImage *image; GtkMisc *misc; GdkRectangle area, image_bound, intersection; gint x, y; + GdkBitmap *mask = NULL; + GdkPixbuf *stock_pixbuf = NULL; image = GTK_IMAGE (widget); misc = GTK_MISC (widget); @@ -161,35 +398,190 @@ gtk_image_expose (GtkWidget *widget, - (widget->requisition.height - misc->ypad * 2)) * misc->yalign) + 0.5; - if (image->mask) + image_bound.x = x; + image_bound.y = y; + + switch (image->representation_type) + { + case GTK_IMAGE_PIXMAP: + mask = image->data.pixmap.mask; + gdk_drawable_get_size (image->data.pixmap.pixmap, + &image_bound.width, + &image_bound.height); + break; + + case GTK_IMAGE_IMAGE: + mask = image->data.image.mask; + image_bound.width = image->data.image.image->width; + image_bound.height = image->data.image.image->height; + break; + + case GTK_IMAGE_PIXBUF: + image_bound.width = gdk_pixbuf_get_width (image->data.pixbuf.pixbuf); + image_bound.height = gdk_pixbuf_get_height (image->data.pixbuf.pixbuf); + break; + + case GTK_IMAGE_STOCK: + stock_pixbuf = gtk_widget_get_icon (widget, + image->data.stock.stock_id, + image->data.stock.size, + NULL); + + if (stock_pixbuf) + { + image_bound.width = gdk_pixbuf_get_width (stock_pixbuf); + image_bound.height = gdk_pixbuf_get_height (stock_pixbuf); + } + break; + + default: + break; + } + + if (mask) { - gdk_gc_set_clip_mask (widget->style->black_gc, image->mask); + gdk_gc_set_clip_mask (widget->style->black_gc, mask); gdk_gc_set_clip_origin (widget->style->black_gc, x, y); } - image_bound.x = x; - image_bound.y = y; - image_bound.width = image->image->width; - image_bound.height = image->image->height; - area = event->area; - if(gdk_rectangle_intersect(&image_bound, &area, &intersection)) + if (gdk_rectangle_intersect (&image_bound, &area, &intersection)) { - gdk_draw_image (widget->window, - widget->style->black_gc, - image->image, - image_bound.x - x, image_bound.y - y, - image_bound.x, image_bound.y, - image_bound.width, image_bound.height); + + switch (image->representation_type) + { + case GTK_IMAGE_PIXMAP: + gdk_draw_drawable (widget->window, + widget->style->black_gc, + image->data.pixmap.pixmap, + image_bound.x - x, image_bound.y - y, + image_bound.x, image_bound.y, + image_bound.width, image_bound.height); + break; + + case GTK_IMAGE_IMAGE: + gdk_draw_image (widget->window, + widget->style->black_gc, + image->data.image.image, + image_bound.x - x, image_bound.y - y, + image_bound.x, image_bound.y, + image_bound.width, image_bound.height); + break; + + case GTK_IMAGE_PIXBUF: + gdk_pixbuf_render_to_drawable_alpha (image->data.pixbuf.pixbuf, + widget->window, + image_bound.x - x, image_bound.y - y, + image_bound.x, image_bound.y, + image_bound.width, image_bound.height, + GDK_PIXBUF_ALPHA_FULL, + 128, + GDK_RGB_DITHER_NORMAL, + 0, 0); + break; + + case GTK_IMAGE_STOCK: + if (stock_pixbuf) + { + gdk_pixbuf_render_to_drawable_alpha (image->data.pixbuf.pixbuf, + widget->window, + image_bound.x - x, image_bound.y - y, + image_bound.x, image_bound.y, + image_bound.width, image_bound.height, + GDK_PIXBUF_ALPHA_FULL, + 128, + GDK_RGB_DITHER_NORMAL, + 0, 0); + + g_object_unref (G_OBJECT (stock_pixbuf)); + } + break; + + default: + break; + } + } /* if rectangle intersects */ + if (mask) + { + gdk_gc_set_clip_mask (widget->style->black_gc, NULL); + gdk_gc_set_clip_origin (widget->style->black_gc, 0, 0); } - - if (image->mask) - { - gdk_gc_set_clip_mask (widget->style->black_gc, NULL); - gdk_gc_set_clip_origin (widget->style->black_gc, 0, 0); - } - } + } /* if widget is drawable */ return FALSE; } + +static void +gtk_image_clear (GtkImage *image) +{ + switch (image->representation_type) + { + case GTK_IMAGE_PIXMAP: + + if (image->data.pixmap.pixmap) + g_object_unref (G_OBJECT (image->data.pixmap.pixmap)); + + if (image->data.pixmap.mask) + g_object_unref (G_OBJECT (image->data.pixmap.mask)); + + image->data.pixmap.pixmap = NULL; + image->data.pixmap.mask = NULL; + + break; + + case GTK_IMAGE_IMAGE: + + if (image->data.image.image) + g_object_unref (G_OBJECT (image->data.image.image)); + + if (image->data.image.mask) + g_object_unref (G_OBJECT (image->data.image.mask)); + + image->data.image.image = NULL; + image->data.image.mask = NULL; + + break; + + case GTK_IMAGE_PIXBUF: + + if (image->data.pixbuf.pixbuf) + g_object_unref (G_OBJECT (image->data.pixbuf.pixbuf)); + + image->data.pixbuf.pixbuf = NULL; + + break; + + case GTK_IMAGE_STOCK: + + if (image->data.stock.stock_id) + g_free (image->data.stock.stock_id); + + image->data.stock.stock_id = NULL; + + break; + + case GTK_IMAGE_EMPTY: + default: + break; + + } + + image->representation_type = GTK_IMAGE_EMPTY; + + GTK_WIDGET (image)->requisition.width = 0; + GTK_WIDGET (image)->requisition.height = 0; + + if (GTK_WIDGET_VISIBLE (image)) + gtk_widget_queue_resize (GTK_WIDGET (image)); +} + +static void +gtk_image_update_size (GtkImage *image, + gint image_width, + gint image_height) +{ + GTK_WIDGET (image)->requisition.width = image_width + GTK_MISC (image)->xpad * 2; + GTK_WIDGET (image)->requisition.height = image_height + GTK_MISC (image)->ypad * 2; +} + diff --git a/gtk/gtkimage.h b/gtk/gtkimage.h index 7bda782370..bfd21f5a31 100644 --- a/gtk/gtkimage.h +++ b/gtk/gtkimage.h @@ -36,7 +36,6 @@ extern "C" { #endif /* __cplusplus */ - #define GTK_TYPE_IMAGE (gtk_image_get_type ()) #define GTK_IMAGE(obj) (GTK_CHECK_CAST ((obj), GTK_TYPE_IMAGE, GtkImage)) #define GTK_IMAGE_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), GTK_TYPE_IMAGE, GtkImageClass)) @@ -48,12 +47,56 @@ extern "C" { typedef struct _GtkImage GtkImage; typedef struct _GtkImageClass GtkImageClass; +typedef struct _GtkImagePixmapData GtkImagePixmapData; +typedef struct _GtkImageImageData GtkImageImageData; +typedef struct _GtkImagePixbufData GtkImagePixbufData; +typedef struct _GtkImageStockData GtkImageStockData; + +struct _GtkImagePixmapData +{ + GdkPixmap *pixmap; + GdkBitmap *mask; +}; + +struct _GtkImageImageData +{ + GdkImage *image; + GdkBitmap *mask; +}; + +struct _GtkImagePixbufData +{ + GdkPixbuf *pixbuf; +}; + +struct _GtkImageStockData +{ + gchar *stock_id; + GtkIconSizeType size; +}; + +typedef enum +{ + GTK_IMAGE_EMPTY, + GTK_IMAGE_PIXMAP, + GTK_IMAGE_IMAGE, + GTK_IMAGE_PIXBUF, + GTK_IMAGE_STOCK +} GtkImageType; + struct _GtkImage { GtkMisc misc; - GdkImage *image; - GdkBitmap *mask; + GtkImageType representation_type; + + union + { + GtkImagePixmapData pixmap; + GtkImageImageData image; + GtkImagePixbufData pixbuf; + GtkImageStockData stock; + } data; }; struct _GtkImageClass @@ -63,6 +106,43 @@ struct _GtkImageClass GtkType gtk_image_get_type (void); + +GtkWidget* gtk_image_new_from_pixmap (GdkPixmap *pixmap, + GdkBitmap *mask); +GtkWidget* gtk_image_new_from_image (GdkImage *image, + GdkBitmap *mask); +GtkWidget* gtk_image_new_from_file (const gchar *filename); +GtkWidget* gtk_image_new_from_pixbuf (GdkPixbuf *pixbuf); +GtkWidget* gtk_image_new_from_stock (const gchar *stock_id, + GtkIconSizeType size); + +void gtk_image_set_from_pixmap (GtkImage *image, + GdkPixmap *pixmap, + GdkBitmap *mask); +void gtk_image_set_from_image (GtkImage *image, + GdkImage *gdk_image, + GdkBitmap *mask); +void gtk_image_set_from_file (GtkImage *image, + const gchar *filename); +void gtk_image_set_from_pixbuf (GtkImage *image, + GdkPixbuf *pixbuf); +void gtk_image_set_from_stock (GtkImage *image, + const gchar *stock_id, + GtkIconSizeType size); + +void gtk_image_get_pixmap (GtkImage *image, + GdkPixmap **pixmap, + GdkBitmap **mask); +void gtk_image_get_image (GtkImage *image, + GdkImage **gdk_image, + GdkBitmap **mask); +GdkPixbuf* gtk_image_get_pixbuf (GtkImage *image); +void gtk_image_get_stock (GtkImage *image, + gchar **stock_id, + GtkIconSizeType *size); + + +/* These three are deprecated */ GtkWidget* gtk_image_new (GdkImage *val, GdkBitmap *mask); void gtk_image_set (GtkImage *image, diff --git a/gtk/gtkstock.c b/gtk/gtkstock.c index d0056a43d2..f26c89774d 100644 --- a/gtk/gtkstock.c +++ b/gtk/gtkstock.c @@ -21,7 +21,7 @@ * Modified by the GTK+ Team and others 1997-1999. See the AUTHORS * file for a list of people on the GTK+ Team. See the ChangeLog * files for a list of changes. These files are distributed with - * GTK+ at ftp://ftp.gtk.org/pub/gtk/. + * GTK+ at ftp://ftp.gtk.org/pub/gtk/. */ #include "gtkstock.h" @@ -37,22 +37,22 @@ real_add (const GtkStockItem *items, gboolean copy) { int i; - + init_stock_hash (); if (n_items == 0) return; - + i = 0; while (i < n_items) { const GtkStockItem * item = &items[i]; if (copy) item = gtk_stock_item_copy (item); - + g_hash_table_insert (stock_hash, (gchar*)item->stock_id, (GtkStockItem*)item); - + ++i; } } @@ -71,7 +71,7 @@ gtk_stock_add_static (const GtkStockItem *items, guint n_items) { g_return_if_fail (items != NULL); - + real_add (items, n_items, FALSE); } @@ -83,9 +83,9 @@ gtk_stock_lookup (const gchar *stock_id, g_return_val_if_fail (stock_id != NULL, FALSE); g_return_val_if_fail (item != NULL, FALSE); - + init_stock_hash (); - + found = g_hash_table_lookup (stock_hash, stock_id); if (found) @@ -100,11 +100,11 @@ gtk_stock_item_copy (const GtkStockItem *item) GtkStockItem *copy; g_return_val_if_fail (item != NULL, NULL); - + copy = g_new (GtkStockItem, 1); *copy = *item; - + copy->stock_id = g_strdup (item->stock_id); copy->label = g_strdup (item->label); copy->translation_domain = g_strdup (item->translation_domain); @@ -124,22 +124,40 @@ gtk_stock_item_free (GtkStockItem *item) g_free (item); } +#define GTK_DOMAIN "gtk+" + static GtkStockItem builtin_items [] = { - /* FIXME these are just examples */ - /* and the OK accelerator is wrong, Return means default button, - OK should have its own accelerator */ - { GTK_STOCK_OK, N_("OK"), 0, GDK_Return, "gtk+" }, - { GTK_STOCK_EXIT, N_("Exit"), GDK_CONTROL_MASK, GDK_x, "gtk+" } -}; + /* KEEP IN SYNC with gtkiconfactory.c stock icons */ + { GTK_STOCK_DIALOG_GENERIC, N_("Message"), 0, 0, GTK_DOMAIN }, + { GTK_STOCK_DIALOG_INFO, N_("Information"), 0, 0, GTK_DOMAIN }, + { GTK_STOCK_DIALOG_WARNING, N_("Warning"), 0, 0, GTK_DOMAIN }, + { GTK_STOCK_DIALOG_ERROR, N_("Error"), 0, 0, GTK_DOMAIN }, + { GTK_STOCK_DIALOG_QUESTION, N_("Question"), 0, 0, GTK_DOMAIN }, + + { GTK_STOCK_BUTTON_APPLY, N_("Apply"), GDK_CONTROL_MASK, 'a', GTK_DOMAIN }, + { GTK_STOCK_BUTTON_OK, N_("OK"), GDK_CONTROL_MASK, 'o', GTK_DOMAIN }, + { GTK_STOCK_BUTTON_CANCEL, N_("Cancel"), GDK_CONTROL_MASK, 'c', GTK_DOMAIN }, + { GTK_STOCK_BUTTON_CLOSE, N_("Close"), GDK_CONTROL_MASK, 'c', GTK_DOMAIN }, + { GTK_STOCK_BUTTON_YES, N_("Yes"), GDK_CONTROL_MASK, 'y', GTK_DOMAIN }, + { GTK_STOCK_BUTTON_NO, N_("No"), GDK_CONTROL_MASK, 'n', GTK_DOMAIN }, + + { GTK_STOCK_CLOSE, N_("Close"), GDK_CONTROL_MASK, 'w', GTK_DOMAIN }, + { GTK_STOCK_QUIT, N_("Quit"), GDK_CONTROL_MASK, 'q', GTK_DOMAIN }, + { GTK_STOCK_HELP, N_("Help"), GDK_CONTROL_MASK, 'h', GTK_DOMAIN }, + { GTK_STOCK_NEW, N_("New"), GDK_CONTROL_MASK, 'n', GTK_DOMAIN }, + { GTK_STOCK_OPEN, N_("Open"), GDK_CONTROL_MASK, 'o', GTK_DOMAIN }, + { GTK_STOCK_SAVE, N_("Save"), GDK_CONTROL_MASK, 's', GTK_DOMAIN } +}; + static void init_stock_hash (void) { if (stock_hash == NULL) { stock_hash = g_hash_table_new (g_str_hash, g_str_equal); - + gtk_stock_add_static (builtin_items, G_N_ELEMENTS (builtin_items)); } } diff --git a/gtk/gtkstock.h b/gtk/gtkstock.h index e200916800..1fac0efe05 100644 --- a/gtk/gtkstock.h +++ b/gtk/gtkstock.h @@ -59,9 +59,25 @@ void gtk_stock_item_free (GtkStockItem *item); /* Stock IDs */ -#define GTK_STOCK_OK "OK" -#define GTK_STOCK_CANCEL "Cancel" -#define GTK_STOCK_EXIT "Exit" +#define GTK_STOCK_DIALOG_GENERIC "Gtk_Message_Dialog" +#define GTK_STOCK_DIALOG_INFO "Gtk_Info_Dialog" +#define GTK_STOCK_DIALOG_WARNING "Gtk_Warning_Dialog" +#define GTK_STOCK_DIALOG_ERROR "Gtk_Error_Dialog" +#define GTK_STOCK_DIALOG_QUESTION "Gtk_Question_Dialog" + +#define GTK_STOCK_BUTTON_APPLY "Gtk_Apply_Button" +#define GTK_STOCK_BUTTON_OK "Gtk_OK_Button" +#define GTK_STOCK_BUTTON_CANCEL "Gtk_Cancel_Button" +#define GTK_STOCK_BUTTON_CLOSE "Gtk_Close_Button" +#define GTK_STOCK_BUTTON_YES "Gtk_Yes_Button" +#define GTK_STOCK_BUTTON_NO "Gtk_No_Button" + +#define GTK_STOCK_CLOSE "Gtk_Close" +#define GTK_STOCK_QUIT "Gtk_Quit" +#define GTK_STOCK_HELP "Gtk_Help" +#define GTK_STOCK_NEW "Gtk_New" +#define GTK_STOCK_OPEN "Gtk_Open" +#define GTK_STOCK_SAVE "Gtk_Save" #ifdef __cplusplus } diff --git a/gtk/gtkstyle.h b/gtk/gtkstyle.h index a936c80df6..26e478e117 100644 --- a/gtk/gtkstyle.h +++ b/gtk/gtkstyle.h @@ -59,7 +59,8 @@ typedef enum GTK_ICON_MENU, GTK_ICON_BUTTON, GTK_ICON_SMALL_TOOLBAR, - GTK_ICON_LARGE_TOOLBAR + GTK_ICON_LARGE_TOOLBAR, + GTK_ICON_DIALOG } GtkIconSizeType; /* We make this forward declaration here, since we pass diff --git a/gtk/stock-icons/Makefile.am b/gtk/stock-icons/Makefile.am new file mode 100644 index 0000000000..b5a5e19b1f --- /dev/null +++ b/gtk/stock-icons/Makefile.am @@ -0,0 +1,24 @@ +BUILT_SOURCES=gtkstockpixbufs.h + +IMAGES=dialog_default.png dialog_error.png dialog_info.png dialog_question.png dialog_warning.png stock_button_apply.png stock_button_cancel.png stock_button_close.png stock_button_no.png stock_button_ok.png stock_button_yes.png stock_close.png stock_exit.png stock_help.png stock_new.png stock_open.png stock_save.png + +VARIABLES= dialog_default dialog_default.png \ + dialog_error dialog_error.png \ + dialog_info dialog_info.png \ + dialog_question dialog_question.png \ + dialog_warning dialog_warning.png \ + stock_button_apply stock_button_apply.png \ + stock_button_cancel stock_button_cancel.png \ + stock_button_close stock_button_close.png \ + stock_button_no stock_button_no.png \ + stock_button_ok stock_button_ok.png \ + stock_button_yes stock_button_yes.png \ + stock_close stock_close.png \ + stock_exit stock_exit.png \ + stock_help stock_help.png \ + stock_new stock_new.png \ + stock_open stock_open.png \ + stock_save stock_save.png + +gtkstockpixbufs.h: $(top_builddir)/gdk-pixbuf/make-inline-pixbuf $(IMAGES) + GDK_PIXBUF_MODULEDIR=$(top_builddir)/gdk-pixbuf/.libs $(top_builddir)/gdk-pixbuf/make-inline-pixbuf gtkstockpixbufs.h $(VARIABLES) diff --git a/gtk/stock-icons/dialog_default.png b/gtk/stock-icons/dialog_default.png new file mode 100644 index 0000000000000000000000000000000000000000..20dda29cfd86f422c7a643ce462557e2d9ff77db GIT binary patch literal 2923 zcmV-x3zYPUP)RsAr6icykH!> zfaCGtjT$>~>>9>d3*yYwB(WzG5B9_hCfLRy!8imgzzYT$FW7(#Cc=PL5Fn|gRxj%1 zb@zMk&L4t|2IFDRRI2!@?qB!RIp24ebI!eR372pQmv9MxL+}ITfb&8*6c@_TX)qC( z4^#qSU?;E|IDEd2mGgCQ8u)=<0b3vW!9N!@1=~g+XgfT7aBw02{9w<{9l)!KqCCKPE~0uNn4SU(@E^dsfDtu{hYfuUAdyI* zC<>-!4{B~~+SqWgzDU>geU@c~&L_~tKozjJ+e(HshvTOwPuiBnjo+Fx2ymFDSt_MG z=eww#2g(1-=giB$H1Tbqx^E1Z+l`S-qB$HC6ckhdA4)0hs;Vj#C;&=bSl*kaND+heN9cx0!`Bb z{+ygbRa29eWr<*CmjakT1~>pLKOXO#1WW*y3>`kKJdsG)<&`4`H`X8QHVmVGxI1(d z*bHn0YJh=2qoOFcMk5j4czpvqKi)y8JH*s!f5&xmZX_o+mzS2WFe@&r969&)+sY?T zo7(@%tEK?Z)6;`xSwuo1gizX2MrzG2kZAA+ySh+|2q#zhsj@ETu0`B8JvH>j1;+m_fxOP$j zKUp{m(Qg2VJ|UuAi0)Q)H<-Lslc2UC!s37X8D5`{lwlAFM@Xd%ygna2JyEQTNjMxe ze)-tHR5vv=7ELIroLt-R8GQwuX&SYFm+zT(r}+=J&f5{}?Anxw$D07(3Gx6BFMN=R zC0>4X|K*=2pH4z|D-s2_?&izG9JDq!Vr5La0-czd42q^=Sr)NajGkzWriO<4#gG1A zb5ld(2;jBL#*F#gf}d^vRaI5J&a$i<9$oz7_(O{xnc~#-;Xn?+%qyp`^~vjT4#@)L zq#7A$MkK-{&0MzsIYRAc$M~e7i&0f`$uAf{XP}G1frT77as=J!r13!g&K1wU&}~^( z8SuxiO{-e;n`O`2BT7qz5W@Zop|cbqrIh>qet*rDx86=a^{Zd!I-PpUmnF_JW2@h=!mk?ar5uGv*5dn z9?1s?bOg*f^Y7Gt{M}hx_l*%aof_#-koM+7B$F0_h=T)%V$>h*CfDz#Y}_P!&B|4c z$BSAM$E&Uo;%%3%*B)v))S6!~K+wC;pCb=vzXNlC`Gbp#X1uy_{jrLXm6azO{O-k- zJapee##RZNhXr!yIZzsFD_fo-cRh3*GEE<_7g$VhOL0n^ ziGT{=N0*HmWo)QR7d-4|%mr{~QByeaBQ+MfFI-SNyCNWKua5zlk!Fm#jB++mL zuP=+{re?4~b82|KK5W}URW$|<9>gD3zVgSle^}EBKEUm4|aI9v{=6V2hk?eQ?E zs0d9}aOy5nDTDmHJc@=EQ&3QVJIll1;v(E0H_=F#vE#>$99lAb$oBU>_%ppv(!D_9 zYz53L95}Fa{X1{opUGrAW+oGpQaV*tB@_ygOeRSr6127)BG}c1+v66CzVqJvgBgdh=*BW?S@_rLc~TMGvlc9fKr4fpx|WMz49I-O*By{M{&FWZaD z?V@n-Ao};u^G&~c#;6T{THm24icd=U31Ignc)Bd4O_?@T*wWUdlt}P)2ZMw|VJy?4 zt22NnD+@D|!AKg+z4rRo+S@x6V02kUxsXy~+cwE$l2}g+)65LqxbF3J8`r(QZ|wN- zUC+L}{OT;9H#d<;AW(4XPFfn9FwHcoqLA(P6NyA!m7^|;@2}f8RnxRjP1D@gm*DAI ziT5_Y@s=5n#SSME38Ik*!LBZ%ktj!650gkF*s=Yi!*|TN^`%>8-S|>_dxuxRGr-`Y z;v(I)ZNi}twq>De8VC0u%q}S}a{`5*?%uus%Fz?vyLaB-uRPXz^aHoYjb)j5yk64j z3?R@{1zmS=^KG}30#4hu2cG8|JbF9ST1{2|@usiOYI=3!`gPF+z~mA z0DzUi)>yP>+KvxDDgzw!zQPhfhoUG=SsqXAgZC_qKm7egvVVRaLI}mmSVm7Y>e6)` zr|#4O9UUa%3C3MMA-ZXObw4Sk3Xn0)UBE84+g-5W);s0{t4c~sx7>c$x5w4(-CO>~ z>l=gdSS$m)aPtkbcR_C#aH1}pX(c{tS=K6mXgI?DeV?IfDyph7qO=6B&nFZ`f#Veu z=&w3d&EaqmjYi4I&Bf=>CR!JzslLGv44_Y1JWi%vO8G=6*iBx3{;0=(_>;r*K4Zh0 zrd3}*$tc>I^L*ZhB)xifAhPAHaAib+$hJbC)$G9NPx<6}=&)|8ZC&=u%JcezNX zQY4efEP8YM;XZ;-j!_5HHP$z{0{ofAq%u8POvA84vdI+eD5|MDv}nM|e} z`0YEJH>Xb!yht1_2!04u=jG>D>$<)TI07u3KYOl{PN#*G@?w83pFeb6AEv76*MV6M zP0PP~-nW(YYt|}KO67dM6#uG_QVJ=h=E1R|xn~>y3l7*qhKpIgDs zquq6%RTe>4U33>)+jf%%C}IRiP@o$dXyH{*J8jV>ND!b(2z*9?jNJeNRPy5wQQf@0XWf2jZvk-rtFUop@-OGW;du`1N&fhd=Ux z%?Kj{ZxE)}iQq(OIH9RZU3E=`f7~eT@4ou>>Se%w?*z&(Eq}|6%Wu7(NB2=_Y=($O z2nfN90Q7=k0v+c_RRK^{6q%55A&>UAe|q-A7XklCi0qqyoqXWYI1Jxk&&w~rlSkI0 z&Ae?02tDMtV1N9XmW=%C=d$vF3qCT6fNXnprU_I%;NX2gdOK{l zRlq;<&{rfYzx`%jvK0;62_8Y)9jMg^S%#}OW+5V?q)rfo%nXC75>1qd-s5TwT)j>x zJgQX=DMB;Rhu4PrwXL*vwkV36Io0X53fQ>(t8?SPX4vh?Y3N+v+#)kbJ6-%>fQihM z03mfs$2oE{dS#%rZPk1>z$UrD#3`ymQyoVZ(ywQu(ZfK4In{Em0@wfOfn$wv{Lb5X zU|`0yYHS6g?zDQY3e8Xw3QyYU%!uhk2@phux++71Q8XNoIETS5C8GD!ghtV&^TYf? z(&@gJ=cB=1D$G@&9p%q2m&U-hJ+BCfZY$7KoxF5Az6~L5Z|8&|h$;sY$AVL`2%`{Z zN)%ZiL#Quy5UoP3l{)TA-PelJF9Wr`FeY>G3(-zq_eKGH;hQZEu2h#BLbQsznPB3! zfA<0jNLoYOBC*T}Wrmdw5-=|mr7_GS3k`>J+s|D8)sTxntQua!IS!@Cqs7+nv#nO^ z{VdDI+@e3sQ$VHUb3+3&IJlBbn$;ZeR)IHh1fSuH0aejDFavK0X`*ym2{OGG0hB{u zXn{HqAr+yWxPxZ)FscXl!a9$DE8xD|c2pi9nj%Se27U^B_V@H$Dfl8|*dG!j2%VV& zsvn0;8y!kC#c;E*5*3<>tC`tyS(cq6M~>VwU+0EUfJW6xw!v3n(uedwHA9qxk1Ii? zL{cV1fzhx}nkcT`L4dLt%^Wfq8PN;~lXHTJ5u+f8nAuW{v6bifEuB4=z|a_j))CtV zKLzSDgbw05#4xJDhsk&`jdv50L?9TW!l+qBQtu#X8v&vp(QN4KKG143F(F_KLo_pM zhq6pV2)8Vy^Fm0x$&J}0d5d_DHo(LouJbYQ{a&1T**PUm6Y|0s=NZvY2q(WCR@>Dr zkH&`gHgWQvIOh?tUbGA8WahbfKJ1Ej*iKdeNjkeKjUfz%VV3kxg?i0V1}H-$_`I5b z($>uTTkqu{LTSP<1g_*hQ1#DPInF+&!n_c&D@8n$IC+{Voc)I(PDVQhI2grh_HQN| zvzlKF`m;nFS*5~)bBtmHs)kmY;Z#vs!vxZH2cK1r2nHVGW>Io&T;w7$NRq@m=l0#m z>|c7rf1Peqx@-EZ!lmJqD9|e-!+xJ&wqwkIhB`)Otd}JV&S8_0J5ePfM5^xYvy8Oe zo;Ac_8M!pd8HBJYA~#hvYcv|S+!5vx2;bWnpSx0ow{`O1V6tNpt$?-@N1~IE>G!c_ zd&hPrEG8+VXk0C-v0@Yr5k;%qp3MhEmf>1$ycySvf;Tt&K}2q<$VX|C^t;_|6p@dq zFpoe?)3o>R{rsQmPH~et-(Z)Q4WXGNlwveg5mltsrZB4j3M?flOSKvcPA5x{Afm{` z8B=8gFsd(belX<2d^|+ts)$@{Hk-Ybm6d%fVEul7@V)E(AD$hK-%2N54(tX$tx||E z0xTO)b4nsrc$q;xaU|0a6q(IIs%|!xM_{wJ#kuQi{N%<)5Rq%ZyGfFKaQN`y?3Gtu z**5_IUzX)Ze{<>P-*1#Lo4zctJB$#aF&P0yX81uyt=lD$N|BvA@j~Kug`tQN%oqjZ z@+jxWYwOnYWe<^yX7)ezdi~0wLx;wD0lXc7U}hUV(bGS;y7_7zEmUI#w^U+5b(X9E zvDsq1C}$OD=hul*tim}0d4$V(&QEV_^6p?b5|IxDPB-fHUoS5&ub(`5GA2o~|8aU^ zx%d9!e`Vu;{_g6{*VlXqe#(w25qIvyQ!-myeVi)N-rfTv$oRLb zH#oh~8;i(QM9vuetlRB=@Wc~Oj82_8wdY25CriB@KYqMiU0oer4>mZP7+^lyZQwP zNxOs31_Tqv7TNSASH}f!_XhlYeKU9?1Fj_eAE#-W{m0F%o2Pr(mp|8T9(}UgY~J6fOVc?L)yeW+-Bg<4H+qa?q*s<) z$qU{cWSr|~VNixbM7DrSBJvAW{Yj(IIP=IOkF37%!V9^X%>`e%XMZMC>)n!b?lD#U zQjGD7X0~!~nmqUi^|ZB=rb#z-(sWJ`VHhG?zO=Q%+qH3F8@>!yIU@ts5P2W7(<1Wo z0|ySgd+gY;o6kM>-1yX~Q+7M>pM=2F9MDeF^uZY8W5DNu$IR>jU=e5o3sm2Al&aWx zU<3?+bwpML-Z6MU>%R0OaV=qqTm&-(6o{zc+-i ztg4@lF+K-E%oFFUs==bWW!YTa%(uB@!YS6_WKsw!n!lBVhJ q{~sLtv7L*^C-L%KyK8rCZ~I?ZZ%$SXA2xsh0000E1R|xn~>y3l7*qhKpIgDs zquq6%RTe>4U33>)+jf%%C}IRiP@o$dXyH{*J8jV>ND!b(2z*9?jNJeNRPy5wQQf@0XWf2jZvk-rtFUop@-OGW;du`1N&fhd=Ux z%?Kj{ZxE)}iQq(OIH9RZU3E=`f7~eT@4ou>>Se%w?*z&(Eq}|6%Wu7(NB2=_Y=($O z2nfN90Q7=k0v+c_RRK^{6q%55A&>UAe|q-A7XklCi0qqyoqXWYI1Jxk&&w~rlSkI0 z&Ae?02tDMtV1N9XmW=%C=d$vF3qCT6fNXnprU_I%;NX2gdOK{l zRlq;<&{rfYzx`%jvK0;62_8Y)9jMg^S%#}OW+5V?q)rfo%nXC75>1qd-s5TwT)j>x zJgQX=DMB;Rhu4PrwXL*vwkV36Io0X53fQ>(t8?SPX4vh?Y3N+v+#)kbJ6-%>fQihM z03mfs$2oE{dS#%rZPk1>z$UrD#3`ymQyoVZ(ywQu(ZfK4In{Em0@wfOfn$wv{Lb5X zU|`0yYHS6g?zDQY3e8Xw3QyYU%!uhk2@phux++71Q8XNoIETS5C8GD!ghtV&^TYf? z(&@gJ=cB=1D$G@&9p%q2m&U-hJ+BCfZY$7KoxF5Az6~L5Z|8&|h$;sY$AVL`2%`{Z zN)%ZiL#Quy5UoP3l{)TA-PelJF9Wr`FeY>G3(-zq_eKGH;hQZEu2h#BLbQsznPB3! zfA<0jNLoYOBC*T}Wrmdw5-=|mr7_GS3k`>J+s|D8)sTxntQua!IS!@Cqs7+nv#nO^ z{VdDI+@e3sQ$VHUb3+3&IJlBbn$;ZeR)IHh1fSuH0aejDFavK0X`*ym2{OGG0hB{u zXn{HqAr+yWxPxZ)FscXl!a9$DE8xD|c2pi9nj%Se27U^B_V@H$Dfl8|*dG!j2%VV& zsvn0;8y!kC#c;E*5*3<>tC`tyS(cq6M~>VwU+0EUfJW6xw!v3n(uedwHA9qxk1Ii? zL{cV1fzhx}nkcT`L4dLt%^Wfq8PN;~lXHTJ5u+f8nAuW{v6bifEuB4=z|a_j))CtV zKLzSDgbw05#4xJDhsk&`jdv50L?9TW!l+qBQtu#X8v&vp(QN4KKG143F(F_KLo_pM zhq6pV2)8Vy^Fm0x$&J}0d5d_DHo(LouJbYQ{a&1T**PUm6Y|0s=NZvY2q(WCR@>Dr zkH&`gHgWQvIOh?tUbGA8WahbfKJ1Ej*iKdeNjkeKjUfz%VV3kxg?i0V1}H-$_`I5b z($>uTTkqu{LTSP<1g_*hQ1#DPInF+&!n_c&D@8n$IC+{Voc)I(PDVQhI2grh_HQN| zvzlKF`m;nFS*5~)bBtmHs)kmY;Z#vs!vxZH2cK1r2nHVGW>Io&T;w7$NRq@m=l0#m z>|c7rf1Peqx@-EZ!lmJqD9|e-!+xJ&wqwkIhB`)Otd}JV&S8_0J5ePfM5^xYvy8Oe zo;Ac_8M!pd8HBJYA~#hvYcv|S+!5vx2;bWnpSx0ow{`O1V6tNpt$?-@N1~IE>G!c_ zd&hPrEG8+VXk0C-v0@Yr5k;%qp3MhEmf>1$ycySvf;Tt&K}2q<$VX|C^t;_|6p@dq zFpoe?)3o>R{rsQmPH~et-(Z)Q4WXGNlwveg5mltsrZB4j3M?flOSKvcPA5x{Afm{` z8B=8gFsd(belX<2d^|+ts)$@{Hk-Ybm6d%fVEul7@V)E(AD$hK-%2N54(tX$tx||E z0xTO)b4nsrc$q;xaU|0a6q(IIs%|!xM_{wJ#kuQi{N%<)5Rq%ZyGfFKaQN`y?3Gtu z**5_IUzX)Ze{<>P-*1#Lo4zctJB$#aF&P0yX81uyt=lD$N|BvA@j~Kug`tQN%oqjZ z@+jxWYwOnYWe<^yX7)ezdi~0wLx;wD0lXc7U}hUV(bGS;y7_7zEmUI#w^U+5b(X9E zvDsq1C}$OD=hul*tim}0d4$V(&QEV_^6p?b5|IxDPB-fHUoS5&ub(`5GA2o~|8aU^ zx%d9!e`Vu;{_g6{*VlXqe#(w25qIvyQ!-myeVi)N-rfTv$oRLb zH#oh~8;i(QM9vuetlRB=@Wc~Oj82_8wdY25CriB@KYqMiU0oer4>mZP7+^lyZQwP zNxOs31_Tqv7TNSASH}f!_XhlYeKU9?1Fj_eAE#-W{m0F%o2Pr(mp|8T9(}UgY~J6fOVc?L)yeW+-Bg<4H+qa?q*s<) z$qU{cWSr|~VNixbM7DrSBJvAW{Yj(IIP=IOkF37%!V9^X%>`e%XMZMC>)n!b?lD#U zQjGD7X0~!~nmqUi^|ZB=rb#z-(sWJ`VHhG?zO=Q%+qH3F8@>!yIU@ts5P2W7(<1Wo z0|ySgd+gY;o6kM>-1yX~Q+7M>pM=2F9MDeF^uZY8W5DNu$IR>jU=e5o3sm2Al&aWx zU<3?+bwpML-Z6MU>%R0OaV=qqTm&-(6o{zc+-i ztg4@lF+K-E%oFFUs==bWW!YTa%(uB@!YS6_WKsw!n!lBVhJ q{~sLtv7L*^C-L%KyK8rCZ~I?ZZ%$SXA2xsh0000t1VM|03VkRp{83dwk-yERn zBa)GxQxS0=^-lSyiwiYX%>wo~If*Qp<8OCO#1vD|UGRWS&xweh6n?EswwQ0Za+;dVocsJ;^nn;}*0@!8Q@80kc3oA<|ZjJhbh_u0rSGKt$|m z5y&jq`QQ`K^ZVgSmbZ^u(d^8G>f+r>yB;W^<(GLuP41p{LdJ|$fRn0M{Yezi$sdQ?pS^*}3 zMTmCAM zK%rW#=H7Ydot#Jc3qA)9927s_uj|*ZZ{K#? zZMAjl*3J69UrGtb?-I@Iz>c|1E?v}m%AGjTem2sip|BXwx?K)t1+XFkKLQMmjg1Z6 zdFP$w-}v=Q`O{lRO@DtNK~Mw@Q8k3kkYh7O#}7{F`v>;P*zS7t`+soz^!3+Ye+-xg zjsg=Rasc=M_z*Y@RLF$eg?Qj(`HY{;QZGmubTIM45@2xa)~!o7Z{FPZumAjr`|OH? zo*y_dxh05KL^MR*6hXd3u`efsLp^fAc^+4;6aP2=@QXu#{3l;1+;`u7UJwN7OgDiB z5GKFF1bhU^K7R^38Tc*%5wi$n5lI9Z8yg$kym@oq51)O)T{!Z#?_4Ba@mx%CC8lRB zQX0j01Bevxye7THHhtwG7WL)jzjr*OZ@u+qam$u1ONrOeVpUCsE33MG)u^PdlULWs zsjYb4MgDj{7S@I0?`K`Z9K6UFHfs>&}_KueEFNd`&RCvi!O2_BO_5V<1LUh z+_u0rfk?dG=u{qF(pi}xceHX7S#@_7F4j(i_-uF zjByl89;My_tCm&0J$v2^-h1!8G%BS8a$s^Ie!4ErLOjqNVsgYul_7~}X-*UXX8->E z-sq|!#0X+?5DdgT)nUYsdD{@w;%p7I9aOsy#~4GgkfYO@k@c5f>|T8F#ZvO@B##nL z#AHLdoGJ>PJogWj(z%T}az+=ghL4Eh# zcl~sNB>q#1CEXhqB%%3)(xVfRh$Q6&tg33W87Y9ePVz@D_J(+g(+h|(*iMKs(}*!B z2Gtzu9AXT)oDZF&W_Wnm#uFxKfdfez{c#DT7K4mYrs+Uu#flZ-Yj00F@yja4Lv1~N zuR2sCL_LgnNc&xUGmX_@oC;_J+5#-rI$B|eTD`%*zjHEPwsH9>122JO^PRa|QyxEi+8CbUVii9;1^)S+GvnK)eGssDV@ ztX;ddLA+_TRkfY|X3h(GDgp|}B~fWU;-aW!oO2!LT+=yMQ+18?>(|eWj*f=k{Xs2K zBGfj)wLv4qDV_D-zJt9T_q6ZV4b)Ck)(oNb^s z_D~dAW@aO1rzfe`TO6CL@#^kzHf`Ee4}zdcoN70ccQjOOJFA3KMWJjF;nbzx^BmAo zr6Zy>kXhm+t8(tSzf}D2!w;AHxsn>MBuEk0uAnZ$c8+0O4Rs-^En1;qqc-(g1vKR7 zRE_t>t9s~|wKv{)<5XsHX6Pny&Z?@4`0kVhL`0KVnQA_9omzEKD8>)tE#Azk%A^Rr z6B84C=Pc`0aWh6)1`3_<14KdXF`RAVq7Zcv)!C4Gy#i`!wc5P1FLd91_K>~nuDhm7 zrBa1BE1imuT1`^fHaMrKiUbR;iBkd!UW6DAaiNIURCNsztpd}kQrfrgCxfM8sU3x# zob;3&_5Ge}9m4oI)Xv~+i(0Koqh4jU(xTZBot*XbwYQq?E06rUch5cdR5xwf^Z{@T zI0766od&JPoeS;6J7LG+1q&)@x(y~Vg-r9wwpFzuVhSP>fE0lI%#YrWR$p*+>tFuuuMZCo z57&#uVl9!)>i+QIhacXxYSnrBfkVV)n0QmWT0fia$MjPYx=M&SE?u3Rqvq)^DSdi6?fzx@l`aKp_kUw#hHJo9~?du}J= z;|Hl$k0Db0(axPapH4lhabL7yj8}_i+g3&VD&5WIbaeFd0N?xG4(`AI0iJ&P`>b8NmPa4`d&b9qimK1DWy^T|^*vmB?X@p}z7Kj3 zbU)}pRhvjhj}mw2lGfsJMf~xzFJe#o14mjXPfZ;Tf*|J^<9Wt-eyP-Z?B09t;-;HE z$AuSu27s4eet~a(^D%0*4p&@pIa5;=9((MuYNb-SCGI+CI+JbZZ0LK^j#CuZLA*%B z&jQbaw}2Iq(`qfIUQktatybLv1VOHQ?V*Rh!LD7qn4WI%zytSl<&_&b>#TFwvSkZn zV?Snau#c51SN@0Z`;+kwpYH5LAd#3{M>TS&v#5!X6G3NYU*YuA>6C;!bZFeRT6G(S zt;pI=)Z5$pmjJK7zK8MgeSGOlf5lZ-ZD7}~|09>nvu4d2zVn^!^!4@aR&_I~ZdO&R zs;;W)nyT6YLJ_|OUK?E6dOtxv*-uR$x1eESVq6a$8n^ZOtZld3_W9?Z{|A60M<#Jj zsZ?szY8AF@`6t@#kV2sdz}VRTY*%%ybU3G>bFQUoLy`q6CKrmy&kvbh*<^8?(KoV* ziE*8n7`LDP^u;F9v_kGIcAt@9}0#GdWoN!OGS$6=fRzp{> zzBt>3Sde`p5;~bpO&wBzBS#K&!3+<7>I5B6OpJH0uUT`+f`O;@b0csv%Yyx+>|=+~ eU)V1!w*Lq888iigV!hY^0000t1VM|03VkRp{83dwk-yERn zBa)GxQxS0=^-lSyiwiYX%>wo~If*Qp<8OCO#1vD|UGRWS&xweh6n?EswwQ0Za+;dVocsJ;^nn;}*0@!8Q@80kc3oA<|ZjJhbh_u0rSGKt$|m z5y&jq`QQ`K^ZVgSmbZ^u(d^8G>f+r>yB;W^<(GLuP41p{LdJ|$fRn0M{Yezi$sdQ?pS^*}3 zMTmCAM zK%rW#=H7Ydot#Jc3qA)9927s_uj|*ZZ{K#? zZMAjl*3J69UrGtb?-I@Iz>c|1E?v}m%AGjTem2sip|BXwx?K)t1+XFkKLQMmjg1Z6 zdFP$w-}v=Q`O{lRO@DtNK~Mw@Q8k3kkYh7O#}7{F`v>;P*zS7t`+soz^!3+Ye+-xg zjsg=Rasc=M_z*Y@RLF$eg?Qj(`HY{;QZGmubTIM45@2xa)~!o7Z{FPZumAjr`|OH? zo*y_dxh05KL^MR*6hXd3u`efsLp^fAc^+4;6aP2=@QXu#{3l;1+;`u7UJwN7OgDiB z5GKFF1bhU^K7R^38Tc*%5wi$n5lI9Z8yg$kym@oq51)O)T{!Z#?_4Ba@mx%CC8lRB zQX0j01Bevxye7THHhtwG7WL)jzjr*OZ@u+qam$u1ONrOeVpUCsE33MG)u^PdlULWs zsjYb4MgDj{7S@I0?`K`Z9K6UFHfs>&}_KueEFNd`&RCvi!O2_BO_5V<1LUh z+_u0rfk?dG=u{qF(pi}xceHX7S#@_7F4j(i_-uF zjByl89;My_tCm&0J$v2^-h1!8G%BS8a$s^Ie!4ErLOjqNVsgYul_7~}X-*UXX8->E z-sq|!#0X+?5DdgT)nUYsdD{@w;%p7I9aOsy#~4GgkfYO@k@c5f>|T8F#ZvO@B##nL z#AHLdoGJ>PJogWj(z%T}az+=ghL4Eh# zcl~sNB>q#1CEXhqB%%3)(xVfRh$Q6&tg33W87Y9ePVz@D_J(+g(+h|(*iMKs(}*!B z2Gtzu9AXT)oDZF&W_Wnm#uFxKfdfez{c#DT7K4mYrs+Uu#flZ-Yj00F@yja4Lv1~N zuR2sCL_LgnNc&xUGmX_@oC;_J+5#-rI$B|eTD`%*zjHEPwsH9>122JO^PRa|QyxEi+8CbUVii9;1^)S+GvnK)eGssDV@ ztX;ddLA+_TRkfY|X3h(GDgp|}B~fWU;-aW!oO2!LT+=yMQ+18?>(|eWj*f=k{Xs2K zBGfj)wLv4qDV_D-zJt9T_q6ZV4b)Ck)(oNb^s z_D~dAW@aO1rzfe`TO6CL@#^kzHf`Ee4}zdcoN70ccQjOOJFA3KMWJjF;nbzx^BmAo zr6Zy>kXhm+t8(tSzf}D2!w;AHxsn>MBuEk0uAnZ$c8+0O4Rs-^En1;qqc-(g1vKR7 zRE_t>t9s~|wKv{)<5XsHX6Pny&Z?@4`0kVhL`0KVnQA_9omzEKD8>)tE#Azk%A^Rr z6B84C=Pc`0aWh6)1`3_<14KdXF`RAVq7Zcv)!C4Gy#i`!wc5P1FLd91_K>~nuDhm7 zrBa1BE1imuT1`^fHaMrKiUbR;iBkd!UW6DAaiNIURCNsztpd}kQrfrgCxfM8sU3x# zob;3&_5Ge}9m4oI)Xv~+i(0Koqh4jU(xTZBot*XbwYQq?E06rUch5cdR5xwf^Z{@T zI0766od&JPoeS;6J7LG+1q&)@x(y~Vg-r9wwpFzuVhSP>fE0lI%#YrWR$p*+>tFuuuMZCo z57&#uVl9!)>i+QIhacXxYSnrBfkVV)n0QmWT0fia$MjPYx=M&SE?u3Rqvq)^DSdi6?fzx@l`aKp_kUw#hHJo9~?du}J= z;|Hl$k0Db0(axPapH4lhabL7yj8}_i+g3&VD&5WIbaeFd0N?xG4(`AI0iJ&P`>b8NmPa4`d&b9qimK1DWy^T|^*vmB?X@p}z7Kj3 zbU)}pRhvjhj}mw2lGfsJMf~xzFJe#o14mjXPfZ;Tf*|J^<9Wt-eyP-Z?B09t;-;HE z$AuSu27s4eet~a(^D%0*4p&@pIa5;=9((MuYNb-SCGI+CI+JbZZ0LK^j#CuZLA*%B z&jQbaw}2Iq(`qfIUQktatybLv1VOHQ?V*Rh!LD7qn4WI%zytSl<&_&b>#TFwvSkZn zV?Snau#c51SN@0Z`;+kwpYH5LAd#3{M>TS&v#5!X6G3NYU*YuA>6C;!bZFeRT6G(S zt;pI=)Z5$pmjJK7zK8MgeSGOlf5lZ-ZD7}~|09>nvu4d2zVn^!^!4@aR&_I~ZdO&R zs;;W)nyT6YLJ_|OUK?E6dOtxv*-uR$x1eESVq6a$8n^ZOtZld3_W9?Z{|A60M<#Jj zsZ?szY8AF@`6t@#kV2sdz}VRTY*%%ybU3G>bFQUoLy`q6CKrmy&kvbh*<^8?(KoV* ziE*8n7`LDP^u;F9v_kGIcAt@9}0#GdWoN!OGS$6=fRzp{> zzBt>3Sde`p5;~bpO&wBzBS#K&!3+<7>I5B6OpJH0uUT`+f`O;@b0csv%Yyx+>|=+~ eU)V1!w*Lq888iigV!hY^0000UP)Qnz#zQTj~I0m z(~uZZUo04+B*f6N+r&4iCM3oOfHhW&dr2A;8 z#=hW6X8R=O7w2>G>=1blkw2~|eE4}sy8kP{*Jey?h5!xVeE3C5mpqrWxJqGEM!tGg zcj}YR(|_$cbvu4YjrkPVobBY<3eW(?PSk-v0L}tXFF;&{X#13xyBv9N62^LI|Lr2D zItJJk?lOgg-RMA%$6c$cu_^MCqi`wAq1GM-Z`=Z4PGKG|tnx#wo6=e3$k)6qU$y{1 z7ht#BSH|P`N(=?}D?^pBoOBKlrrw_URCIDX@ zZYQ)Sxi7q4Z<(SfmyM7RjSTX5+=~EeDqY}N2$8l7^5U~qtKM)3qHW!~&8PXfd-9He z0vL}1P+98L?-z^3mK)(=Sb(a=I`@AZfc#Pzk0N*fI*okw`i;k5UHb$(8XH;xUX~P049{1eSo+1xuf*|Pc2gW1Fktu#X*GKfWAP9p-c^J+@ ze<^vyhh_SD2QpVPMM?vz0ZNPA;G6+=4=5e9cMh}rP`B>e(9m$uC=bH|%Aeo!Aa1L7 zZhjK4+lf3<3}Y7nINcf19Rxvq$0!Fd9zqN5Wpqleg=v@7z|JL=J}S!RCoSVq`UXb% z%FP2oMMaria`E!srvY1lWSX;5`>WlB6|2%Qwx>uzJN}+1)rs;W}O-b2IiCI%8sO-+eRV<;3#+`fIg1z_EZl4PnK>j%L_>zPQJrw}eI zEchLauRfSpji%%E`oO}yuhlN4xMB^7*d?MdfzgpM>bCCZ+Mo*XZBbFtTdCC#1Of@8 z0t|2Bf52YNkX_cvge6a)e`tjMprhLQq*Ydgjuo+}T|By#5}ykkGx@Rg zyYvFiv;(aaEXhJ8J{RQ8OSWgbbh{{uixP>u>c6aD$$J3DOo*$<7ux6>7)|dH%+5mA z2!Q0VV#eu%6|h9WpJ$K3ghJoID2H2n(z}N5GsG~g*aO1Sx+9M)RazB7Wtj#+5H~e8 zHtsfiB1^Ima2c>klJs=Sux;D6HY+Bwx+W3RKm5)5h{+*`9R5f68%_|?=3mMMKL7v# M07*qoM6N<$f=zj6oB#j- literal 0 HcmV?d00001 diff --git a/gtk/stock-icons/dialog_question_48.png b/gtk/stock-icons/dialog_question_48.png new file mode 100644 index 0000000000000000000000000000000000000000..2afbc7a873daec85ffaa08bab8817f8b8b9d08e4 GIT binary patch literal 1302 zcmV+x1?l>UP)Qnz#zQTj~I0m z(~uZZUo04+B*f6N+r&4iCM3oOfHhW&dr2A;8 z#=hW6X8R=O7w2>G>=1blkw2~|eE4}sy8kP{*Jey?h5!xVeE3C5mpqrWxJqGEM!tGg zcj}YR(|_$cbvu4YjrkPVobBY<3eW(?PSk-v0L}tXFF;&{X#13xyBv9N62^LI|Lr2D zItJJk?lOgg-RMA%$6c$cu_^MCqi`wAq1GM-Z`=Z4PGKG|tnx#wo6=e3$k)6qU$y{1 z7ht#BSH|P`N(=?}D?^pBoOBKlrrw_URCIDX@ zZYQ)Sxi7q4Z<(SfmyM7RjSTX5+=~EeDqY}N2$8l7^5U~qtKM)3qHW!~&8PXfd-9He z0vL}1P+98L?-z^3mK)(=Sb(a=I`@AZfc#Pzk0N*fI*okw`i;k5UHb$(8XH;xUX~P049{1eSo+1xuf*|Pc2gW1Fktu#X*GKfWAP9p-c^J+@ ze<^vyhh_SD2QpVPMM?vz0ZNPA;G6+=4=5e9cMh}rP`B>e(9m$uC=bH|%Aeo!Aa1L7 zZhjK4+lf3<3}Y7nINcf19Rxvq$0!Fd9zqN5Wpqleg=v@7z|JL=J}S!RCoSVq`UXb% z%FP2oMMaria`E!srvY1lWSX;5`>WlB6|2%Qwx>uzJN}+1)rs;W}O-b2IiCI%8sO-+eRV<;3#+`fIg1z_EZl4PnK>j%L_>zPQJrw}eI zEchLauRfSpji%%E`oO}yuhlN4xMB^7*d?MdfzgpM>bCCZ+Mo*XZBbFtTdCC#1Of@8 z0t|2Bf52YNkX_cvge6a)e`tjMprhLQq*Ydgjuo+}T|By#5}ykkGx@Rg zyYvFiv;(aaEXhJ8J{RQ8OSWgbbh{{uixP>u>c6aD$$J3DOo*$<7ux6>7)|dH%+5mA z2!Q0VV#eu%6|h9WpJ$K3ghJoID2H2n(z}N5GsG~g*aO1Sx+9M)RazB7Wtj#+5H~e8 zHtsfiB1^Ima2c>klJs=Sux;D6HY+Bwx+W3RKm5)5h{+*`9R5f68%_|?=3mMMKL7v# M07*qoM6N<$f=zj6oB#j- literal 0 HcmV?d00001 diff --git a/gtk/stock-icons/dialog_warning.png b/gtk/stock-icons/dialog_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..d6f2306dba4ece5c3880ef9e0f4ad3eb0c438bff GIT binary patch literal 1968 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 literal 0 HcmV?d00001 diff --git a/gtk/stock-icons/stock_button_cancel_24.png b/gtk/stock-icons/stock_button_cancel_24.png new file mode 100644 index 0000000000000000000000000000000000000000..2d7c194c8cf58b8f0cda70f2a5a3fb6d8731b97c GIT binary patch literal 454 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VTavfC3&UOz%yhcC0x0s@)5S5Q z;?~>qAzb+ z>%@!OI6atVF&((D^vofSrtlqh?%xJUi4_+UG-77USXr{U4ZTm7OcNRoU=&Q?|p&M=l2^%~>h5Gh;*S+U3@3 zx`Ub-72YP^h~sBSuzNANVcFdj-5Ncq%ddY%t>b?z{*{gGMp{Gejn*qbZ@X57M3e;Q zrsR+eb2 zJEQBNbJFMB_0#%Z>&ArUbJWPx{7#TWLI08kcoVNyQXYh3Ob6Mw<&;$S@j<@^( literal 0 HcmV?d00001 diff --git a/gtk/stock-icons/stock_button_close.png b/gtk/stock-icons/stock_button_close.png new file mode 100644 index 0000000000000000000000000000000000000000..b900bdf3bd5be9bcb1001726e8a1678883dcc49c GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc0wmQNuC@UwrX+877lys^v2U1xJaF! zcl!?VG8k|$9sOIrY`t0666O=DANu7UxwT=>jlig>MrJN1Jg)zC2#Bt?`o$xk)!2Vw z#%&H`73rT+QF;8u|B8M2P9G9vx%=<>I-rrRRUr{2!TD(=<%vb93=9>wiZ29Q`*OzD z$N#IZ&v~D7VFnkCFBk`I*mA+#;G(%fh=<-O9lez$8tcyJdgz?=Id}cEz85<~O&0&p zifODrjcm}qQZ=Cj$r)62-u%oj+S8Txpd8Jc;R7 literal 0 HcmV?d00001 diff --git a/gtk/stock-icons/stock_button_close_24.png b/gtk/stock-icons/stock_button_close_24.png new file mode 100644 index 0000000000000000000000000000000000000000..b900bdf3bd5be9bcb1001726e8a1678883dcc49c GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc0wmQNuC@UwrX+877lys^v2U1xJaF! zcl!?VG8k|$9sOIrY`t0666O=DANu7UxwT=>jlig>MrJN1Jg)zC2#Bt?`o$xk)!2Vw z#%&H`73rT+QF;8u|B8M2P9G9vx%=<>I-rrRRUr{2!TD(=<%vb93=9>wiZ29Q`*OzD z$N#IZ&v~D7VFnkCFBk`I*mA+#;G(%fh=<-O9lez$8tcyJdgz?=Id}cEz85<~O&0&p zifODrjcm}qQZ=Cj$r)62-u%oj+S8Txpd8Jc;R7 literal 0 HcmV?d00001 diff --git a/gtk/stock-icons/stock_button_no.png b/gtk/stock-icons/stock_button_no.png new file mode 100644 index 0000000000000000000000000000000000000000..6478554f620d324d4fe829189b0a0d761aaef745 GIT binary patch literal 847 zcmV-V1F-ywP)PRHmIs7LTRc%R9aFycI=Po}ze9YI6_K45OJ@sge5xHDW zzrXf0A6$8rT-GItBK%I9QGcJXe?Tt^X>ILrt9vjOYCjp|^Z6e>S$~~t>u=&#W-vM> z?DkM;N*V?LIGGF^iw%mF;H&n)oP-_$ZQC~QK6{aCZ?98YS;Z+#k_G`Pig9utD2YH} zD~W~TrI|9lFyco)J_gMkUM5|akKedLq23@jJwvh4BwH?HdmdE60Ibp2_i`$kz|y_Rfd;~SpahgJ}UWz z#RY_Ik&Z@$oi@p!PuSffc=V8XFhq?;7^TogB7_31F%uR~RVKMLj7U!cYlR%q!2y}h zE}3oy9Vf)Y0pad0VXsXR`ba6!S|d|U#`P#oSIOHB?6gleW&3fPLUkG`H7H3s3P}AS z(SDDh(Ua^2zuHa3TaSKKKexK{#e9MjdJACxqGvd?RzZ^>* zyDPRHmIs7LTRc%R9aFycI=Po}ze9YI6_K45OJ@sge5xHDW zzrXf0A6$8rT-GItBK%I9QGcJXe?Tt^X>ILrt9vjOYCjp|^Z6e>S$~~t>u=&#W-vM> z?DkM;N*V?LIGGF^iw%mF;H&n)oP-_$ZQC~QK6{aCZ?98YS;Z+#k_G`Pig9utD2YH} zD~W~TrI|9lFyco)J_gMkUM5|akKedLq23@jJwvh4BwH?HdmdE60Ibp2_i`$kz|y_Rfd;~SpahgJ}UWz z#RY_Ik&Z@$oi@p!PuSffc=V8XFhq?;7^TogB7_31F%uR~RVKMLj7U!cYlR%q!2y}h zE}3oy9Vf)Y0pad0VXsXR`ba6!S|d|U#`P#oSIOHB?6gleW&3fPLUkG`H7H3s3P}AS z(SDDh(Ua^2zuHa3TaSKKKexK{#e9MjdJACxqGvd?RzZ^>* zyDw% z3phItqf{ze-$*m8Tq@)0Jc>k2{!AnU{tiDlLf~ujp;Hvl7wAEEZx>cq*0H^@i=u82 z(ugJR6;Mj;WpG@>o}gBH#a&!R_$-QxlPmj=UB{G%6l%3sd>57H3Z&~8l5z@{rx6PS z0B;@3C|OX-zQyu69dRjvw4x$>er>~SHyoZA!uZrMd~ME;M@?&pNeO5f4UtRf3uYTi z9Su#7z~lAUk{D&ksyRrJTc~LbH_>=gtm%}4qk{;|jDj(Wr+fj7QWSIpX+=dY``8lu z0@l&7$sj0W*xNY(=dn+?73LU%$g{!V0BiO9eue%U_Lq1A;R4_$te|I)0000*dQ@0+ zQ*UN;cVTj6004N}bI?%M^vq36PxVbq&rHr%Fwry6Gf}X#&^IvAH!xI4F3Kz}sdOl= z%q>VP$xP1I%P&d?0DNi>`FQpe!T?(ZeetFa%BJjc-k{hO-nX3GB-*y vF)*?;F}F0gG&D|1Niw!fPDx5hGd2MLjF$+_I&sfb00000NkvXXu0mjf#^f6W literal 0 HcmV?d00001 diff --git a/gtk/stock-icons/stock_button_ok_24.png b/gtk/stock-icons/stock_button_ok_24.png new file mode 100644 index 0000000000000000000000000000000000000000..f1c33753f369e410d8e7fd3a03f5d1612a101efa GIT binary patch literal 661 zcmV;G0&4ww% z3phItqf{ze-$*m8Tq@)0Jc>k2{!AnU{tiDlLf~ujp;Hvl7wAEEZx>cq*0H^@i=u82 z(ugJR6;Mj;WpG@>o}gBH#a&!R_$-QxlPmj=UB{G%6l%3sd>57H3Z&~8l5z@{rx6PS z0B;@3C|OX-zQyu69dRjvw4x$>er>~SHyoZA!uZrMd~ME;M@?&pNeO5f4UtRf3uYTi z9Su#7z~lAUk{D&ksyRrJTc~LbH_>=gtm%}4qk{;|jDj(Wr+fj7QWSIpX+=dY``8lu z0@l&7$sj0W*xNY(=dn+?73LU%$g{!V0BiO9eue%U_Lq1A;R4_$te|I)0000*dQ@0+ zQ*UN;cVTj6004N}bI?%M^vq36PxVbq&rHr%Fwry6Gf}X#&^IvAH!xI4F3Kz}sdOl= z%q>VP$xP1I%P&d?0DNi>`FQpe!T?(ZeetFa%BJjc-k{hO-nX3GB-*y vF)*?;F}F0gG&D|1Niw!fPDx5hGd2MLjF$+_I&sfb00000NkvXXu0mjf#^f6W literal 0 HcmV?d00001 diff --git a/gtk/stock-icons/stock_button_yes.png b/gtk/stock-icons/stock_button_yes.png new file mode 100644 index 0000000000000000000000000000000000000000..e061e7f17cc9d1d12ee7aaf40c24c14a1b29e289 GIT binary patch literal 806 zcmV+>1KIqEP)1uc)!u_0+o|I?PTI6lQA&jp1Ojf5K+s0&1@wX& z{sI4w-n0!+6(po0N>iv%icABfN~n`KKJD)8&Vh^2l9Gi>BwlHxnUUT{?>FD*ga1m# z7z;23>tAIRfn3+sr+k-J-hYWRmpW8t0-ikHVe7#*-LJM$nJM(1xHQICzVGX|K6sVO zAH74VTt;Lm`@=nk@gbARh{55Q@7Evk+c!@Oq3-cR7>0MQeX_>dhnJ}Z4WyO~CVg_1 zljM^lgXeJR-E(-M!_T*O%-^BUfv)SC*RQUycI^rajYXnTg*1!FWrkn!(MBOHg|Rit zGAyjNh!10S?+;#p+RrvYrOefj-(#jaOFf*XHPt5arzm+xFk=~{$x*gEf@;P5Yb|W| z#j2kH&FYnxX;d5do{#5vcwPz5J%!Q|WfV#&q{%Tz3=(ZAT+d>5wFbw!|2*M^m2+5@ zLz<-=jQ9AZ*JXSEF}>j~aXLoG6s9tmZ^kw>?xNGx+j4MX_AoX43Q@c(;*^@8H))*WN4{zEsuJ+$-?wm zszHr!yY~x$*2c|Ev;5`-q9{OWiBJNm1aX!ka|yY@!Q*t;qFtS5y3(XS==1gUdlY^f zDHL~ae8)k*PdtthaYhnns8pjejb}=2mzb%|BC?blpWY%D60hW*NC;s4^yRN6 zsQAn;&tfctWrJmG%67=n8*M+`;-ZeCyKhc6x#`U@upU>wip;@e9sEuW{;=`bFS*?hRky;~3YGtobJ ki{*GW6wJfp@Ad!GAD5tKxAlTf%m4rY07*qoM6N<$g18WaeE1KIqEP)1uc)!u_0+o|I?PTI6lQA&jp1Ojf5K+s0&1@wX& z{sI4w-n0!+6(po0N>iv%icABfN~n`KKJD)8&Vh^2l9Gi>BwlHxnUUT{?>FD*ga1m# z7z;23>tAIRfn3+sr+k-J-hYWRmpW8t0-ikHVe7#*-LJM$nJM(1xHQICzVGX|K6sVO zAH74VTt;Lm`@=nk@gbARh{55Q@7Evk+c!@Oq3-cR7>0MQeX_>dhnJ}Z4WyO~CVg_1 zljM^lgXeJR-E(-M!_T*O%-^BUfv)SC*RQUycI^rajYXnTg*1!FWrkn!(MBOHg|Rit zGAyjNh!10S?+;#p+RrvYrOefj-(#jaOFf*XHPt5arzm+xFk=~{$x*gEf@;P5Yb|W| z#j2kH&FYnxX;d5do{#5vcwPz5J%!Q|WfV#&q{%Tz3=(ZAT+d>5wFbw!|2*M^m2+5@ zLz<-=jQ9AZ*JXSEF}>j~aXLoG6s9tmZ^kw>?xNGx+j4MX_AoX43Q@c(;*^@8H))*WN4{zEsuJ+$-?wm zszHr!yY~x$*2c|Ev;5`-q9{OWiBJNm1aX!ka|yY@!Q*t;qFtS5y3(XS==1gUdlY^f zDHL~ae8)k*PdtthaYhnns8pjejb}=2mzb%|BC?blpWY%D60hW*NC;s4^yRN6 zsQAn;&tfctWrJmG%67=n8*M+`;-ZeCyKhc6x#`U@upU>wip;@e9sEuW{;=`bFS*?hRky;~3YGtobJ ki{*GW6wJfp@Ad!GAD5tKxAlTf%m4rY07*qoM6N<$g18WaeE>qAzb+ z>%@!OI6atVF&((D^vofSrtlqh?%xJUi4_+UG-77USXr{U4ZTm7OcNRoU=&Q?|p&M=l2^%~>h5Gh;*S+U3@3 zx`Ub-72YP^h~sBSuzNANVcFdj-5Ncq%ddY%t>b?z{*{gGMp{Gejn*qbZ@X57M3e;Q zrsR+eb2 zJEQBNbJFMB_0#%Z>&ArUbJWPx{7#TWLI08kcoVNyQXYh3Ob6Mw<&;$S@j<@^( literal 0 HcmV?d00001 diff --git a/gtk/stock-icons/stock_close.png b/gtk/stock-icons/stock_close.png new file mode 100644 index 0000000000000000000000000000000000000000..4338bdc3f67d63af7de8272f44e182aef9bf7ef8 GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1rX+877lys^v2U1xJa11I$B>F! zZ~He2F&MBozx@Bdcvnzo_HsQV%Q%6}7k3M286wiZ29Q z`*OzD$N#IZ&v~D7VFnkCFBk`I*mA+#;G(%fh=<-O9lez$8tcyJdgz?=Id}cEz85<~ zO&0&pifODrjcm}u-{xY@+m)X>b>+t}aG)YH_<#N5Qt$JE%s$H&;f b+?<7>g@uDF! zcl!?VG8k|$9sOIrY`t0666O=DANu7UxwT=>jlig>MrJN1Jg)zC2#Bt?`o$xk)!2Vw z#%&H`73rT+QF;8u|B8M2P9G9vx%=<>I-rrRRUr{2!TD(=<%vb93=9>wiZ29Q`*OzD z$N#IZ&v~D7VFnkCFBk`I*mA+#;G(%fh=<-O9lez$8tcyJdgz?=Id}cEz85<~O&0&p zifODrjcm}qQZ=Cj$r)62-u%oj+S8Txpd8Jc;R7 literal 0 HcmV?d00001 diff --git a/gtk/stock-icons/stock_close_24.png b/gtk/stock-icons/stock_close_24.png new file mode 100644 index 0000000000000000000000000000000000000000..4338bdc3f67d63af7de8272f44e182aef9bf7ef8 GIT binary patch literal 290 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*1rX+877lys^v2U1xJa11I$B>F! zZ~He2F&MBozx@Bdcvnzo_HsQV%Q%6}7k3M286wiZ29Q z`*OzD$N#IZ&v~D7VFnkCFBk`I*mA+#;G(%fh=<-O9lez$8tcyJdgz?=Id}cEz85<~ zO&0&pifODrjcm}u-{xY@+m)X>b>+t}aG)YH_<#N5Qt$JE%s$H&;f b+?<7>g@uDE1R|xn~>y3l7*qhKpIgDs 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 M07*qoM6N<$f=zj6oB#j- literal 0 HcmV?d00001 diff --git a/gtk/stock-icons/stock_dialog_warning_48.png b/gtk/stock-icons/stock_dialog_warning_48.png new file mode 100644 index 0000000000000000000000000000000000000000..d6f2306dba4ece5c3880ef9e0f4ad3eb0c438bff GIT binary patch literal 1968 zcmV;h2T%BkP)szen;P16#BP*Oor zp&$@asf0w7LQ@iuka&rN$_r|QkU$_Icp{c~3{De=t1#HDD6()?*I69)m1}-h5UL z#PqM<^Ma3GD;NqE5=y$;T-ErmIsYm!57@QN^Pvdn&1dEFY4^fNU|)Qv5HJ^j0+c{P zPi))>0UDsoT<00 z+>^j=AVr-itV;sD`K)|4?VcMk_KR;9g2e^hb6PMK28IlcX+eylv0E5&j;EX_W~_SdrdJ|=P$vo=`dpg6Zz{<{ zDFubls1?u4^PYrPXluf(zDb``mQ%ePhTS9YHAUf;Pz^WCpzD!#9FKSHKUVI^FO+gvB{ z$yDs?f1a9qoA3d^vbUZ!ClI;+e%X1a+Wm6!02B8EPM#a%#Mv>1$IS!e%dfXq=sp=9 zwHvi&i{l(}9H)~NT53%KBKJQqcJZv=b4D*&wB>}(|7x0dhYUAv8Giexxn;>mNVG4U zR7L2FyDfWS`UKFzLt1K00!9xW)<)FJL*;9K$MSAQn4At!3gR&#l~BuG8@1PL*TS9v zG-<_lM?dYl?sg!)9JduWi;MZ3JUjWpxiKrB9w_(#?0V59vvv8U6A?PN$K|d6`n>Q= z11~(2M2ReWZ3H)MnYa$F5~fU$`{(rBrBo_4w@ujq0M#TyA!de z`)6kUv48*mvA({(2a0(`0oUezHRzeghdhI!a?Mp2<(ZL^~iDW!Ca7A3%DSE(2Z zE#cD!S4vVcN|C5ON|y;(j=X0r_f5e4z{W+S%XQu6VzD?%)s25G8=3Ju?=J9nrIbHy z>6rF{CJ0i5J-UIgOC*3;N{O>sD{U8gw*oq2TKko&X_0kBG8ICw_XBIkjhOHO6wsiQ zY9dTaRw2L_k$b>(W6a-x+kjt>fTaXQqNM6i6P_Xy4Gj$rAl6!Uety1z`VuG*o`)tD z-dDu%Vf}}u+~w$1Reiq_Y}so-ozG4;uz?MH#PNTLJI@&1HX;ZB0000-L1z)*3k_(H(7FK2vx{J;A8ocB2wW^mE?f^p!6Ef>rUE}9#Jc<7zd z(OX%fvF?nnht5f#bJtJnd$BXrWbyy3_$G1)XrM9Jz|8c##FA2oiQbz$Hf=C5^zrjE vHrZ-mX69>XYHnz5Y~Zoc#KhNRvj;On*Lw~}*NW-L1z)*3k_(H(7FK2vx{J;A8ocB2wW^mE?f^p!6Ef>rUE}9#Jc<7zd z(OX%fvF?nnht5f#bJtJnd$BXrWbyy3_$G1)XrM9Jz|8c##FA2oiQbz$Hf=C5^zrjE vHrZ-mX69>XYHnz5Y~Zoc#KhNRvj;On*Lw~}*NWP_-V8QFxuBn|;x6rNp_U&Z7t8Hb8^FRBVpAY^Yp3a{z?GcO44;BCWRwory zb()PO{O(&hUTCe*H3&66p7!B?yS}^u2)wb`*gNUMLAjI-3tmRvb~C78oBr_fHlHOk z9~NBqzil)zBn7K}HRVQ&-v$18|x?h;4eMV_j^nrrEA4A(#^Xp$WYB|BZ zD9}NGfx&W7U;LBX{mQ@~a;*x9C<)F_D=AMbN@ZZExK(^1;M$inzCQk6eSOaRoC`C! zXnesqaKn}h<^~td4MIHhPU+~aEYVnZM%P2 zdR}5lDa6Fh24P_-V8QFxuBn|;x6rNp_U&Z7t8Hb8^FRBVpAY^Yp3a{z?GcO44;BCWRwory zb()PO{O(&hUTCe*H3&66p7!B?yS}^u2)wb`*gNUMLAjI-3tmRvb~C78oBr_fHlHOk z9~NBqzil)zBn7K}HRVQ&-v$18|x?h;4eMV_j^nrrEA4A(#^Xp$WYB|BZ zD9}NGfx&W7U;LBX{mQ@~a;*x9C<)F_D=AMbN@ZZExK(^1;M$inzCQk6eSOaRoC`C! zXnesqaKn}h<^~td4MIHhPU+~aEYVnZM%P2 zdR}5lDa6Fh24qGn1QaHU&CPXKRsuo@NJ$`) zP)Z^en;FUw1HfD;tm63i11u}i+GGYZAOs);p;&x1G%6JY&*gHc*XyvX1eje9N?r#7 zLbO&Y^#I9a66JDvv<|Y_EGm_6I6JGsb=d%YxKavIN=PZOzyD@n7l8t;HFkIRkk3Dd z<2Z0#*AqxYA`wU_Jt;v-iH(ibzLG$J5I;e517?lG!>@3hU(i}XDQTA0tuBZN^YfWe zA2MNaF^h$T4ASX`n3#xyh#;i`5t+z@5FjED5w5PPfn5X&CMWM8lbONn>?4eiN1>E9 zkp#hsT9bNk@UBM^C|Fv0hIINd#>OHBq?GCbwqFB4Ds>+xCm%Z`L1T(o?5@ezpB^7L zthTm_U10|o+xF)+f%HaGnDO*GYp-ZD-ox$tv9s+OwAKdL9#1#;{JiGFsr%6V1hlg9 z+MK-m4fdsC;oz@lK46$pL_R{l`G?(1-xg)YLtbyAQvRQADHjUsw+`-*{7d*>)o)Eyr=f86N!kDa z07ZIKSaefwW^{L9a%BJjc-nK&P}cO!O-xVqO-#>B&Q>tdGte_pu(Z%OFwr+KR7ft$ zEH0^ZD6Y&cNG!=r&ezK?N(TUZY7hB%_7uVZ001+3R9JLVX=iR>bairN004N}OEpMI zPBpSjOEgL}F;6uxOi4*IHZ?FZG&fH+F|$ZC1^}C}2qGn1QaHU&CPXKRsuo@NJ$`) zP)Z^en;FUw1HfD;tm63i11u}i+GGYZAOs);p;&x1G%6JY&*gHc*XyvX1eje9N?r#7 zLbO&Y^#I9a66JDvv<|Y_EGm_6I6JGsb=d%YxKavIN=PZOzyD@n7l8t;HFkIRkk3Dd z<2Z0#*AqxYA`wU_Jt;v-iH(ibzLG$J5I;e517?lG!>@3hU(i}XDQTA0tuBZN^YfWe zA2MNaF^h$T4ASX`n3#xyh#;i`5t+z@5FjED5w5PPfn5X&CMWM8lbONn>?4eiN1>E9 zkp#hsT9bNk@UBM^C|Fv0hIINd#>OHBq?GCbwqFB4Ds>+xCm%Z`L1T(o?5@ezpB^7L zthTm_U10|o+xF)+f%HaGnDO*GYp-ZD-ox$tv9s+OwAKdL9#1#;{JiGFsr%6V1hlg9 z+MK-m4fdsC;oz@lK46$pL_R{l`G?(1-xg)YLtbyAQvRQADHjUsw+`-*{7d*>)o)Eyr=f86N!kDa z07ZIKSaefwW^{L9a%BJjc-nK&P}cO!O-xVqO-#>B&Q>tdGte_pu(Z%OFwr+KR7ft$ zEH0^ZD6Y&cNG!=r&ezK?N(TUZY7hB%_7uVZ001+3R9JLVX=iR>bairN004N}OEpMI zPBpSjOEgL}F;6uxOi4*IHZ?FZG&fH+F|$ZC1^}C}2PRHmIs7LTRc%R9aFycI=Po}ze9YI6_K45OJ@sge5xHDW zzrXf0A6$8rT-GItBK%I9QGcJXe?Tt^X>ILrt9vjOYCjp|^Z6e>S$~~t>u=&#W-vM> z?DkM;N*V?LIGGF^iw%mF;H&n)oP-_$ZQC~QK6{aCZ?98YS;Z+#k_G`Pig9utD2YH} zD~W~TrI|9lFyco)J_gMkUM5|akKedLq23@jJwvh4BwH?HdmdE60Ibp2_i`$kz|y_Rfd;~SpahgJ}UWz z#RY_Ik&Z@$oi@p!PuSffc=V8XFhq?;7^TogB7_31F%uR~RVKMLj7U!cYlR%q!2y}h zE}3oy9Vf)Y0pad0VXsXR`ba6!S|d|U#`P#oSIOHB?6gleW&3fPLUkG`H7H3s3P}AS z(SDDh(Ua^2zuHa3TaSKKKexK{#e9MjdJACxqGvd?RzZ^>* zyDw% z3phItqf{ze-$*m8Tq@)0Jc>k2{!AnU{tiDlLf~ujp;Hvl7wAEEZx>cq*0H^@i=u82 z(ugJR6;Mj;WpG@>o}gBH#a&!R_$-QxlPmj=UB{G%6l%3sd>57H3Z&~8l5z@{rx6PS z0B;@3C|OX-zQyu69dRjvw4x$>er>~SHyoZA!uZrMd~ME;M@?&pNeO5f4UtRf3uYTi z9Su#7z~lAUk{D&ksyRrJTc~LbH_>=gtm%}4qk{;|jDj(Wr+fj7QWSIpX+=dY``8lu z0@l&7$sj0W*xNY(=dn+?73LU%$g{!V0BiO9eue%U_Lq1A;R4_$te|I)0000*dQ@0+ zQ*UN;cVTj6004N}bI?%M^vq36PxVbq&rHr%Fwry6Gf}X#&^IvAH!xI4F3Kz}sdOl= z%q>VP$xP1I%P&d?0DNi>`FQpe!T?(ZeetFa%BJjc-k{hO-nX3GB-*y vF)*?;F}F0gG&D|1Niw!fPDx5hGd2MLjF$+_I&sfb00000NkvXXu0mjf#^f6W literal 0 HcmV?d00001 diff --git a/gtk/stock-icons/stock_open.png b/gtk/stock-icons/stock_open.png new file mode 100644 index 0000000000000000000000000000000000000000..e966ad7bf84d935f6a26c974d5e16607ef3ab595 GIT binary patch literal 393 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjY)RhkE)07?Fw^Pk3ZTe3PZ!6K zid%1|81gk6@VM>|Y%jXFDfG=t4(p`m)62M5P7>I??YT`S@4UagsS7R(c3f9>;?rb! zaD#~=cX2m%tv4U#pK&Ly7=bDDum7bcu7UV&G2G#_q6WpOz#}2z+Wen!_+^N z#Taji$^5tT&yA+YbD}>A-*rc>&@J$O`1HN~g=HtCw8Y${CTbluS^x9doozvTU7fB! z+IjKLB91AqPxdZu)ogUlaV?!?t+!9b*osfe|Y%jXFDfG=t4(p`m)62M5P7>I??YT`S@4UagsS7R(c3f9>;?rb! zaD#~=cX2m%tv4U#pK&Ly7=bDDum7bcu7UV&G2G#_q6WpOz#}2z+Wen!_+^N z#Taji$^5tT&yA+YbD}>A-*rc>&@J$O`1HN~g=HtCw8Y${CTbluS^x9doozvTU7fB! z+IjKLB91AqPxdZu)ogUlaV?!?t+!9b*osfeS7U5qaw$oIWxDE!~|t56N=tVO=-^N+z96f&eKJ0q`7yi=*}O! z7w7Pv|MNWO|2zkl`HzU7pDc>M6|U6kIB@cGa2=MoKNQAd>&NBwvMWEA+d%W92mf4w z0EETXkFLEFfRf^!C=(I@qN*a2u+X)43X82@EN0O4Ra9zqvR=f65vKZyfgJUkP{vD< zo|=LxC7I$wN9btM3m_(9*7b%K@%&AOHYgH9^+ya zvR*6>5Ockv993!(lhZS@!r!K*85(m_r#AsmuPda^V{NY-Amw{EAVtaO2H*g1G@HuJc>3zyf&(3qR*r%f~%+pt<%(Imz5 z@Mbl4Zrvc!=U#Abu@`b}CF%_=43AF$AX$4UKUIQea}M+K^Z5OKW@l%4YwJVXXrQoo z4^~Sno>3<~FO4B>*-3Ud?5s>w0&wowVT!ioai-!b4yTJiAV44xpm0+*d$$z;Fg-CI z6c5`)zY@jS^Zewf_w%)s2-9K#MfjXm%1`TZyq3M5J5VP$xP1I%P&d?0DNi>`FQpe z!T?(ZeetFa%BJjc-k{gOEyh2H%Ll0F|;rS7U5qaw$oIWxDE!~|t56N=tVO=-^N+z96f&eKJ0q`7yi=*}O! z7w7Pv|MNWO|2zkl`HzU7pDc>M6|U6kIB@cGa2=MoKNQAd>&NBwvMWEA+d%W92mf4w z0EETXkFLEFfRf^!C=(I@qN*a2u+X)43X82@EN0O4Ra9zqvR=f65vKZyfgJUkP{vD< zo|=LxC7I$wN9btM3m_(9*7b%K@%&AOHYgH9^+ya zvR*6>5Ockv993!(lhZS@!r!K*85(m_r#AsmuPda^V{NY-Amw{EAVtaO2H*g1G@HuJc>3zyf&(3qR*r%f~%+pt<%(Imz5 z@Mbl4Zrvc!=U#Abu@`b}CF%_=43AF$AX$4UKUIQea}M+K^Z5OKW@l%4YwJVXXrQoo z4^~Sno>3<~FO4B>*-3Ud?5s>w0&wowVT!ioai-!b4yTJiAV44xpm0+*d$$z;Fg-CI z6c5`)zY@jS^Zewf_w%)s2-9K#MfjXm%1`TZyq3M5J5VP$xP1I%P&d?0DNi>`FQpe z!T?(ZeetFa%BJjc-k{gOEyh2H%Ll0F|;r1KIqEP)1uc)!u_0+o|I?PTI6lQA&jp1Ojf5K+s0&1@wX& z{sI4w-n0!+6(po0N>iv%icABfN~n`KKJD)8&Vh^2l9Gi>BwlHxnUUT{?>FD*ga1m# z7z;23>tAIRfn3+sr+k-J-hYWRmpW8t0-ikHVe7#*-LJM$nJM(1xHQICzVGX|K6sVO zAH74VTt;Lm`@=nk@gbARh{55Q@7Evk+c!@Oq3-cR7>0MQeX_>dhnJ}Z4WyO~CVg_1 zljM^lgXeJR-E(-M!_T*O%-^BUfv)SC*RQUycI^rajYXnTg*1!FWrkn!(MBOHg|Rit zGAyjNh!10S?+;#p+RrvYrOefj-(#jaOFf*XHPt5arzm+xFk=~{$x*gEf@;P5Yb|W| z#j2kH&FYnxX;d5do{#5vcwPz5J%!Q|WfV#&q{%Tz3=(ZAT+d>5wFbw!|2*M^m2+5@ zLz<-=jQ9AZ*JXSEF}>j~aXLoG6s9tmZ^kw>?xNGx+j4MX_AoX43Q@c(;*^@8H))*WN4{zEsuJ+$-?wm zszHr!yY~x$*2c|Ev;5`-q9{OWiBJNm1aX!ka|yY@!Q*t;qFtS5y3(XS==1gUdlY^f zDHL~ae8)k*PdtthaYhnns8pjejb}=2mzb%|BC?blpWY%D60hW*NC;s4^yRN6 zsQAn;&tfctWrJmG%67=n8*M+`;-ZeCyKhc6x#`U@upU>wip;@e9sEuW{;=`bFS*?hRky;~3YGtobJ ki{*GW6wJfp@Ad!GAD5tKxAlTf%m4rY07*qoM6N<$g18WaeE