From 7db3d5624cfb59506bc01339ac682c456266ac56 Mon Sep 17 00:00:00 2001 From: Nick Bowler Date: Tue, 9 Feb 2010 23:03:32 -0500 Subject: [PATCH] lbxgui: Add a toggle between patterned and solid background. The patterned background makes it hard to see images that consist mostly of transparent pixels. --- src/gui/lbxgui.c | 40 +++++++++++++++++++++++++++++----------- src/gui/lbxgui.glade | 21 +++++++++++++++++++++ 2 files changed, 50 insertions(+), 11 deletions(-) diff --git a/src/gui/lbxgui.c b/src/gui/lbxgui.c index 4bc8157..be629fd 100644 --- a/src/gui/lbxgui.c +++ b/src/gui/lbxgui.c @@ -261,6 +261,24 @@ void set_image(GtkComboBox *combo) redraw_image(); } +void set_background(GtkCheckMenuItem *item, gpointer data) +{ + GdkColor black = { .red = 0, .green = 0, .blue = 0 }; + GdkColor dark = { .red = 0x6666, .green = 0x6666, .blue = 0x6666 }; + GdkColor light = { .red = 0x9999, .green = 0x9999, .blue = 0x9999 }; + + if (gtk_check_menu_item_get_active(item)) { + /* Enable stippled background. */ + gdk_gc_set_rgb_fg_color(bg_gc, &dark); + gdk_gc_set_rgb_bg_color(bg_gc, &light); + gdk_gc_set_fill(bg_gc, GDK_OPAQUE_STIPPLED); + } else { + gdk_gc_set_rgb_fg_color(bg_gc, &black); + gdk_gc_set_fill(bg_gc, GDK_SOLID); + } + redraw_image(); +} + void show_about(GtkWidget *widget) { GtkWindow *parent = GTK_WINDOW(gtk_widget_get_toplevel(widget)); @@ -410,21 +428,22 @@ static void init_interface(void) init_combobox(builder, "overchooser"); } -static GdkBitmap *init_background(GdkDrawable *drawable, GdkGC *gc) +static void init_background(GdkDrawable *drawable) { - GdkColor fg = { .red = 0x6666, .green = 0x6666, .blue = 0x6666 }; - GdkColor bg = { .red = 0x9999, .green = 0x9999, .blue = 0x9999 }; + GtkWidget *check; GdkBitmap *bitmap; + bg_gc = gdk_gc_new(canvas->window); + bitmap = gdk_bitmap_create_from_data(drawable, bg_bits, bg_width, bg_height); - gdk_gc_set_rgb_fg_color(gc, &fg); - gdk_gc_set_rgb_bg_color(gc, &bg); - gdk_gc_set_fill(gc, GDK_OPAQUE_STIPPLED); - gdk_gc_set_stipple(gc, bitmap); - gdk_gc_set_ts_origin(gc, 0, 0); - return bitmap; + gdk_gc_set_stipple(bg_gc, bitmap); + gdk_gc_set_ts_origin(bg_gc, 0, 0); + + check = GTK_WIDGET(gtk_builder_get_object(builder, "menu-background")); + gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(check), TRUE); + set_background(GTK_CHECK_MENU_ITEM(check), NULL); } int main(int argc, char **argv) @@ -457,7 +476,6 @@ int main(int argc, char **argv) g_timeout_add(10, timeout, NULL); gtk_widget_show_all(window); - bg_gc = gdk_gc_new(canvas->window); - init_background(canvas->window, bg_gc); + init_background(canvas->window); gtk_main(); } diff --git a/src/gui/lbxgui.glade b/src/gui/lbxgui.glade index a22f676..f70cfa1 100644 --- a/src/gui/lbxgui.glade +++ b/src/gui/lbxgui.glade @@ -45,6 +45,27 @@ + + + True + _Display + True + + + True + + + True + _Pattern background + True + + + + + + + + True -- 2.43.0