summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
Diffstat (limited to 'src/widgets')
-rw-r--r--src/widgets/CMakeLists.txt2
-rw-r--r--src/widgets/Makefile_insert2
-rw-r--r--src/widgets/calligraphy-toolbar.cpp85
-rw-r--r--src/widgets/eek-preview.cpp7
-rw-r--r--src/widgets/font-selector.cpp17
-rw-r--r--src/widgets/gradient-selector.cpp75
-rw-r--r--src/widgets/gradient-selector.h2
-rw-r--r--src/widgets/icon.cpp9
-rw-r--r--src/widgets/ruler.cpp7
-rw-r--r--src/widgets/sp-color-gtkselector.cpp153
-rw-r--r--src/widgets/sp-color-gtkselector.h55
-rw-r--r--src/widgets/sp-color-icc-selector.cpp90
-rw-r--r--src/widgets/sp-color-notebook.cpp40
-rw-r--r--src/widgets/sp-color-scales.cpp40
-rw-r--r--src/widgets/sp-color-slider.cpp13
-rw-r--r--src/widgets/sp-color-wheel-selector.cpp55
-rw-r--r--src/widgets/toolbox.cpp1
17 files changed, 377 insertions, 276 deletions
diff --git a/src/widgets/CMakeLists.txt b/src/widgets/CMakeLists.txt
index 38180bd69..19410ee1d 100644
--- a/src/widgets/CMakeLists.txt
+++ b/src/widgets/CMakeLists.txt
@@ -36,7 +36,6 @@ set(widgets_SRC
select-toolbar.cpp
shrink-wrap-button.cpp
sp-attribute-widget.cpp
- sp-color-gtkselector.cpp
sp-color-icc-selector.cpp
sp-color-notebook.cpp
sp-color-scales.cpp
@@ -94,7 +93,6 @@ set(widgets_SRC
select-toolbar.h
shrink-wrap-button.h
sp-attribute-widget.h
- sp-color-gtkselector.h
sp-color-icc-selector.h
sp-color-notebook.h
sp-color-scales.h
diff --git a/src/widgets/Makefile_insert b/src/widgets/Makefile_insert
index 7d6b413bd..46f0bd645 100644
--- a/src/widgets/Makefile_insert
+++ b/src/widgets/Makefile_insert
@@ -66,8 +66,6 @@ ink_common_sources += \
widgets/spiral-toolbar.h \
widgets/sp-attribute-widget.cpp \
widgets/sp-attribute-widget.h \
- widgets/sp-color-gtkselector.cpp \
- widgets/sp-color-gtkselector.h \
widgets/sp-color-icc-selector.cpp \
widgets/sp-color-icc-selector.h \
widgets/sp-color-notebook.cpp \
diff --git a/src/widgets/calligraphy-toolbar.cpp b/src/widgets/calligraphy-toolbar.cpp
index 1c39cd9e5..287deb815 100644
--- a/src/widgets/calligraphy-toolbar.cpp
+++ b/src/widgets/calligraphy-toolbar.cpp
@@ -74,6 +74,16 @@ using Inkscape::UI::PrefPusher;
//########################
//## Calligraphy ##
//########################
+
+std::vector<Glib::ustring> get_presets_list() {
+
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+
+ std::vector<Glib::ustring> presets = prefs->getAllDirs("/tools/calligraphic/preset");
+
+ return presets;
+}
+
void update_presets_list(GObject *tbl)
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
@@ -88,7 +98,7 @@ void update_presets_list(GObject *tbl)
return;
}
- std::vector<Glib::ustring> presets = prefs->getAllDirs("/tools/calligraphic/preset");
+ std::vector<Glib::ustring> presets = get_presets_list();
int ege_index = 1;
for (std::vector<Glib::ustring>::iterator i = presets.begin(); i != presets.end(); ++i, ++ege_index) {
@@ -233,22 +243,24 @@ static void sp_dcc_build_presets_list(GObject *tbl)
// iterate over all presets to populate the list
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- std::vector<Glib::ustring> presets = prefs->getAllDirs("/tools/calligraphic/preset");
+ std::vector<Glib::ustring> presets = get_presets_list();
int ii=1;
for (std::vector<Glib::ustring>::iterator i = presets.begin(); i != presets.end(); ++i) {
GtkTreeIter iter;
Glib::ustring preset_name = prefs->getString(*i + "/name");
- gtk_list_store_append( model, &iter );
- gtk_list_store_set( model, &iter, 0, _(preset_name.data()), 1, ii++, -1 );
+ if (!preset_name.empty()) {
+ gtk_list_store_append( model, &iter );
+ gtk_list_store_set( model, &iter, 0, _(preset_name.data()), 1, ii++, -1 );
+ }
}
- {
+/* {
GtkTreeIter iter;
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter, 0, _("Save..."), 1, ii, -1 );
g_object_set_data(tbl, "save_presets_index", GINT_TO_POINTER(ii));
- }
+ }*/
g_object_set_data(tbl, "presets_blocked", GINT_TO_POINTER(FALSE));
@@ -268,15 +280,25 @@ static void sp_dcc_save_profile(GtkWidget * /*widget*/, GObject *tbl)
return;
}
- CalligraphicProfileRename::show(desktop);
+ EgeSelectOneAction *sel = static_cast<EgeSelectOneAction *>(g_object_get_data(tbl, "profile_selector"));
+ //gint preset_index = ege_select_one_action_get_active( sel );
+ Glib::ustring current_profile_name = _("No preset");
+ if (ege_select_one_action_get_active_text( sel )) {
+ current_profile_name = ege_select_one_action_get_active_text( sel );
+ }
+
+ if (current_profile_name == _("No preset")) {
+ current_profile_name = "";
+ }
+ CalligraphicProfileRename::show(desktop, current_profile_name);
if ( !CalligraphicProfileRename::applied()) {
// dialog cancelled
update_presets_list (tbl);
return;
}
- Glib::ustring profile_name = CalligraphicProfileRename::getProfileName();
+ Glib::ustring new_profile_name = CalligraphicProfileRename::getProfileName();
- if (profile_name.empty()) {
+ if (new_profile_name.empty()) {
// empty name entered
update_presets_list (tbl);
return;
@@ -285,7 +307,7 @@ static void sp_dcc_save_profile(GtkWidget * /*widget*/, GObject *tbl)
g_object_set_data(tbl, "presets_blocked", GINT_TO_POINTER(TRUE));
// If there's a preset with the given name, find it and set save_path appropriately
- std::vector<Glib::ustring> presets = prefs->getAllDirs("/tools/calligraphic/preset");
+ std::vector<Glib::ustring> presets = get_presets_list();
int total_presets = presets.size();
int new_index = -1;
Glib::ustring save_path; // profile pref path without a trailing slash
@@ -293,13 +315,21 @@ static void sp_dcc_save_profile(GtkWidget * /*widget*/, GObject *tbl)
int temp_index = 0;
for (std::vector<Glib::ustring>::iterator i = presets.begin(); i != presets.end(); ++i, ++temp_index) {
Glib::ustring name = prefs->getString(*i + "/name");
- if (!name.empty() && profile_name == name) {
+ if (!name.empty() && (new_profile_name == name || current_profile_name == name)) {
new_index = temp_index;
save_path = *i;
break;
}
}
+
+ if ( CalligraphicProfileRename::deleted() && new_index != -1) {
+ prefs->remove(save_path);
+ g_object_set_data(tbl, "presets_blocked", GINT_TO_POINTER(FALSE));
+ sp_dcc_build_presets_list (tbl);
+ return;
+ }
+
if (new_index == -1) {
// no preset with this name, create
new_index = total_presets + 1;
@@ -327,7 +357,7 @@ static void sp_dcc_save_profile(GtkWidget * /*widget*/, GObject *tbl)
g_warning("Bad key when writing preset: %s\n", widget_name);
}
}
- prefs->setString(save_path + "/name", profile_name);
+ prefs->setString(save_path + "/name", new_profile_name);
g_object_set_data(tbl, "presets_blocked", GINT_TO_POINTER(FALSE));
sp_dcc_build_presets_list (tbl);
@@ -338,7 +368,7 @@ static void sp_ddc_change_profile(EgeSelectOneAction* act, GObject* tbl)
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
- gint preset_index = ege_select_one_action_get_active( act );
+ guint preset_index = ege_select_one_action_get_active( act );
// This is necessary because EgeSelectOneAction spams us with GObject "changed" signal calls
// even when the preset is not changed. It would be good to replace it with something more
// modern. Index 0 means "No preset", so we don't do anything.
@@ -346,6 +376,7 @@ static void sp_ddc_change_profile(EgeSelectOneAction* act, GObject* tbl)
return;
}
+/*
gint save_presets_index = GPOINTER_TO_INT(g_object_get_data(tbl, "save_presets_index"));
if (preset_index == save_presets_index) {
@@ -353,14 +384,19 @@ static void sp_ddc_change_profile(EgeSelectOneAction* act, GObject* tbl)
sp_dcc_save_profile(NULL, tbl);
return;
}
+*/
if (g_object_get_data(tbl, "presets_blocked")) {
return;
}
// preset_index is one-based so we subtract 1
- std::vector<Glib::ustring> presets = prefs->getAllDirs("/tools/calligraphic/preset");
- Glib::ustring preset_path = presets.at(preset_index - 1);
+ std::vector<Glib::ustring> presets = get_presets_list();
+
+ Glib::ustring preset_path = "";
+ if (preset_index - 1 < presets.size()) {
+ preset_path = presets.at(preset_index - 1);
+ }
if (!preset_path.empty()) {
g_object_set_data(tbl, "presets_blocked", GINT_TO_POINTER(TRUE)); //temporarily block the selector so no one will updadte it while we're reading it
@@ -391,9 +427,16 @@ static void sp_ddc_change_profile(EgeSelectOneAction* act, GObject* tbl)
}
}
g_object_set_data(tbl, "presets_blocked", GINT_TO_POINTER(FALSE));
+ } else {
+ ege_select_one_action_set_active(act, 0);
}
}
+static void sp_ddc_edit_profile(GtkAction * /*act*/, GObject* tbl)
+{
+ sp_dcc_save_profile(NULL, tbl);
+}
+
void sp_calligraphy_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder)
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
@@ -595,6 +638,18 @@ void sp_calligraphy_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions
g_signal_connect(G_OBJECT(act1), "changed", G_CALLBACK(sp_ddc_change_profile), holder);
gtk_action_group_add_action(mainActions, GTK_ACTION(act1));
}
+
+ /*calligraphic profile editor */
+ {
+ InkAction* inky = ink_action_new( "ProfileEditAction",
+ _("Add/Edit Profile"),
+ _("Add or edit calligraphic profile"),
+ GTK_STOCK_PROPERTIES,
+ Inkscape::ICON_SIZE_DECORATION );
+ g_object_set( inky, "short_label", _("Edit"), NULL );
+ g_signal_connect_after( G_OBJECT(inky), "activate", G_CALLBACK(sp_ddc_edit_profile), (GObject*)holder );
+ gtk_action_group_add_action( mainActions, GTK_ACTION(inky) );
+ }
}
}
diff --git a/src/widgets/eek-preview.cpp b/src/widgets/eek-preview.cpp
index 72db91373..535a5d101 100644
--- a/src/widgets/eek-preview.cpp
+++ b/src/widgets/eek-preview.cpp
@@ -296,15 +296,8 @@ static gboolean eek_preview_draw(GtkWidget* widget, cairo_t* cr)
GdkWindow *da_window = gtk_widget_get_window(GTK_WIDGET(da));
cairo_t *cr = gdk_cairo_create(da_window);
-#if GTK_CHECK_VERSION(2,24,0)
gint w = gdk_window_get_width(da_window);
gint h = gdk_window_get_height(da_window);
-#else
- gint w = 0;
- gint h = 0;
- gdk_drawable_get_size(da_window, &w, &h);
-#endif
-
if ((w != preview->_scaledW) || (h != preview->_scaledH)) {
if (preview->_scaled) {
diff --git a/src/widgets/font-selector.cpp b/src/widgets/font-selector.cpp
index c7f28fb9c..dde511612 100644
--- a/src/widgets/font-selector.cpp
+++ b/src/widgets/font-selector.cpp
@@ -218,16 +218,7 @@ static void sp_font_selector_init(SPFontSelector *fsel)
gtk_widget_show(hb);
gtk_box_pack_start(GTK_BOX(vb), hb, FALSE, FALSE, 0);
-/*
-This would introduce dependency on gtk version 2.24 which is currently not available in
-Trisquel GNU/Linux 4.5.1 (released on May 25th, 2011)
-This conditional and its #else block can be deleted in the future.
-*/
-#if GTK_CHECK_VERSION(2, 24,0)
fsel->size = gtk_combo_box_text_new_with_entry ();
-#else
- fsel->size = gtk_combo_box_entry_new_text ();
-#endif
sp_font_selector_set_size_tooltip(fsel);
gtk_widget_set_size_request(fsel->size, 90, -1);
@@ -346,11 +337,7 @@ static void sp_font_selector_set_sizes( SPFontSelector *fsel )
{
double size = sizes[n] / ratios[unit];
-#if GTK_CHECK_VERSION(2, 24,0)
gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT(fsel->size), Glib::ustring::format(size).c_str());
-#else
- gtk_combo_box_append_text (GTK_COMBO_BOX(fsel->size), Glib::ustring::format(size).c_str());
-#endif
}
}
@@ -358,11 +345,7 @@ static void sp_font_selector_set_sizes( SPFontSelector *fsel )
static void sp_font_selector_size_changed( GtkComboBox */*cbox*/, SPFontSelector *fsel )
{
char *text = NULL;
-#if GTK_CHECK_VERSION(2, 24,0)
text = gtk_combo_box_text_get_active_text (GTK_COMBO_BOX_TEXT (fsel->size));
-#else
- text = gtk_combo_box_get_active_text (GTK_COMBO_BOX (fsel->size));
-#endif
gfloat old_size = fsel->fontsize;
gchar *endptr;
diff --git a/src/widgets/gradient-selector.cpp b/src/widgets/gradient-selector.cpp
index 33388a0c1..89a891284 100644
--- a/src/widgets/gradient-selector.cpp
+++ b/src/widgets/gradient-selector.cpp
@@ -53,6 +53,8 @@ static void sp_gradient_selector_dispose(GObject *object);
static void sp_gradient_selector_vector_set (SPGradientVectorSelector *gvs, SPGradient *gr, SPGradientSelector *sel);
static void sp_gradient_selector_edit_vector_clicked (GtkWidget *w, SPGradientSelector *sel);
static void sp_gradient_selector_add_vector_clicked (GtkWidget *w, SPGradientSelector *sel);
+static void sp_gradient_selector_delete_vector_clicked (GtkWidget *w, SPGradientSelector *sel);
+
static GtkVBoxClass *parent_class;
static guint signals[LAST_SIGNAL] = {0};
@@ -125,6 +127,7 @@ static void sp_gradient_selector_init(SPGradientSelector *sel)
sel->safelyInit = true;
sel->blocked = false;
new (&sel->nonsolid) std::vector<GtkWidget*>();
+ new (&sel->swatch_widgets) std::vector<GtkWidget*>();
sel->mode = SPGradientSelector::MODE_LINEAR;
@@ -189,7 +192,7 @@ static void sp_gradient_selector_init(SPGradientSelector *sel)
#else
GtkWidget *hb = gtk_hbox_new( FALSE, 2 );
#endif
- sel->nonsolid.push_back(hb);
+ //sel->nonsolid.push_back(hb);
gtk_box_pack_start( GTK_BOX(sel), hb, FALSE, FALSE, 0 );
sel->add = gtk_button_new ();
@@ -213,6 +216,16 @@ static void sp_gradient_selector_init(SPGradientSelector *sel)
gtk_button_set_relief(GTK_BUTTON(sel->edit), GTK_RELIEF_NONE);
gtk_widget_set_tooltip_text( sel->edit, _("Edit gradient"));
+ sel->del = gtk_button_new ();
+ gtk_button_set_image((GtkButton*)sel->del , gtk_image_new_from_stock ( GTK_STOCK_REMOVE, GTK_ICON_SIZE_SMALL_TOOLBAR ) );
+
+ sel->swatch_widgets.push_back(sel->del);
+ gtk_box_pack_start (GTK_BOX (hb), sel->del, FALSE, FALSE, 0);
+ g_signal_connect (G_OBJECT (sel->del), "clicked", G_CALLBACK (sp_gradient_selector_delete_vector_clicked), sel);
+ gtk_widget_set_sensitive (sel->del, FALSE);
+ gtk_button_set_relief(GTK_BUTTON(sel->del), GTK_RELIEF_NONE);
+ gtk_widget_set_tooltip_text( sel->del, _("Delete swatch"));
+
gtk_widget_show_all(hb);
@@ -226,6 +239,7 @@ static void sp_gradient_selector_dispose(GObject *object)
sel->safelyInit = false;
using std::vector;
sel->nonsolid.~vector<GtkWidget*>();
+ sel->swatch_widgets.~vector<GtkWidget*>();
}
if (sel->icon_renderer) {
@@ -265,9 +279,28 @@ void SPGradientSelector::setMode(SelectorMode mode)
{
gtk_widget_hide(*it);
}
+ for (std::vector<GtkWidget*>::iterator it = swatch_widgets.begin(); it != swatch_widgets.end(); ++it)
+ {
+ gtk_widget_show_all(*it);
+ }
+
+ Gtk::TreeView::Column* icon_column = treeview->get_column(0);
+ icon_column->set_title(_("Swatch"));
SPGradientVectorSelector* vs = SP_GRADIENT_VECTOR_SELECTOR(vectors);
vs->setSwatched();
+ } else {
+ for (std::vector<GtkWidget*>::iterator it = nonsolid.begin(); it != nonsolid.end(); ++it)
+ {
+ gtk_widget_show_all(*it);
+ }
+ for (std::vector<GtkWidget*>::iterator it = swatch_widgets.begin(); it != swatch_widgets.end(); ++it)
+ {
+ gtk_widget_hide(*it);
+ }
+ Gtk::TreeView::Column* icon_column = treeview->get_column(0);
+ icon_column->set_title(_("Gradient"));
+
}
}
}
@@ -412,6 +445,17 @@ void SPGradientSelector::setVector(SPDocument *doc, SPGradient *vector)
gtk_widget_show_all(*it);
}
}
+ } else if (mode != MODE_SWATCH) {
+
+ for (std::vector<GtkWidget*>::iterator it = swatch_widgets.begin(); it != swatch_widgets.end(); ++it)
+ {
+ gtk_widget_hide(*it);
+ }
+ for (std::vector<GtkWidget*>::iterator it = nonsolid.begin(); it != nonsolid.end(); ++it)
+ {
+ gtk_widget_show_all(*it);
+ }
+
}
if (edit) {
@@ -420,6 +464,9 @@ void SPGradientSelector::setVector(SPDocument *doc, SPGradient *vector)
if (add) {
gtk_widget_set_sensitive(add, TRUE);
}
+ if (del) {
+ gtk_widget_set_sensitive(del, TRUE);
+ }
} else {
if (edit) {
gtk_widget_set_sensitive(edit, FALSE);
@@ -427,6 +474,9 @@ void SPGradientSelector::setVector(SPDocument *doc, SPGradient *vector)
if (add) {
gtk_widget_set_sensitive(add, (doc != NULL));
}
+ if (del) {
+ gtk_widget_set_sensitive(del, FALSE);
+ }
}
}
@@ -451,6 +501,29 @@ sp_gradient_selector_vector_set (SPGradientVectorSelector *gvs, SPGradient *gr,
}
}
+
+static void
+sp_gradient_selector_delete_vector_clicked (GtkWidget */*w*/, SPGradientSelector *sel)
+{
+ const Glib::RefPtr<Gtk::TreeSelection> selection = sel->treeview->get_selection();
+ if (!selection) {
+ return;
+ }
+
+ SPGradient *obj = NULL;
+ /* Single selection */
+ Gtk::TreeModel::iterator iter = selection->get_selected();
+ if ( iter ) {
+ Gtk::TreeModel::Row row = *iter;
+ obj = row[sel->columns->data];
+ }
+
+ if (obj) {
+ sp_gradient_unset_swatch(SP_ACTIVE_DESKTOP, obj->getId());
+ }
+
+}
+
static void
sp_gradient_selector_edit_vector_clicked (GtkWidget */*w*/, SPGradientSelector *sel)
{
diff --git a/src/widgets/gradient-selector.h b/src/widgets/gradient-selector.h
index 01c18a48d..ea83ff819 100644
--- a/src/widgets/gradient-selector.h
+++ b/src/widgets/gradient-selector.h
@@ -97,6 +97,7 @@ struct SPGradientSelector {
/* Editing buttons */
GtkWidget *edit;
GtkWidget *add;
+ GtkWidget *del;
GtkWidget *merge;
/* Position widget */
@@ -106,6 +107,7 @@ struct SPGradientSelector {
bool blocked;
std::vector<GtkWidget*> nonsolid;
+ std::vector<GtkWidget*> swatch_widgets;
void setMode(SelectorMode mode);
void setUnits(SPGradientUnits units);
diff --git a/src/widgets/icon.cpp b/src/widgets/icon.cpp
index c7ddc2352..d3b7e2dbb 100644
--- a/src/widgets/icon.cpp
+++ b/src/widgets/icon.cpp
@@ -40,15 +40,6 @@
#include "icon.h"
-// Bring in work-around for Glib versions missing GStatBuf
-#if !GLIB_CHECK_VERSION(2,25,0)
-#if defined (_MSC_VER) && !defined(_WIN64)
-typedef struct _stat32 GStatBuf;
-#else //defined (_MSC_VER) && !defined(_WIN64)
-typedef struct stat GStatBuf;
-#endif //defined (_MSC_VER) && !defined(_WIN64)
-#endif //!GLIB_CHECK_VERSION(2,25,0)
-
struct IconImpl {
static void classInit(SPIconClass *klass);
static void init(SPIcon *icon);
diff --git a/src/widgets/ruler.cpp b/src/widgets/ruler.cpp
index 72c839b19..5104d5a9d 100644
--- a/src/widgets/ruler.cpp
+++ b/src/widgets/ruler.cpp
@@ -690,7 +690,14 @@ static void sp_ruler_real_draw_pos(SPRuler *ruler,
y = ROUND ((priv->position - priv->lower) * increment) + (ythickness - bs_height) / 2 - 1;
}
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkStyleContext *sc = gtk_widget_get_style_context(widget);
+ GdkRGBA color;
+ gtk_style_context_get_color(sc, gtk_widget_get_state_flags(widget), &color);
+ gdk_cairo_set_source_rgba(cr, &color);
+#else
gdk_cairo_set_source_color(cr, &style->fg[gtk_widget_get_state(widget)]);
+#endif
cairo_move_to (cr, x, y);
diff --git a/src/widgets/sp-color-gtkselector.cpp b/src/widgets/sp-color-gtkselector.cpp
deleted file mode 100644
index b19685c66..000000000
--- a/src/widgets/sp-color-gtkselector.cpp
+++ /dev/null
@@ -1,153 +0,0 @@
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-#include <glibmm/i18n.h>
-#include "sp-color-gtkselector.h"
-
-
-static void sp_color_gtkselector_class_init (SPColorGtkselectorClass *klass);
-static void sp_color_gtkselector_init (SPColorGtkselector *csel);
-static void sp_color_gtkselector_dispose(GObject *object);
-
-static void sp_color_gtkselector_show_all (GtkWidget *widget);
-static void sp_color_gtkselector_hide(GtkWidget *widget);
-
-
-static SPColorSelectorClass *parent_class;
-
-#define XPAD 4
-#define YPAD 1
-
-GType
-sp_color_gtkselector_get_type (void)
-{
- static GType type = 0;
- if (!type) {
- static const GTypeInfo info = {
- sizeof (SPColorGtkselectorClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) sp_color_gtkselector_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (SPColorGtkselector),
- 0, /* n_preallocs */
- (GInstanceInitFunc) sp_color_gtkselector_init,
- NULL,
- };
-
- type = g_type_register_static (SP_TYPE_COLOR_SELECTOR,
- "SPColorGtkselector",
- &info,
- static_cast< GTypeFlags > (0) );
- }
- return type;
-}
-
-static void
-sp_color_gtkselector_class_init (SPColorGtkselectorClass *klass)
-{
- static const gchar* nameset[] = {N_("System"), 0};
- GObjectClass *object_class = (GObjectClass *) klass;
- GtkWidgetClass *widget_class;
- SPColorSelectorClass *selector_class;
-
- widget_class = (GtkWidgetClass *) klass;
- selector_class = SP_COLOR_SELECTOR_CLASS (klass);
-
- parent_class = SP_COLOR_SELECTOR_CLASS (g_type_class_peek_parent (klass));
-
- selector_class->name = nameset;
- selector_class->submode_count = 1;
-
- object_class->dispose = sp_color_gtkselector_dispose;
-
- widget_class->show_all = sp_color_gtkselector_show_all;
- widget_class->hide = sp_color_gtkselector_hide;
-}
-
-void sp_color_gtkselector_init (SPColorGtkselector *csel)
-{
- SP_COLOR_SELECTOR(csel)->base = new ColorGtkselector( SP_COLOR_SELECTOR(csel) );
-
- if ( SP_COLOR_SELECTOR(csel)->base )
- {
- SP_COLOR_SELECTOR(csel)->base->init();
- }
-}
-
-void ColorGtkselector::init()
-{
- GtkWidget *gtksel = gtk_color_selection_new();
- gtk_widget_show (gtksel);
- _gtkThing = GTK_COLOR_SELECTION (gtksel);
- gtk_box_pack_start (GTK_BOX (_csel), gtksel, TRUE, TRUE, 0);
-
- _sigId = g_signal_connect(gtksel, "color-changed", G_CALLBACK( _gtkChanged ), _csel);
-}
-
-static void sp_color_gtkselector_dispose(GObject *object)
-{
- if (((GObjectClass *) (parent_class))->dispose)
- (* ((GObjectClass *) (parent_class))->dispose) (object);
-}
-
-static void
-sp_color_gtkselector_show_all (GtkWidget *widget)
-{
- gtk_widget_show (widget);
-}
-
-static void sp_color_gtkselector_hide(GtkWidget *widget)
-{
- gtk_widget_hide(widget);
-}
-
-GtkWidget *
-sp_color_gtkselector_new( GType )
-{
- SPColorGtkselector *csel = SP_COLOR_GTKSELECTOR(g_object_new (SP_TYPE_COLOR_GTKSELECTOR, NULL));
-
- return GTK_WIDGET (csel);
-}
-
-ColorGtkselector::ColorGtkselector( SPColorSelector* csel )
- : ColorSelector( csel ),
- _gtkThing(0)
-{
-}
-
-ColorGtkselector::~ColorGtkselector()
-{
-}
-
-void ColorGtkselector::_colorChanged()
-{
- GdkColor gcolor;
-
- gcolor.pixel = 0;
- gcolor.red = static_cast< guint16 >(_color.v.c[0] * 65535);
- gcolor.green = static_cast< guint16 >(_color.v.c[1] * 65535);
- gcolor.blue = static_cast< guint16 >(_color.v.c[2] * 65535);
-
-// g_message( "***** _colorChanged %04x %04x %04x", gcolor.red, gcolor.green, gcolor.blue );
- g_signal_handler_block( _gtkThing, _sigId );
- gtk_color_selection_set_current_alpha( _gtkThing, static_cast<guint16>(65535 * _alpha) );
- gtk_color_selection_set_current_color( _gtkThing, &gcolor );
- g_signal_handler_unblock(_gtkThing, _sigId );
-}
-
-void ColorGtkselector::_gtkChanged( GtkColorSelection *colorselection, SPColorGtkselector *gtksel )
-{
- GdkColor color;
- gtk_color_selection_get_current_color (colorselection, &color);
-
- guint16 alpha = gtk_color_selection_get_current_alpha (colorselection);
-
- SPColor ourColor( (color.red / 65535.0), (color.green / 65535.0), (color.blue / 65535.0) );
-
-// g_message( "***** _gtkChanged %04x %04x %04x", color.red, color.green, color.blue );
-
- ColorGtkselector* gtkInst = static_cast<ColorGtkselector *>(SP_COLOR_SELECTOR(gtksel)->base);
- gtkInst->_updateInternals( ourColor, static_cast< gfloat > (alpha) / 65535.0, gtk_color_selection_is_adjusting(colorselection) );
-}
diff --git a/src/widgets/sp-color-gtkselector.h b/src/widgets/sp-color-gtkselector.h
deleted file mode 100644
index 3142406c1..000000000
--- a/src/widgets/sp-color-gtkselector.h
+++ /dev/null
@@ -1,55 +0,0 @@
-#ifndef SEEN_SP_COLOR_GTKSELECTOR_H
-#define SEEN_SP_COLOR_GTKSELECTOR_H
-
-#include <gtk/gtk.h>
-#include "../color.h"
-#include "sp-color-selector.h"
-
-#include <glib.h>
-
-
-
-struct SPColorGtkselector;
-
-
-
-class ColorGtkselector: public ColorSelector
-{
-public:
- ColorGtkselector( SPColorSelector* csel );
- virtual ~ColorGtkselector();
-
- virtual void init();
-
-protected:
- static void _gtkChanged( GtkColorSelection *colorselection, SPColorGtkselector *gtksel );
-
- virtual void _colorChanged();
-
- GtkColorSelection* _gtkThing;
- gulong _sigId;
-};
-
-
-
-#define SP_TYPE_COLOR_GTKSELECTOR (sp_color_gtkselector_get_type ())
-#define SP_COLOR_GTKSELECTOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_COLOR_GTKSELECTOR, SPColorGtkselector))
-#define SP_COLOR_GTKSELECTOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SP_TYPE_COLOR_GTKSELECTOR, SPColorGtkselectorClass))
-#define SP_IS_COLOR_GTKSELECTOR(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_COLOR_GTKSELECTOR))
-#define SP_IS_COLOR_GTKSELECTOR_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SP_TYPE_COLOR_GTKSELECTOR))
-
-struct SPColorGtkselector {
- SPColorSelector base;
-};
-
-struct SPColorGtkselectorClass {
- SPColorSelectorClass parent_class;
-};
-
-GType sp_color_gtkselector_get_type (void);
-
-GtkWidget *sp_color_gtkselector_new( GType selector_type );
-
-
-
-#endif // SEEN_SP_COLOR_GTKSELECTOR_H
diff --git a/src/widgets/sp-color-icc-selector.cpp b/src/widgets/sp-color-icc-selector.cpp
index b021ac43d..80974c2e4 100644
--- a/src/widgets/sp-color-icc-selector.cpp
+++ b/src/widgets/sp-color-icc-selector.cpp
@@ -272,13 +272,17 @@ void getThings( Inkscape::ColorProfile *prof, gchar const**& namers, gchar const
void ColorICCSelector::init()
{
- GtkWidget *t;
gint row = 0;
_updating = FALSE;
_dragging = FALSE;
- t = gtk_table_new (5, 3, FALSE);
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkWidget *t = gtk_grid_new();
+#else
+ GtkWidget *t = gtk_table_new(5, 3, FALSE);
+#endif
+
gtk_widget_show (t);
gtk_box_pack_start (GTK_BOX (_csel), t, TRUE, TRUE, 4);
@@ -299,7 +303,16 @@ void ColorICCSelector::init()
gtk_widget_set_tooltip_text( _fixupBtn, _("Fix RGB fallback to match icc-color() value.") );
//gtk_misc_set_alignment( GTK_MISC (_fixupBtn), 1.0, 0.5 );
gtk_widget_show( _fixupBtn );
+
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_widget_set_margin_left(_fixupBtn, XPAD);
+ gtk_widget_set_margin_right(_fixupBtn, XPAD);
+ gtk_widget_set_margin_top(_fixupBtn, YPAD);
+ gtk_widget_set_margin_bottom(_fixupBtn, YPAD);
+ gtk_grid_attach(GTK_GRID(t), _fixupBtn, 0, row, 1, 1);
+#else
gtk_table_attach( GTK_TABLE (t), _fixupBtn, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, XPAD, YPAD );
+#endif
// Combobox and store with 2 columns : label (0) and full name (1)
GtkListStore *store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
@@ -315,7 +328,16 @@ void ColorICCSelector::init()
gtk_widget_show( _profileSel );
gtk_combo_box_set_active( GTK_COMBO_BOX(_profileSel), 0 );
+
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_widget_set_margin_left(_profileSel, XPAD);
+ gtk_widget_set_margin_right(_profileSel, XPAD);
+ gtk_widget_set_margin_top(_profileSel, YPAD);
+ gtk_widget_set_margin_bottom(_profileSel, YPAD);
+ gtk_grid_attach(GTK_GRID(t), _profileSel, 1, row, 1, 1);
+#else
gtk_table_attach( GTK_TABLE(t), _profileSel, 1, 2, row, row + 1, GTK_FILL, GTK_FILL, XPAD, YPAD );
+#endif
#if defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
_profChangedID = g_signal_connect( G_OBJECT(_profileSel), "changed", G_CALLBACK(_profileSelected), (gpointer)this );
@@ -342,7 +364,16 @@ void ColorICCSelector::init()
#endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
gtk_misc_set_alignment( GTK_MISC (_fooLabel[i]), 1.0, 0.5 );
gtk_widget_show( _fooLabel[i] );
+
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_widget_set_margin_left(_fooLabel[i], XPAD);
+ gtk_widget_set_margin_right(_fooLabel[i], XPAD);
+ gtk_widget_set_margin_top(_fooLabel[i], YPAD);
+ gtk_widget_set_margin_bottom(_fooLabel[i], YPAD);
+ gtk_grid_attach(GTK_GRID(t), _fooLabel[i], 0, row, 1, 1);
+#else
gtk_table_attach( GTK_TABLE (t), _fooLabel[i], 0, 1, row, row + 1, GTK_FILL, GTK_FILL, XPAD, YPAD );
+#endif
/* Adjustment */
gdouble step = static_cast<gdouble>(_fooScales[i]) / 100.0;
@@ -358,7 +389,17 @@ void ColorICCSelector::init()
gtk_widget_set_tooltip_text( _fooSlider[i], "." );
#endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
gtk_widget_show( _fooSlider[i] );
- gtk_table_attach( GTK_TABLE (t), _fooSlider[i], 1, 2, row, row + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)GTK_FILL, XPAD, YPAD );
+
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_widget_set_margin_left(_fooSlider[i], XPAD);
+ gtk_widget_set_margin_right(_fooSlider[i], XPAD);
+ gtk_widget_set_margin_top(_fooSlider[i], YPAD);
+ gtk_widget_set_margin_bottom(_fooSlider[i], YPAD);
+ gtk_widget_set_hexpand(_fooSlider[i], TRUE);
+ gtk_grid_attach(GTK_GRID(t), _fooSlider[i], 1, row, 1, 1);
+#else
+ gtk_table_attach( GTK_TABLE (t), _fooSlider[i], 1, 2, row, row + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), GTK_FILL, XPAD, YPAD );
+#endif
_fooBtn[i] = gtk_spin_button_new( _fooAdj[i], step, digits );
#if defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
@@ -369,7 +410,18 @@ void ColorICCSelector::init()
sp_dialog_defocus_on_enter( _fooBtn[i] );
gtk_label_set_mnemonic_widget( GTK_LABEL(_fooLabel[i]), _fooBtn[i] );
gtk_widget_show( _fooBtn[i] );
+
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_widget_set_margin_left(_fooBtn[i], XPAD);
+ gtk_widget_set_margin_right(_fooBtn[i], XPAD);
+ gtk_widget_set_margin_top(_fooBtn[i], YPAD);
+ gtk_widget_set_margin_bottom(_fooBtn[i], YPAD);
+ gtk_widget_set_halign(_fooBtn[i], GTK_ALIGN_CENTER);
+ gtk_widget_set_valign(_fooBtn[i], GTK_ALIGN_CENTER);
+ gtk_grid_attach(GTK_GRID(t), _fooBtn[i], 2, row, 1, 1);
+#else
gtk_table_attach( GTK_TABLE (t), _fooBtn[i], 2, 3, row, row + 1, (GtkAttachOptions)0, (GtkAttachOptions)0, XPAD, YPAD );
+#endif
_fooMap[i] = g_new( guchar, 4 * 1024 );
memset( _fooMap[i], 0x0ff, 1024 * 4 );
@@ -389,7 +441,16 @@ void ColorICCSelector::init()
_label = gtk_label_new_with_mnemonic (_("_A:"));
gtk_misc_set_alignment (GTK_MISC (_label), 1.0, 0.5);
gtk_widget_show (_label);
+
+#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_grid_attach(GTK_GRID(t), _label, 0, row, 1, 1);
+#else
gtk_table_attach (GTK_TABLE (t), _label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, XPAD, YPAD);
+#endif
/* Adjustment */
_adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, 255.0, 1.0, 10.0, 10.0);
@@ -398,7 +459,17 @@ void ColorICCSelector::init()
_slider = sp_color_slider_new (_adj);
gtk_widget_set_tooltip_text (_slider, _("Alpha (opacity)"));
gtk_widget_show (_slider);
- gtk_table_attach (GTK_TABLE (t), _slider, 1, 2, row, row + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)GTK_FILL, XPAD, YPAD);
+
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_widget_set_margin_left(_slider, XPAD);
+ gtk_widget_set_margin_right(_slider, XPAD);
+ gtk_widget_set_margin_top(_slider, YPAD);
+ gtk_widget_set_margin_bottom(_slider, YPAD);
+ gtk_widget_set_hexpand(_slider, TRUE);
+ gtk_grid_attach(GTK_GRID(t), _slider, 1, row, 1, 1);
+#else
+ gtk_table_attach (GTK_TABLE (t), _slider, 1, 2, row, row + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), GTK_FILL, XPAD, YPAD);
+#endif
sp_color_slider_set_colors( SP_COLOR_SLIDER( _slider ),
SP_RGBA32_F_COMPOSE( 1.0, 1.0, 1.0, 0.0 ),
@@ -412,7 +483,18 @@ void ColorICCSelector::init()
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_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);
+#else
gtk_table_attach (GTK_TABLE (t), _sbtn, 2, 3, row, row + 1, (GtkAttachOptions)0, (GtkAttachOptions)0, XPAD, YPAD);
+#endif
/* Signals */
g_signal_connect (G_OBJECT (_adj), "value_changed",
diff --git a/src/widgets/sp-color-notebook.cpp b/src/widgets/sp-color-notebook.cpp
index 0856fd86b..fa586ce5f 100644
--- a/src/widgets/sp-color-notebook.cpp
+++ b/src/widgets/sp-color-notebook.cpp
@@ -195,7 +195,6 @@ sp_color_notebook_init (SPColorNotebook *colorbook)
void ColorNotebook::init()
{
- GtkWidget* table = 0;
guint row = 0;
guint i = 0;
guint j = 0;
@@ -279,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>(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();
@@ -349,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
@@ -376,7 +401,6 @@ 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)
@@ -411,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);
diff --git a/src/widgets/sp-color-scales.cpp b/src/widgets/sp-color-scales.cpp
index 159fc96e5..95c6d341d 100644
--- a/src/widgets/sp-color-scales.cpp
+++ b/src/widgets/sp-color-scales.cpp
@@ -133,13 +133,16 @@ void sp_color_scales_init (SPColorScales *cs)
void ColorScales::init()
{
- GtkWidget *t;
gint i;
_updating = FALSE;
_dragging = FALSE;
- t = gtk_table_new (5, 3, FALSE);
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkWidget *t = gtk_grid_new();
+#else
+ GtkWidget *t = gtk_table_new (5, 3, FALSE);
+#endif
gtk_widget_show (t);
gtk_box_pack_start (GTK_BOX (_csel), t, TRUE, TRUE, 4);
@@ -149,20 +152,51 @@ void ColorScales::init()
_l[i] = gtk_label_new("");
gtk_misc_set_alignment (GTK_MISC (_l[i]), 1.0, 0.5);
gtk_widget_show (_l[i]);
+
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_widget_set_margin_left(_l[i], XPAD);
+ gtk_widget_set_margin_right(_l[i], XPAD);
+ gtk_widget_set_margin_top(_l[i], YPAD);
+ gtk_widget_set_margin_bottom(_l[i], YPAD);
+ gtk_grid_attach(GTK_GRID(t), _l[i], 0, i, 1, 1);
+#else
gtk_table_attach (GTK_TABLE (t), _l[i], 0, 1, i, i + 1, GTK_FILL, GTK_FILL, XPAD, YPAD);
+#endif
+
/* Adjustment */
_a[i] = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, _rangeLimit, 1.0, 10.0, 10.0);
/* Slider */
_s[i] = sp_color_slider_new (_a[i]);
gtk_widget_show (_s[i]);
- gtk_table_attach (GTK_TABLE (t), _s[i], 1, 2, i, i + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)GTK_FILL, XPAD, YPAD);
+
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_widget_set_margin_left(_s[i], XPAD);
+ gtk_widget_set_margin_right(_s[i], XPAD);
+ gtk_widget_set_margin_top(_s[i], YPAD);
+ gtk_widget_set_margin_bottom(_s[i], YPAD);
+ gtk_widget_set_hexpand(_s[i], TRUE);
+ gtk_grid_attach(GTK_GRID(t), _s[i], 1, i, 1, 1);
+#else
+ gtk_table_attach (GTK_TABLE (t), _s[i], 1, 2, i, i + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), GTK_FILL, XPAD, YPAD);
+#endif
/* Spinbutton */
_b[i] = gtk_spin_button_new (GTK_ADJUSTMENT (_a[i]), 1.0, 0);
sp_dialog_defocus_on_enter (_b[i]);
gtk_label_set_mnemonic_widget (GTK_LABEL(_l[i]), _b[i]);
gtk_widget_show (_b[i]);
+
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_widget_set_margin_left(_b[i], XPAD);
+ gtk_widget_set_margin_right(_b[i], XPAD);
+ gtk_widget_set_margin_top(_b[i], YPAD);
+ gtk_widget_set_margin_bottom(_b[i], YPAD);
+ gtk_widget_set_halign(_b[i], GTK_ALIGN_CENTER);
+ gtk_widget_set_valign(_b[i], GTK_ALIGN_CENTER);
+ gtk_grid_attach(GTK_GRID(t), _b[i], 2, i, 1, 1);
+#else
gtk_table_attach (GTK_TABLE (t), _b[i], 2, 3, i, i + 1, (GtkAttachOptions)0, (GtkAttachOptions)0, XPAD, YPAD);
+#endif
/* Attach channel value to adjustment */
g_object_set_data (G_OBJECT (_a[i]), "channel", GINT_TO_POINTER (i));
diff --git a/src/widgets/sp-color-slider.cpp b/src/widgets/sp-color-slider.cpp
index 37b9e022a..3ba748f2b 100644
--- a/src/widgets/sp-color-slider.cpp
+++ b/src/widgets/sp-color-slider.cpp
@@ -648,13 +648,22 @@ static gboolean sp_color_slider_draw(GtkWidget *widget, cairo_t *cr)
gint w = ARROW_SIZE;
cairo_set_line_width(cr, 1.0);
+#if GTK_CHECK_VERSION(3,0,0)
+ GdkRGBA white = {1,1,1,1};
+ GdkRGBA black = {0,0,0,1};
+#else
GdkColor white, black;
gdk_color_parse("#fff", &white);
gdk_color_parse("#000", &black);
+#endif
while ( w > 0 )
{
+#if GTK_CHECK_VERSION(3,0,0)
+ gdk_cairo_set_source_rgba(cr, &white);
+#else
gdk_cairo_set_source_color(cr, &white);
+#endif
cairo_move_to(cr, x - 0.5, y1 + 0.5);
cairo_line_to(cr, x + w - 1 + 0.5, y1 + 0.5);
cairo_move_to(cr, x - 0.5, y2 + 0.5);
@@ -664,7 +673,11 @@ static gboolean sp_color_slider_draw(GtkWidget *widget, cairo_t *cr)
x++;
if ( w > 0 )
{
+#if GTK_CHECK_VERSION(3,0,0)
+ gdk_cairo_set_source_rgba(cr, &black);
+#else
gdk_cairo_set_source_color(cr, &black);
+#endif
cairo_move_to(cr, x - 0.5, y1 + 0.5);
cairo_line_to(cr, x + w - 1 + 0.5, y1 + 0.5);
cairo_move_to(cr, x - 0.5, y2 + 0.5);
diff --git a/src/widgets/sp-color-wheel-selector.cpp b/src/widgets/sp-color-wheel-selector.cpp
index fe168b403..a979a168a 100644
--- a/src/widgets/sp-color-wheel-selector.cpp
+++ b/src/widgets/sp-color-wheel-selector.cpp
@@ -146,13 +146,17 @@ static void handleWheelAllocation(GtkHSV *hsv, GtkAllocation *allocation, gpoint
void ColorWheelSelector::init()
{
- GtkWidget *t;
gint row = 0;
_updating = FALSE;
_dragging = FALSE;
- t = gtk_table_new (5, 3, FALSE);
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkWidget *t = gtk_grid_new();
+#else
+ GtkWidget *t = gtk_table_new (5, 3, FALSE);
+#endif
+
gtk_widget_show (t);
gtk_box_pack_start (GTK_BOX (_csel), t, TRUE, TRUE, 0);
@@ -162,7 +166,16 @@ void ColorWheelSelector::init()
_wheel = gtk_hsv_new();
gtk_hsv_set_metrics( GTK_HSV(_wheel), 48, 8 );
gtk_widget_show( _wheel );
- gtk_table_attach( GTK_TABLE(t), _wheel, 0, 3, row, row + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), 0, 0);
+
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_widget_set_halign(_wheel, GTK_ALIGN_FILL);
+ 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);
+#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);
+#endif
row++;
@@ -170,7 +183,18 @@ void ColorWheelSelector::init()
_label = gtk_label_new_with_mnemonic (_("_A:"));
gtk_misc_set_alignment (GTK_MISC (_label), 1.0, 0.5);
gtk_widget_show (_label);
+
+#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);
+#else
gtk_table_attach (GTK_TABLE (t), _label, 0, 1, row, row + 1, GTK_FILL, GTK_FILL, XPAD, YPAD);
+#endif
/* Adjustment */
_adj = (GtkAdjustment *) gtk_adjustment_new (0.0, 0.0, 255.0, 1.0, 10.0, 10.0);
@@ -179,7 +203,19 @@ void ColorWheelSelector::init()
_slider = sp_color_slider_new (_adj);
gtk_widget_set_tooltip_text (_slider, _("Alpha (opacity)"));
gtk_widget_show (_slider);
- gtk_table_attach (GTK_TABLE (t), _slider, 1, 2, row, row + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), (GtkAttachOptions)GTK_FILL, XPAD, YPAD);
+
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_widget_set_margin_left(_slider, XPAD);
+ gtk_widget_set_margin_right(_slider, XPAD);
+ gtk_widget_set_margin_top(_slider, YPAD);
+ gtk_widget_set_margin_bottom(_slider, YPAD);
+ gtk_widget_set_hexpand(_slider, TRUE);
+ gtk_widget_set_halign(_slider, GTK_ALIGN_FILL);
+ gtk_widget_set_valign(_slider, GTK_ALIGN_FILL);
+ gtk_grid_attach(GTK_GRID(t), _slider, 1, row, 1, 1);
+#else
+ gtk_table_attach(GTK_TABLE (t), _slider, 1, 2, row, row + 1, (GtkAttachOptions)(GTK_EXPAND | GTK_FILL), GTK_FILL, XPAD, YPAD);
+#endif
sp_color_slider_set_colors (SP_COLOR_SLIDER (_slider),
SP_RGBA32_F_COMPOSE (1.0, 1.0, 1.0, 0.0),
@@ -193,7 +229,18 @@ void ColorWheelSelector::init()
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_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);
+#else
gtk_table_attach (GTK_TABLE (t), _sbtn, 2, 3, row, row + 1, (GtkAttachOptions)0, (GtkAttachOptions)0, XPAD, YPAD);
+#endif
/* Signals */
g_signal_connect (G_OBJECT (_adj), "value_changed",
diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp
index b758e4f0f..a5e929c7d 100644
--- a/src/widgets/toolbox.cpp
+++ b/src/widgets/toolbox.cpp
@@ -407,6 +407,7 @@ static gchar const * ui_descr =
" <toolbar name='CalligraphyToolbar'>"
" <separator />"
" <toolitem action='SetProfileAction'/>"
+ " <toolitem action='ProfileEditAction'/>"
" <separator />"
" <toolitem action='CalligraphyWidthAction' />"
" <toolitem action='PressureAction' />"