summaryrefslogtreecommitdiffstats
path: root/src/widgets/sp-color-notebook.cpp
diff options
context:
space:
mode:
authorMarkus Engel <markus.engel@tum.de>2013-03-29 23:52:42 +0000
committerMarkus Engel <markus.engel@tum.de>2013-03-29 23:52:42 +0000
commita168040d5a452544328a1e6ad35aaac351f94d44 (patch)
treefae1ba829f543a473da281bd5fa6e4deabbf6912 /src/widgets/sp-color-notebook.cpp
parentRemoved function pointers from SPObject and subclasses. (diff)
parentDutch translation update (diff)
downloadinkscape-a168040d5a452544328a1e6ad35aaac351f94d44.tar.gz
inkscape-a168040d5a452544328a1e6ad35aaac351f94d44.zip
merged from trunk
(bzr r11608.1.56)
Diffstat (limited to 'src/widgets/sp-color-notebook.cpp')
-rw-r--r--src/widgets/sp-color-notebook.cpp95
1 files changed, 73 insertions, 22 deletions
diff --git a/src/widgets/sp-color-notebook.cpp b/src/widgets/sp-color-notebook.cpp
index 5c3c46502..588221a7c 100644
--- a/src/widgets/sp-color-notebook.cpp
+++ b/src/widgets/sp-color-notebook.cpp
@@ -17,6 +17,7 @@
# include "config.h"
#endif
+#include "widgets/icon.h"
#include <cstring>
#include <string>
#include <cstdlib>
@@ -37,6 +38,8 @@
#include "../profile-manager.h"
#include "color-profile.h"
#include "cms-system.h"
+#include "tools-switch.h"
+#include "event-context.h"
using Inkscape::CMSSystem;
@@ -104,7 +107,7 @@ sp_color_notebook_switch_page(GtkNotebook *notebook,
{
if ( colorbook )
{
- ColorNotebook* nb = (ColorNotebook*)(SP_COLOR_SELECTOR(colorbook)->base);
+ ColorNotebook* nb = dynamic_cast<ColorNotebook*>(SP_COLOR_SELECTOR(colorbook)->base);
nb->switchPage( notebook, page, page_num );
// remember the page we switched to
@@ -141,7 +144,7 @@ static gint sp_color_notebook_menu_handler( GtkWidget *widget, GdkEvent *event )
if (event->type == GDK_BUTTON_PRESS)
{
SPColorSelector* csel = SP_COLOR_SELECTOR(widget);
- ((ColorNotebook*)(csel->base))->menuHandler( event );
+ (dynamic_cast<ColorNotebook*>(csel->base))->menuHandler( event );
/* Tell calling code that we have handled this event; the buck
* stops here. */
@@ -170,11 +173,11 @@ static void sp_color_notebook_menuitem_response (GtkMenuItem *menuitem, gpointer
{
if ( active )
{
- ((ColorNotebook*)(SP_COLOR_SELECTOR(entry->backPointer)->base))->addPage(entry->type, entry->submode);
+ (dynamic_cast<ColorNotebook*>(SP_COLOR_SELECTOR(entry->backPointer)->base))->addPage(entry->type, entry->submode);
}
else
{
- ((ColorNotebook*)(SP_COLOR_SELECTOR(entry->backPointer)->base))->removePage(entry->type, entry->submode);
+ (dynamic_cast<ColorNotebook*>(SP_COLOR_SELECTOR(entry->backPointer)->base))->removePage(entry->type, entry->submode);
}
}
}
@@ -192,7 +195,6 @@ sp_color_notebook_init (SPColorNotebook *colorbook)
void ColorNotebook::init()
{
- GtkWidget* table = 0;
guint row = 0;
guint i = 0;
guint j = 0;
@@ -276,22 +278,49 @@ void ColorNotebook::init()
}
}
- table = gtk_table_new (2, 3, FALSE);
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkWidget* table = gtk_grid_new();
+#else
+ GtkWidget* table = gtk_table_new(2, 3, FALSE);
+#endif
+
gtk_widget_show (table);
gtk_box_pack_start (GTK_BOX (_csel), table, TRUE, TRUE, 0);
sp_set_font_size_smaller (_buttonbox);
+
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_widget_set_margin_left(_buttonbox, XPAD);
+ gtk_widget_set_margin_right(_buttonbox, XPAD);
+ gtk_widget_set_margin_top(_buttonbox, YPAD);
+ gtk_widget_set_margin_bottom(_buttonbox, YPAD);
+ gtk_widget_set_hexpand(_buttonbox, TRUE);
+ gtk_widget_set_valign(_buttonbox, GTK_ALIGN_CENTER);
+ gtk_grid_attach(GTK_GRID(table), _buttonbox, 0, row, 2, 1);
+#else
gtk_table_attach (GTK_TABLE (table), _buttonbox, 0, 2, row, row + 1,
static_cast<GtkAttachOptions>(GTK_EXPAND|GTK_FILL),
- static_cast<GtkAttachOptions>(GTK_EXPAND|GTK_FILL),
+ static_cast<GtkAttachOptions>(0),
XPAD, YPAD);
+#endif
+
row++;
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_widget_set_margin_left(_book, XPAD*2);
+ gtk_widget_set_margin_right(_book, XPAD*2);
+ gtk_widget_set_margin_top(_book, YPAD);
+ gtk_widget_set_margin_bottom(_book, YPAD);
+ gtk_widget_set_hexpand(_book, TRUE);
+ gtk_widget_set_vexpand(_book, TRUE);
+ gtk_grid_attach(GTK_GRID(table), _book, 0, row, 2, 1);
+#else
gtk_table_attach (GTK_TABLE (table), _book, 0, 2, row, row + 1,
static_cast<GtkAttachOptions>(GTK_EXPAND|GTK_FILL),
static_cast<GtkAttachOptions>(GTK_EXPAND|GTK_FILL),
XPAD*2, YPAD);
+#endif
// restore the last active page
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
@@ -346,7 +375,6 @@ void ColorNotebook::init()
#if GTK_CHECK_VERSION(3,0,0)
GtkWidget *rgbabox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_box_set_homogeneous(GTK_BOX(rgbabox), FALSE);
#else
GtkWidget *rgbabox = gtk_hbox_new (FALSE, 0);
#endif
@@ -373,9 +401,19 @@ void ColorNotebook::init()
gtk_widget_set_tooltip_text (_box_toomuchink, _("Too much ink!"));
gtk_widget_set_sensitive (_box_toomuchink, false);
gtk_box_pack_start(GTK_BOX(rgbabox), _box_toomuchink, FALSE, FALSE, 2);
-
#endif //defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
+
+ /* Color picker */
+ GtkWidget *picker = gtk_image_new_from_icon_name ("color-picker", GTK_ICON_SIZE_SMALL_TOOLBAR);
+ _btn_picker = gtk_button_new ();
+ gtk_button_set_relief(GTK_BUTTON(_btn_picker), GTK_RELIEF_NONE);
+ gtk_widget_show (_btn);
+ gtk_container_add (GTK_CONTAINER (_btn_picker), picker);
+ gtk_widget_set_tooltip_text (_btn_picker, _("Pick colors from image"));
+ gtk_box_pack_start(GTK_BOX(rgbabox), _btn_picker, FALSE, FALSE, 2);
+ g_signal_connect(G_OBJECT(_btn_picker), "clicked", G_CALLBACK(ColorNotebook::_picker_clicked), _csel);
+
/* Create RGBA entry and color preview */
_rgbal = gtk_label_new_with_mnemonic (_("RGBA_:"));
gtk_misc_set_alignment (GTK_MISC (_rgbal), 1.0, 0.5);
@@ -397,7 +435,15 @@ void ColorNotebook::init()
gtk_widget_hide(GTK_WIDGET(_box_toomuchink));
#endif //defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_widget_set_margin_left(rgbabox, XPAD);
+ gtk_widget_set_margin_right(rgbabox, XPAD);
+ gtk_widget_set_margin_top(rgbabox, YPAD);
+ gtk_widget_set_margin_bottom(rgbabox, YPAD);
+ gtk_grid_attach(GTK_GRID(table), rgbabox, 0, row, 2, 1);
+#else
gtk_table_attach (GTK_TABLE (table), rgbabox, 0, 2, row, row + 1, GTK_FILL, GTK_SHRINK, XPAD, YPAD);
+#endif
#ifdef SPCS_PREVIEW
_p = sp_color_preview_new (0xffffffff);
@@ -453,14 +499,11 @@ static void sp_color_notebook_hide(GtkWidget *widget)
gtk_widget_hide(widget);
}
-GtkWidget *
-sp_color_notebook_new (void)
+GtkWidget *sp_color_notebook_new()
{
- SPColorNotebook *colorbook;
-
- colorbook = (SPColorNotebook*)g_object_new (SP_TYPE_COLOR_NOTEBOOK, NULL);
+ SPColorNotebook *colorbook = SP_COLOR_NOTEBOOK(g_object_new (SP_TYPE_COLOR_NOTEBOOK, NULL));
- return GTK_WIDGET (colorbook);
+ return GTK_WIDGET(colorbook);
}
ColorNotebook::ColorNotebook( SPColorSelector* csel )
@@ -496,9 +539,17 @@ void ColorNotebook::_colorChanged()
_updateRgbaEntry( _color, _alpha );
}
+void ColorNotebook::_picker_clicked(GtkWidget * /*widget*/, SPColorNotebook * /*colorbook*/)
+{
+ // Set the dropper into a "one click" mode, so it reverts to the previous tool after a click
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ prefs->setBool("/tools/dropper/onetimepick", true);
+ sp_toggle_dropper(SP_ACTIVE_DESKTOP);
+}
+
void ColorNotebook::_rgbaEntryChangedHook(GtkEntry *entry, SPColorNotebook *colorbook)
{
- ((ColorNotebook*)(SP_COLOR_SELECTOR(colorbook)->base))->_rgbaEntryChanged( entry );
+ (dynamic_cast<ColorNotebook*>(SP_COLOR_SELECTOR(colorbook)->base))->_rgbaEntryChanged( entry );
}
void ColorNotebook::_rgbaEntryChanged(GtkEntry* entry)
@@ -608,7 +659,7 @@ void ColorNotebook::_setCurrentPage(int i)
void ColorNotebook::_buttonClicked(GtkWidget *widget, SPColorNotebook *colorbook)
{
- ColorNotebook* nb = (ColorNotebook*)(SP_COLOR_SELECTOR(colorbook)->base);
+ ColorNotebook* nb = dynamic_cast<ColorNotebook*>(SP_COLOR_SELECTOR(colorbook)->base);
if (!gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON(widget))) {
return;
@@ -623,14 +674,14 @@ void ColorNotebook::_buttonClicked(GtkWidget *widget, SPColorNotebook *colorboo
void ColorNotebook::_entryGrabbed (SPColorSelector *, SPColorNotebook *colorbook)
{
- ColorNotebook* nb = (ColorNotebook*)(SP_COLOR_SELECTOR(colorbook)->base);
+ ColorNotebook* nb = dynamic_cast<ColorNotebook*>(SP_COLOR_SELECTOR(colorbook)->base);
nb->_grabbed();
}
void ColorNotebook::_entryDragged (SPColorSelector *csel, SPColorNotebook *colorbook)
{
gboolean oldState;
- ColorNotebook* nb = (ColorNotebook*)(SP_COLOR_SELECTOR(colorbook)->base);
+ ColorNotebook* nb = dynamic_cast<ColorNotebook*>(SP_COLOR_SELECTOR(colorbook)->base);
oldState = nb->_dragging;
@@ -642,14 +693,14 @@ void ColorNotebook::_entryDragged (SPColorSelector *csel, SPColorNotebook *color
void ColorNotebook::_entryReleased (SPColorSelector *, SPColorNotebook *colorbook)
{
- ColorNotebook* nb = (ColorNotebook*)(SP_COLOR_SELECTOR(colorbook)->base);
+ ColorNotebook* nb = dynamic_cast<ColorNotebook*>(SP_COLOR_SELECTOR(colorbook)->base);
nb->_released();
}
void ColorNotebook::_entryChanged (SPColorSelector *csel, SPColorNotebook *colorbook)
{
gboolean oldState;
- ColorNotebook* nb = (ColorNotebook*)(SP_COLOR_SELECTOR(colorbook)->base);
+ ColorNotebook* nb = dynamic_cast<ColorNotebook*>(SP_COLOR_SELECTOR(colorbook)->base);
oldState = nb->_dragging;
@@ -666,7 +717,7 @@ void ColorNotebook::_entryModified (SPColorSelector *csel, SPColorNotebook *colo
g_return_if_fail (csel != NULL);
g_return_if_fail (SP_IS_COLOR_SELECTOR (csel));
- ColorNotebook* nb = (ColorNotebook*)(SP_COLOR_SELECTOR(colorbook)->base);
+ ColorNotebook* nb = dynamic_cast<ColorNotebook*>(SP_COLOR_SELECTOR(colorbook)->base);
SPColor color;
gfloat alpha = 1.0;