diff options
| author | Tomasz Boczkowski <penginsbacon@gmail.com> | 2014-05-30 13:55:34 +0000 |
|---|---|---|
| committer | Tomasz Boczkowski <penginsbacon@gmail.com> | 2014-05-30 13:55:34 +0000 |
| commit | 17055d029cc8732d1b2636b9e98338c8e7056558 (patch) | |
| tree | e58c8035d14d0afa495f7abe75ea16400f74c646 /src | |
| parent | SPColorSelector c++-sification: added ColorSelectorFactory (diff) | |
| download | inkscape-17055d029cc8732d1b2636b9e98338c8e7056558.tar.gz inkscape-17055d029cc8732d1b2636b9e98338c8e7056558.zip | |
SPColorNotebok c++-sification - available pages list
(bzr r13341.6.28)
Diffstat (limited to 'src')
| -rw-r--r-- | src/extension/param/parameter.cpp | 4 | ||||
| -rw-r--r-- | src/ui/selected-color.cpp | 5 | ||||
| -rw-r--r-- | src/ui/selected-color.h | 8 | ||||
| -rw-r--r-- | src/widgets/sp-color-icc-selector.cpp | 2 | ||||
| -rw-r--r-- | src/widgets/sp-color-notebook.cpp | 65 | ||||
| -rw-r--r-- | src/widgets/sp-color-notebook.h | 28 | ||||
| -rw-r--r-- | src/widgets/sp-color-scales.cpp | 11 | ||||
| -rw-r--r-- | src/widgets/sp-color-selector.cpp | 5 | ||||
| -rw-r--r-- | src/widgets/sp-color-selector.h | 8 | ||||
| -rw-r--r-- | src/widgets/sp-color-wheel-selector.cpp | 2 |
10 files changed, 121 insertions, 17 deletions
diff --git a/src/extension/param/parameter.cpp b/src/extension/param/parameter.cpp index 202b8110f..b18525215 100644 --- a/src/extension/param/parameter.cpp +++ b/src/extension/param/parameter.cpp @@ -15,6 +15,10 @@ # include "config.h" #endif +#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H +#include <glibmm/threads.h> +#endif + #ifdef linux // does the dollar sign need escaping when passed as string parameter? # define ESCAPE_DOLLAR_COMMANDLINE #endif diff --git a/src/ui/selected-color.cpp b/src/ui/selected-color.cpp index 927c421b8..f61c3b7f8 100644 --- a/src/ui/selected-color.cpp +++ b/src/ui/selected-color.cpp @@ -10,11 +10,12 @@ * Copyright (C) 2014 Authors * Released under GNU GPL, read the file 'COPYING' for more information */ -#include <cmath> -#include <glib.h> #include "selected-color.h" +#include <cmath> +#include <glib.h> + namespace Inkscape { namespace UI { diff --git a/src/ui/selected-color.h b/src/ui/selected-color.h index db2f2f68c..a56ee6afb 100644 --- a/src/ui/selected-color.h +++ b/src/ui/selected-color.h @@ -13,6 +13,14 @@ #ifndef SEEN_SELECTED_COLOR #define SEEN_SELECTED_COLOR +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H +#include <glibmm/threads.h> +#endif + #include <sigc++/signal.h> #include <gtkmm/widget.h> #include "color.h" diff --git a/src/widgets/sp-color-icc-selector.cpp b/src/widgets/sp-color-icc-selector.cpp index 806ddba8d..69818ba99 100644 --- a/src/widgets/sp-color-icc-selector.cpp +++ b/src/widgets/sp-color-icc-selector.cpp @@ -1126,7 +1126,7 @@ void ColorICCSelectorImpl::_sliderChanged() Gtk::Widget *ColorICCSelectorFactory::createWidget(Inkscape::UI::SelectedColor &color) const { GtkWidget *w = sp_color_selector_new(SP_TYPE_COLOR_ICC_SELECTOR); - Gtk::Widget *wrapped = Glib::wrap(w); + Gtk::Widget *wrapped = Gtk::manage(Glib::wrap(w)); return wrapped; } diff --git a/src/widgets/sp-color-notebook.cpp b/src/widgets/sp-color-notebook.cpp index 367063790..923a4480f 100644 --- a/src/widgets/sp-color-notebook.cpp +++ b/src/widgets/sp-color-notebook.cpp @@ -24,6 +24,7 @@ #include <cstddef> #include <gtk/gtk.h> #include <glibmm/i18n.h> +#include <gtkmm/label.h> #include "../dialogs/dialog-events.h" #include "../preferences.h" @@ -53,6 +54,7 @@ struct SPColorNotebookTracker { SPColorNotebook *backPointer; }; + static void sp_color_notebook_class_init (SPColorNotebookClass *klass); static void sp_color_notebook_init (SPColorNotebook *colorbook); static void sp_color_notebook_dispose(GObject *object); @@ -264,16 +266,11 @@ void ColorNotebook::init() #endif gtk_widget_show (_buttonbox); - _buttons = new GtkWidget *[_trackerList->len]; + _buttons = new GtkWidget *[_available_pages.size()]; - for ( i = 0; i < _trackerList->len; i++ ) + for ( i = 0; i < _available_pages.size(); i++ ) { - SPColorNotebookTracker *entry = - reinterpret_cast< SPColorNotebookTracker* > (g_ptr_array_index (_trackerList, i)); - if ( entry ) - { - addPage(entry->type, entry->submode); - } + _addPage(_available_pages[i]); } #if GTK_CHECK_VERSION(3,0,0) @@ -507,6 +504,20 @@ GtkWidget *sp_color_notebook_new() ColorNotebook::ColorNotebook( SPColorSelector* csel ) : ColorSelector( csel ) { + Page *page; + + page = new Page(new ColorScalesFactory(SP_COLOR_SCALES_MODE_RGB), true); + _available_pages.push_back(page); + page = new Page(new ColorScalesFactory(SP_COLOR_SCALES_MODE_HSV), true); + _available_pages.push_back(page); + page = new Page(new ColorScalesFactory(SP_COLOR_SCALES_MODE_CMYK), true); + _available_pages.push_back(page); + page = new Page(new ColorWheelSelectorFactory, true); + _available_pages.push_back(page); +#if defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2) + page = new Page(new ColorICCSelectorFactory, true); + _available_pages.push_back(page); +#endif } SPColorSelector* ColorNotebook::getCurrentSelector() @@ -526,6 +537,12 @@ SPColorSelector* ColorNotebook::getCurrentSelector() return csel; } +ColorNotebook::Page::Page(Inkscape::UI::ColorSelectorFactory *selector_factory, bool enabled_full) + : selector_factory(selector_factory) + , enabled_full(enabled_full) +{ +} + void ColorNotebook::_colorChanged() { SPColorSelector* cselPage = getCurrentSelector(); @@ -769,6 +786,38 @@ GtkWidget* ColorNotebook::addPage(GType page_type, guint submode) return page; } +GtkWidget* ColorNotebook::_addPage(Page& page) { + Gtk::Widget *selector_widget; + + selector_widget = page.selector_factory->createWidget(_selected_color); + if (selector_widget) { + selector_widget->show(); + + Glib::ustring mode_name = page.selector_factory->modeName(); + Gtk::Widget* tab_label = Gtk::manage(new Gtk::Label(mode_name)); + gint page_num = gtk_notebook_append_page( GTK_NOTEBOOK(_book), selector_widget->gobj(), tab_label->gobj()); + + _buttons[page_num] = gtk_radio_button_new_with_label(NULL, mode_name.c_str()); + gtk_toggle_button_set_mode(GTK_TOGGLE_BUTTON(_buttons[page_num]), FALSE); + if (page_num > 0) { + GSList *group = gtk_radio_button_get_group (GTK_RADIO_BUTTON(_buttons[0])); + gtk_radio_button_set_group (GTK_RADIO_BUTTON(_buttons[page_num]), group); + } + gtk_widget_show (_buttons[page_num]); + gtk_box_pack_start (GTK_BOX (_buttonbox), _buttons[page_num], TRUE, TRUE, 0); + + g_signal_connect (G_OBJECT (_buttons[page_num]), "clicked", G_CALLBACK (_buttonClicked), _csel); + + //Connect glib signals of non-refactored widgets + g_signal_connect (selector_widget->gobj(), "grabbed", G_CALLBACK (_entryGrabbed), _csel); + g_signal_connect (selector_widget->gobj(), "dragged", G_CALLBACK (_entryDragged), _csel); + g_signal_connect (selector_widget->gobj(), "released", G_CALLBACK (_entryReleased), _csel); + g_signal_connect (selector_widget->gobj(), "changed", G_CALLBACK (_entryChanged), _csel); + } + + return selector_widget->gobj(); +} + GtkWidget* ColorNotebook::getPage(GType page_type, guint submode) { gint count = 0; diff --git a/src/widgets/sp-color-notebook.h b/src/widgets/sp-color-notebook.h index 6e5111132..5db278e3f 100644 --- a/src/widgets/sp-color-notebook.h +++ b/src/widgets/sp-color-notebook.h @@ -12,12 +12,21 @@ * This code is in public domain */ -#include <gtk/gtk.h> -#include "../color.h" -#include "sp-color-selector.h" +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif +#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H +#include <glibmm/threads.h> +#endif + +#include <boost/ptr_container/ptr_vector.hpp> +#include <gtk/gtk.h> #include <glib.h> +#include "../color.h" +#include "sp-color-selector.h" +#include "ui/selected-color.h" struct SPColorNotebook; @@ -40,6 +49,13 @@ public: gint menuHandler( GdkEvent* event ); protected: + struct Page { + Page(Inkscape::UI::ColorSelectorFactory *selector_factory, bool enabled_full); + + Inkscape::UI::ColorSelectorFactory *selector_factory; + bool enabled_full; + }; + static void _rgbaEntryChangedHook( GtkEntry* entry, SPColorNotebook *colorbook ); static void _entryGrabbed( SPColorSelector *csel, SPColorNotebook *colorbook ); static void _entryDragged( SPColorSelector *csel, SPColorNotebook *colorbook ); @@ -55,6 +71,9 @@ protected: void _updateRgbaEntry( const SPColor& color, gfloat alpha ); void _setCurrentPage(int i); + GtkWidget* _addPage(Page& page); + + Inkscape::UI::SelectedColor _selected_color; gboolean _updating : 1; gboolean _updatingrgba : 1; gboolean _dragging : 1; @@ -72,6 +91,7 @@ protected: GtkWidget *_btn; GtkWidget *_popup; GPtrArray *_trackerList; + boost::ptr_vector<Page> _available_pages; private: // By default, disallow copy constructor and assignment operator @@ -81,6 +101,8 @@ private: + + #define SP_TYPE_COLOR_NOTEBOOK (sp_color_notebook_get_type ()) #define SP_COLOR_NOTEBOOK(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_COLOR_NOTEBOOK, SPColorNotebook)) #define SP_COLOR_NOTEBOOK_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SP_TYPE_COLOR_NOTEBOOK, SPColorNotebookClass)) diff --git a/src/widgets/sp-color-scales.cpp b/src/widgets/sp-color-scales.cpp index 97933d949..d7466be98 100644 --- a/src/widgets/sp-color-scales.cpp +++ b/src/widgets/sp-color-scales.cpp @@ -54,6 +54,7 @@ static SPColorSelectorClass *parent_class; #define noDUMP_CHANGE_INFO 1 const gchar* ColorScales::SUBMODE_NAMES[] = { + N_("None"), N_("RGB"), N_("HSL"), N_("CMYK") @@ -770,7 +771,15 @@ ColorScalesFactory::~ColorScalesFactory() { Gtk::Widget *ColorScalesFactory::createWidget(Inkscape::UI::SelectedColor &color) const { GtkWidget *w = sp_color_selector_new(SP_TYPE_COLOR_SCALES); - Gtk::Widget *wrapped = Glib::wrap(w); + SPColorSelector* csel; + + csel = SP_COLOR_SELECTOR (w); + if ( _submode > 0 ) + { + csel->base->setSubmode( _submode - 1 ); + } + + Gtk::Widget *wrapped = Gtk::manage(Glib::wrap(w)); return wrapped; } diff --git a/src/widgets/sp-color-selector.cpp b/src/widgets/sp-color-selector.cpp index 6d62acecd..05af162ef 100644 --- a/src/widgets/sp-color-selector.cpp +++ b/src/widgets/sp-color-selector.cpp @@ -6,10 +6,13 @@ #ifdef HAVE_CONFIG_H # include "config.h" #endif + +#include "sp-color-selector.h" + #include <math.h> #include <gtk/gtk.h> #include <glibmm/i18n.h> -#include "sp-color-selector.h" + enum { GRABBED, diff --git a/src/widgets/sp-color-selector.h b/src/widgets/sp-color-selector.h index 616d5a9e7..560b4c59d 100644 --- a/src/widgets/sp-color-selector.h +++ b/src/widgets/sp-color-selector.h @@ -1,6 +1,14 @@ #ifndef SEEN_SP_COLOR_SELECTOR_H #define SEEN_SP_COLOR_SELECTOR_H +#ifdef HAVE_CONFIG_H +# include <config.h> +#endif + +#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H +#include <glibmm/threads.h> +#endif + #include <gtk/gtk.h> #include "../color.h" diff --git a/src/widgets/sp-color-wheel-selector.cpp b/src/widgets/sp-color-wheel-selector.cpp index e41a312a1..15177377d 100644 --- a/src/widgets/sp-color-wheel-selector.cpp +++ b/src/widgets/sp-color-wheel-selector.cpp @@ -346,7 +346,7 @@ void ColorWheelSelector::_wheelChanged( GimpColorWheel *wheel, SPColorWheelSelec Gtk::Widget *ColorWheelSelectorFactory::createWidget(Inkscape::UI::SelectedColor &color) const { GtkWidget *w = sp_color_selector_new(SP_TYPE_COLOR_WHEEL_SELECTOR); - Gtk::Widget *wrapped = Glib::wrap(w); + Gtk::Widget *wrapped = Gtk::manage(Glib::wrap(w)); return wrapped; } |
