Code

Use subdirectories with icon sizes.
[inkscape.git] / src / widgets / sp-color-gtkselector.cpp
1 #ifdef HAVE_CONFIG_H
2 # include "config.h"
3 #endif
4 #include <glibmm/i18n.h>
5 #include "sp-color-gtkselector.h"
8 static void sp_color_gtkselector_class_init (SPColorGtkselectorClass *klass);
9 static void sp_color_gtkselector_init (SPColorGtkselector *csel);
10 static void sp_color_gtkselector_destroy (GtkObject *object);
12 static void sp_color_gtkselector_show_all (GtkWidget *widget);
13 static void sp_color_gtkselector_hide_all (GtkWidget *widget);
16 static SPColorSelectorClass *parent_class;
18 #define XPAD 4
19 #define YPAD 1
21 GType
22 sp_color_gtkselector_get_type (void)
23 {
24         static GType type = 0;
25         if (!type) {
26                 static const GTypeInfo info = {
27                         sizeof (SPColorGtkselectorClass),
28                         NULL, /* base_init */
29                         NULL, /* base_finalize */
30                         (GClassInitFunc) sp_color_gtkselector_class_init,
31                         NULL, /* class_finalize */
32                         NULL, /* class_data */
33                         sizeof (SPColorGtkselector),
34                         0,        /* n_preallocs */
35                         (GInstanceInitFunc) sp_color_gtkselector_init,
36                         NULL,
37                 };
39                 type = g_type_register_static (SP_TYPE_COLOR_SELECTOR,
40                                                                            "SPColorGtkselector",
41                                                                            &info,
42                                                                            static_cast< GTypeFlags > (0) );
43         }
44         return type;
45 }
47 static void
48 sp_color_gtkselector_class_init (SPColorGtkselectorClass *klass)
49 {
50         static const gchar* nameset[] = {N_("System"), 0};
51         GtkObjectClass *object_class;
52         GtkWidgetClass *widget_class;
53         SPColorSelectorClass *selector_class;
55         object_class = (GtkObjectClass *) klass;
56         widget_class = (GtkWidgetClass *) klass;
57         selector_class = SP_COLOR_SELECTOR_CLASS (klass);
59         parent_class = SP_COLOR_SELECTOR_CLASS (g_type_class_peek_parent (klass));
61         selector_class->name = nameset;
62         selector_class->submode_count = 1;
64         object_class->destroy = sp_color_gtkselector_destroy;
66         widget_class->show_all = sp_color_gtkselector_show_all;
67         widget_class->hide_all = sp_color_gtkselector_hide_all;
68 }
70 void sp_color_gtkselector_init (SPColorGtkselector *csel)
71 {
72     SP_COLOR_SELECTOR(csel)->base = new ColorGtkselector( SP_COLOR_SELECTOR(csel) );
74     if ( SP_COLOR_SELECTOR(csel)->base )
75     {
76         SP_COLOR_SELECTOR(csel)->base->init();
77     }
78 }
80 void ColorGtkselector::init()
81 {
82         GtkWidget *gtksel;
84         gtksel = gtk_color_selection_new();
85         gtk_widget_show (gtksel);
86         _gtkThing = GTK_COLOR_SELECTION (gtksel);
87         gtk_box_pack_start (GTK_BOX (_csel), gtksel, TRUE, TRUE, 0);
89         _sigId = g_signal_connect( GTK_OBJECT(gtksel), "color-changed", GTK_SIGNAL_FUNC( _gtkChanged ), _csel);
90 }
92 static void
93 sp_color_gtkselector_destroy (GtkObject *object)
94 {
95         if (((GtkObjectClass *) (parent_class))->destroy)
96                 (* ((GtkObjectClass *) (parent_class))->destroy) (object);
97 }
99 static void
100 sp_color_gtkselector_show_all (GtkWidget *widget)
102         gtk_widget_show (widget);
105 static void
106 sp_color_gtkselector_hide_all (GtkWidget *widget)
108         gtk_widget_hide (widget);
111 GtkWidget *
112 sp_color_gtkselector_new( GType )
114         SPColorGtkselector *csel;
116         csel = (SPColorGtkselector*)gtk_type_new (SP_TYPE_COLOR_GTKSELECTOR);
118         return GTK_WIDGET (csel);
121 ColorGtkselector::ColorGtkselector( SPColorSelector* csel )
122     : ColorSelector( csel ),
123       _gtkThing(0)
127 ColorGtkselector::~ColorGtkselector()
131 void ColorGtkselector::_colorChanged()
133     GdkColor gcolor;
135     gcolor.pixel = 0;
136     gcolor.red   = static_cast< guint16 >(_color.v.c[0] * 65535);
137     gcolor.green = static_cast< guint16 >(_color.v.c[1] * 65535);
138     gcolor.blue  = static_cast< guint16 >(_color.v.c[2] * 65535);
140 //     g_message( "*****  _colorChanged %04x %04x %04x", gcolor.red, gcolor.green, gcolor.blue );
141     g_signal_handler_block( _gtkThing, _sigId );
142     gtk_color_selection_set_current_alpha( _gtkThing, static_cast<guint16>(65535 * _alpha) );
143     gtk_color_selection_set_current_color( _gtkThing, &gcolor );
144     g_signal_handler_unblock(_gtkThing, _sigId );
147 void ColorGtkselector::_gtkChanged( GtkColorSelection *colorselection, SPColorGtkselector *gtksel )
149     GdkColor color;
150     gtk_color_selection_get_current_color (colorselection, &color);
152     guint16 alpha = gtk_color_selection_get_current_alpha (colorselection);
154     SPColor ourColor( (color.red / 65535.0), (color.green / 65535.0), (color.blue / 65535.0) );
156 //     g_message( "*****  _gtkChanged   %04x %04x %04x", color.red, color.green, color.blue );
158     ColorGtkselector* gtkInst = (ColorGtkselector*)(SP_COLOR_SELECTOR(gtksel)->base);
159     gtkInst->_updateInternals( ourColor, static_cast< gfloat > (alpha) / 65535.0, gtk_color_selection_is_adjusting(colorselection) );