diff options
| author | Tomasz Boczkowski <penginsbacon@gmail.com> | 2014-05-31 12:59:50 +0000 |
|---|---|---|
| committer | Tomasz Boczkowski <penginsbacon@gmail.com> | 2014-05-31 12:59:50 +0000 |
| commit | acb2a6bf56c0c932e89114e00cef10fdb5c2f9b5 (patch) | |
| tree | 2c595451dc784b963092c178059341d7f69957fa /src/ui | |
| parent | fixed updating selected color using wheel (diff) | |
| download | inkscape-acb2a6bf56c0c932e89114e00cef10fdb5c2f9b5.tar.gz inkscape-acb2a6bf56c0c932e89114e00cef10fdb5c2f9b5.zip | |
SPColorWheelSelector c++-sification: replaced gtk calls by gtkmm versions
(bzr r13341.6.37)
Diffstat (limited to 'src/ui')
| -rw-r--r-- | src/ui/widget/color-wheel-selector.cpp | 146 | ||||
| -rw-r--r-- | src/ui/widget/color-wheel-selector.h | 30 |
2 files changed, 90 insertions, 86 deletions
diff --git a/src/ui/widget/color-wheel-selector.cpp b/src/ui/widget/color-wheel-selector.cpp index e14c70728..e49e4ba16 100644 --- a/src/ui/widget/color-wheel-selector.cpp +++ b/src/ui/widget/color-wheel-selector.cpp @@ -8,6 +8,8 @@ #include <gtk/gtk.h> #include <glibmm/i18n.h> #include <gtkmm/adjustment.h> +#include <gtkmm/label.h> +#include <gtkmm/spinbutton.h> #include "dialogs/dialog-events.h" #include "widgets/sp-color-scales.h" #include "svg/svg-icc-color.h" @@ -33,12 +35,12 @@ ColorWheelSelector::ColorWheelSelector(SelectedColor &color) : Gtk::Table(5, 3, false) #endif , _color(color) - , _updating(false), - _adj(0), - _wheel(0), - _slider(0), - _sbtn(0), - _label(0) + , _updating(false) +#if !GTK_CHECK_VERSION(3,0,0) + , _alpha_adjustment(NULL) +#endif + , _wheel(0) + , _slider(0) { _initUI(); _color_changed_connection = color.signal_changed.connect(sigc::mem_fun(this, &ColorWheelSelector::_colorChanged)); @@ -48,24 +50,18 @@ ColorWheelSelector::ColorWheelSelector(SelectedColor &color) ColorWheelSelector::~ColorWheelSelector() { - _adj = 0; _wheel = 0; - _sbtn = 0; - _label = 0; +#if !GTK_CHECK_VERSION(3,0,0) + delete _alpha_adjustment; +#endif _color_changed_connection.disconnect(); _color_dragged_connection.disconnect(); } void ColorWheelSelector::_initUI() { - gint row = 0; - - GtkWidget *t = GTK_WIDGET(gobj()); - - //gtk_widget_show (t); - /* Create components */ - row = 0; + gint row = 0; _wheel = gimp_color_wheel_new(); gtk_widget_show( _wheel ); @@ -75,35 +71,38 @@ void ColorWheelSelector::_initUI() { gtk_widget_set_valign(_wheel, GTK_ALIGN_FILL); gtk_widget_set_hexpand(_wheel, TRUE); gtk_widget_set_vexpand(_wheel, TRUE); - gtk_grid_attach(GTK_GRID(t), _wheel, 0, row, 3, 1); + gtk_grid_attach(GTK_GRID(gobj()), _wheel, 0, row, 3, 1); #else - gtk_table_attach(GTK_TABLE(t), _wheel, 0, 3, row, row + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), 0, 0); + gtk_table_attach(GTK_TABLE(gobj()), _wheel, 0, 3, row, row + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), 0, 0); #endif row++; /* Label */ - _label = gtk_label_new_with_mnemonic (_("_A:")); - gtk_misc_set_alignment (GTK_MISC (_label), 1.0, 0.5); - gtk_widget_show (_label); + Gtk::Label* label = Gtk::manage(new Gtk::Label(_("_A:"), true)); + label->set_alignment(1.0, 0.5); + label->show(); #if GTK_CHECK_VERSION(3,0,0) - gtk_widget_set_margin_left(_label, XPAD); - gtk_widget_set_margin_right(_label, XPAD); - gtk_widget_set_margin_top(_label, YPAD); - gtk_widget_set_margin_bottom(_label, YPAD); - gtk_widget_set_halign(_label, GTK_ALIGN_FILL); - gtk_widget_set_valign(_label, GTK_ALIGN_FILL); - gtk_grid_attach(GTK_GRID(t), _label, 0, row, 1, 1); + label->set_margin_left(XPAD); + label->set_margin_right(XPAD); + label->set_margin_top(YPAD); + label->set_margin_bottom(YPAD); + label->set_halign(Gtk::ALIGN_FILL); + label->set_valign(Gtk::ALIGN_FILL); + attach(*label, 0, row, 1, 1); #else - gtk_table_attach (GTK_TABLE (t), _label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, XPAD, YPAD); + attach(*label, 0, 1, row, row + 1, Gtk::FILL, Gtk::FILL, XPAD, YPAD); #endif /* Adjustment */ - _adj = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 255.0, 1.0, 10.0, 10.0)); - +#if GTK_CHECK_VERSION(3,0,0) + _alpha_adjustment = Gtk::Adjustment::create(0.0, 0.0, 255.0, 1.0, 10.0, 10.0); +#else + _alpha_adjustment = new Gtk::Adjustment(0.0, 0.0, 255.0, 1.0, 10.0, 10.0); +#endif /* Slider */ - _slider = Gtk::manage(new Inkscape::UI::Widget::ColorSlider(Glib::wrap(_adj, true))); + _slider = Gtk::manage(new Inkscape::UI::Widget::ColorSlider(_alpha_adjustment)); _slider->set_tooltip_text(_("Alpha (opacity)")); _slider->show(); @@ -115,9 +114,9 @@ void ColorWheelSelector::_initUI() { _slider->set_hexpand(true); _slider->set_halign(Gtk::ALIGN_FILL); _slider->set_valign(Gtk::ALIGN_FILL); - gtk_grid_attach(GTK_GRID(t), _slider->gobj(), 1, row, 1, 1); + attach(*_slider, 1, row, 1, 1); #else - gtk_table_attach(GTK_TABLE (t), _slider->gobj(), 1, 2, row, row + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), GTK_FILL, XPAD, YPAD); + attach(*_slider, 1, 2, row, row+1, Gtk::EXPAND | Gtk::FILL, Gtk::FILL, XPAD, YPAD); #endif _slider->setColors(SP_RGBA32_F_COMPOSE (1.0, 1.0, 1.0, 0.0), @@ -125,32 +124,34 @@ void ColorWheelSelector::_initUI() { SP_RGBA32_F_COMPOSE (1.0, 1.0, 1.0, 1.0)); /* Spinbutton */ - _sbtn = gtk_spin_button_new (GTK_ADJUSTMENT (_adj), 1.0, 0); - gtk_widget_set_tooltip_text (_sbtn, _("Alpha (opacity)")); - sp_dialog_defocus_on_enter (_sbtn); - gtk_label_set_mnemonic_widget (GTK_LABEL(_label), _sbtn); - gtk_widget_show (_sbtn); +#if GTK_CHECK_VERSION(3,0,0) + Gtk::SpinButton* spin_button = Gtk::manage(new Gtk::SpinButton(_alpha_adjustment, 1.0, 0)); + #else + Gtk::SpinButton* spin_button = Gtk::manage(new Gtk::SpinButton(*_alpha_adjustment, 1.0, 0)); +#endif + spin_button->set_tooltip_text(_("Alpha (opacity)")); + sp_dialog_defocus_on_enter(GTK_WIDGET(spin_button->gobj())); + label->set_mnemonic_widget(*spin_button); + spin_button->show(); #if GTK_CHECK_VERSION(3,0,0) - gtk_widget_set_margin_left(_sbtn, XPAD); - gtk_widget_set_margin_right(_sbtn, XPAD); - gtk_widget_set_margin_top(_sbtn, YPAD); - gtk_widget_set_margin_bottom(_sbtn, YPAD); - gtk_widget_set_halign(_sbtn, GTK_ALIGN_CENTER); - gtk_widget_set_valign(_sbtn, GTK_ALIGN_CENTER); - gtk_grid_attach(GTK_GRID(t), _sbtn, 2, row, 1, 1); + + spin_button->set_margin_left(XPAD); + spin_button->set_margin_right(XPAD); + spin_button->set_margin_top(YPAD); + spin_button->set_margin_bottom(YPAD); + spin_button->set_halign(Gtk::ALIGN_CENTER); + spin_button->set_valign(Gtk::ALIGN_CENTER); + attach(*spin_button, 2, row, 1, 1); #else - gtk_table_attach (GTK_TABLE (t), _sbtn, 2, 3, row, row + 1, (GtkAttachOptions)0, (GtkAttachOptions)0, XPAD, YPAD); + attach(*spin_button, 2, 3, row, row + 1, (Gtk::AttachOptions)0, (Gtk::AttachOptions)0, XPAD, YPAD); #endif /* Signals */ - g_signal_connect (G_OBJECT (_adj), "value_changed", - G_CALLBACK (_adjustmentChanged), this); - + _alpha_adjustment->signal_value_changed().connect(sigc::mem_fun(this, &ColorWheelSelector::_adjustmentChanged)); _slider->signal_grabbed.connect(sigc::mem_fun(*this, &ColorWheelSelector::_sliderGrabbed)); _slider->signal_released.connect(sigc::mem_fun(*this, &ColorWheelSelector::_sliderReleased)); _slider->signal_value_changed.connect(sigc::mem_fun(*this, &ColorWheelSelector::_sliderChanged)); - g_signal_connect( G_OBJECT(_wheel), "changed", G_CALLBACK (_wheelChanged), this ); } @@ -158,7 +159,7 @@ void ColorWheelSelector::_initUI() { void ColorWheelSelector::_colorChanged() { #ifdef DUMP_CHANGE_INFO - g_message("ColorWheelSelector::_colorChanged( this=%p, %f, %f, %f, %f)", this, color.v.c[0], color.v.c[1], color.v.c[2], alpha ); + g_message("ColorWheelSelector::_colorChanged( this=%p, %f, %f, %f, %f)", this, _color.color().v.c[0], _color.color().v.c[1], _color.color().v.c[2], alpha ); #endif if (_updating) { return; @@ -177,33 +178,30 @@ void ColorWheelSelector::_colorChanged() _slider->setColors(start, mid, end); - ColorScales::setScaled(_adj, _color.alpha()); + ColorScales::setScaled(_alpha_adjustment->gobj(), _color.alpha()); - _updating = FALSE; + _updating = false; } -void ColorWheelSelector::_adjustmentChanged( GtkAdjustment *adjustment, ColorWheelSelector *cs ) +void ColorWheelSelector::_adjustmentChanged() { - if (cs->_updating) { + if (_updating) { return; } + _updating = true; -// TODO check this. It looks questionable: + // TODO check this. It looks questionable: // if a value is entered between 0 and 1 exclusive, normalize it to (int) 0..255 or 0..100 - gdouble value = gtk_adjustment_get_value (adjustment); - gdouble upper = gtk_adjustment_get_upper (adjustment); - + gdouble value = _alpha_adjustment->get_value(); + gdouble upper = _alpha_adjustment->get_upper(); if (value > 0.0 && value < 1.0) { - gtk_adjustment_set_value( adjustment, floor (value * upper + 0.5) ); + _alpha_adjustment->set_value(floor(value * upper + 0.5)); } - cs->_updating = true; - - cs->_color.preserveICC(); - - cs->_color.setAlpha(ColorScales::getScaled( cs->_adj )); + _color.preserveICC(); + _color.setAlpha(ColorScales::getScaled(_alpha_adjustment->gobj())); - cs->_updating = false; + _updating = false; } void ColorWheelSelector::_sliderGrabbed() @@ -226,13 +224,16 @@ void ColorWheelSelector::_sliderChanged() _updating = true; _color.preserveICC(); - _color.setAlpha(ColorScales::getScaled(_adj)); + _color.setAlpha(ColorScales::getScaled(_alpha_adjustment->gobj())); _updating = false; } -void ColorWheelSelector::_wheelChanged( GimpColorWheel *wheel, ColorWheelSelector *wheelSelector ) +void ColorWheelSelector::_wheelChanged(GimpColorWheel *wheel, ColorWheelSelector *wheelSelector) { - if (wheelSelector->_updating) return; + if (wheelSelector->_updating){ + return; + } + wheelSelector->_updating = true; gdouble h = 0; gdouble s = 0; @@ -250,8 +251,6 @@ void ColorWheelSelector::_wheelChanged( GimpColorWheel *wheel, ColorWheelSelecto wheelSelector->_slider->setColors(start, mid, end); - wheelSelector->_updating = true; - wheelSelector->_color.preserveICC(); wheelSelector->_color.setHeld(gimp_color_wheel_is_adjusting(wheel)); @@ -273,9 +272,6 @@ Glib::ustring ColorWheelSelectorFactory::modeName() const { } } } - - - /* Local Variables: mode:c++ diff --git a/src/ui/widget/color-wheel-selector.h b/src/ui/widget/color-wheel-selector.h index e289a8df6..f5213fad7 100644 --- a/src/ui/widget/color-wheel-selector.h +++ b/src/ui/widget/color-wheel-selector.h @@ -22,7 +22,11 @@ #include <glib.h> #include <gtk/gtk.h> +#if GTK_CHECK_VERSION(3,0,0) +#include <gtkmm/grid.h> +#else #include <gtkmm/table.h> +#endif #include "ui/selected-color.h" @@ -35,7 +39,11 @@ namespace Widget { class ColorSlider; class ColorWheelSelector - : public Gtk::Table //if GTK2 +#if GTK_CHECK_VERSION(3,0,0) + : public Gtk::Grid +#else + : public Gtk::Table +#endif { public: static const gchar* MODE_NAME; @@ -45,25 +53,25 @@ public: protected: void _initUI(); - virtual void _colorChanged(); - - static void _adjustmentChanged ( GtkAdjustment *adjustment, ColorWheelSelector *cs ); + void _colorChanged(); + void _adjustmentChanged(); void _sliderGrabbed(); void _sliderReleased(); void _sliderChanged(); - static void _wheelChanged( GimpColorWheel *wheel, ColorWheelSelector *cs ); + static void _wheelChanged(GimpColorWheel *wheel, ColorWheelSelector *cs); - void _recalcColor( gboolean changing ); + void _recalcColor(gboolean changing); SelectedColor &_color; bool _updating; - - GtkAdjustment* _adj; // Channel adjustment +#if GTK_CHECK_VERSION(3,0,0) + Glib::RefPtr<Gtk::Adjustment> _alpha_adjustment; +#else + Gtk::Adjustment* _alpha_adjustment; +#endif GtkWidget* _wheel; Inkscape::UI::Widget::ColorSlider* _slider; - GtkWidget* _sbtn; // Spinbutton - GtkWidget* _label; // Label private: // By default, disallow copy constructor and assignment operator @@ -74,6 +82,7 @@ private: sigc::connection _color_dragged_connection; }; + class ColorWheelSelectorFactory: public ColorSelectorFactory { public: Gtk::Widget *createWidget(SelectedColor &color) const; @@ -84,7 +93,6 @@ public: } } - #endif // SEEN_SP_COLOR_WHEEL_SELECTOR_H /* |
