diff options
| author | Felipe Corr??a da Silva Sanches <juca@members.fsf.org> | 2009-01-24 08:09:52 +0000 |
|---|---|---|
| committer | JucaBlues <JucaBlues@users.sourceforge.net> | 2009-01-24 08:09:52 +0000 |
| commit | 25fb1bfdc2612c448daa368022f86ae42ff8935d (patch) | |
| tree | 346bf68a26e2e40eb7bfb62e76bd852df7de673e /src/dialogs/eek-preview.cpp | |
| parent | sort combo enumerations (diff) | |
| download | inkscape-25fb1bfdc2612c448daa368022f86ae42ff8935d.tar.gz inkscape-25fb1bfdc2612c448daa368022f86ae42ff8935d.zip | |
add "remove color" ColorItem to the swatches dialog
(bzr r7164)
Diffstat (limited to 'src/dialogs/eek-preview.cpp')
| -rw-r--r-- | src/dialogs/eek-preview.cpp | 42 |
1 files changed, 33 insertions, 9 deletions
diff --git a/src/dialogs/eek-preview.cpp b/src/dialogs/eek-preview.cpp index f9aadc561..a4e28b2fd 100644 --- a/src/dialogs/eek-preview.cpp +++ b/src/dialogs/eek-preview.cpp @@ -36,9 +36,13 @@ * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif #include <gtk/gtk.h> #include "eek-preview.h" +#include "path-prefix.h" #define PRIME_BUTTON_MAGIC_NUMBER 1 @@ -57,15 +61,11 @@ static GtkWidgetClass* parent_class = 0; void eek_preview_set_color( EekPreview* preview, int r, int g, int b ) { - if ( (preview->_r = r) - || (preview->_g = g) - || (preview->_b = b) ) { - preview->_r = r; - preview->_g = g; - preview->_b = b; - - gtk_widget_queue_draw(GTK_WIDGET(preview)); - } + preview->_r = r; + preview->_g = g; + preview->_b = b; + + gtk_widget_queue_draw(GTK_WIDGET(preview)); } @@ -222,6 +222,7 @@ gboolean eek_preview_expose_event( GtkWidget* widget, GdkEventExpose* event ) GdkGC *gc = gdk_gc_new( widget->window ); EekPreview* preview = EEK_PREVIEW(widget); GdkColor fg = {0, preview->_r, preview->_g, preview->_b}; + gdk_colormap_alloc_color( gdk_colormap_get_system(), &fg, FALSE, TRUE ); gdk_gc_set_foreground( gc, &fg ); @@ -306,6 +307,28 @@ gboolean eek_preview_expose_event( GtkWidget* widget, GdkEventExpose* event ) } } + if (preview->_isRemove){ + GtkDrawingArea* da = &(preview->drawing); + GdkDrawable* drawable = (GdkDrawable*) (((GtkWidget*)da)->window); + gint w,h; + gdk_drawable_get_size(drawable, &w, &h); + GError *error = NULL; + gchar *filepath = (gchar *) g_strdup_printf("%s/remove-color.png", INKSCAPE_PIXMAPDIR); + g_warning("filepath: %s", filepath); + gsize bytesRead = 0; + gsize bytesWritten = 0; + gchar *localFilename = g_filename_from_utf8( filepath, + -1, + &bytesRead, + &bytesWritten, + &error); + GdkPixbuf* pixbuf = gdk_pixbuf_new_from_file_at_size(localFilename, w, h, &error); + gdk_draw_pixbuf(drawable, 0, pixbuf, 0, 0, 0, 0, w, h, GDK_RGB_DITHER_NONE, 0, 0); + g_free(localFilename); + g_free(filepath); + } + + if ( GTK_WIDGET_HAS_FOCUS(widget) ) { gtk_paint_focus( style, widget->window, @@ -633,6 +656,7 @@ static void eek_preview_init( EekPreview *preview ) preview->_hot = FALSE; preview->_within = FALSE; preview->_takesFocus = FALSE; + preview->_isRemove = FALSE; preview->_prevstyle = PREVIEW_STYLE_ICON; preview->_view = VIEW_TYPE_LIST; |
