summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomasz Boczkowski <penginsbacon@gmail.com>2014-05-30 13:55:34 +0000
committerTomasz Boczkowski <penginsbacon@gmail.com>2014-05-30 13:55:34 +0000
commit17055d029cc8732d1b2636b9e98338c8e7056558 (patch)
treee58c8035d14d0afa495f7abe75ea16400f74c646 /src
parentSPColorSelector c++-sification: added ColorSelectorFactory (diff)
downloadinkscape-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.cpp4
-rw-r--r--src/ui/selected-color.cpp5
-rw-r--r--src/ui/selected-color.h8
-rw-r--r--src/widgets/sp-color-icc-selector.cpp2
-rw-r--r--src/widgets/sp-color-notebook.cpp65
-rw-r--r--src/widgets/sp-color-notebook.h28
-rw-r--r--src/widgets/sp-color-scales.cpp11
-rw-r--r--src/widgets/sp-color-selector.cpp5
-rw-r--r--src/widgets/sp-color-selector.h8
-rw-r--r--src/widgets/sp-color-wheel-selector.cpp2
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;
}