summaryrefslogtreecommitdiffstats
path: root/src/widgets
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2014-11-23 23:36:49 +0000
committerJabiertxof <jtx@jtx.marker.es>2014-11-23 23:36:49 +0000
commit0969085ddf607a7a98cf7fd6d9b10da5fbebe62d (patch)
tree59b2bc9ed3412ab2de4c703ef30342dfe2401704 /src/widgets
parentrefactor from lastApplied (diff)
parentFixed a bug pointed by suv running from comand line, also removed another des... (diff)
downloadinkscape-0969085ddf607a7a98cf7fd6d9b10da5fbebe62d.tar.gz
inkscape-0969085ddf607a7a98cf7fd6d9b10da5fbebe62d.zip
fixing to trunk
(bzr r12588.1.34)
Diffstat (limited to '')
-rw-r--r--src/widgets/CMakeLists.txt10
-rw-r--r--src/widgets/Makefile_insert10
-rw-r--r--src/widgets/arc-toolbar.cpp28
-rw-r--r--src/widgets/box3d-toolbar.cpp28
-rw-r--r--src/widgets/button.cpp381
-rw-r--r--src/widgets/button.h31
-rw-r--r--src/widgets/calligraphy-toolbar.cpp6
-rw-r--r--src/widgets/connector-toolbar.cpp4
-rw-r--r--src/widgets/dash-selector.cpp2
-rw-r--r--src/widgets/desktop-widget.cpp9
-rw-r--r--src/widgets/dropper-toolbar.cpp4
-rw-r--r--src/widgets/eek-preview.h1
-rw-r--r--src/widgets/ege-adjustment-action.cpp (renamed from src/ege-adjustment-action.cpp)2
-rw-r--r--src/widgets/ege-adjustment-action.h (renamed from src/ege-adjustment-action.h)2
-rw-r--r--src/widgets/ege-output-action.cpp (renamed from src/ege-output-action.cpp)2
-rw-r--r--src/widgets/ege-output-action.h (renamed from src/ege-output-action.h)2
-rw-r--r--src/widgets/ege-paint-def.cpp1
-rw-r--r--src/widgets/ege-select-one-action.cpp (renamed from src/ege-select-one-action.cpp)2
-rw-r--r--src/widgets/ege-select-one-action.h (renamed from src/ege-select-one-action.h)2
-rw-r--r--src/widgets/eraser-toolbar.cpp6
-rw-r--r--src/widgets/font-selector.cpp89
-rw-r--r--src/widgets/font-selector.h4
-rw-r--r--src/widgets/gradient-image.cpp56
-rw-r--r--src/widgets/gradient-image.h30
-rw-r--r--src/widgets/gradient-selector.cpp54
-rw-r--r--src/widgets/gradient-selector.h31
-rw-r--r--src/widgets/gradient-toolbar.cpp83
-rw-r--r--src/widgets/gradient-vector.cpp72
-rw-r--r--src/widgets/gradient-vector.h16
-rw-r--r--src/widgets/icon.cpp5
-rw-r--r--src/widgets/icon.h8
-rw-r--r--src/widgets/ink-action.cpp (renamed from src/ink-action.cpp)2
-rw-r--r--src/widgets/ink-action.h (renamed from src/ink-action.h)2
-rw-r--r--src/widgets/ink-comboboxentry-action.cpp (renamed from src/ink-comboboxentry-action.cpp)48
-rw-r--r--src/widgets/ink-comboboxentry-action.h (renamed from src/ink-comboboxentry-action.h)4
-rw-r--r--src/widgets/lpe-toolbar.cpp41
-rw-r--r--src/widgets/mappings.xml1
-rw-r--r--src/widgets/measure-toolbar.cpp4
-rw-r--r--src/widgets/mesh-toolbar.cpp88
-rw-r--r--src/widgets/node-toolbar.cpp53
-rw-r--r--src/widgets/paint-selector.cpp101
-rw-r--r--src/widgets/paint-selector.h20
-rw-r--r--src/widgets/paintbucket-toolbar.cpp6
-rw-r--r--src/widgets/pencil-toolbar.cpp17
-rw-r--r--src/widgets/rect-toolbar.cpp31
-rw-r--r--src/widgets/ruler.cpp2
-rw-r--r--src/widgets/select-toolbar.cpp6
-rw-r--r--src/widgets/sp-color-icc-selector.cpp45
-rw-r--r--src/widgets/sp-color-icc-selector.h2
-rw-r--r--src/widgets/sp-color-notebook.cpp50
-rw-r--r--src/widgets/sp-color-notebook.h4
-rw-r--r--src/widgets/sp-color-scales.cpp54
-rw-r--r--src/widgets/sp-color-scales.h5
-rw-r--r--src/widgets/sp-color-selector.cpp42
-rw-r--r--src/widgets/sp-color-selector.h12
-rw-r--r--src/widgets/sp-color-slider.cpp30
-rw-r--r--src/widgets/sp-color-slider.h7
-rw-r--r--src/widgets/sp-color-wheel-selector.cpp54
-rw-r--r--src/widgets/sp-color-wheel-selector.h5
-rw-r--r--src/widgets/sp-widget.cpp79
-rw-r--r--src/widgets/sp-widget.h18
-rw-r--r--src/widgets/sp-xmlview-attr-list.cpp34
-rw-r--r--src/widgets/sp-xmlview-attr-list.h3
-rw-r--r--src/widgets/sp-xmlview-content.cpp34
-rw-r--r--src/widgets/sp-xmlview-content.h3
-rw-r--r--src/widgets/sp-xmlview-tree.cpp42
-rw-r--r--src/widgets/sp-xmlview-tree.h17
-rw-r--r--src/widgets/spinbutton-events.h4
-rw-r--r--src/widgets/spiral-toolbar.cpp6
-rw-r--r--src/widgets/spray-toolbar.cpp6
-rw-r--r--src/widgets/spw-utilities.cpp11
-rw-r--r--src/widgets/star-toolbar.cpp31
-rw-r--r--src/widgets/stroke-marker-selector.cpp6
-rw-r--r--src/widgets/stroke-style.cpp21
-rw-r--r--src/widgets/stroke-style.h6
-rw-r--r--src/widgets/text-toolbar.cpp94
-rw-r--r--src/widgets/toolbox.cpp21
-rw-r--r--src/widgets/toolbox.h6
-rw-r--r--src/widgets/tweak-toolbar.cpp8
79 files changed, 1031 insertions, 1136 deletions
diff --git a/src/widgets/CMakeLists.txt b/src/widgets/CMakeLists.txt
index fe4433153..072b905a2 100644
--- a/src/widgets/CMakeLists.txt
+++ b/src/widgets/CMakeLists.txt
@@ -24,6 +24,9 @@ set(widgets_SRC
desktop-widget.cpp
eek-preview.cpp
ege-paint-def.cpp
+ ege-adjustment-action.cpp
+ ege-output-action.cpp
+ ege-select-one-action.cpp
fill-style.cpp
font-selector.cpp
gradient-image.cpp
@@ -31,6 +34,8 @@ set(widgets_SRC
gradient-toolbar.cpp
gradient-vector.cpp
icon.cpp
+ ink-action.cpp
+ ink-comboboxentry-action.cpp
paint-selector.cpp
ruler.cpp
select-toolbar.cpp
@@ -80,6 +85,9 @@ set(widgets_SRC
desktop-widget.h
eek-preview.h
ege-paint-def.h
+ ege-adjustment-action.h
+ ege-output-action.h
+ ege-select-one-action.h
fill-n-stroke-factory.h
fill-style.h
font-selector.h
@@ -88,6 +96,8 @@ set(widgets_SRC
gradient-toolbar.h
gradient-vector.h
icon.h
+ ink-action.h
+ ink-comboboxentry-action.h
paint-selector.h
ruler.h
select-toolbar.h
diff --git a/src/widgets/Makefile_insert b/src/widgets/Makefile_insert
index 97713cbee..dc4c12967 100644
--- a/src/widgets/Makefile_insert
+++ b/src/widgets/Makefile_insert
@@ -19,8 +19,14 @@ ink_common_sources += \
widgets/dropper-toolbar.h \
widgets/eek-preview.cpp \
widgets/eek-preview.h \
+ widgets/ege-adjustment-action.cpp \
+ widgets/ege-adjustment-action.h \
widgets/ege-paint-def.cpp \
widgets/ege-paint-def.h \
+ widgets/ege-output-action.cpp \
+ widgets/ege-output-action.h \
+ widgets/ege-select-one-action.cpp \
+ widgets/ege-select-one-action.h \
widgets/eraser-toolbar.cpp \
widgets/eraser-toolbar.h \
widgets/fill-style.cpp \
@@ -38,6 +44,10 @@ ink_common_sources += \
widgets/gradient-vector.h \
widgets/icon.cpp \
widgets/icon.h \
+ widgets/ink-action.cpp \
+ widgets/ink-action.h \
+ widgets/ink-comboboxentry-action.cpp \
+ widgets/ink-comboboxentry-action.h \
widgets/lpe-toolbar.cpp \
widgets/lpe-toolbar.h \
widgets/measure-toolbar.cpp \
diff --git a/src/widgets/arc-toolbar.cpp b/src/widgets/arc-toolbar.cpp
index ca6810c81..ca582924b 100644
--- a/src/widgets/arc-toolbar.cpp
+++ b/src/widgets/arc-toolbar.cpp
@@ -34,10 +34,10 @@
#include "desktop-handles.h"
#include "desktop.h"
#include "document-undo.h"
-#include "ege-adjustment-action.h"
-#include "ege-output-action.h"
-#include "ege-select-one-action.h"
-#include "ink-action.h"
+#include "widgets/ege-adjustment-action.h"
+#include "widgets/ege-output-action.h"
+#include "widgets/ege-select-one-action.h"
+#include "widgets/ink-action.h"
#include "mod360.h"
#include "preferences.h"
#include "selection.h"
@@ -45,6 +45,7 @@
#include "toolbox.h"
#include "ui/icon-names.h"
#include "ui/uxmanager.h"
+#include "ui/tools/arc-tool.h"
#include "verbs.h"
#include "widgets/spinbutton-events.h"
#include "xml/node-event-vector.h"
@@ -304,6 +305,7 @@ static void sp_arc_toolbox_selection_changed(Inkscape::Selection *selection, GOb
}
}
+static void arc_toolbox_check_ec(SPDesktop* dt, Inkscape::UI::Tools::ToolBase* ec, GObject* holder);
void sp_arc_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder)
{
@@ -402,14 +404,22 @@ void sp_arc_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObjec
sp_arctb_sensitivize( holder, gtk_adjustment_get_value(adj1), gtk_adjustment_get_value(adj2) );
}
-
- sigc::connection *connection = new sigc::connection(
- sp_desktop_selection(desktop)->connectChanged(sigc::bind(sigc::ptr_fun(sp_arc_toolbox_selection_changed), G_OBJECT(holder)))
- );
- g_signal_connect( holder, "destroy", G_CALLBACK(delete_connection), connection );
+ desktop->connectEventContextChanged(sigc::bind(sigc::ptr_fun(arc_toolbox_check_ec), holder));
g_signal_connect( holder, "destroy", G_CALLBACK(purge_repr_listener), holder );
}
+static void arc_toolbox_check_ec(SPDesktop* desktop, Inkscape::UI::Tools::ToolBase* ec, GObject* holder)
+{
+ static sigc::connection changed;
+
+ if (SP_IS_ARC_CONTEXT(ec)) {
+ changed = sp_desktop_selection(desktop)->connectChanged(sigc::bind(sigc::ptr_fun(sp_arc_toolbox_selection_changed), holder));
+ sp_arc_toolbox_selection_changed(sp_desktop_selection(desktop), holder);
+ } else {
+ if (changed)
+ changed.disconnect();
+ }
+}
/*
Local Variables:
diff --git a/src/widgets/box3d-toolbar.cpp b/src/widgets/box3d-toolbar.cpp
index 6d6b86c4d..02d102a11 100644
--- a/src/widgets/box3d-toolbar.cpp
+++ b/src/widgets/box3d-toolbar.cpp
@@ -36,13 +36,14 @@
#include "desktop.h"
#include "document-undo.h"
#include "document.h"
-#include "ege-adjustment-action.h"
-#include "ink-action.h"
+#include "widgets/ege-adjustment-action.h"
+#include "widgets/ink-action.h"
#include "inkscape.h"
#include "persp3d.h"
#include "selection.h"
#include "toolbox.h"
#include "ui/icon-names.h"
+#include "ui/tools/box3d-tool.h"
#include "ui/uxmanager.h"
#include "verbs.h"
#include "xml/node-event-vector.h"
@@ -182,9 +183,9 @@ static void box3d_toolbox_selection_changed(Inkscape::Selection *selection, GObj
purge_repr_listener(tbl, tbl);
SPItem *item = selection->singleItem();
- if (item && SP_IS_BOX3D(item)) {
+ SPBox3D *box = dynamic_cast<SPBox3D *>(item);
+ if (box) {
// FIXME: Also deal with multiple selected boxes
- SPBox3D *box = SP_BOX3D(item);
Persp3D *persp = box3d_get_perspective(box);
persp_repr = persp->getRepr();
if (persp_repr) {
@@ -280,6 +281,8 @@ static void box3d_vp_z_state_changed( GtkToggleAction *act, GtkAction *box3d_ang
box3d_vp_state_changed(act, box3d_angle, Proj::Z);
}
+static void box3d_toolbox_check_ec(SPDesktop* dt, Inkscape::UI::Tools::ToolBase* ec, GObject* holder);
+
void box3d_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder)
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
@@ -409,13 +412,22 @@ void box3d_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject
gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), prefs->getBool("/tools/shapes/3dbox/vp_z_state", true) );
}
- sigc::connection *connection = new sigc::connection(
- sp_desktop_selection(desktop)->connectChanged(sigc::bind(sigc::ptr_fun(box3d_toolbox_selection_changed), G_OBJECT(holder)))
- );
- g_signal_connect(holder, "destroy", G_CALLBACK(delete_connection), connection);
+ desktop->connectEventContextChanged(sigc::bind(sigc::ptr_fun(box3d_toolbox_check_ec), holder));
g_signal_connect(holder, "destroy", G_CALLBACK(purge_repr_listener), holder);
}
+static void box3d_toolbox_check_ec(SPDesktop* desktop, Inkscape::UI::Tools::ToolBase* ec, GObject* holder)
+{
+ static sigc::connection changed;
+ if (SP_IS_BOX3D_CONTEXT(ec)) {
+ changed = sp_desktop_selection(desktop)->connectChanged(sigc::bind(sigc::ptr_fun(box3d_toolbox_selection_changed), holder));
+ box3d_toolbox_selection_changed(sp_desktop_selection(desktop), holder);
+ } else {
+ if (changed)
+ changed.disconnect();
+ }
+}
+
/*
Local Variables:
mode:c++
diff --git a/src/widgets/button.cpp b/src/widgets/button.cpp
index a1bd9b792..1776e28c4 100644
--- a/src/widgets/button.cpp
+++ b/src/widgets/button.cpp
@@ -1,6 +1,4 @@
-#define __SP_BUTTON_C__
-
-/*
+/**
* Generic button widget
*
* Authors:
@@ -13,282 +11,257 @@
* This code is in public domain
*/
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
+#include <glibmm.h>
#include "icon.h"
-#include "shortcuts.h"
-#include "interface.h"
+
+#include "button.h"
#include "helper/action-context.h"
+#include "ui/interface.h"
+#include "shortcuts.h"
+#include "helper/action.h"
#include <gdk/gdkkeysyms.h>
-#include "button.h"
-
static void sp_button_dispose(GObject *object);
-#if GTK_CHECK_VERSION(3,0,0)
-static void sp_button_get_preferred_width(GtkWidget *widget,
- gint *minimal_width,
- gint *natural_width);
+#if GTK_CHECK_VERSION(3, 0, 0)
+static void sp_button_get_preferred_width(GtkWidget *widget, gint *minimal_width, gint *natural_width);
-static void sp_button_get_preferred_height(GtkWidget *widget,
- gint *minimal_height,
- gint *natural_height);
+static void sp_button_get_preferred_height(GtkWidget *widget, gint *minimal_height, gint *natural_height);
#else
-static void sp_button_size_request (GtkWidget *widget, GtkRequisition *requisition);
+static void sp_button_size_request(GtkWidget *widget, GtkRequisition *requisition);
#endif
-static void sp_button_clicked (GtkButton *button);
-static void sp_button_perform_action (SPButton *button, gpointer data);
-static gint sp_button_process_event (SPButton *button, GdkEvent *event);
+static void sp_button_clicked(GtkButton *button);
+static void sp_button_perform_action(SPButton *button, gpointer data);
+static gint sp_button_process_event(SPButton *button, GdkEvent *event);
-static void sp_button_set_action (SPButton *button, SPAction *action);
-static void sp_button_set_doubleclick_action (SPButton *button, SPAction *action);
-static void sp_button_action_set_active (SPButton *button, bool active);
-static void sp_button_set_composed_tooltip (GtkWidget *widget, SPAction *action);
+static void sp_button_set_action(SPButton *button, SPAction *action);
+static void sp_button_set_doubleclick_action(SPButton *button, SPAction *action);
+static void sp_button_action_set_active(SPButton *button, bool active);
+static void sp_button_set_composed_tooltip(GtkWidget *widget, SPAction *action);
G_DEFINE_TYPE(SPButton, sp_button, GTK_TYPE_TOGGLE_BUTTON);
-static void
-sp_button_class_init (SPButtonClass *klass)
+static void sp_button_class_init(SPButtonClass *klass)
{
- GObjectClass *object_class=G_OBJECT_CLASS(klass);
- GtkWidgetClass *widget_class=GTK_WIDGET_CLASS(klass);
- GtkButtonClass *button_class=GTK_BUTTON_CLASS(klass);
-
- object_class->dispose = sp_button_dispose;
-#if GTK_CHECK_VERSION(3,0,0)
- widget_class->get_preferred_width = sp_button_get_preferred_width;
- widget_class->get_preferred_height = sp_button_get_preferred_height;
+ GObjectClass *object_class = G_OBJECT_CLASS(klass);
+ GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
+ GtkButtonClass *button_class = GTK_BUTTON_CLASS(klass);
+
+ object_class->dispose = sp_button_dispose;
+#if GTK_CHECK_VERSION(3, 0, 0)
+ widget_class->get_preferred_width = sp_button_get_preferred_width;
+ widget_class->get_preferred_height = sp_button_get_preferred_height;
#else
- widget_class->size_request = sp_button_size_request;
+ widget_class->size_request = sp_button_size_request;
#endif
- button_class->clicked = sp_button_clicked;
+ button_class->clicked = sp_button_clicked;
}
-static void
-sp_button_init (SPButton *button)
+static void sp_button_init(SPButton *button)
{
- button->action = NULL;
- button->doubleclick_action = NULL;
- new (&button->c_set_active) sigc::connection();
- new (&button->c_set_sensitive) sigc::connection();
+ button->action = NULL;
+ button->doubleclick_action = NULL;
+ new (&button->c_set_active) sigc::connection();
+ new (&button->c_set_sensitive) sigc::connection();
- gtk_container_set_border_width (GTK_CONTAINER (button), 0);
+ gtk_container_set_border_width(GTK_CONTAINER(button), 0);
- gtk_widget_set_can_focus (GTK_WIDGET (button), FALSE);
- gtk_widget_set_can_default (GTK_WIDGET (button), FALSE);
+ gtk_widget_set_can_focus(GTK_WIDGET(button), FALSE);
+ gtk_widget_set_can_default(GTK_WIDGET(button), FALSE);
- g_signal_connect_after (G_OBJECT (button), "clicked", G_CALLBACK (sp_button_perform_action), NULL);
- g_signal_connect_after (G_OBJECT (button), "event", G_CALLBACK (sp_button_process_event), NULL);
+ g_signal_connect_after(G_OBJECT(button), "clicked", G_CALLBACK(sp_button_perform_action), NULL);
+ g_signal_connect_after(G_OBJECT(button), "event", G_CALLBACK(sp_button_process_event), NULL);
}
static void sp_button_dispose(GObject *object)
{
- SPButton *button = SP_BUTTON (object);
+ SPButton *button = SP_BUTTON(object);
- if (button->action) {
- sp_button_set_action (button, NULL);
- }
- if (button->doubleclick_action) {
- sp_button_set_doubleclick_action (button, NULL);
- }
+ if (button->action) {
+ sp_button_set_action(button, NULL);
+ }
+ if (button->doubleclick_action) {
+ sp_button_set_doubleclick_action(button, NULL);
+ }
- button->c_set_active.~connection();
- button->c_set_sensitive.~connection();
+ button->c_set_active.~connection();
+ button->c_set_sensitive.~connection();
- (G_OBJECT_CLASS(sp_button_parent_class))->dispose(object);
+ (G_OBJECT_CLASS(sp_button_parent_class))->dispose(object);
}
-
-
-#if GTK_CHECK_VERSION(3,0,0)
+#if GTK_CHECK_VERSION(3, 0, 0)
static void sp_button_get_preferred_width(GtkWidget *widget, gint *minimal_width, gint *natural_width)
{
- GtkWidget *child = gtk_bin_get_child(GTK_BIN (widget));
- GtkStyle *style = gtk_widget_get_style(widget);
-
- if (child) {
- gtk_widget_get_preferred_width(GTK_WIDGET(child), minimal_width, natural_width);
- } else {
- *minimal_width = 0;
- *natural_width = 0;
- }
-
- *minimal_width += 2 + 2 * MAX(2, style->xthickness);
- *natural_width += 2 + 2 * MAX(2, style->xthickness);
+ GtkWidget *child = gtk_bin_get_child(GTK_BIN(widget));
+ GtkStyle *style = gtk_widget_get_style(widget);
+
+ if (child) {
+ gtk_widget_get_preferred_width(GTK_WIDGET(child), minimal_width, natural_width);
+ } else {
+ *minimal_width = 0;
+ *natural_width = 0;
+ }
+
+ *minimal_width += 2 + 2 * MAX(2, style->xthickness);
+ *natural_width += 2 + 2 * MAX(2, style->xthickness);
}
static void sp_button_get_preferred_height(GtkWidget *widget, gint *minimal_height, gint *natural_height)
{
- GtkWidget *child = gtk_bin_get_child(GTK_BIN (widget));
- GtkStyle *style = gtk_widget_get_style(widget);
-
- if (child) {
- gtk_widget_get_preferred_height(GTK_WIDGET(child), minimal_height, natural_height);
- } else {
- *minimal_height = 0;
- *natural_height = 0;
- }
+ GtkWidget *child = gtk_bin_get_child(GTK_BIN(widget));
+ GtkStyle *style = gtk_widget_get_style(widget);
- *minimal_height += 2 + 2 * MAX(2, style->ythickness);
- *natural_height += 2 + 2 * MAX(2, style->ythickness);
+ if (child) {
+ gtk_widget_get_preferred_height(GTK_WIDGET(child), minimal_height, natural_height);
+ } else {
+ *minimal_height = 0;
+ *natural_height = 0;
+ }
+ *minimal_height += 2 + 2 * MAX(2, style->ythickness);
+ *natural_height += 2 + 2 * MAX(2, style->ythickness);
}
#else
static void sp_button_size_request(GtkWidget *widget, GtkRequisition *requisition)
{
- GtkWidget *child = gtk_bin_get_child (GTK_BIN (widget));
- GtkStyle *style = gtk_widget_get_style (widget);
-
- if (child) {
- gtk_widget_size_request (GTK_WIDGET (child), requisition);
- } else {
- requisition->width = 0;
- requisition->height = 0;
- }
-
- requisition->width += 2 + 2 * MAX (2, style->xthickness);
- requisition->height += 2 + 2 * MAX (2, style->ythickness);
+ GtkWidget *child = gtk_bin_get_child(GTK_BIN(widget));
+ GtkStyle *style = gtk_widget_get_style(widget);
+
+ if (child) {
+ gtk_widget_size_request(GTK_WIDGET(child), requisition);
+ } else {
+ requisition->width = 0;
+ requisition->height = 0;
+ }
+
+ requisition->width += 2 + 2 * MAX(2, style->xthickness);
+ requisition->height += 2 + 2 * MAX(2, style->ythickness);
}
#endif
-static void
-sp_button_clicked (GtkButton *button)
+static void sp_button_clicked(GtkButton *button)
{
- SPButton *sp_button=SP_BUTTON (button);
+ SPButton *sp_button = SP_BUTTON(button);
- if (sp_button->type == SP_BUTTON_TYPE_TOGGLE) {
- (GTK_BUTTON_CLASS(sp_button_parent_class))->clicked (button);
- }
+ if (sp_button->type == SP_BUTTON_TYPE_TOGGLE) {
+ (GTK_BUTTON_CLASS(sp_button_parent_class))->clicked(button);
+ }
}
-static gint
-sp_button_process_event (SPButton *button, GdkEvent *event)
+static gint sp_button_process_event(SPButton *button, GdkEvent *event)
{
- switch (event->type) {
- case GDK_2BUTTON_PRESS:
- if (button->doubleclick_action) {
- sp_action_perform (button->doubleclick_action, NULL);
- }
- return TRUE;
- break;
- default:
- break;
- }
-
- return FALSE;
+ switch (event->type) {
+ case GDK_2BUTTON_PRESS:
+ if (button->doubleclick_action) {
+ sp_action_perform(button->doubleclick_action, NULL);
+ }
+ return TRUE;
+ break;
+ default:
+ break;
+ }
+
+ return FALSE;
}
-static void
-sp_button_perform_action (SPButton *button, gpointer /*data*/)
+static void sp_button_perform_action(SPButton *button, gpointer /*data*/)
{
- if (button->action) {
- sp_action_perform (button->action, NULL);
- }
+ if (button->action) {
+ sp_action_perform(button->action, NULL);
+ }
}
-
-GtkWidget *
-sp_button_new( Inkscape::IconSize size, SPButtonType type, SPAction *action, SPAction *doubleclick_action )
+GtkWidget *sp_button_new(Inkscape::IconSize size, SPButtonType type, SPAction *action, SPAction *doubleclick_action)
{
- SPButton *button = SP_BUTTON(g_object_new(SP_TYPE_BUTTON, NULL));
+ SPButton *button = SP_BUTTON(g_object_new(SP_TYPE_BUTTON, NULL));
- button->type = type;
- button->lsize = CLAMP( size, Inkscape::ICON_SIZE_MENU, Inkscape::ICON_SIZE_DECORATION );
+ button->type = type;
+ button->lsize = CLAMP(size, Inkscape::ICON_SIZE_MENU, Inkscape::ICON_SIZE_DECORATION);
- sp_button_set_action (button, action);
- if (doubleclick_action)
- sp_button_set_doubleclick_action (button, doubleclick_action);
+ sp_button_set_action(button, action);
+ if (doubleclick_action)
+ sp_button_set_doubleclick_action(button, doubleclick_action);
- // The Inkscape style is no-relief buttons
- gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
+ // The Inkscape style is no-relief buttons
+ gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
- return GTK_WIDGET(button);
+ return GTK_WIDGET(button);
}
-void
-sp_button_toggle_set_down (SPButton *button, gboolean down)
+void sp_button_toggle_set_down(SPButton *button, gboolean down)
{
- g_return_if_fail (button->type == SP_BUTTON_TYPE_TOGGLE);
- g_signal_handlers_block_by_func (G_OBJECT (button), (gpointer)G_CALLBACK (sp_button_perform_action), NULL);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), (unsigned int)down);
- g_signal_handlers_unblock_by_func (G_OBJECT (button), (gpointer)G_CALLBACK (sp_button_perform_action), NULL);
+ g_return_if_fail(button->type == SP_BUTTON_TYPE_TOGGLE);
+ g_signal_handlers_block_by_func(G_OBJECT(button), (gpointer)G_CALLBACK(sp_button_perform_action), NULL);
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), (unsigned int)down);
+ g_signal_handlers_unblock_by_func(G_OBJECT(button), (gpointer)G_CALLBACK(sp_button_perform_action), NULL);
}
-static void
-sp_button_set_doubleclick_action (SPButton *button, SPAction *action)
+static void sp_button_set_doubleclick_action(SPButton *button, SPAction *action)
{
- if (button->doubleclick_action) {
- g_object_unref (button->doubleclick_action);
- }
- button->doubleclick_action = action;
- if (action) {
- g_object_ref(action);
- }
-
+ if (button->doubleclick_action) {
+ g_object_unref(button->doubleclick_action);
+ }
+ button->doubleclick_action = action;
+ if (action) {
+ g_object_ref(action);
+ }
}
-static void
-sp_button_set_action (SPButton *button, SPAction *action)
+static void sp_button_set_action(SPButton *button, SPAction *action)
{
- GtkWidget *child;
-
- if (button->action) {
- button->c_set_active.disconnect();
- button->c_set_sensitive.disconnect();
- child = gtk_bin_get_child (GTK_BIN (button));
- if (child) {
- gtk_container_remove (GTK_CONTAINER (button), child);
- }
- g_object_unref(button->action);
- }
- button->action = action;
- if (action) {
- g_object_ref(action);
- button->c_set_active = action->signal_set_active.connect(
- sigc::bind<0>(
- sigc::ptr_fun(&sp_button_action_set_active),
- SP_BUTTON(button)));
- button->c_set_sensitive = action->signal_set_sensitive.connect(
- sigc::bind<0>(
- sigc::ptr_fun(&gtk_widget_set_sensitive),
- GTK_WIDGET(button)));
- if (action->image) {
- child = sp_icon_new (button->lsize, action->image);
- gtk_widget_show (child);
- gtk_container_add (GTK_CONTAINER (button), child);
- }
- }
-
- sp_button_set_composed_tooltip(GTK_WIDGET(button), action);
+ GtkWidget *child;
+
+ if (button->action) {
+ button->c_set_active.disconnect();
+ button->c_set_sensitive.disconnect();
+ child = gtk_bin_get_child(GTK_BIN(button));
+ if (child) {
+ gtk_container_remove(GTK_CONTAINER(button), child);
+ }
+ g_object_unref(button->action);
+ }
+ button->action = action;
+ if (action) {
+ g_object_ref(action);
+ button->c_set_active = action->signal_set_active.connect(
+ sigc::bind<0>(sigc::ptr_fun(&sp_button_action_set_active), SP_BUTTON(button)));
+ button->c_set_sensitive = action->signal_set_sensitive.connect(
+ sigc::bind<0>(sigc::ptr_fun(&gtk_widget_set_sensitive), GTK_WIDGET(button)));
+ if (action->image) {
+ child = sp_icon_new(button->lsize, action->image);
+ gtk_widget_show(child);
+ gtk_container_add(GTK_CONTAINER(button), child);
+ }
+ }
+
+ sp_button_set_composed_tooltip(GTK_WIDGET(button), action);
}
-static void
-sp_button_action_set_active (SPButton *button, bool active)
+static void sp_button_action_set_active(SPButton *button, bool active)
{
- if (button->type != SP_BUTTON_TYPE_TOGGLE) {
- return;
- }
-
- /* temporarily lobotomized until SPActions are per-view */
- if (0 && !active != !SP_BUTTON_IS_DOWN (button)) {
- sp_button_toggle_set_down (button, active);
- }
+ if (button->type != SP_BUTTON_TYPE_TOGGLE) {
+ return;
+ }
+
+ /* temporarily lobotomized until SPActions are per-view */
+ if (0 && !active != !SP_BUTTON_IS_DOWN(button)) {
+ sp_button_toggle_set_down(button, active);
+ }
}
static void sp_button_set_composed_tooltip(GtkWidget *widget, SPAction *action)
{
if (action) {
- unsigned int shortcut = sp_shortcut_get_primary (action->verb);
+ unsigned int shortcut = sp_shortcut_get_primary(action->verb);
if (shortcut != GDK_KEY_VoidSymbol) {
// there's both action and shortcut
gchar *key = sp_shortcut_get_label(shortcut);
- gchar *tip = g_strdup_printf ("%s (%s)", action->tip, key);
+ gchar *tip = g_strdup_printf("%s (%s)", action->tip, key);
gtk_widget_set_tooltip_text(widget, tip);
g_free(tip);
g_free(key);
@@ -302,18 +275,14 @@ static void sp_button_set_composed_tooltip(GtkWidget *widget, SPAction *action)
}
}
-GtkWidget *
-sp_button_new_from_data( Inkscape::IconSize size,
- SPButtonType type,
- Inkscape::UI::View::View *view,
- const gchar *name,
- const gchar *tip )
+GtkWidget *sp_button_new_from_data(Inkscape::IconSize size, SPButtonType type, Inkscape::UI::View::View *view,
+ const gchar *name, const gchar *tip)
{
- GtkWidget *button;
- SPAction *action=sp_action_new(Inkscape::ActionContext(view), name, name, tip, name, 0);
- button = sp_button_new (size, type, action, NULL);
- g_object_unref(action);
- return button;
+ GtkWidget *button;
+ SPAction *action = sp_action_new(Inkscape::ActionContext(view), name, name, tip, name, 0);
+ button = sp_button_new(size, type, action, NULL);
+ g_object_unref(action);
+ return button;
}
/*
@@ -325,4 +294,4 @@ sp_button_new_from_data( Inkscape::IconSize size,
fill-column:99
End:
*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8 :
diff --git a/src/widgets/button.h b/src/widgets/button.h
index 41863357d..2bceb5e97 100644
--- a/src/widgets/button.h
+++ b/src/widgets/button.h
@@ -1,7 +1,7 @@
-#ifndef __SP_BUTTON_H__
-#define __SP_BUTTON_H__
+#ifndef SEEN_SP_BUTTON_H
+#define SEEN_SP_BUTTON_H
-/*
+/**
* Generic button widget
*
* Author:
@@ -17,10 +17,18 @@
#define SP_IS_BUTTON(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_BUTTON))
#include <gtk/gtk.h>
-#include <sigc++/sigc++.h>
-#include "helper/action.h"
+#include <sigc++/connection.h>
#include "icon-size.h"
+struct SPAction;
+
+namespace Inkscape {
+namespace UI {
+namespace View {
+class View;
+}
+}
+}
typedef enum {
SP_BUTTON_TYPE_NORMAL,
@@ -61,6 +69,15 @@ GtkWidget *sp_button_new_from_data (Inkscape::IconSize size,
const gchar *name,
const gchar *tip);
+#endif // !SEEN_SP_BUTTON_H
-
-#endif
+/*
+ Local Variables:
+ mode:c++
+ c-file-style:"stroustrup"
+ c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
+ indent-tabs-mode:nil
+ fill-column:99
+ End:
+*/
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8 :
diff --git a/src/widgets/calligraphy-toolbar.cpp b/src/widgets/calligraphy-toolbar.cpp
index 9c0393cd9..4ae6427ad 100644
--- a/src/widgets/calligraphy-toolbar.cpp
+++ b/src/widgets/calligraphy-toolbar.cpp
@@ -34,9 +34,9 @@
#include "desktop.h"
#include "document-undo.h"
-#include "ege-adjustment-action.h"
-#include "ege-select-one-action.h"
-#include "ink-action.h"
+#include "widgets/ege-adjustment-action.h"
+#include "widgets/ege-select-one-action.h"
+#include "widgets/ink-action.h"
#include "preferences.h"
#include "toolbox.h"
#include "ui/icon-names.h"
diff --git a/src/widgets/connector-toolbar.cpp b/src/widgets/connector-toolbar.cpp
index 9bbc1bbb4..6ce926dc1 100644
--- a/src/widgets/connector-toolbar.cpp
+++ b/src/widgets/connector-toolbar.cpp
@@ -35,10 +35,10 @@
#include "desktop-handles.h"
#include "desktop.h"
#include "document-undo.h"
-#include "ege-adjustment-action.h"
+#include "widgets/ege-adjustment-action.h"
#include "enums.h"
#include "graphlayout.h"
-#include "ink-action.h"
+#include "widgets/ink-action.h"
#include "inkscape.h"
#include "preferences.h"
#include "selection.h"
diff --git a/src/widgets/dash-selector.cpp b/src/widgets/dash-selector.cpp
index fce7a9d9f..479895022 100644
--- a/src/widgets/dash-selector.cpp
+++ b/src/widgets/dash-selector.cpp
@@ -25,7 +25,7 @@
#include <2geom/coord.h>
#include "style.h"
-#include "dialogs/dialog-events.h"
+#include "ui/dialog-events.h"
#include "preferences.h"
#include "ui/widget/spinbutton.h"
#include "display/cairo-utils.h"
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp
index 583dbec85..9c8dac7dc 100644
--- a/src/widgets/desktop-widget.cpp
+++ b/src/widgets/desktop-widget.cpp
@@ -38,7 +38,7 @@
#include "display/canvas-arena.h"
#include "document.h"
#include "ege-color-prof-tracker.h"
-#include "ege-select-one-action.h"
+#include "widgets/ege-select-one-action.h"
#include <extension/db.h>
#include "file.h"
#include "helper/action.h"
@@ -46,7 +46,7 @@
#include "util/units.h"
#include "ui/widget/unit-tracker.h"
#include "inkscape-private.h"
-#include "interface.h"
+#include "ui/interface.h"
#include "macros.h"
#include "preferences.h"
#include "sp-image.h"
@@ -358,7 +358,7 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
{
using Inkscape::UI::Dialogs::SwatchesPanel;
- dtw->panels = new SwatchesPanel("/embedded/swatches");
+ dtw->panels = new SwatchesPanel("/embedded/swatches" /*false*/);
dtw->panels->setOrientation(SP_ANCHOR_SOUTH);
#if GTK_CHECK_VERSION(3,0,0)
@@ -1246,6 +1246,9 @@ SPDesktopWidget::shutdown()
*/
void
SPDesktopWidget::requestCanvasUpdate() {
+ // ^^ also this->desktop != 0
+ g_return_if_fail(this->desktop != NULL);
+ g_return_if_fail(this->desktop->main != NULL);
gtk_widget_queue_draw (GTK_WIDGET (SP_CANVAS_ITEM (this->desktop->main)->canvas));
}
diff --git a/src/widgets/dropper-toolbar.cpp b/src/widgets/dropper-toolbar.cpp
index 478d0c1a4..45ed9ead4 100644
--- a/src/widgets/dropper-toolbar.cpp
+++ b/src/widgets/dropper-toolbar.cpp
@@ -32,8 +32,8 @@
#include "dropper-toolbar.h"
#include "document-undo.h"
-#include "ege-output-action.h"
-#include "ink-action.h"
+#include "widgets/ege-output-action.h"
+#include "widgets/ink-action.h"
#include "preferences.h"
#include "widgets/spinbutton-events.h"
diff --git a/src/widgets/eek-preview.h b/src/widgets/eek-preview.h
index e4c724cc5..883ce713e 100644
--- a/src/widgets/eek-preview.h
+++ b/src/widgets/eek-preview.h
@@ -37,7 +37,6 @@
#ifndef SEEN_EEK_PREVIEW_H
#define SEEN_EEK_PREVIEW_H
-#include <gdk/gdk.h>
#include <gtk/gtk.h>
/**
diff --git a/src/ege-adjustment-action.cpp b/src/widgets/ege-adjustment-action.cpp
index 9491468dc..d89a6e3f1 100644
--- a/src/ege-adjustment-action.cpp
+++ b/src/widgets/ege-adjustment-action.cpp
@@ -46,7 +46,7 @@
#include <gdk/gdkkeysyms.h>
#include "icon-size.h"
-#include "ege-adjustment-action.h"
+#include "widgets/ege-adjustment-action.h"
#include "ui/widget/gimpspinscale.h"
#include "ui/icon-names.h"
diff --git a/src/ege-adjustment-action.h b/src/widgets/ege-adjustment-action.h
index 590035eb3..8cfaa3e52 100644
--- a/src/ege-adjustment-action.h
+++ b/src/widgets/ege-adjustment-action.h
@@ -45,9 +45,7 @@
/* Note: this file should be kept compilable as both .cpp and .c */
-#include <glib.h>
#include <gtk/gtk.h>
-#include <glib-object.h>
G_BEGIN_DECLS
diff --git a/src/ege-output-action.cpp b/src/widgets/ege-output-action.cpp
index 9a7d7e318..5dece8e91 100644
--- a/src/ege-output-action.cpp
+++ b/src/widgets/ege-output-action.cpp
@@ -43,7 +43,7 @@
#include <gtk/gtk.h>
-#include "ege-output-action.h"
+#include "widgets/ege-output-action.h"
static void ege_output_action_get_property( GObject* obj, guint propId, GValue* value, GParamSpec * pspec );
diff --git a/src/ege-output-action.h b/src/widgets/ege-output-action.h
index fc21c2f27..0f4e21805 100644
--- a/src/ege-output-action.h
+++ b/src/widgets/ege-output-action.h
@@ -45,9 +45,7 @@
/* Note: this file should be kept compilable as both .cpp and .c */
-#include <glib.h>
#include <gtk/gtk.h>
-#include <glib-object.h>
G_BEGIN_DECLS
diff --git a/src/widgets/ege-paint-def.cpp b/src/widgets/ege-paint-def.cpp
index 542205b53..1a8ad041a 100644
--- a/src/widgets/ege-paint-def.cpp
+++ b/src/widgets/ege-paint-def.cpp
@@ -44,7 +44,6 @@
#include <string>
#include <iostream>
#include <sstream>
-#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <glibmm/i18n.h>
diff --git a/src/ege-select-one-action.cpp b/src/widgets/ege-select-one-action.cpp
index 3facf7242..ab86c49f8 100644
--- a/src/ege-select-one-action.cpp
+++ b/src/widgets/ege-select-one-action.cpp
@@ -43,7 +43,7 @@
#include <gtk/gtk.h>
-#include "ege-select-one-action.h"
+#include "widgets/ege-select-one-action.h"
enum {
CHANGED = 0,
diff --git a/src/ege-select-one-action.h b/src/widgets/ege-select-one-action.h
index d605f4a67..0c5cecaa3 100644
--- a/src/ege-select-one-action.h
+++ b/src/widgets/ege-select-one-action.h
@@ -48,9 +48,7 @@
/* Note: this file should be kept compilable as both .cpp and .c */
-#include <glib.h>
#include <gtk/gtk.h>
-#include <glib-object.h>
G_BEGIN_DECLS
diff --git a/src/widgets/eraser-toolbar.cpp b/src/widgets/eraser-toolbar.cpp
index 14e7cbf4e..f547cbd8b 100644
--- a/src/widgets/eraser-toolbar.cpp
+++ b/src/widgets/eraser-toolbar.cpp
@@ -35,9 +35,9 @@
#include "desktop-handles.h"
#include "desktop.h"
#include "document-undo.h"
-#include "ege-adjustment-action.h"
-#include "ege-select-one-action.h"
-#include "ink-action.h"
+#include "widgets/ege-adjustment-action.h"
+#include "widgets/ege-select-one-action.h"
+#include "widgets/ink-action.h"
#include "preferences.h"
#include "toolbox.h"
#include "ui/icon-names.h"
diff --git a/src/widgets/font-selector.cpp b/src/widgets/font-selector.cpp
index 0e862638c..943434868 100644
--- a/src/widgets/font-selector.cpp
+++ b/src/widgets/font-selector.cpp
@@ -1,6 +1,4 @@
-#define __SP_FONT_SELECTOR_C__
-
-/*
+/**
* Font selection widgets
*
* Authors:
@@ -38,7 +36,11 @@
struct SPFontSelector
{
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkBox hbox;
+#else
GtkHBox hbox;
+#endif
unsigned int block_emit : 1;
@@ -59,7 +61,11 @@ struct SPFontSelector
struct SPFontSelectorClass
{
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkBoxClass parent_class;
+#else
GtkHBoxClass parent_class;
+#endif
void (* font_set) (SPFontSelector *fsel, gchar *fontspec);
};
@@ -69,8 +75,6 @@ enum {
LAST_SIGNAL
};
-static void sp_font_selector_class_init (SPFontSelectorClass *c);
-static void sp_font_selector_init (SPFontSelector *fsel);
static void sp_font_selector_dispose (GObject *object);
static void sp_font_selector_family_select_row (GtkTreeSelection *selection,
@@ -85,36 +89,18 @@ static void sp_font_selector_size_changed (GtkComboBox *combobo
static void sp_font_selector_emit_set (SPFontSelector *fsel);
static void sp_font_selector_set_sizes( SPFontSelector *fsel );
-static GtkHBoxClass *fs_parent_class = NULL;
static guint fs_signals[LAST_SIGNAL] = { 0 };
-GType sp_font_selector_get_type()
-{
- static GType type = 0;
- if (!type) {
- GTypeInfo info = {
- sizeof(SPFontSelectorClass),
- 0, // base_init
- 0, // base_finalize
- (GClassInitFunc)sp_font_selector_class_init,
- 0, // class_finalize
- 0, // class_data
- sizeof(SPFontSelector),
- 0, // n_preallocs
- (GInstanceInitFunc)sp_font_selector_init,
- 0 // value_table
- };
- type = g_type_register_static(GTK_TYPE_HBOX, "SPFontSelector", &info, static_cast<GTypeFlags>(0));
- }
- return type;
-}
+#if GTK_CHECK_VERSION(3,0,0)
+G_DEFINE_TYPE(SPFontSelector, sp_font_selector, GTK_TYPE_BOX);
+#else
+G_DEFINE_TYPE(SPFontSelector, sp_font_selector, GTK_TYPE_HBOX);
+#endif
static void sp_font_selector_class_init(SPFontSelectorClass *c)
{
GObjectClass *object_class = G_OBJECT_CLASS(c);
- fs_parent_class = (GtkHBoxClass* )g_type_class_peek_parent (c);
-
fs_signals[FONT_SET] = g_signal_new ("font_set",
G_TYPE_FROM_CLASS(object_class),
(GSignalFlags)G_SIGNAL_RUN_FIRST,
@@ -157,6 +143,10 @@ static void sp_font_selector_init(SPFontSelector *fsel)
gtk_container_add(GTK_CONTAINER(f), sw);
fsel->family_treeview = gtk_tree_view_new ();
+ gtk_tree_view_set_row_separator_func( GTK_TREE_VIEW(fsel->family_treeview),
+ GtkTreeViewRowSeparatorFunc ((gpointer)font_lister_separator_func),
+ NULL, NULL );
+ gtk_widget_show_all(GTK_WIDGET (fsel->family_treeview));
GtkTreeViewColumn *column = gtk_tree_view_column_new ();
GtkCellRenderer *cell = gtk_cell_renderer_text_new ();
gtk_tree_view_column_pack_start (column, cell, FALSE);
@@ -166,9 +156,6 @@ static void sp_font_selector_init(SPFontSelector *fsel)
NULL, NULL );
gtk_tree_view_append_column (GTK_TREE_VIEW(fsel->family_treeview), column);
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(fsel->family_treeview), FALSE);
- gtk_tree_view_set_row_separator_func( GTK_TREE_VIEW(fsel->family_treeview),
- GtkTreeViewRowSeparatorFunc ((gpointer)font_lister_separator_func),
- NULL, NULL );
/* Muck with style, see text-toolbar.cpp */
gtk_widget_set_name( GTK_WIDGET(fsel->family_treeview), "font_selector_family" );
@@ -179,6 +166,7 @@ static void sp_font_selector_init(SPFontSelector *fsel)
Inkscape::FontLister* fontlister = Inkscape::FontLister::get_instance();
Glib::RefPtr<Gtk::ListStore> store = fontlister->get_font_list();
gtk_tree_view_set_model (GTK_TREE_VIEW(fsel->family_treeview), GTK_TREE_MODEL (Glib::unwrap (store)));
+ //gtk_tree_view_set_tooltip_column(GTK_TREE_VIEW(fsel->family_treeview),2);
gtk_container_add(GTK_CONTAINER(sw), fsel->family_treeview);
gtk_widget_show_all (sw);
@@ -210,12 +198,22 @@ static void sp_font_selector_init(SPFontSelector *fsel)
gtk_box_pack_start(GTK_BOX (vb), sw, TRUE, TRUE, 0);
fsel->style_treeview = gtk_tree_view_new ();
- column = gtk_tree_view_column_new ();
+
+ // CSS Style name
cell = gtk_cell_renderer_text_new ();
- gtk_tree_view_column_pack_start (column, cell, FALSE);
- gtk_tree_view_column_set_attributes (column, cell, "text", 0, NULL);
+ column = gtk_tree_view_column_new_with_attributes ("CSS", cell, "text", 0, NULL );
+ //gtk_tree_view_column_pack_start (column, cell, FALSE);
+ gtk_tree_view_column_set_resizable (column, TRUE);
gtk_tree_view_append_column (GTK_TREE_VIEW(fsel->style_treeview), column);
- gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(fsel->style_treeview), FALSE);
+
+ // Display Style name
+ cell = gtk_cell_renderer_text_new ();
+ column = gtk_tree_view_column_new_with_attributes (_("Face"), cell, "text", 1, NULL );
+ //gtk_tree_view_column_pack_start (column, cell, FALSE);
+ gtk_tree_view_append_column (GTK_TREE_VIEW(fsel->style_treeview), column);
+
+ //gtk_tree_view_set_tooltip_column(GTK_TREE_VIEW(fsel->style_treeview), 1);
+ gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(fsel->style_treeview), TRUE);
gtk_container_add(GTK_CONTAINER(sw), fsel->style_treeview);
gtk_widget_show_all (sw);
@@ -273,8 +271,8 @@ static void sp_font_selector_dispose(GObject *object)
fsel->styles.length = 0;
}
- if (G_OBJECT_CLASS(fs_parent_class)->dispose) {
- G_OBJECT_CLASS(fs_parent_class)->dispose(object);
+ if (G_OBJECT_CLASS(sp_font_selector_parent_class)->dispose) {
+ G_OBJECT_CLASS(sp_font_selector_parent_class)->dispose(object);
}
}
@@ -292,6 +290,9 @@ static void sp_font_selector_family_select_row(GtkTreeSelection *selection,
GtkTreeModel *model;
GtkTreeIter iter;
if (!gtk_tree_selection_get_selected (selection, &model, &iter)) return;
+
+ Inkscape::FontLister *fontlister = Inkscape::FontLister::get_instance();
+ fontlister->ensureRowStyles(model, &iter);
// Next get family name with its style list
gchar *family;
@@ -299,20 +300,21 @@ static void sp_font_selector_family_select_row(GtkTreeSelection *selection,
gtk_tree_model_get (model, &iter, 0, &family, 1, &list, -1);
// Find best style match for selected family with current style (e.g. of selected text).
- Inkscape::FontLister *fontlister = Inkscape::FontLister::get_instance();
Glib::ustring style = fontlister->get_font_style();
Glib::ustring best = fontlister->get_best_style_match (family, style);
// Create our own store of styles for selected font-family and find index of best style match
int path_index = 0;
int index = 0;
- GtkListStore *store = gtk_list_store_new (1, G_TYPE_STRING); // Where is this deleted?
+ GtkListStore *store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING); // Where is this deleted?
for ( ; list ; list = list->next )
{
gtk_list_store_append (store, &iter);
- gtk_list_store_set (store, &iter, 0, (char*)list->data, -1);
-
- if( best.compare( (char*)list->data ) == 0 ) {
+ gtk_list_store_set (store, &iter,
+ 0, ((StyleNames*)list->data)->CssName.c_str(),
+ 1, ((StyleNames*)list->data)->DisplayName.c_str(),
+ -1);
+ if( best.compare( ((StyleNames*)list->data)->CssName ) == 0 ) {
path_index = index;
}
++index;
@@ -320,6 +322,7 @@ static void sp_font_selector_family_select_row(GtkTreeSelection *selection,
// Attach store to tree view. Can trigger style changed signal (but not FONT_SET):
gtk_tree_view_set_model (GTK_TREE_VIEW (fsel->style_treeview), GTK_TREE_MODEL (store));
+ //gtk_tree_view_set_tooltip_column(GTK_TREE_VIEW(fsel->style_treeview),1);
// Get path to best style
GtkTreePath *path = gtk_tree_path_new ();
@@ -537,4 +540,4 @@ double sp_font_selector_get_size(SPFontSelector *fsel)
fill-column:99
End:
*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8 :
diff --git a/src/widgets/font-selector.h b/src/widgets/font-selector.h
index 66715f048..ff5472d2d 100644
--- a/src/widgets/font-selector.h
+++ b/src/widgets/font-selector.h
@@ -54,7 +54,7 @@ Glib::ustring sp_font_selector_get_fontspec (SPFontSelector *fsel);
double sp_font_selector_get_size (SPFontSelector *fsel);
-#endif // SP_FONT_SELECTOR_H
+#endif // !SP_FONT_SELECTOR_H
/*
Local Variables:
@@ -65,4 +65,4 @@ double sp_font_selector_get_size (SPFontSelector *fsel);
fill-column:99
End:
*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8 :
diff --git a/src/widgets/gradient-image.cpp b/src/widgets/gradient-image.cpp
index 64b058f62..6901b8549 100644
--- a/src/widgets/gradient-image.cpp
+++ b/src/widgets/gradient-image.cpp
@@ -1,6 +1,4 @@
-#define __SP_GRADIENT_IMAGE_C__
-
-/*
+/**
* A simple gradient preview
*
* Author:
@@ -12,18 +10,15 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include "macros.h"
+#include <sigc++/sigc++.h>
+
#include "display/cairo-utils.h"
#include "gradient-image.h"
+#include "macros.h"
#include "sp-gradient.h"
-#include <sigc++/functors/ptr_fun.h>
-#include <sigc++/adaptors/bind.h>
-
#define VBLOCK 16
-static void sp_gradient_image_class_init (SPGradientImageClass *klass);
-static void sp_gradient_image_init (SPGradientImage *image);
static void sp_gradient_image_size_request (GtkWidget *widget, GtkRequisition *requisition);
#if GTK_CHECK_VERSION(3,0,0)
@@ -45,35 +40,13 @@ static void sp_gradient_image_gradient_release (SPObject *, SPGradientImage *im)
static void sp_gradient_image_gradient_modified (SPObject *, guint flags, SPGradientImage *im);
static void sp_gradient_image_update (SPGradientImage *img);
-static GtkWidgetClass *parent_class;
-
-GType sp_gradient_image_get_type(void)
-{
- static GType type = 0;
- if (!type) {
- GTypeInfo info = {
- sizeof (SPGradientImageClass),
- NULL, NULL,
- (GClassInitFunc) sp_gradient_image_class_init,
- NULL, NULL,
- sizeof (SPGradientImage),
- 0,
- (GInstanceInitFunc) sp_gradient_image_init,
- NULL
- };
- type = g_type_register_static (GTK_TYPE_WIDGET, "SPGradientImage", &info, (GTypeFlags)0);
- }
- return type;
-}
+G_DEFINE_TYPE(SPGradientImage, sp_gradient_image, GTK_TYPE_WIDGET);
static void sp_gradient_image_class_init(SPGradientImageClass *klass)
{
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
- parent_class = GTK_WIDGET_CLASS(g_type_class_peek_parent (klass));
#if GTK_CHECK_VERSION(3,0,0)
-// GObjectClass *object_class = G_OBJECT_CLASS(klass);
-
widget_class->get_preferred_width = sp_gradient_image_get_preferred_width;
widget_class->get_preferred_height = sp_gradient_image_get_preferred_height;
widget_class->draw = sp_gradient_image_draw;
@@ -116,11 +89,11 @@ static void sp_gradient_image_destroy(GtkObject *object)
image->modified_connection.~connection();
#if GTK_CHECK_VERSION(3,0,0)
- if (parent_class->destroy)
- (* (parent_class)->destroy) (object);
+ if (GTK_WIDGET_CLASS(sp_gradient_image_parent_class)->destroy)
+ GTK_WIDGET_CLASS(sp_gradient_image_parent_class)->destroy(object);
#else
- if ((GTK_OBJECT_CLASS(parent_class))->destroy)
- (* (GTK_OBJECT_CLASS(parent_class))->destroy) (object);
+ if (GTK_OBJECT_CLASS(sp_gradient_image_parent_class)->destroy)
+ GTK_OBJECT_CLASS(sp_gradient_image_parent_class)->destroy(object);
#endif
}
@@ -269,3 +242,14 @@ sp_gradient_image_update (SPGradientImage *image)
gtk_widget_queue_draw (GTK_WIDGET (image));
}
}
+
+/*
+ Local Variables:
+ mode:c++
+ c-file-style:"stroustrup"
+ c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
+ indent-tabs-mode:nil
+ fill-column:99
+ End:
+*/
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8 :
diff --git a/src/widgets/gradient-image.h b/src/widgets/gradient-image.h
index 904ce4cac..0d3833441 100644
--- a/src/widgets/gradient-image.h
+++ b/src/widgets/gradient-image.h
@@ -1,7 +1,7 @@
-#ifndef __SP_GRADIENT_IMAGE_H__
-#define __SP_GRADIENT_IMAGE_H__
+#ifndef SEEN_SP_GRADIENT_IMAGE_H
+#define SEEN_SP_GRADIENT_IMAGE_H
-/*
+/**
* A simple gradient preview
*
* Author:
@@ -17,9 +17,6 @@
class SPGradient;
-#include <glib.h>
-
-#include <stddef.h>
#include <sigc++/connection.h>
#define SP_TYPE_GRADIENT_IMAGE (sp_gradient_image_get_type ())
@@ -29,15 +26,15 @@ class SPGradient;
#define SP_IS_GRADIENT_IMAGE_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SP_TYPE_GRADIENT_IMAGE))
struct SPGradientImage {
- GtkWidget widget;
- SPGradient *gradient;
+ GtkWidget widget;
+ SPGradient *gradient;
- sigc::connection release_connection;
- sigc::connection modified_connection;
+ sigc::connection release_connection;
+ sigc::connection modified_connection;
};
struct SPGradientImageClass {
- GtkWidgetClass parent_class;
+ GtkWidgetClass parent_class;
};
GType sp_gradient_image_get_type (void);
@@ -47,3 +44,14 @@ GdkPixbuf *sp_gradient_to_pixbuf (SPGradient *gr, int width, int height);
void sp_gradient_image_set_gradient (SPGradientImage *gi, SPGradient *gr);
#endif
+
+/*
+ Local Variables:
+ mode:c++
+ c-file-style:"stroustrup"
+ c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
+ indent-tabs-mode:nil
+ fill-column:99
+ End:
+*/
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8 :
diff --git a/src/widgets/gradient-selector.cpp b/src/widgets/gradient-selector.cpp
index 871d1ee4c..a5e16aed2 100644
--- a/src/widgets/gradient-selector.cpp
+++ b/src/widgets/gradient-selector.cpp
@@ -16,13 +16,15 @@
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
+
+#include <gtkmm/treeview.h>
+
#include "gradient-vector.h"
-#include <gtk/gtk.h>
#include "document.h"
-#include "../document-undo.h"
-#include "../document-private.h"
-#include "../gradient-chemistry.h"
+#include "document-undo.h"
+#include "document-private.h"
+#include "gradient-chemistry.h"
#include "inkscape.h"
#include "verbs.h"
#include "helper/action.h"
@@ -47,8 +49,6 @@ enum {
};
-static void sp_gradient_selector_class_init (SPGradientSelectorClass *klass);
-static void sp_gradient_selector_init (SPGradientSelector *selector);
static void sp_gradient_selector_dispose(GObject *object);
/* Signal handlers */
@@ -57,41 +57,18 @@ static void sp_gradient_selector_edit_vector_clicked (GtkWidget *w, SPGradientSe
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};
-GType sp_gradient_selector_get_type(void)
-{
- static GType type = 0;
- if (!type) {
- static const GTypeInfo info = {
- sizeof(SPGradientSelectorClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) sp_gradient_selector_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof(SPGradientSelector),
- 0, /* n_preallocs */
- (GInstanceInitFunc) sp_gradient_selector_init,
- 0, /* value_table */
- };
-
- type = g_type_register_static( GTK_TYPE_VBOX,
- "SPGradientSelector",
- &info,
- static_cast< GTypeFlags > (0) );
- }
- return type;
-}
+#if GTK_CHECK_VERSION(3,0,0)
+G_DEFINE_TYPE(SPGradientSelector, sp_gradient_selector, GTK_TYPE_BOX);
+#else
+G_DEFINE_TYPE(SPGradientSelector, sp_gradient_selector, GTK_TYPE_VBOX);
+#endif
static void sp_gradient_selector_class_init(SPGradientSelectorClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS(klass);
- parent_class = GTK_VBOX_CLASS(g_type_class_peek_parent (klass));
-
signals[GRABBED] = g_signal_new ("grabbed",
G_TYPE_FROM_CLASS(object_class),
(GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
@@ -128,6 +105,11 @@ static void sp_gradient_selector_init(SPGradientSelector *sel)
{
sel->safelyInit = true;
sel->blocked = false;
+
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_orientable_set_orientation(GTK_ORIENTABLE(sel), GTK_ORIENTATION_VERTICAL);
+#endif
+
new (&sel->nonsolid) std::vector<GtkWidget*>();
new (&sel->swatch_widgets) std::vector<GtkWidget*>();
@@ -269,8 +251,8 @@ static void sp_gradient_selector_dispose(GObject *object)
sel->text_renderer = NULL;
}
- if ((G_OBJECT_CLASS(parent_class))->dispose) {
- (* (G_OBJECT_CLASS(parent_class))->dispose) (object);
+ if ((G_OBJECT_CLASS(sp_gradient_selector_parent_class))->dispose) {
+ (G_OBJECT_CLASS(sp_gradient_selector_parent_class))->dispose(object);
}
}
diff --git a/src/widgets/gradient-selector.h b/src/widgets/gradient-selector.h
index 1f58de2e4..e090d7cbd 100644
--- a/src/widgets/gradient-selector.h
+++ b/src/widgets/gradient-selector.h
@@ -19,27 +19,23 @@
# include <config.h>
#endif
-#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H
-#include <glibmm/threads.h>
-#endif
-
-#include <glib.h>
-#include <gtk/gtk.h>
-
-#include <gtkmm/entry.h>
-#include <gtkmm/label.h>
-#include <gtkmm/table.h>
#include <gtkmm/liststore.h>
-#include <gtkmm/treeview.h>
#include <gtkmm/scrolledwindow.h>
#include <vector>
-#include "sp-gradient.h"
#include "sp-gradient-spread.h"
#include "sp-gradient-units.h"
+class SPDocument;
class SPGradient;
+namespace Gtk {
+class CellRendererPixbuf;
+class CellRendererText;
+class ScrolledWindow;
+class TreeView;
+}
+
#define SP_TYPE_GRADIENT_SELECTOR (sp_gradient_selector_get_type ())
#define SP_GRADIENT_SELECTOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_GRADIENT_SELECTOR, SPGradientSelector))
#define SP_GRADIENT_SELECTOR_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SP_TYPE_GRADIENT_SELECTOR, SPGradientSelectorClass))
@@ -49,11 +45,18 @@ class SPGradient;
struct SPGradientSelector {
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkBox vbox;
+#else
GtkVBox vbox;
+#endif
enum SelectorMode {
MODE_LINEAR,
MODE_RADIAL,
+#ifdef WITH_MESH
+ MODE_MESH,
+#endif
MODE_SWATCH
};
@@ -128,7 +131,11 @@ struct SPGradientSelector {
};
struct SPGradientSelectorClass {
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkBoxClass parent_class;
+#else
GtkVBoxClass parent_class;
+#endif
void (* grabbed) (SPGradientSelector *sel);
void (* dragged) (SPGradientSelector *sel);
diff --git a/src/widgets/gradient-toolbar.cpp b/src/widgets/gradient-toolbar.cpp
index 4fda44c8d..b6378b251 100644
--- a/src/widgets/gradient-toolbar.cpp
+++ b/src/widgets/gradient-toolbar.cpp
@@ -22,12 +22,12 @@
#include "desktop.h"
#include "document-undo.h"
#include "document.h"
-#include "ege-adjustment-action.h"
-#include "ege-select-one-action.h"
+#include "widgets/ege-adjustment-action.h"
+#include "widgets/ege-select-one-action.h"
#include "gradient-chemistry.h"
#include "gradient-drag.h"
#include "gradient-toolbar.h"
-#include "ink-action.h"
+#include "widgets/ink-action.h"
#include "macros.h"
#include "preferences.h"
#include "selection.h"
@@ -448,11 +448,6 @@ static void gr_defs_modified(SPObject * /*defs*/, guint /*flags*/, GtkWidget *wi
gr_tb_selection_changed(NULL, (gpointer) widget);
}
-static void gr_disconnect_sigc(GObject * /*obj*/, sigc::connection *connection) {
- connection->disconnect();
- delete connection;
-}
-
static SPStop *get_selected_stop( GtkWidget *vb)
{
SPStop *stop = NULL;
@@ -1018,6 +1013,9 @@ void check_renderer(GtkWidget *combo)
g_object_set_data(G_OBJECT(combo), "renderers", renderer);
}
}
+
+static void gradient_toolbox_check_ec(SPDesktop* dt, Inkscape::UI::Tools::ToolBase* ec, GObject* holder);
+
/**
* Gradient auxiliary toolbar construction and setup.
*
@@ -1111,7 +1109,7 @@ void sp_gradient_toolbox_prep(SPDesktop * desktop, GtkActionGroup* mainActions,
GtkTreeIter iter;
gtk_list_store_append( model, &iter );
- gtk_list_store_set( model, &iter, 0, _("None"), 1, SP_GRADIENT_SPREAD_PAD, -1 );
+ gtk_list_store_set( model, &iter, 0, C_("Gradient repeat type", "None"), 1, SP_GRADIENT_SPREAD_PAD, -1 );
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter, 0, _("Reflected"), 1, SP_GRADIENT_SPREAD_REFLECT, -1 );
@@ -1229,34 +1227,51 @@ void sp_gradient_toolbox_prep(SPDesktop * desktop, GtkActionGroup* mainActions,
gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(itact), !linkedmode );
}
- Inkscape::Selection *selection = sp_desktop_selection(desktop);
- SPDocument *document = sp_desktop_document(desktop);
-
g_object_set_data(holder, "desktop", desktop);
- // connect to selection modified and changed signals
- sigc::connection *conn1 = new sigc::connection(
- selection->connectChanged(sigc::bind(sigc::ptr_fun(&gr_tb_selection_changed), (gpointer) holder)));
- sigc::connection *conn2 = new sigc::connection(
- selection->connectModified(sigc::bind(sigc::ptr_fun(&gr_tb_selection_modified), (gpointer) holder)));
- sigc::connection *conn3 = new sigc::connection(
- desktop->connectToolSubselectionChanged( sigc::bind(sigc::ptr_fun(&gr_drag_selection_changed), (gpointer) holder)));
-
- // when holder is destroyed, disconnect
- g_signal_connect(G_OBJECT(holder), "destroy", G_CALLBACK(gr_disconnect_sigc), conn1);
- g_signal_connect(G_OBJECT(holder), "destroy", G_CALLBACK(gr_disconnect_sigc), conn2);
- g_signal_connect(G_OBJECT(holder), "destroy", G_CALLBACK(gr_disconnect_sigc), conn3);
-
- // connect to release and modified signals of the defs (i.e. when someone changes gradient)
- sigc::connection *release_connection = new sigc::connection();
- *release_connection = document->getDefs()->connectRelease(sigc::bind<1>(sigc::ptr_fun(&gr_defs_release), GTK_WIDGET(holder)));
- sigc::connection *modified_connection = new sigc::connection();
- *modified_connection = document->getDefs()->connectModified(sigc::bind<2>(sigc::ptr_fun(&gr_defs_modified), GTK_WIDGET(holder)));
-
- // when holder is destroyed, disconnect
- g_signal_connect(G_OBJECT(holder), "destroy", G_CALLBACK(gr_disconnect_sigc), release_connection);
- g_signal_connect(G_OBJECT(holder), "destroy", G_CALLBACK(gr_disconnect_sigc), modified_connection);
+ desktop->connectEventContextChanged(sigc::bind(sigc::ptr_fun(&gradient_toolbox_check_ec), holder));
+}
+
+// lp:1327267
+/**
+ * Checks the current tool and connects gradient aux toolbox signals if it happens to be the gradient tool.
+ * Called every time the current tool changes by signal emission.
+ */
+static void gradient_toolbox_check_ec(SPDesktop* desktop, Inkscape::UI::Tools::ToolBase* ec, GObject* holder)
+{
+ static sigc::connection connChanged;
+ static sigc::connection connModified;
+ static sigc::connection connSubselectionChanged;
+ static sigc::connection connDefsRelease;
+ static sigc::connection connDefsModified;
+
+ if (SP_IS_GRADIENT_CONTEXT(ec)) {
+ Inkscape::Selection *selection = sp_desktop_selection(desktop);
+ SPDocument *document = sp_desktop_document(desktop);
+ // connect to selection modified and changed signals
+ connChanged = selection->connectChanged(sigc::bind(sigc::ptr_fun(&gr_tb_selection_changed), holder));
+ connModified = selection->connectModified(sigc::bind(sigc::ptr_fun(&gr_tb_selection_modified), holder));
+ connSubselectionChanged = desktop->connectToolSubselectionChanged(sigc::bind(sigc::ptr_fun(&gr_drag_selection_changed), holder));
+
+ // Is this necessary? Couldn't hurt.
+ gr_tb_selection_changed(selection, holder);
+
+ // connect to release and modified signals of the defs (i.e. when someone changes gradient)
+ connDefsRelease = document->getDefs()->connectRelease(sigc::bind<1>(sigc::ptr_fun(&gr_defs_release), GTK_WIDGET(holder)));
+ connDefsModified = document->getDefs()->connectModified(sigc::bind<2>(sigc::ptr_fun(&gr_defs_modified), GTK_WIDGET(holder)));
+ } else {
+ if (connChanged)
+ connChanged.disconnect();
+ if (connModified)
+ connModified.disconnect();
+ if (connSubselectionChanged)
+ connSubselectionChanged.disconnect();
+ if (connDefsRelease)
+ connDefsRelease.disconnect();
+ if (connDefsModified)
+ connDefsModified.disconnect();
+ }
}
/*
diff --git a/src/widgets/gradient-vector.cpp b/src/widgets/gradient-vector.cpp
index 17ac887c4..6607c90d2 100644
--- a/src/widgets/gradient-vector.cpp
+++ b/src/widgets/gradient-vector.cpp
@@ -23,6 +23,7 @@
# include "config.h"
#endif
+#include <glibmm.h>
#include "gradient-vector.h"
#include "ui/widget/color-preview.h"
#include "verbs.h"
@@ -30,17 +31,17 @@
#include "macros.h"
#include <glibmm/i18n.h>
#include <set>
-#include "../widgets/gradient-image.h"
-#include "../inkscape.h"
-#include "../document-private.h"
-#include "../gradient-chemistry.h"
-#include "../helper/window.h"
+#include "widgets/gradient-image.h"
+#include "inkscape.h"
+#include "document-private.h"
+#include "gradient-chemistry.h"
+#include "helper/window.h"
#include "io/resource.h"
#include "xml/repr.h"
-#include "../dialogs/dialog-events.h"
-#include "../preferences.h"
+#include "ui/dialog-events.h"
+#include "preferences.h"
#include "svg/css-ostringstream.h"
#include "sp-stop.h"
#include "selection-chemistry.h"
@@ -50,8 +51,7 @@
#include "desktop.h"
#include "layer-manager.h"
-#include <sigc++/functors/ptr_fun.h>
-#include <sigc++/adaptors/bind.h>
+#include <sigc++/sigc++.h>
#include "document-undo.h"
using Inkscape::DocumentUndo;
@@ -61,9 +61,6 @@ enum {
LAST_SIGNAL
};
-static void sp_gradient_vector_selector_class_init(SPGradientVectorSelectorClass *klass);
-static void sp_gradient_vector_selector_init(SPGradientVectorSelector *gvs);
-
#if GTK_CHECK_VERSION(3,0,0)
static void sp_gradient_vector_selector_destroy(GtkWidget *object);
#else
@@ -79,7 +76,6 @@ static SPStop *get_selected_stop( GtkWidget *vb);
void gr_get_usage_counts(SPDocument *doc, std::map<SPGradient *, gint> *mapUsageCount );
unsigned long sp_gradient_to_hhssll(SPGradient *gr);
-static GtkVBoxClass *parent_class;
static guint signals[LAST_SIGNAL] = {0};
// TODO FIXME kill these globals!!!
@@ -88,35 +84,15 @@ static win_data wd;
static gint x = -1000, y = -1000, w = 0, h = 0; // impossible original values to make sure they are read from prefs
static Glib::ustring const prefs_path = "/dialogs/gradienteditor/";
-GType sp_gradient_vector_selector_get_type(void)
-{
- static GType type = 0;
- if (!type) {
- static const GTypeInfo info = {
- sizeof(SPGradientVectorSelectorClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- reinterpret_cast<GClassInitFunc>(sp_gradient_vector_selector_class_init),
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof(SPGradientVectorSelector),
- 0, /* n_preallocs */
- reinterpret_cast<GInstanceInitFunc>(sp_gradient_vector_selector_init),
- 0, /* value_table */
- };
-
- type = g_type_register_static( GTK_TYPE_VBOX,
- "SPGradientVectorSelector",
- &info,
- static_cast< GTypeFlags >(0) );
- }
- return type;
-}
+#if GTK_CHECK_VERSION(3,0,0)
+G_DEFINE_TYPE(SPGradientVectorSelector, sp_gradient_vector_selector, GTK_TYPE_BOX);
+#else
+G_DEFINE_TYPE(SPGradientVectorSelector, sp_gradient_vector_selector, GTK_TYPE_VBOX);
+#endif
static void sp_gradient_vector_selector_class_init(SPGradientVectorSelectorClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS(klass);
- parent_class = static_cast<GtkVBoxClass*>(g_type_class_peek_parent(klass));
signals[VECTOR_SET] = g_signal_new( "vector_set",
G_TYPE_FROM_CLASS(gobject_class),
@@ -138,6 +114,10 @@ static void sp_gradient_vector_selector_class_init(SPGradientVectorSelectorClass
static void sp_gradient_vector_selector_init(SPGradientVectorSelector *gvs)
{
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_orientable_set_orientation(GTK_ORIENTABLE(gvs), GTK_ORIENTATION_VERTICAL);
+#endif
+
gvs->idlabel = TRUE;
gvs->swatched = false;
@@ -181,12 +161,12 @@ static void sp_gradient_vector_selector_destroy(GtkObject *object)
gvs->tree_select_connection.~connection();
#if GTK_CHECK_VERSION(3,0,0)
- if ((reinterpret_cast<GtkWidgetClass *>(parent_class))->destroy) {
- (* (reinterpret_cast<GtkWidgetClass *>(parent_class))->destroy) (object);
+ if ((GTK_WIDGET_CLASS(sp_gradient_vector_selector_parent_class))->destroy) {
+ (GTK_WIDGET_CLASS(sp_gradient_vector_selector_parent_class))->destroy(object);
}
#else
- if ((reinterpret_cast<GtkObjectClass *>(parent_class))->destroy) {
- (* (reinterpret_cast<GtkObjectClass *>(parent_class))->destroy) (object);
+ if ((GTK_OBJECT_CLASS(sp_gradient_vector_selector_parent_class))->destroy) {
+ (GTK_OBJECT_CLASS(sp_gradient_vector_selector_parent_class))->destroy(object);
}
#endif
}
@@ -488,10 +468,10 @@ void SPGradientVectorSelector::setSwatched()
### Vector Editing Widget
##################################################################*/
-#include "../widgets/sp-color-notebook.h"
-#include "../widgets/widget-sizes.h"
-#include "../xml/node-event-vector.h"
-#include "../svg/svg-color.h"
+#include "widgets/sp-color-notebook.h"
+#include "widgets/widget-sizes.h"
+#include "xml/node-event-vector.h"
+#include "svg/svg-color.h"
#define PAD 4
diff --git a/src/widgets/gradient-vector.h b/src/widgets/gradient-vector.h
index b63120a6e..5ae90b28f 100644
--- a/src/widgets/gradient-vector.h
+++ b/src/widgets/gradient-vector.h
@@ -19,16 +19,8 @@
# include "config.h"
#endif
-#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H
-#include <glibmm/threads.h>
-#endif
-
#include <gtkmm/liststore.h>
-
-#include <stddef.h>
#include <sigc++/connection.h>
-
-#include <gtk/gtk.h>
#include "gradient-selector.h"
#define SP_TYPE_GRADIENT_VECTOR_SELECTOR (sp_gradient_vector_selector_get_type ())
@@ -43,7 +35,11 @@ class SPGradient;
class SPStop;
struct SPGradientVectorSelector {
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkBox vbox;
+#else
GtkVBox vbox;
+#endif
guint idlabel : 1;
@@ -65,7 +61,11 @@ struct SPGradientVectorSelector {
};
struct SPGradientVectorSelectorClass {
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkBoxClass parent_class;
+#else
GtkVBoxClass parent_class;
+#endif
void (* vector_set) (SPGradientVectorSelector *gvs, SPGradient *gr);
};
diff --git a/src/widgets/icon.cpp b/src/widgets/icon.cpp
index eb16cfece..a6e53d638 100644
--- a/src/widgets/icon.cpp
+++ b/src/widgets/icon.cpp
@@ -247,7 +247,11 @@ gboolean IconImpl::draw(GtkWidget *widget, cairo_t* cr)
bool unref_image = false;
/* copied from the expose function of GtkImage */
+#if GTK_CHECK_VERSION(3,0,0)
+ if (gtk_widget_get_state_flags (GTK_WIDGET(icon)) != GTK_STATE_FLAG_NORMAL && image) {
+#else
if (gtk_widget_get_state (GTK_WIDGET(icon)) != GTK_STATE_NORMAL && image) {
+#endif
GtkIconSource *source = gtk_icon_source_new();
gtk_icon_source_set_pixbuf(source, icon->pb);
gtk_icon_source_set_size(source, GTK_ICON_SIZE_SMALL_TOOLBAR); // note: this is boilerplate and not used
@@ -685,6 +689,7 @@ void IconImpl::setupLegacyNaming() {
legacyNames["draw-star"] ="star_angled";
legacyNames["path-mode-bezier"] ="bezier_mode";
legacyNames["path-mode-spiro"] ="spiro_splines_mode";
+ legacyNames["path-mode-bspline"] ="bspline_mode";
legacyNames["path-mode-polyline"] ="polylines_mode";
legacyNames["path-mode-polyline-paraxial"] ="paraxial_lines_mode";
legacyNames["draw-use-tilt"] ="guse_tilt";
diff --git a/src/widgets/icon.h b/src/widgets/icon.h
index e1dae0d6a..5838d8de4 100644
--- a/src/widgets/icon.h
+++ b/src/widgets/icon.h
@@ -14,14 +14,6 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-
-#if GLIBMM_DISABLE_DEPRECATED && HAVE_GLIBMM_THREADS_H
-#include <glibmm/threads.h>
-#endif
-
#include <gtkmm/widget.h>
#include "icon-size.h"
diff --git a/src/ink-action.cpp b/src/widgets/ink-action.cpp
index dd1fe5484..5941c31e4 100644
--- a/src/ink-action.cpp
+++ b/src/widgets/ink-action.cpp
@@ -3,7 +3,7 @@
#include <glib/gi18n.h>
#include <gtk/gtk.h>
-#include "ink-action.h"
+#include "widgets/ink-action.h"
#include "widgets/button.h"
diff --git a/src/ink-action.h b/src/widgets/ink-action.h
index 1d4106681..ac5cb9873 100644
--- a/src/ink-action.h
+++ b/src/widgets/ink-action.h
@@ -2,9 +2,7 @@
#define SEEN_INK_ACTION
-#include <glib.h>
#include <gtk/gtk.h>
-#include <glib-object.h>
#include "icon-size.h"
#include "attributes.h"
diff --git a/src/ink-comboboxentry-action.cpp b/src/widgets/ink-comboboxentry-action.cpp
index 06ccc3739..1114d2cdb 100644
--- a/src/ink-comboboxentry-action.cpp
+++ b/src/widgets/ink-comboboxentry-action.cpp
@@ -30,7 +30,7 @@
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
-#include "ink-comboboxentry-action.h"
+#include "widgets/ink-comboboxentry-action.h"
#include "ui/icon-names.h"
// Must handle both tool and menu items!
@@ -38,7 +38,7 @@ static GtkWidget* create_tool_item( GtkAction* action );
static GtkWidget* create_menu_item( GtkAction* action );
// Internal
-static gint get_active_row_from_text( Ink_ComboBoxEntry_Action* action, const gchar* target_text, gboolean exclude = false );
+static gint get_active_row_from_text( Ink_ComboBoxEntry_Action* action, const gchar* target_text, gboolean exclude = false, gboolean ignore_case = false );
static Glib::ustring check_comma_separated_text( Ink_ComboBoxEntry_Action* action );
// Callbacks
@@ -383,6 +383,17 @@ GtkWidget* create_tool_item( GtkAction* action )
g_signal_connect( G_OBJECT(comboBoxEntry), "changed", G_CALLBACK(combo_box_changed_cb), action );
+ // Optionally add separator function...
+ if( ink_comboboxentry_action->separator_func != NULL ) {
+ gtk_combo_box_set_row_separator_func( ink_comboboxentry_action->combobox,
+ GtkTreeViewRowSeparatorFunc (ink_comboboxentry_action->separator_func),
+ NULL, NULL );
+ }
+
+ // FIXME: once gtk3 migration is done this can be removed
+ // https://bugzilla.gnome.org/show_bug.cgi?id=734915
+ gtk_widget_show_all (comboBoxEntry);
+
// Optionally add formatting...
if( ink_comboboxentry_action->cell_data_func != NULL ) {
GtkCellRenderer *cell = gtk_cell_renderer_text_new();
@@ -393,13 +404,6 @@ GtkWidget* create_tool_item( GtkAction* action )
NULL, NULL );
}
- // Optionally add separator function...
- if( ink_comboboxentry_action->separator_func != NULL ) {
- gtk_combo_box_set_row_separator_func( ink_comboboxentry_action->combobox,
- GtkTreeViewRowSeparatorFunc (ink_comboboxentry_action->separator_func),
- NULL, NULL );
- }
-
// Optionally widen the combobox width... which widens the drop-down list in list mode.
if( ink_comboboxentry_action->extra_width > 0 ) {
GtkRequisition req;
@@ -732,7 +736,8 @@ void ink_comboboxentry_action_set_altx_name( Ink_ComboBoxEntry_Action* actio
// use 3d colunm if available to exclude row from checking (useful to
// skip rows added for font-families included in doc and not on
// system)
-gint get_active_row_from_text( Ink_ComboBoxEntry_Action* action, const gchar* target_text, gboolean exclude ) {
+gint get_active_row_from_text( Ink_ComboBoxEntry_Action* action, const gchar* target_text,
+ gboolean exclude, gboolean ignore_case ) {
// Check if text in list
gint row = 0;
@@ -752,10 +757,23 @@ gint get_active_row_from_text( Ink_ComboBoxEntry_Action* action, const gchar* ta
gchar* text = 0;
gtk_tree_model_get( action->model, &iter, 0, &text, -1 ); // Column 0
- // Check for match
- if( strcmp( target_text, text ) == 0 ){
- found = true;
- break;
+ if( !ignore_case ) {
+ // Case sensitive compare
+ if( strcmp( target_text, text ) == 0 ){
+ found = true;
+ break;
+ }
+ } else {
+ // Case insensitive compare
+ gchar* target_text_casefolded = g_utf8_casefold( target_text, -1 );
+ gchar* text_casefolded = g_utf8_casefold( text, -1 );
+ gboolean equal = (strcmp( target_text_casefolded, text_casefolded ) == 0 );
+ g_free( text_casefolded );
+ g_free( target_text_casefolded );
+ if( equal ) {
+ found = true;
+ break;
+ }
}
}
@@ -794,7 +812,7 @@ static Glib::ustring check_comma_separated_text( Ink_ComboBoxEntry_Action* actio
// Remove any surrounding white space.
g_strstrip( tokens[i] );
- if( get_active_row_from_text( action, tokens[i], true ) == -1 ) {
+ if( get_active_row_from_text( action, tokens[i], true, true ) == -1 ) {
missing += tokens[i];
missing += ", ";
}
diff --git a/src/ink-comboboxentry-action.h b/src/widgets/ink-comboboxentry-action.h
index a66f0790e..04b66e8fe 100644
--- a/src/ink-comboboxentry-action.h
+++ b/src/widgets/ink-comboboxentry-action.h
@@ -19,12 +19,8 @@
#ifndef SEEN_INK_COMBOBOXENTRY_ACTION
#define SEEN_INK_COMBOBOXENTRY_ACTION
-#include <glib.h>
-#include <glib-object.h>
-
#include <gtk/gtk.h>
-
#define INK_COMBOBOXENTRY_TYPE_ACTION (ink_comboboxentry_action_get_type())
#define INK_COMBOBOXENTRY_ACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), INK_COMBOBOXENTRY_TYPE_ACTION, Ink_ComboBoxEntry_Action))
#define INK_COMBOBOXENTRY_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), INK_COMBOBOXENTRY_TYPE_ACTION, Ink_ComboBoxEntry_ActionClass))
diff --git a/src/widgets/lpe-toolbar.cpp b/src/widgets/lpe-toolbar.cpp
index e9e5af912..a85f3ae78 100644
--- a/src/widgets/lpe-toolbar.cpp
+++ b/src/widgets/lpe-toolbar.cpp
@@ -30,19 +30,18 @@
#include "live_effects/lpe-line_segment.h"
#include "lpe-toolbar.h"
-#include "connection-pool.h"
#include "desktop-handles.h"
#include "desktop.h"
#include "document-undo.h"
-#include "ege-select-one-action.h"
+#include "widgets/ege-select-one-action.h"
#include "helper/action-context.h"
#include "helper/action.h"
-#include "ink-action.h"
+#include "widgets/ink-action.h"
#include "live_effects/effect.h"
#include "preferences.h"
#include "selection.h"
#include "sp-namedview.h"
-#include "tools-switch.h"
+#include "ui/tools-switch.h"
#include "ui/tools/lpe-tool.h"
#include "ui/widget/unit-tracker.h"
#include "util/units.h"
@@ -180,6 +179,7 @@ static void lpetool_unit_changed(GtkAction* /*act*/, GObject* tbl)
{
UnitTracker* tracker = reinterpret_cast<UnitTracker*>(g_object_get_data(tbl, "tracker"));
Unit const *unit = tracker->getActiveUnit();
+ g_return_if_fail(unit != NULL);
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
prefs->setString("/tools/lpetool/unit", unit->abbr);
@@ -275,12 +275,15 @@ static void lpetool_open_lpe_dialog(GtkToggleAction *act, gpointer data)
gtk_toggle_action_set_active(act, false);
}
+static void lpetool_toolbox_watch_ec(SPDesktop* dt, Inkscape::UI::Tools::ToolBase* ec, GObject* holder);
+
void sp_lpetool_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder)
{
UnitTracker* tracker = new UnitTracker(Inkscape::Util::UNIT_TYPE_LINEAR);
tracker->setActiveUnit(sp_desktop_namedview(desktop)->doc_units);
g_object_set_data(holder, "tracker", tracker);
Unit const *unit = tracker->getActiveUnit();
+ g_return_if_fail(unit != NULL);
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
prefs->setString("/tools/lpetool/unit", unit->abbr);
@@ -400,21 +403,27 @@ void sp_lpetool_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GO
gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), FALSE );
}
- //watch selection
- Inkscape::ConnectionPool* pool = Inkscape::ConnectionPool::new_connection_pool ("ISNodeToolbox");
+ desktop->connectEventContextChanged(sigc::bind(sigc::ptr_fun(lpetool_toolbox_watch_ec), holder));
+}
- sigc::connection *c_selection_modified =
- new sigc::connection (sp_desktop_selection (desktop)->connectModified
- (sigc::bind (sigc::ptr_fun (sp_lpetool_toolbox_sel_modified), holder)));
- pool->add_connection ("selection-modified", c_selection_modified);
+static void lpetool_toolbox_watch_ec(SPDesktop* desktop, Inkscape::UI::Tools::ToolBase* ec, GObject* holder)
+{
+ static sigc::connection c_selection_modified;
+ static sigc::connection c_selection_changed;
- sigc::connection *c_selection_changed =
- new sigc::connection (sp_desktop_selection (desktop)->connectChanged
- (sigc::bind (sigc::ptr_fun(sp_lpetool_toolbox_sel_changed), holder)));
- pool->add_connection ("selection-changed", c_selection_changed);
+ if (SP_IS_LPETOOL_CONTEXT(ec)) {
+ // Watch selection
+ c_selection_modified = sp_desktop_selection(desktop)->connectModified(sigc::bind(sigc::ptr_fun(sp_lpetool_toolbox_sel_modified), holder));
+ c_selection_changed = sp_desktop_selection(desktop)->connectChanged(sigc::bind(sigc::ptr_fun(sp_lpetool_toolbox_sel_changed), holder));
+ sp_lpetool_toolbox_sel_changed(sp_desktop_selection(desktop), holder);
+ } else {
+ if (c_selection_modified)
+ c_selection_modified.disconnect();
+ if (c_selection_changed)
+ c_selection_changed.disconnect();
+ }
}
-
/*
Local Variables:
mode:c++
@@ -424,4 +433,4 @@ void sp_lpetool_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GO
fill-column:99
End:
*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8 :
diff --git a/src/widgets/mappings.xml b/src/widgets/mappings.xml
index 2de3ff545..089bf76ea 100644
--- a/src/widgets/mappings.xml
+++ b/src/widgets/mappings.xml
@@ -197,6 +197,7 @@
<!-- bezier toolbar -->
<remap id='bezier_mode' newid='path-mode-bezier'/>
<remap id='spiro_splines_mode' newid='path-mode-spiro'/>
+ <remap id='bspline_mode' newid='path-mode-bspline'/>
<remap id='polylines_mode' newid='path-mode-polyline'/>
<remap id='paraxial_lines_mode' newid='path-mode-polyline-paraxial'/>
diff --git a/src/widgets/measure-toolbar.cpp b/src/widgets/measure-toolbar.cpp
index 46d3bd4e0..1a4678332 100644
--- a/src/widgets/measure-toolbar.cpp
+++ b/src/widgets/measure-toolbar.cpp
@@ -34,8 +34,8 @@
#include "desktop-handles.h"
#include "desktop.h"
#include "document-undo.h"
-#include "ege-adjustment-action.h"
-#include "ege-output-action.h"
+#include "widgets/ege-adjustment-action.h"
+#include "widgets/ege-output-action.h"
#include "preferences.h"
#include "toolbox.h"
#include "ui/widget/unit-tracker.h"
diff --git a/src/widgets/mesh-toolbar.cpp b/src/widgets/mesh-toolbar.cpp
index 15dda94f0..897d84278 100644
--- a/src/widgets/mesh-toolbar.cpp
+++ b/src/widgets/mesh-toolbar.cpp
@@ -42,6 +42,7 @@
#include <glibmm/i18n.h>
#include "ui/tools/gradient-tool.h"
+#include "ui/tools/mesh-tool.h"
#include "gradient-drag.h"
#include "sp-mesh-gradient.h"
#include "gradient-chemistry.h"
@@ -49,17 +50,16 @@
#include "selection.h"
#include "ui/icon-names.h"
-#include "../ege-adjustment-action.h"
-#include "../ege-output-action.h"
-#include "../ege-select-one-action.h"
-#include "../ink-action.h"
-#include "../ink-comboboxentry-action.h"
+#include "widgets/ege-adjustment-action.h"
+#include "widgets/ege-output-action.h"
+#include "widgets/ege-select-one-action.h"
+#include "widgets/ink-action.h"
+#include "widgets/ink-comboboxentry-action.h"
#include "sp-stop.h"
#include "svg/css-ostringstream.h"
#include "svg/svg-color.h"
#include "desktop-style.h"
-#include "ui/tools/gradient-tool.h"
#include "toolbox.h"
@@ -67,7 +67,7 @@ using Inkscape::DocumentUndo;
using Inkscape::UI::ToolboxFactory;
using Inkscape::UI::PrefPusher;
-static gboolean blocked = FALSE;
+static bool blocked = false;
//########################
//## Mesh ##
@@ -116,22 +116,16 @@ static void ms_drag_selection_changed(gpointer /*dragger*/, gpointer data)
}
-static void ms_defs_release(SPObject * /*defs*/, GtkWidget *widget)
+static void ms_defs_release(SPObject * /*defs*/, GObject *widget)
{
ms_tb_selection_changed(NULL, widget);
}
-static void ms_defs_modified(SPObject * /*defs*/, guint /*flags*/, GtkWidget *widget)
+static void ms_defs_modified(SPObject * /*defs*/, guint /*flags*/, GObject *widget)
{
- ms_tb_selection_changed(NULL, (gpointer) widget);
-}
-
-static void ms_disconnect_sigc(GObject * /*obj*/, sigc::connection *connection) {
- connection->disconnect();
- delete connection;
+ ms_tb_selection_changed(NULL, widget);
}
-
/*
* Callback functions for user actions
*/
@@ -184,6 +178,8 @@ static void ms_col_changed(GtkAdjustment *adj, GObject * /*tbl*/ )
blocked = FALSE;
}
+static void mesh_toolbox_watch_ec(SPDesktop* dt, Inkscape::UI::Tools::ToolBase* ec, GObject* holder);
+
/**
* Mesh auxiliary toolbar construction and setup.
*
@@ -323,35 +319,43 @@ void sp_mesh_toolbox_prep(SPDesktop * desktop, GtkActionGroup* mainActions, GObj
g_signal_connect( holder, "destroy", G_CALLBACK(delete_prefspusher), pusher);
}
-
- Inkscape::Selection *selection = sp_desktop_selection (desktop);
- SPDocument *document = sp_desktop_document (desktop);
-
g_object_set_data(holder, "desktop", desktop);
- // connect to selection modified and changed signals
- sigc::connection *conn1 = new sigc::connection(
- selection->connectChanged(sigc::bind(sigc::ptr_fun(&ms_tb_selection_changed), (gpointer) holder)));
- sigc::connection *conn2 = new sigc::connection(
- selection->connectModified(sigc::bind(sigc::ptr_fun(&ms_tb_selection_modified), (gpointer) holder)));
- sigc::connection *conn3 = new sigc::connection(
- desktop->connectToolSubselectionChanged( sigc::bind(sigc::ptr_fun(&ms_drag_selection_changed), (gpointer) holder)));
-
- // when holder is destroyed, disconnect
- g_signal_connect(G_OBJECT(holder), "destroy", G_CALLBACK(ms_disconnect_sigc), conn1);
- g_signal_connect(G_OBJECT(holder), "destroy", G_CALLBACK(ms_disconnect_sigc), conn2);
- g_signal_connect(G_OBJECT(holder), "destroy", G_CALLBACK(ms_disconnect_sigc), conn3);
-
- // connect to release and modified signals of the defs (i.e. when someone changes mesh)
- sigc::connection *release_connection = new sigc::connection();
- *release_connection = document->getDefs()->connectRelease(sigc::bind<1>(sigc::ptr_fun(&ms_defs_release), GTK_WIDGET(holder)));
- sigc::connection *modified_connection = new sigc::connection();
- *modified_connection = document->getDefs()->connectModified(sigc::bind<2>(sigc::ptr_fun(&ms_defs_modified), GTK_WIDGET(holder)));
-
- // when holder is destroyed, disconnect
- g_signal_connect(G_OBJECT(holder), "destroy", G_CALLBACK(ms_disconnect_sigc), release_connection);
- g_signal_connect(G_OBJECT(holder), "destroy", G_CALLBACK(ms_disconnect_sigc), modified_connection);
+ desktop->connectEventContextChanged(sigc::bind(sigc::ptr_fun(mesh_toolbox_watch_ec), holder));
+}
+static void mesh_toolbox_watch_ec(SPDesktop* desktop, Inkscape::UI::Tools::ToolBase* ec, GObject* holder)
+{
+ static sigc::connection c_selection_changed;
+ static sigc::connection c_selection_modified;
+ static sigc::connection c_subselection_changed;
+ static sigc::connection c_defs_release;
+ static sigc::connection c_defs_modified;
+
+ if (SP_IS_MESH_CONTEXT(ec)) {
+ // connect to selection modified and changed signals
+ Inkscape::Selection *selection = sp_desktop_selection (desktop);
+ SPDocument *document = sp_desktop_document (desktop);
+
+ c_selection_changed = selection->connectChanged(sigc::bind(sigc::ptr_fun(&ms_tb_selection_changed), holder));
+ c_selection_modified = selection->connectModified(sigc::bind(sigc::ptr_fun(&ms_tb_selection_modified), holder));
+ c_subselection_changed = desktop->connectToolSubselectionChanged(sigc::bind(sigc::ptr_fun(&ms_drag_selection_changed), holder));
+
+ c_defs_release = document->getDefs()->connectRelease(sigc::bind<1>(sigc::ptr_fun(&ms_defs_release), holder));
+ c_defs_modified = document->getDefs()->connectModified(sigc::bind<2>(sigc::ptr_fun(&ms_defs_modified), holder));
+ ms_tb_selection_changed(selection, holder);
+ } else {
+ if (c_selection_changed)
+ c_selection_changed.disconnect();
+ if (c_selection_modified)
+ c_selection_modified.disconnect();
+ if (c_subselection_changed)
+ c_subselection_changed.disconnect();
+ if (c_defs_release)
+ c_defs_release.disconnect();
+ if (c_defs_modified)
+ c_defs_modified.disconnect();
+ }
}
/*
diff --git a/src/widgets/node-toolbar.cpp b/src/widgets/node-toolbar.cpp
index 53161857a..467325d08 100644
--- a/src/widgets/node-toolbar.cpp
+++ b/src/widgets/node-toolbar.cpp
@@ -31,12 +31,11 @@
#include "ui/tool/multi-path-manipulator.h"
#include <glibmm/i18n.h>
#include "node-toolbar.h"
-#include "connection-pool.h"
#include "desktop-handles.h"
#include "desktop.h"
#include "document-undo.h"
-#include "ege-adjustment-action.h"
-#include "ink-action.h"
+#include "widgets/ege-adjustment-action.h"
+#include "widgets/ink-action.h"
#include "inkscape.h"
#include "preferences.h"
#include "selection-chemistry.h"
@@ -229,6 +228,7 @@ static void sp_node_toolbox_coord_changed(gpointer /*shape_editor*/, GObject *tb
return;
}
Unit const *unit = tracker->getActiveUnit();
+ g_return_if_fail(unit != NULL);
NodeTool *nt = get_node_tool();
if (!nt || !(nt->_selected_nodes) ||nt->_selected_nodes->empty()) {
@@ -270,7 +270,7 @@ static void sp_node_path_value_changed(GtkAdjustment *adj, GObject *tbl, Geom::D
}
// quit if run by the attr_changed listener
- if (g_object_get_data( tbl, "freeze" )) {
+ if (g_object_get_data( tbl, "freeze" ) || tracker->isUpdating()) {
return;
}
@@ -321,7 +321,7 @@ static void sp_node_toolbox_sel_modified(Inkscape::Selection *selection, guint /
sp_node_toolbox_sel_changed (selection, tbl);
}
-
+static void node_toolbox_watch_ec(SPDesktop* dt, Inkscape::UI::Tools::ToolBase* ec, GObject* holder);
//################################
//## Node Editing Toolbox ##
@@ -614,32 +614,33 @@ void sp_node_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObje
gtk_action_group_add_action( mainActions, act );
}
-
sp_node_toolbox_sel_changed(sp_desktop_selection(desktop), holder);
+ desktop->connectEventContextChanged(sigc::bind(sigc::ptr_fun(node_toolbox_watch_ec), holder));
- //watch selection
- Inkscape::ConnectionPool* pool = Inkscape::ConnectionPool::new_connection_pool ("ISNodeToolbox");
-
- sigc::connection *c_selection_changed =
- new sigc::connection (sp_desktop_selection (desktop)->connectChanged
- (sigc::bind (sigc::ptr_fun (sp_node_toolbox_sel_changed), holder)));
- pool->add_connection ("selection-changed", c_selection_changed);
-
- sigc::connection *c_selection_modified =
- new sigc::connection (sp_desktop_selection (desktop)->connectModified
- (sigc::bind (sigc::ptr_fun (sp_node_toolbox_sel_modified), holder)));
- pool->add_connection ("selection-modified", c_selection_modified);
-
- sigc::connection *c_subselection_changed =
- new sigc::connection (desktop->connectToolSubselectionChanged
- (sigc::bind (sigc::ptr_fun (sp_node_toolbox_coord_changed), holder)));
- pool->add_connection ("tool-subselection-changed", c_subselection_changed);
+} // end of sp_node_toolbox_prep()
- Inkscape::ConnectionPool::connect_destroy (G_OBJECT (holder), pool);
+static void node_toolbox_watch_ec(SPDesktop* desktop, Inkscape::UI::Tools::ToolBase* ec, GObject* holder)
+{
+ static sigc::connection c_selection_changed;
+ static sigc::connection c_selection_modified;
+ static sigc::connection c_subselection_changed;
- g_signal_connect( holder, "destroy", G_CALLBACK(purge_repr_listener), holder );
-} // end of sp_node_toolbox_prep()
+ if (INK_IS_NODE_TOOL(ec)) {
+ // watch selection
+ c_selection_changed = sp_desktop_selection(desktop)->connectChanged(sigc::bind(sigc::ptr_fun(sp_node_toolbox_sel_changed), holder));
+ c_selection_modified = sp_desktop_selection(desktop)->connectModified(sigc::bind(sigc::ptr_fun(sp_node_toolbox_sel_modified), holder));
+ c_subselection_changed = desktop->connectToolSubselectionChanged(sigc::bind(sigc::ptr_fun(sp_node_toolbox_coord_changed), holder));
+ sp_node_toolbox_sel_changed(sp_desktop_selection(desktop), holder);
+ } else {
+ if (c_selection_changed)
+ c_selection_changed.disconnect();
+ if (c_selection_modified)
+ c_selection_modified.disconnect();
+ if (c_subselection_changed)
+ c_subselection_changed.disconnect();
+ }
+}
/*
diff --git a/src/widgets/paint-selector.cpp b/src/widgets/paint-selector.cpp
index 9466c875e..6ef910f61 100644
--- a/src/widgets/paint-selector.cpp
+++ b/src/widgets/paint-selector.cpp
@@ -29,14 +29,15 @@
#endif
#include "widgets/swatch-selector.h"
-#include "../sp-pattern.h"
+#include "sp-pattern.h"
#include <glibmm/i18n.h>
-#include "../widgets/icon.h"
+#include "widgets/icon.h"
#include "widgets/widget-sizes.h"
#include "xml/repr.h"
#include "sp-color-notebook.h"
#include "sp-linear-gradient.h"
+#include "sp-mesh-gradient.h"
#include "sp-radial-gradient.h"
/* fixme: Move it from dialogs to here */
#include "gradient-selector.h"
@@ -71,8 +72,6 @@ enum {
LAST_SIGNAL
};
-static void sp_paint_selector_class_init(SPPaintSelectorClass *klass);
-static void sp_paint_selector_init(SPPaintSelector *slider);
static void sp_paint_selector_dispose(GObject *object);
static GtkWidget *sp_paint_selector_style_button_add(SPPaintSelector *psel, gchar const *px, SPPaintSelector::Mode mode, gchar const *tip);
@@ -91,7 +90,6 @@ static void sp_paint_selector_set_mode_unset(SPPaintSelector *psel);
static void sp_paint_selector_set_style_buttons(SPPaintSelector *psel, GtkWidget *active);
-static GtkVBoxClass *parent_class;
static guint psel_signals[LAST_SIGNAL] = {0};
#ifdef SP_PS_VERBOSE
@@ -113,10 +111,13 @@ static gchar const* modeStrings[] = {
#endif
-static bool isPaintModeGradient( SPPaintSelector::Mode mode )
+static bool isPaintModeGradient(SPPaintSelector::Mode mode)
{
bool isGrad = (mode == SPPaintSelector::MODE_GRADIENT_LINEAR) ||
(mode == SPPaintSelector::MODE_GRADIENT_RADIAL) ||
+#ifdef WITH_MESH
+ (mode == SPPaintSelector::MODE_GRADIENT_MESH) ||
+#endif
(mode == SPPaintSelector::MODE_SWATCH);
return isGrad;
@@ -136,34 +137,17 @@ static SPGradientSelector *getGradientFromData(SPPaintSelector const *psel)
return grad;
}
-GType sp_paint_selector_get_type(void)
-{
- static GType type = 0;
- if (!type) {
- GTypeInfo info = {
- sizeof(SPPaintSelectorClass),
- 0, // base_init
- 0, // base_finalize
- (GClassInitFunc)sp_paint_selector_class_init,
- 0, // class_finalize
- 0, // class_data
- sizeof(SPPaintSelector),
- 0, // n_preallocs
- (GInstanceInitFunc)sp_paint_selector_init,
- 0 // value_table
- };
- type = g_type_register_static(GTK_TYPE_VBOX, "SPPaintSelector", &info, static_cast<GTypeFlags>(0));
- }
- return type;
-}
+#if GTK_CHECK_VERSION(3,0,0)
+G_DEFINE_TYPE(SPPaintSelector, sp_paint_selector, GTK_TYPE_BOX);
+#else
+G_DEFINE_TYPE(SPPaintSelector, sp_paint_selector, GTK_TYPE_VBOX);
+#endif
static void
sp_paint_selector_class_init(SPPaintSelectorClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS(klass);
- parent_class = GTK_VBOX_CLASS(g_type_class_peek_parent(klass));
-
psel_signals[MODE_CHANGED] = g_signal_new("mode_changed",
G_TYPE_FROM_CLASS(object_class),
(GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
@@ -216,6 +200,10 @@ sp_paint_selector_class_init(SPPaintSelectorClass *klass)
static void
sp_paint_selector_init(SPPaintSelector *psel)
{
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_orientable_set_orientation(GTK_ORIENTABLE(psel), GTK_ORIENTATION_VERTICAL);
+#endif
+
psel->mode = static_cast<SPPaintSelector::Mode>(-1); // huh? do you mean 0xff? -- I think this means "not in the enum"
/* Paint style button box */
@@ -238,6 +226,10 @@ sp_paint_selector_init(SPPaintSelector *psel)
SPPaintSelector::MODE_GRADIENT_LINEAR, _("Linear gradient"));
psel->radial = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON("paint-gradient-radial"),
SPPaintSelector::MODE_GRADIENT_RADIAL, _("Radial gradient"));
+#ifdef WITH_MESH
+ psel->mesh = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON("paint-gradient-mesh"),
+ SPPaintSelector::MODE_GRADIENT_MESH, _("Mesh gradient"));
+#endif
psel->pattern = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON("paint-pattern"),
SPPaintSelector::MODE_PATTERN, _("Pattern"));
psel->swatch = sp_paint_selector_style_button_add(psel, INKSCAPE_ICON("paint-swatch"),
@@ -314,8 +306,8 @@ static void sp_paint_selector_dispose(GObject *object)
// clean up our long-living pattern menu
g_object_set_data(G_OBJECT(psel),"patternmenu",NULL);
- if ((G_OBJECT_CLASS(parent_class))->dispose)
- (* (G_OBJECT_CLASS(parent_class))->dispose)(object);
+ if ((G_OBJECT_CLASS(sp_paint_selector_parent_class))->dispose)
+ (G_OBJECT_CLASS(sp_paint_selector_parent_class))->dispose(object);
}
static GtkWidget *sp_paint_selector_style_button_add(SPPaintSelector *psel,
@@ -413,6 +405,9 @@ void SPPaintSelector::setMode(Mode mode)
break;
case MODE_GRADIENT_LINEAR:
case MODE_GRADIENT_RADIAL:
+#ifdef WITH_MESH
+ case MODE_GRADIENT_MESH:
+#endif
sp_paint_selector_set_mode_gradient(this, mode);
break;
case MODE_PATTERN:
@@ -511,6 +506,21 @@ void SPPaintSelector::setGradientRadial(SPGradient *vector)
gsel->setVector((vector) ? vector->document : 0, vector);
}
+#ifdef WITH_MESH
+void SPPaintSelector::setGradientMesh(SPGradient *vector)
+{
+#ifdef SP_PS_VERBOSE
+ g_print("PaintSelector set GRADIENT MESH\n");
+#endif
+ setMode(MODE_GRADIENT_RADIAL);
+
+ SPGradientSelector *gsel = getGradientFromData(this);
+
+ gsel->setMode(SPGradientSelector::MODE_MESH);
+ gsel->setVector((vector) ? vector->document : 0, vector);
+}
+#endif
+
void SPPaintSelector::setGradientProperties( SPGradientUnits units, SPGradientSpread spread )
{
g_return_if_fail(isPaintModeGradient(mode));
@@ -665,8 +675,8 @@ static void sp_paint_selector_set_mode_color(SPPaintSelector *psel, SPPaintSelec
/* Create new color selector */
/* Create vbox */
#if GTK_CHECK_VERSION(3,0,0)
- GtkWidget *vb = gtk_box_new(GTK_ORIENTATION_VERTICAL, 4);
- gtk_box_set_homogeneous(GTK_BOX(vb), FALSE);
+ GtkWidget *vb = gtk_box_new(GTK_ORIENTATION_VERTICAL, 4);
+ gtk_box_set_homogeneous(GTK_BOX(vb), FALSE);
#else
GtkWidget *vb = gtk_vbox_new(FALSE, 4);
#endif
@@ -728,9 +738,14 @@ static void sp_paint_selector_set_mode_gradient(SPPaintSelector *psel, SPPaintSe
if (mode == SPPaintSelector::MODE_GRADIENT_LINEAR) {
sp_paint_selector_set_style_buttons(psel, psel->gradient);
- } else {
+ } else if (mode == SPPaintSelector::MODE_GRADIENT_RADIAL) {
sp_paint_selector_set_style_buttons(psel, psel->radial);
}
+#ifdef WITH_MESH
+ else {
+ sp_paint_selector_set_style_buttons(psel, psel->mesh);
+ }
+#endif
gtk_widget_set_sensitive(psel->style, TRUE);
if ((psel->mode == SPPaintSelector::MODE_GRADIENT_LINEAR) || (psel->mode == SPPaintSelector::MODE_GRADIENT_RADIAL)) {
@@ -756,10 +771,17 @@ static void sp_paint_selector_set_mode_gradient(SPPaintSelector *psel, SPPaintSe
SP_GRADIENT_SELECTOR(gsel)->setMode(SPGradientSelector::MODE_LINEAR);
//sp_gradient_selector_set_mode(SP_GRADIENT_SELECTOR(gsel), SP_GRADIENT_SELECTOR_MODE_LINEAR);
gtk_label_set_markup(GTK_LABEL(psel->label), _("<b>Linear gradient</b>"));
- } else {
+ } else if (mode == SPPaintSelector::MODE_GRADIENT_LINEAR) {
SP_GRADIENT_SELECTOR(gsel)->setMode(SPGradientSelector::MODE_RADIAL);
gtk_label_set_markup(GTK_LABEL(psel->label), _("<b>Radial gradient</b>"));
}
+#ifdef WITH_MESH
+ else {
+ SP_GRADIENT_SELECTOR(gsel)->setMode(SPGradientSelector::MODE_RADIAL);
+ gtk_label_set_markup(GTK_LABEL(psel->label), _("<b>Mesh gradient</b>"));
+ }
+#endif
+
#ifdef SP_PS_VERBOSE
g_print("Gradient req\n");
#endif
@@ -772,6 +794,9 @@ sp_paint_selector_set_style_buttons(SPPaintSelector *psel, GtkWidget *active)
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(psel->solid), (active == psel->solid));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(psel->gradient), (active == psel->gradient));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(psel->radial), (active == psel->radial));
+#ifdef WITH_MESH
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(psel->mesh), (active == psel->mesh));
+#endif
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(psel->pattern), (active == psel->pattern));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(psel->swatch), (active == psel->swatch));
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(psel->unset), (active == psel->unset));
@@ -1004,8 +1029,8 @@ static void sp_paint_selector_set_mode_pattern(SPPaintSelector *psel, SPPaintSel
/* Create vbox */
#if GTK_CHECK_VERSION(3,0,0)
- tbl = gtk_box_new(GTK_ORIENTATION_VERTICAL, 4);
- gtk_box_set_homogeneous(GTK_BOX(tbl), FALSE);
+ tbl = gtk_box_new(GTK_ORIENTATION_VERTICAL, 4);
+ gtk_box_set_homogeneous(GTK_BOX(tbl), FALSE);
#else
tbl = gtk_vbox_new(FALSE, 4);
#endif
@@ -1218,6 +1243,10 @@ SPPaintSelector::Mode SPPaintSelector::getModeForStyle(SPStyle const & style, Fi
mode = MODE_GRADIENT_LINEAR;
} else if (SP_IS_RADIALGRADIENT(server)) {
mode = MODE_GRADIENT_RADIAL;
+#ifdef WITH_MESH
+ } else if (SP_IS_MESHGRADIENT(server)) {
+ mode = MODE_GRADIENT_MESH;
+#endif
} else if (SP_IS_PATTERN(server)) {
mode = MODE_PATTERN;
} else {
diff --git a/src/widgets/paint-selector.h b/src/widgets/paint-selector.h
index d3b3f4116..788aa673e 100644
--- a/src/widgets/paint-selector.h
+++ b/src/widgets/paint-selector.h
@@ -12,7 +12,6 @@
*
*/
-#include <glib.h>
#include <gtk/gtk.h>
#include "color.h"
@@ -23,7 +22,7 @@
class SPGradient;
class SPDesktop;
class SPPattern;
-struct SPStyle;
+class SPStyle;
#define SP_TYPE_PAINT_SELECTOR (sp_paint_selector_get_type ())
#define SP_PAINT_SELECTOR(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_PAINT_SELECTOR, SPPaintSelector))
@@ -35,7 +34,11 @@ struct SPStyle;
* Generic paint selector widget.
*/
struct SPPaintSelector {
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkBox vbox;
+#else
GtkVBox vbox;
+#endif
enum Mode {
MODE_EMPTY,
@@ -45,6 +48,9 @@ struct SPPaintSelector {
MODE_COLOR_CMYK,
MODE_GRADIENT_LINEAR,
MODE_GRADIENT_RADIAL,
+#ifdef WITH_MESH
+ MODE_GRADIENT_MESH,
+#endif
MODE_PATTERN,
MODE_SWATCH,
MODE_UNSET
@@ -64,6 +70,9 @@ struct SPPaintSelector {
GtkWidget *solid;
GtkWidget *gradient;
GtkWidget *radial;
+#ifdef WITH_MESH
+ GtkWidget *mesh;
+#endif
GtkWidget *pattern;
GtkWidget *swatch;
GtkWidget *unset;
@@ -88,6 +97,9 @@ struct SPPaintSelector {
void setGradientLinear( SPGradient *vector );
void setGradientRadial( SPGradient *vector );
+#ifdef WITH_MESH
+ void setGradientMesh(SPGradient *vector);
+#endif
void setSwatch( SPGradient *vector );
void setGradientProperties( SPGradientUnits units, SPGradientSpread spread );
@@ -109,7 +121,11 @@ enum {COMBO_COL_LABEL=0, COMBO_COL_STOCK=1, COMBO_COL_PATTERN=2, COMBO_COL_SEP=3
/// The SPPaintSelector vtable
struct SPPaintSelectorClass {
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkBoxClass parent_class;
+#else
GtkVBoxClass parent_class;
+#endif
void (* mode_changed) (SPPaintSelector *psel, SPPaintSelector::Mode mode);
diff --git a/src/widgets/paintbucket-toolbar.cpp b/src/widgets/paintbucket-toolbar.cpp
index e20811de8..d8edeb9f6 100644
--- a/src/widgets/paintbucket-toolbar.cpp
+++ b/src/widgets/paintbucket-toolbar.cpp
@@ -33,8 +33,8 @@
#include "paintbucket-toolbar.h"
#include "desktop.h"
#include "document-undo.h"
-#include "ege-adjustment-action.h"
-#include "ege-select-one-action.h"
+#include "widgets/ege-adjustment-action.h"
+#include "widgets/ege-select-one-action.h"
#include "preferences.h"
#include "toolbox.h"
#include "ui/icon-names.h"
@@ -83,6 +83,8 @@ static void paintbucket_offset_changed(GtkAdjustment *adj, GObject *tbl)
// Don't adjust the offset value because we're saving the
// unit and it'll be correctly handled on load.
prefs->setDouble("/tools/paintbucket/offset", (gdouble)gtk_adjustment_get_value(adj));
+
+ g_return_if_fail(unit != NULL);
prefs->setString("/tools/paintbucket/offsetunits", unit->abbr);
}
diff --git a/src/widgets/pencil-toolbar.cpp b/src/widgets/pencil-toolbar.cpp
index 1e69e2f42..404f62848 100644
--- a/src/widgets/pencil-toolbar.cpp
+++ b/src/widgets/pencil-toolbar.cpp
@@ -33,12 +33,12 @@
#include "pencil-toolbar.h"
#include "desktop.h"
#include "document-undo.h"
-#include "ege-adjustment-action.h"
-#include "ege-select-one-action.h"
-#include "ink-action.h"
+#include "widgets/ege-adjustment-action.h"
+#include "widgets/ege-select-one-action.h"
+#include "widgets/ink-action.h"
#include "preferences.h"
#include "toolbox.h"
-#include "tools-switch.h"
+#include "ui/tools-switch.h"
#include "ui/icon-names.h"
#include "ui/tools/pen-tool.h"
#include "ui/uxmanager.h"
@@ -104,7 +104,12 @@ static void sp_add_freehand_mode_toggle(GtkActionGroup* mainActions, GObject* ho
1, _("Create Spiro path"),
2, INKSCAPE_ICON("path-mode-spiro"),
-1 );
-
+ gtk_list_store_append( model, &iter );
+ gtk_list_store_set( model, &iter,
+ 0, _("BSpline"),
+ 1, _("Create BSpline path"),
+ 2, INKSCAPE_ICON("path-mode-bspline"),
+ -1 );
if (!tool_is_pencil) {
gtk_list_store_append( model, &iter );
gtk_list_store_set( model, &iter,
@@ -152,7 +157,7 @@ static void freehand_change_shape(EgeSelectOneAction* act, GObject *dataKludge)
static GList * freehand_shape_dropdown_items_list() {
GList *glist = NULL;
- glist = g_list_append (glist, _("None"));
+ glist = g_list_append (glist, const_cast<gchar *>(C_("Freehand shape", "None")));
glist = g_list_append (glist, _("Triangle in"));
glist = g_list_append (glist, _("Triangle out"));
glist = g_list_append (glist, _("Ellipse"));
diff --git a/src/widgets/rect-toolbar.cpp b/src/widgets/rect-toolbar.cpp
index 6996786e3..b6b7e435d 100644
--- a/src/widgets/rect-toolbar.cpp
+++ b/src/widgets/rect-toolbar.cpp
@@ -34,9 +34,9 @@
#include "desktop-handles.h"
#include "desktop.h"
#include "document-undo.h"
-#include "ege-adjustment-action.h"
-#include "ege-output-action.h"
-#include "ink-action.h"
+#include "widgets/ege-adjustment-action.h"
+#include "widgets/ege-output-action.h"
+#include "widgets/ink-action.h"
#include "inkscape.h"
#include "preferences.h"
#include "selection.h"
@@ -44,6 +44,7 @@
#include "sp-rect.h"
#include "toolbox.h"
#include "ui/icon-names.h"
+#include "ui/tools/rect-tool.h"
#include "ui/uxmanager.h"
#include "ui/widget/unit-tracker.h"
#include "util/units.h"
@@ -87,6 +88,7 @@ static void sp_rtb_value_changed(GtkAdjustment *adj, GObject *tbl, gchar const *
UnitTracker* tracker = reinterpret_cast<UnitTracker*>(g_object_get_data( tbl, "tracker" ));
Unit const *unit = tracker->getActiveUnit();
+ g_return_if_fail(unit != NULL);
if (DocumentUndo::getUndoSensitive(sp_desktop_document(desktop))) {
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
@@ -95,7 +97,7 @@ static void sp_rtb_value_changed(GtkAdjustment *adj, GObject *tbl, gchar const *
}
// quit if run by the attr_changed listener
- if (g_object_get_data( tbl, "freeze" )) {
+ if (g_object_get_data( tbl, "freeze" ) || tracker->isUpdating()) {
return;
}
@@ -180,6 +182,7 @@ static void rect_tb_event_attr_changed(Inkscape::XML::Node * /*repr*/, gchar con
UnitTracker* tracker = reinterpret_cast<UnitTracker*>( g_object_get_data( tbl, "tracker" ) );
Unit const *unit = tracker->getActiveUnit();
Unit const *doc_unit = sp_desktop_namedview(SP_ACTIVE_DESKTOP)->doc_units;
+ g_return_if_fail(unit != NULL);
gpointer item = g_object_get_data( tbl, "item" );
if (item && SP_IS_RECT(item)) {
@@ -286,6 +289,7 @@ static void sp_rect_toolbox_selection_changed(Inkscape::Selection *selection, GO
}
}
+static void rect_toolbox_watch_ec(SPDesktop* dt, Inkscape::UI::Tools::ToolBase* ec, GObject* holder);
void sp_rect_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder)
{
@@ -392,13 +396,22 @@ void sp_rect_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObje
g_object_set_data( holder, "single", GINT_TO_POINTER(TRUE) );
sp_rtb_sensitivize( holder );
- sigc::connection *connection = new sigc::connection(
- sp_desktop_selection(desktop)->connectChanged(sigc::bind(sigc::ptr_fun(sp_rect_toolbox_selection_changed), holder))
- );
- g_signal_connect( holder, "destroy", G_CALLBACK(delete_connection), connection );
+ desktop->connectEventContextChanged(sigc::bind(sigc::ptr_fun(rect_toolbox_watch_ec), holder));
g_signal_connect( holder, "destroy", G_CALLBACK(purge_repr_listener), holder );
}
+static void rect_toolbox_watch_ec(SPDesktop* desktop, Inkscape::UI::Tools::ToolBase* ec, GObject* holder)
+{
+ static sigc::connection changed;
+
+ // TODO fixme: use of dynamic_cast<> seems wrong here.
+ if (dynamic_cast<Inkscape::UI::Tools::RectTool *>(ec)) {
+ changed = sp_desktop_selection(desktop)->connectChanged(sigc::bind(sigc::ptr_fun(sp_rect_toolbox_selection_changed), holder));
+ } else {
+ if (changed)
+ changed.disconnect();
+ }
+}
/*
Local Variables:
@@ -409,4 +422,4 @@ void sp_rect_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObje
fill-column:99
End:
*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8 :
diff --git a/src/widgets/ruler.cpp b/src/widgets/ruler.cpp
index 5d5151343..8e818843d 100644
--- a/src/widgets/ruler.cpp
+++ b/src/widgets/ruler.cpp
@@ -1394,7 +1394,7 @@ sp_ruler_draw_ticks (SPRuler *ruler)
(label_spacing_px > 6*digit_height || tick_index%2 == 0 || cur == 0) &&
(label_spacing_px > 3*digit_height || tick_index%4 == 0 || cur == 0))
{
- if (fabs((int)cur) >= 2000 && (((int) cur)/1000)*1000 == ((int) cur))
+ if (std::abs((int)cur) >= 2000 && (((int) cur)/1000)*1000 == ((int) cur))
sprintf (unit_str, "%dk", ((int) cur)/1000);
else
sprintf (unit_str, "%d", (int) cur);
diff --git a/src/widgets/select-toolbar.cpp b/src/widgets/select-toolbar.cpp
index 284e436bf..08a46354e 100644
--- a/src/widgets/select-toolbar.cpp
+++ b/src/widgets/select-toolbar.cpp
@@ -26,10 +26,10 @@
#include "display/sp-canvas.h"
#include "document-undo.h"
#include "document.h"
-#include "ege-adjustment-action.h"
+#include "widgets/ege-adjustment-action.h"
#include "helper/action-context.h"
#include "helper/action.h"
-#include "ink-action.h"
+#include "widgets/ink-action.h"
#include "inkscape.h"
#include "message-stack.h"
#include "preferences.h"
@@ -73,6 +73,7 @@ sp_selection_layout_widget_update(SPWidget *spw, Inkscape::Selection *sel)
if ( bbox ) {
UnitTracker *tracker = reinterpret_cast<UnitTracker*>(g_object_get_data(G_OBJECT(spw), "tracker"));
Unit const *unit = tracker->getActiveUnit();
+ g_return_if_fail(unit != NULL);
struct { char const *key; double val; } const keyval[] = {
{ "X", bbox->min()[X] },
@@ -178,6 +179,7 @@ sp_object_layout_any_value_changed(GtkAdjustment *adj, SPWidget *spw)
gdouble xrel = 0;
gdouble yrel = 0;
Unit const *unit = tracker->getActiveUnit();
+ g_return_if_fail(unit != NULL);
GtkAdjustment* a_x = GTK_ADJUSTMENT( g_object_get_data( G_OBJECT(spw), "X" ) );
GtkAdjustment* a_y = GTK_ADJUSTMENT( g_object_get_data( G_OBJECT(spw), "Y" ) );
diff --git a/src/widgets/sp-color-icc-selector.cpp b/src/widgets/sp-color-icc-selector.cpp
index 53e73dd57..6e910c582 100644
--- a/src/widgets/sp-color-icc-selector.cpp
+++ b/src/widgets/sp-color-icc-selector.cpp
@@ -10,7 +10,7 @@
#include <set>
#include <vector>
-#include "../dialogs/dialog-events.h"
+#include "ui/dialog-events.h"
#include "sp-color-icc-selector.h"
#include "sp-color-scales.h"
#include "sp-color-slider.h"
@@ -67,10 +67,7 @@ extern guint update_in_progress;
G_BEGIN_DECLS
-static void sp_color_icc_selector_class_init (SPColorICCSelectorClass *klass);
-static void sp_color_icc_selector_init (SPColorICCSelector *cs);
static void sp_color_icc_selector_dispose(GObject *object);
-
static void sp_color_icc_selector_show_all (GtkWidget *widget);
static void sp_color_icc_selector_hide(GtkWidget *widget);
@@ -161,9 +158,6 @@ public:
#endif // defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
};
-
-static SPColorSelectorClass *parent_class;
-
#define XPAD 4
#define YPAD 1
@@ -205,8 +199,14 @@ void attachToGridOrTable(GtkWidget *parent,
guint ypadding = YPAD)
{
#if GTK_CHECK_VERSION(3,0,0)
+ #if GTK_CHECK_VERSION(3,12,0)
+ gtk_widget_set_margin_start( child, xpadding );
+ gtk_widget_set_margin_end( child, xpadding );
+ #else
gtk_widget_set_margin_left( child, xpadding );
gtk_widget_set_margin_right( child, xpadding );
+ #endif
+
gtk_widget_set_margin_top( child, ypadding );
gtk_widget_set_margin_bottom( child, ypadding );
if (hexpand) {
@@ -227,30 +227,7 @@ void attachToGridOrTable(GtkWidget *parent,
} // namespace
-GType sp_color_icc_selector_get_type(void)
-{
- static GType type = 0;
- if (!type) {
- static const GTypeInfo info = {
- sizeof (SPColorICCSelectorClass),
- NULL, // base_init
- NULL, // base_finalize
- (GClassInitFunc) sp_color_icc_selector_class_init,
- NULL, // class_finalize
- NULL, // class_data
- sizeof (SPColorICCSelector),
- 0, // n_preallocs
- (GInstanceInitFunc) sp_color_icc_selector_init,
- 0, // value_table
- };
-
- type = g_type_register_static (SP_TYPE_COLOR_SELECTOR,
- "SPColorICCSelector",
- &info,
- static_cast< GTypeFlags > (0) );
- }
- return type;
-}
+G_DEFINE_TYPE(SPColorICCSelector, sp_color_icc_selector, SP_TYPE_COLOR_SELECTOR);
static void sp_color_icc_selector_class_init(SPColorICCSelectorClass *klass)
{
@@ -259,8 +236,6 @@ static void sp_color_icc_selector_class_init(SPColorICCSelectorClass *klass)
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
SPColorSelectorClass *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;
@@ -599,8 +574,8 @@ void ColorICCSelector::init()
static void sp_color_icc_selector_dispose(GObject *object)
{
- if ((G_OBJECT_CLASS(parent_class))->dispose) {
- (* (G_OBJECT_CLASS(parent_class))->dispose)(object);
+ if (G_OBJECT_CLASS(sp_color_icc_selector_parent_class)->dispose) {
+ G_OBJECT_CLASS(sp_color_icc_selector_parent_class)->dispose(object);
}
}
diff --git a/src/widgets/sp-color-icc-selector.h b/src/widgets/sp-color-icc-selector.h
index f63ab0853..6cdaff639 100644
--- a/src/widgets/sp-color-icc-selector.h
+++ b/src/widgets/sp-color-icc-selector.h
@@ -2,8 +2,6 @@
#define SEEN_SP_COLOR_ICC_SELECTOR_H
#include <glib.h>
-#include <gtk/gtk.h>
-
#include "sp-color-selector.h"
namespace Inkscape {
diff --git a/src/widgets/sp-color-notebook.cpp b/src/widgets/sp-color-notebook.cpp
index e081f98e0..c7fa96efd 100644
--- a/src/widgets/sp-color-notebook.cpp
+++ b/src/widgets/sp-color-notebook.cpp
@@ -25,7 +25,7 @@
#include <gtk/gtk.h>
#include <glibmm/i18n.h>
-#include "../dialogs/dialog-events.h"
+#include "ui/dialog-events.h"
#include "../preferences.h"
#include "sp-color-notebook.h"
#include "spw-utilities.h"
@@ -38,7 +38,7 @@
#include "../profile-manager.h"
#include "color-profile.h"
#include "cms-system.h"
-#include "tools-switch.h"
+#include "ui/tools-switch.h"
#include "ui/tools/tool-base.h"
using Inkscape::CMSSystem;
@@ -53,46 +53,21 @@ 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);
static void sp_color_notebook_show_all (GtkWidget *widget);
static void sp_color_notebook_hide(GtkWidget *widget);
-static SPColorSelectorClass *parent_class;
-
#define XPAD 4
#define YPAD 1
-GType sp_color_notebook_get_type(void)
-{
- static GType type = 0;
- if (!type) {
- GTypeInfo info = {
- sizeof(SPColorNotebookClass),
- 0, // base_init
- 0, // base_finalize
- (GClassInitFunc)sp_color_notebook_class_init,
- 0, // class_finalize
- 0, // class_data
- sizeof(SPColorNotebook),
- 0, // n_preallocs
- (GInstanceInitFunc)sp_color_notebook_init,
- 0 // value_table
- };
- type = g_type_register_static(SP_TYPE_COLOR_SELECTOR, "SPColorNotebook", &info, static_cast<GTypeFlags>(0));
- }
- return type;
-}
+G_DEFINE_TYPE(SPColorNotebook, sp_color_notebook, SP_TYPE_COLOR_SELECTOR);
static void sp_color_notebook_class_init(SPColorNotebookClass *klass)
{
GObjectClass *object_class = reinterpret_cast<GObjectClass *>(klass);
GtkWidgetClass *widget_class = reinterpret_cast<GtkWidgetClass *>(klass);
- parent_class = SP_COLOR_SELECTOR_CLASS(g_type_class_peek_parent(klass));
-
object_class->dispose = sp_color_notebook_dispose;
widget_class->show_all = sp_color_notebook_show_all;
@@ -289,8 +264,13 @@ void ColorNotebook::init()
sp_set_font_size_smaller (_buttonbox);
#if GTK_CHECK_VERSION(3,0,0)
+ #if GTK_CHECK_VERSION(3,12,0)
+ gtk_widget_set_margin_start(_buttonbox, XPAD);
+ gtk_widget_set_margin_end(_buttonbox, XPAD);
+ #else
gtk_widget_set_margin_left(_buttonbox, XPAD);
gtk_widget_set_margin_right(_buttonbox, XPAD);
+ #endif
gtk_widget_set_margin_top(_buttonbox, YPAD);
gtk_widget_set_margin_bottom(_buttonbox, YPAD);
gtk_widget_set_hexpand(_buttonbox, TRUE);
@@ -306,8 +286,13 @@ void ColorNotebook::init()
row++;
#if GTK_CHECK_VERSION(3,0,0)
+ #if GTK_CHECK_VERSION(3,12,0)
+ gtk_widget_set_margin_start(_book, XPAD*2);
+ gtk_widget_set_margin_end(_book, XPAD*2);
+ #else
gtk_widget_set_margin_left(_book, XPAD*2);
gtk_widget_set_margin_right(_book, XPAD*2);
+ #endif
gtk_widget_set_margin_top(_book, YPAD);
gtk_widget_set_margin_bottom(_book, YPAD);
gtk_widget_set_hexpand(_book, TRUE);
@@ -434,8 +419,13 @@ void ColorNotebook::init()
#endif //defined(HAVE_LIBLCMS1) || defined(HAVE_LIBLCMS2)
#if GTK_CHECK_VERSION(3,0,0)
+ #if GTK_CHECK_VERSION(3,12,0)
+ gtk_widget_set_margin_start(rgbabox, XPAD);
+ gtk_widget_set_margin_end(rgbabox, XPAD);
+ #else
gtk_widget_set_margin_left(rgbabox, XPAD);
gtk_widget_set_margin_right(rgbabox, XPAD);
+ #endif
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);
@@ -457,8 +447,8 @@ void ColorNotebook::init()
static void sp_color_notebook_dispose(GObject *object)
{
- if (((GObjectClass *) (parent_class))->dispose)
- (* ((GObjectClass *) (parent_class))->dispose) (object);
+ if (G_OBJECT_CLASS(sp_color_notebook_parent_class)->dispose)
+ G_OBJECT_CLASS(sp_color_notebook_parent_class)->dispose(object);
}
ColorNotebook::~ColorNotebook()
diff --git a/src/widgets/sp-color-notebook.h b/src/widgets/sp-color-notebook.h
index 6e5111132..469bb56e8 100644
--- a/src/widgets/sp-color-notebook.h
+++ b/src/widgets/sp-color-notebook.h
@@ -12,14 +12,10 @@
* This code is in public domain
*/
-#include <gtk/gtk.h>
-#include "../color.h"
#include "sp-color-selector.h"
#include <glib.h>
-
-
struct SPColorNotebook;
class ColorNotebook: public ColorSelector
diff --git a/src/widgets/sp-color-scales.cpp b/src/widgets/sp-color-scales.cpp
index c3f9d511c..60ba62ec5 100644
--- a/src/widgets/sp-color-scales.cpp
+++ b/src/widgets/sp-color-scales.cpp
@@ -8,8 +8,9 @@
#include <math.h>
#include <gtk/gtk.h>
#include <glibmm/i18n.h>
-#include "../dialogs/dialog-events.h"
+#include "ui/dialog-events.h"
#include "sp-color-scales.h"
+#include "sp-color-slider.h"
#include "svg/svg-icc-color.h"
#define CSC_CHANNEL_R (1 << 0)
@@ -30,8 +31,6 @@
G_BEGIN_DECLS
-static void sp_color_scales_class_init (SPColorScalesClass *klass);
-static void sp_color_scales_init (SPColorScales *cs);
static void sp_color_scales_dispose(GObject *object);
static void sp_color_scales_show_all (GtkWidget *widget);
@@ -41,38 +40,12 @@ static const gchar *sp_color_scales_hue_map (void);
G_END_DECLS
-static SPColorSelectorClass *parent_class;
-
#define XPAD 4
#define YPAD 1
#define noDUMP_CHANGE_INFO 1
-GType
-sp_color_scales_get_type (void)
-{
- static GType type = 0;
- if (!type) {
- static const GTypeInfo info = {
- sizeof (SPColorScalesClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) sp_color_scales_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (SPColorScales),
- 0, /* n_preallocs */
- (GInstanceInitFunc) sp_color_scales_init,
- NULL
- };
-
- type = g_type_register_static (SP_TYPE_COLOR_SELECTOR,
- "SPColorScales",
- &info,
- static_cast< GTypeFlags > (0) );
- }
- return type;
-}
+G_DEFINE_TYPE(SPColorScales, sp_color_scales, SP_TYPE_COLOR_SELECTOR);
static void
sp_color_scales_class_init (SPColorScalesClass *klass)
@@ -82,8 +55,6 @@ sp_color_scales_class_init (SPColorScalesClass *klass)
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
SPColorSelectorClass *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 = 3;
@@ -151,8 +122,13 @@ void ColorScales::init()
gtk_widget_show (_l[i]);
#if GTK_CHECK_VERSION(3,0,0)
+ #if GTK_CHECK_VERSION(3,12,0)
+ gtk_widget_set_margin_start(_l[i], XPAD);
+ gtk_widget_set_margin_end(_l[i], XPAD);
+ #else
gtk_widget_set_margin_left(_l[i], XPAD);
gtk_widget_set_margin_right(_l[i], XPAD);
+ #endif
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);
@@ -167,8 +143,13 @@ void ColorScales::init()
gtk_widget_show (_s[i]);
#if GTK_CHECK_VERSION(3,0,0)
+ #if GTK_CHECK_VERSION(3,12,0)
+ gtk_widget_set_margin_start(_s[i], XPAD);
+ gtk_widget_set_margin_end(_s[i], XPAD);
+ #else
gtk_widget_set_margin_left(_s[i], XPAD);
gtk_widget_set_margin_right(_s[i], XPAD);
+ #endif
gtk_widget_set_margin_top(_s[i], YPAD);
gtk_widget_set_margin_bottom(_s[i], YPAD);
gtk_widget_set_hexpand(_s[i], TRUE);
@@ -184,8 +165,13 @@ void ColorScales::init()
gtk_widget_show (_b[i]);
#if GTK_CHECK_VERSION(3,0,0)
+ #if GTK_CHECK_VERSION(3,12,0)
+ gtk_widget_set_margin_start(_b[i], XPAD);
+ gtk_widget_set_margin_end(_b[i], XPAD);
+ #else
gtk_widget_set_margin_left(_b[i], XPAD);
gtk_widget_set_margin_right(_b[i], XPAD);
+ #endif
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);
@@ -214,8 +200,8 @@ void ColorScales::init()
static void sp_color_scales_dispose(GObject *object)
{
- if ((G_OBJECT_CLASS(parent_class))->dispose)
- (* (G_OBJECT_CLASS(parent_class))->dispose) (object);
+ if (G_OBJECT_CLASS(sp_color_scales_parent_class)->dispose)
+ G_OBJECT_CLASS(sp_color_scales_parent_class)->dispose(object);
}
static void
diff --git a/src/widgets/sp-color-scales.h b/src/widgets/sp-color-scales.h
index 3b11bc05e..72cbafa2f 100644
--- a/src/widgets/sp-color-scales.h
+++ b/src/widgets/sp-color-scales.h
@@ -2,15 +2,12 @@
#define SEEN_SP_COLOR_SCALES_H
#include <glib.h>
-#include <gtk/gtk.h>
-#include <color.h>
-#include <widgets/sp-color-slider.h>
#include <widgets/sp-color-selector.h>
-
struct SPColorScales;
struct SPColorScalesClass;
+struct SPColorSlider;
typedef enum {
SP_COLOR_SCALES_MODE_NONE = 0,
diff --git a/src/widgets/sp-color-selector.cpp b/src/widgets/sp-color-selector.cpp
index 6d62acecd..e97c36431 100644
--- a/src/widgets/sp-color-selector.cpp
+++ b/src/widgets/sp-color-selector.cpp
@@ -22,42 +22,20 @@ enum {
#define noDUMP_CHANGE_INFO
#define FOO_NAME(x) g_type_name( G_TYPE_FROM_INSTANCE(x) )
-static void sp_color_selector_class_init( SPColorSelectorClass *klass );
-static void sp_color_selector_init( SPColorSelector *csel );
static void sp_color_selector_dispose(GObject *object);
static void sp_color_selector_show_all( GtkWidget *widget );
static void sp_color_selector_hide( GtkWidget *widget );
-static GtkVBoxClass *parent_class;
static guint csel_signals[LAST_SIGNAL] = {0};
double ColorSelector::_epsilon = 1e-4;
-GType sp_color_selector_get_type( void )
-{
- static GType type = 0;
- if (!type) {
- static const GTypeInfo info = {
- sizeof(SPColorSelectorClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) sp_color_selector_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof(SPColorSelector),
- 0, /* n_preallocs */
- (GInstanceInitFunc) sp_color_selector_init,
- NULL
- };
-
- type = g_type_register_static( GTK_TYPE_VBOX,
- "SPColorSelector",
- &info,
- static_cast<GTypeFlags>(0) );
- }
- return type;
-}
+#if GTK_CHECK_VERSION(3,0,0)
+G_DEFINE_TYPE(SPColorSelector, sp_color_selector, GTK_TYPE_BOX);
+#else
+G_DEFINE_TYPE(SPColorSelector, sp_color_selector, GTK_TYPE_VBOX);
+#endif
void sp_color_selector_class_init( SPColorSelectorClass *klass )
{
@@ -66,8 +44,6 @@ void sp_color_selector_class_init( SPColorSelectorClass *klass )
GtkWidgetClass *widget_class;
widget_class = GTK_WIDGET_CLASS(klass);
- parent_class = GTK_VBOX_CLASS( g_type_class_peek_parent(klass) );
-
csel_signals[GRABBED] = g_signal_new( "grabbed",
G_TYPE_FROM_CLASS(object_class),
(GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
@@ -109,6 +85,10 @@ void sp_color_selector_class_init( SPColorSelectorClass *klass )
void sp_color_selector_init( SPColorSelector *csel )
{
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_orientable_set_orientation(GTK_ORIENTABLE(csel), GTK_ORIENTATION_VERTICAL);
+#endif
+
if ( csel->base )
{
csel->base->init();
@@ -125,8 +105,8 @@ void sp_color_selector_dispose(GObject *object)
csel->base = 0;
}
- if ( (G_OBJECT_CLASS(parent_class))->dispose ) {
- (* (G_OBJECT_CLASS(parent_class))->dispose)(object);
+ if ((G_OBJECT_CLASS(sp_color_selector_parent_class))->dispose ) {
+ (G_OBJECT_CLASS(sp_color_selector_parent_class))->dispose(object);
}
}
diff --git a/src/widgets/sp-color-selector.h b/src/widgets/sp-color-selector.h
index 616d5a9e7..30061774a 100644
--- a/src/widgets/sp-color-selector.h
+++ b/src/widgets/sp-color-selector.h
@@ -2,9 +2,7 @@
#define SEEN_SP_COLOR_SELECTOR_H
#include <gtk/gtk.h>
-#include "../color.h"
-
-#include <glib.h>
+#include "color.h"
struct SPColorSelector;
@@ -62,13 +60,21 @@ private:
#define SP_COLOR_SELECTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SP_TYPE_COLOR_SELECTOR, SPColorSelectorClass))
struct SPColorSelector {
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkBox vbox;
+#else
GtkVBox vbox;
+#endif
ColorSelector* base;
};
struct SPColorSelectorClass {
+#if GTK_CHECK_VERSION(3,0,0)
+ GtkBoxClass parent_class;
+#else
GtkVBoxClass parent_class;
+#endif
const gchar **name;
guint submode_count;
diff --git a/src/widgets/sp-color-slider.cpp b/src/widgets/sp-color-slider.cpp
index 9b13ba1c5..ab7e2cd84 100644
--- a/src/widgets/sp-color-slider.cpp
+++ b/src/widgets/sp-color-slider.cpp
@@ -12,6 +12,7 @@
#include <gtk/gtk.h>
#include "sp-color-scales.h"
+#include "sp-color-slider.h"
#include "preferences.h"
#define SLIDER_WIDTH 96
@@ -26,8 +27,6 @@ enum {
LAST_SIGNAL
};
-static void sp_color_slider_class_init (SPColorSliderClass *klass);
-static void sp_color_slider_init (SPColorSlider *slider);
static void sp_color_slider_dispose(GObject *object);
static void sp_color_slider_realize (GtkWidget *widget);
@@ -61,36 +60,15 @@ static const guchar *sp_color_slider_render_gradient (gint x0, gint y0, gint wid
static const guchar *sp_color_slider_render_map (gint x0, gint y0, gint width, gint height,
guchar *map, gint start, gint step, guint b0, guint b1, guint mask);
-static GtkWidgetClass *parent_class;
static guint slider_signals[LAST_SIGNAL] = {0};
-GType
-sp_color_slider_get_type (void)
-{
- static GType type = 0;
- if (!type) {
- GTypeInfo info = {
- sizeof (SPColorSliderClass),
- NULL, NULL,
- (GClassInitFunc) sp_color_slider_class_init,
- NULL, NULL,
- sizeof (SPColorSlider),
- 0,
- (GInstanceInitFunc) sp_color_slider_init,
- NULL
- };
- type = g_type_register_static (GTK_TYPE_WIDGET, "SPColorSlider", &info, (GTypeFlags)0);
- }
- return type;
-}
+G_DEFINE_TYPE(SPColorSlider, sp_color_slider, GTK_TYPE_WIDGET);
static void sp_color_slider_class_init(SPColorSliderClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS(klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
- parent_class = GTK_WIDGET_CLASS(g_type_class_peek_parent(klass));
-
slider_signals[GRABBED] = g_signal_new ("grabbed",
G_TYPE_FROM_CLASS(object_class),
(GSignalFlags)(G_SIGNAL_RUN_FIRST | G_SIGNAL_NO_RECURSE),
@@ -183,8 +161,8 @@ static void sp_color_slider_dispose(GObject *object)
slider->adjustment = NULL;
}
- if ((G_OBJECT_CLASS(parent_class))->dispose)
- (* (G_OBJECT_CLASS(parent_class))->dispose) (object);
+ if (G_OBJECT_CLASS(sp_color_slider_parent_class)->dispose)
+ G_OBJECT_CLASS(sp_color_slider_parent_class)->dispose (object);
}
static void
diff --git a/src/widgets/sp-color-slider.h b/src/widgets/sp-color-slider.h
index 591d8368a..b81d62e41 100644
--- a/src/widgets/sp-color-slider.h
+++ b/src/widgets/sp-color-slider.h
@@ -14,13 +14,6 @@
#include <gtk/gtk.h>
-#include <glib.h>
-
-
-
-struct SPColorSlider;
-struct SPColorSliderClass;
-
#define SP_TYPE_COLOR_SLIDER (sp_color_slider_get_type ())
#define SP_COLOR_SLIDER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_COLOR_SLIDER, SPColorSlider))
#define SP_COLOR_SLIDER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SP_TYPE_COLOR_SLIDER, SPColorSliderClass))
diff --git a/src/widgets/sp-color-wheel-selector.cpp b/src/widgets/sp-color-wheel-selector.cpp
index 7c8bb1df7..6cfa7c14d 100644
--- a/src/widgets/sp-color-wheel-selector.cpp
+++ b/src/widgets/sp-color-wheel-selector.cpp
@@ -4,17 +4,16 @@
#include <math.h>
#include <gtk/gtk.h>
#include <glibmm/i18n.h>
-#include "../dialogs/dialog-events.h"
+#include "ui/dialog-events.h"
#include "sp-color-wheel-selector.h"
#include "sp-color-scales.h"
+#include "sp-color-slider.h"
#include "sp-color-icc-selector.h"
#include "../svg/svg-icc-color.h"
#include "ui/widget/gimpcolorwheel.h"
G_BEGIN_DECLS
-static void sp_color_wheel_selector_class_init (SPColorWheelSelectorClass *klass);
-static void sp_color_wheel_selector_init (SPColorWheelSelector *cs);
static void sp_color_wheel_selector_dispose(GObject *object);
static void sp_color_wheel_selector_show_all (GtkWidget *widget);
@@ -23,36 +22,10 @@ static void sp_color_wheel_selector_hide(GtkWidget *widget);
G_END_DECLS
-static SPColorSelectorClass *parent_class;
-
#define XPAD 4
#define YPAD 1
-GType
-sp_color_wheel_selector_get_type (void)
-{
- static GType type = 0;
- if (!type) {
- static const GTypeInfo info = {
- sizeof (SPColorWheelSelectorClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) sp_color_wheel_selector_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof (SPColorWheelSelector),
- 0, /* n_preallocs */
- (GInstanceInitFunc) sp_color_wheel_selector_init,
- 0, /* value_table */
- };
-
- type = g_type_register_static (SP_TYPE_COLOR_SELECTOR,
- "SPColorWheelSelector",
- &info,
- static_cast< GTypeFlags > (0) );
- }
- return type;
-}
+G_DEFINE_TYPE(SPColorWheelSelector, sp_color_wheel_selector, SP_TYPE_COLOR_SELECTOR);
static void sp_color_wheel_selector_class_init(SPColorWheelSelectorClass *klass)
{
@@ -61,8 +34,6 @@ static void sp_color_wheel_selector_class_init(SPColorWheelSelectorClass *klass)
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
SPColorSelectorClass *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;
@@ -142,8 +113,13 @@ void ColorWheelSelector::init()
gtk_widget_show (_label);
#if GTK_CHECK_VERSION(3,0,0)
+ #if GTK_CHECK_VERSION(3,12,0)
+ gtk_widget_set_margin_start(_label, XPAD);
+ gtk_widget_set_margin_end(_label, XPAD);
+ #else
gtk_widget_set_margin_left(_label, XPAD);
gtk_widget_set_margin_right(_label, XPAD);
+ #endif
gtk_widget_set_margin_top(_label, YPAD);
gtk_widget_set_margin_bottom(_label, YPAD);
gtk_widget_set_halign(_label, GTK_ALIGN_FILL);
@@ -162,8 +138,13 @@ void ColorWheelSelector::init()
gtk_widget_show (_slider);
#if GTK_CHECK_VERSION(3,0,0)
+ #if GTK_CHECK_VERSION(3,12,0)
+ gtk_widget_set_margin_start(_slider, XPAD);
+ gtk_widget_set_margin_end(_slider, XPAD);
+ #else
gtk_widget_set_margin_left(_slider, XPAD);
gtk_widget_set_margin_right(_slider, XPAD);
+ #endif
gtk_widget_set_margin_top(_slider, YPAD);
gtk_widget_set_margin_bottom(_slider, YPAD);
gtk_widget_set_hexpand(_slider, TRUE);
@@ -188,8 +169,13 @@ void ColorWheelSelector::init()
gtk_widget_show (_sbtn);
#if GTK_CHECK_VERSION(3,0,0)
+ #if GTK_CHECK_VERSION(3,12,0)
+ gtk_widget_set_margin_start(_sbtn, XPAD);
+ gtk_widget_set_margin_end(_sbtn, XPAD);
+ #else
gtk_widget_set_margin_left(_sbtn, XPAD);
gtk_widget_set_margin_right(_sbtn, XPAD);
+ #endif
gtk_widget_set_margin_top(_sbtn, YPAD);
gtk_widget_set_margin_bottom(_sbtn, YPAD);
gtk_widget_set_halign(_sbtn, GTK_ALIGN_CENTER);
@@ -216,8 +202,8 @@ void ColorWheelSelector::init()
static void sp_color_wheel_selector_dispose(GObject *object)
{
- if ((G_OBJECT_CLASS(parent_class))->dispose)
- (* (G_OBJECT_CLASS(parent_class))->dispose) (object);
+ if (G_OBJECT_CLASS(sp_color_wheel_selector_parent_class)->dispose)
+ G_OBJECT_CLASS(sp_color_wheel_selector_parent_class)->dispose(object);
}
static void
diff --git a/src/widgets/sp-color-wheel-selector.h b/src/widgets/sp-color-wheel-selector.h
index bbd377422..12b060dbe 100644
--- a/src/widgets/sp-color-wheel-selector.h
+++ b/src/widgets/sp-color-wheel-selector.h
@@ -1,15 +1,12 @@
#ifndef SEEN_SP_COLOR_WHEEL_SELECTOR_H
#define SEEN_SP_COLOR_WHEEL_SELECTOR_H
-#include <glib.h>
#include <gtk/gtk.h>
-#include "sp-color-slider.h"
#include "sp-color-selector.h"
-
-
typedef struct _GimpColorWheel GimpColorWheel;
+struct SPColorSlider;
struct SPColorWheelSelector;
struct SPColorWheelSelectorClass;
diff --git a/src/widgets/sp-widget.cpp b/src/widgets/sp-widget.cpp
index 0e2295e36..fdf5ec500 100644
--- a/src/widgets/sp-widget.cpp
+++ b/src/widgets/sp-widget.cpp
@@ -36,8 +36,6 @@ public:
SPWidgetImpl(SPWidget &target);
~SPWidgetImpl();
- static void classInit(SPWidgetClass *klass);
- static void init(SPWidget *widget);
static void dispose(GObject *object);
static void show(GtkWidget *widget);
static void hide(GtkWidget *widget);
@@ -61,64 +59,27 @@ public:
static void changeSelectionCB(Application *inkscape, Selection *selection, SPWidget *spw);
static void setSelectionCB(Application *inkscape, Selection *selection, SPWidget *spw);
- static GtkWidget *constructGlobal(SPWidget *spw, Inkscape::Application *inkscape);
+ static GtkWidget *constructGlobal(SPWidget *spw, InkscapeApplication *inkscape);
void modifySelection(Application *inkscape, Selection *selection, guint flags);
void changeSelection(Application *inkscape, Selection *selection);
void setSelection(Application *inkscape, Selection *selection);
private:
- static GtkBinClass *parentClass;
- static guint signals[LAST_SIGNAL];
-
SPWidget &_target;
};
-
-GtkBinClass *SPWidgetImpl::parentClass = 0;
-guint SPWidgetImpl::signals[LAST_SIGNAL] = {0};
-
} // namespace Inkscape
-GType SPWidget::getType()
-{
- static GType type = 0;
- if (!type) {
- static GTypeInfo const info = {
- sizeof(SPWidgetClass),
- NULL, NULL,
- reinterpret_cast<GClassInitFunc>(SPWidgetImpl::classInit),
- NULL, NULL,
- sizeof(SPWidget),
- 0,
- reinterpret_cast<GInstanceInitFunc>(SPWidgetImpl::init),
- NULL
- };
- type = g_type_register_static(GTK_TYPE_BIN,
- "SPWidget",
- &info,
- static_cast<GTypeFlags>(0));
- }
- return type;
-}
+G_DEFINE_TYPE(SPWidget, sp_widget, GTK_TYPE_BIN);
-namespace Inkscape {
+static guint signals[LAST_SIGNAL] = {0};
-SPWidgetImpl::SPWidgetImpl(SPWidget &target) :
- _target(target)
-{
-}
-
-SPWidgetImpl::~SPWidgetImpl()
-{
-}
-
-void SPWidgetImpl::classInit(SPWidgetClass *klass)
+static void
+sp_widget_class_init(SPWidgetClass *klass)
{
GObjectClass *object_class = reinterpret_cast<GObjectClass *>(klass);
GtkWidgetClass *widget_class = reinterpret_cast<GtkWidgetClass *>(klass);
- parentClass = reinterpret_cast<GtkBinClass *>(g_type_class_peek_parent(klass));
-
object_class->dispose = SPWidgetImpl::dispose;
signals[CONSTRUCT] = g_signal_new ("construct",
@@ -169,13 +130,23 @@ void SPWidgetImpl::classInit(SPWidgetClass *klass)
widget_class->size_allocate = SPWidgetImpl::sizeAllocate;
}
-void SPWidgetImpl::init(SPWidget *spw)
+static void sp_widget_init(SPWidget *spw)
{
spw->inkscape = NULL;
-
spw->_impl = new SPWidgetImpl(*spw); // ctor invoked after all other init
}
+namespace Inkscape {
+
+SPWidgetImpl::SPWidgetImpl(SPWidget &target) :
+ _target(target)
+{
+}
+
+SPWidgetImpl::~SPWidgetImpl()
+{
+}
+
void SPWidgetImpl::dispose(GObject *object)
{
SPWidget *spw = reinterpret_cast<SPWidget *>(object);
@@ -194,8 +165,8 @@ void SPWidgetImpl::dispose(GObject *object)
delete spw->_impl;
spw->_impl = 0;
- if (reinterpret_cast<GObjectClass *>(parentClass)->dispose) {
- (*reinterpret_cast<GObjectClass *>(parentClass)->dispose)(object);
+ if (G_OBJECT_CLASS(sp_widget_parent_class)->dispose) {
+ G_OBJECT_CLASS(sp_widget_parent_class)->dispose(object);
}
}
@@ -210,8 +181,8 @@ void SPWidgetImpl::show(GtkWidget *widget)
g_signal_connect(spw->inkscape, "set_selection", G_CALLBACK(SPWidgetImpl::setSelectionCB), spw);
}
- if (reinterpret_cast<GtkWidgetClass *>(parentClass)->show) {
- (*reinterpret_cast<GtkWidgetClass *>(parentClass)->show)(widget);
+ if (GTK_WIDGET_CLASS(sp_widget_parent_class)->show) {
+ GTK_WIDGET_CLASS(sp_widget_parent_class)->show(widget);
}
}
@@ -224,8 +195,8 @@ void SPWidgetImpl::hide(GtkWidget *widget)
sp_signal_disconnect_by_data(spw->inkscape, spw);
}
- if (reinterpret_cast<GtkWidgetClass *>(parentClass)->hide) {
- (*reinterpret_cast<GtkWidgetClass *>(parentClass)->hide)(widget);
+ if (GTK_WIDGET_CLASS(sp_widget_parent_class)->hide) {
+ GTK_WIDGET_CLASS(sp_widget_parent_class)->hide(widget);
}
}
@@ -293,7 +264,7 @@ void SPWidgetImpl::sizeAllocate(GtkWidget *widget, GtkAllocation *allocation)
}
}
-GtkWidget *SPWidgetImpl::constructGlobal(SPWidget *spw, Inkscape::Application *inkscape)
+GtkWidget *SPWidgetImpl::constructGlobal(SPWidget *spw, InkscapeApplication *inkscape)
{
g_return_val_if_fail(!spw->inkscape, NULL);
@@ -345,7 +316,7 @@ void SPWidgetImpl::setSelection(Application * /*inkscape*/, Selection *selection
// Methods
-GtkWidget *sp_widget_new_global(Inkscape::Application *inkscape)
+GtkWidget *sp_widget_new_global(InkscapeApplication *inkscape)
{
SPWidget *spw = reinterpret_cast<SPWidget*>(g_object_new(SP_TYPE_WIDGET, NULL));
diff --git a/src/widgets/sp-widget.h b/src/widgets/sp-widget.h
index 3a23a92c5..6227c3a72 100644
--- a/src/widgets/sp-widget.h
+++ b/src/widgets/sp-widget.h
@@ -15,35 +15,27 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include <glib.h>
#include <gtk/gtk.h>
-#define SP_TYPE_WIDGET (SPWidget::getType())
+#define SP_TYPE_WIDGET (sp_widget_get_type())
#define SP_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_WIDGET, SPWidget))
#define SP_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_WIDGET, SPWidgetClass))
#define SP_IS_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_WIDGET))
#define SP_IS_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_WIDGET))
+struct InkscapeApplication;
namespace Inkscape {
-
-struct Application;
class Selection;
class SPWidgetImpl;
-
}
struct SPWidget {
friend class Inkscape::SPWidgetImpl;
- static GType getType();
-
- //
-
GtkBin bin;
- Inkscape::Application *inkscape;
+ InkscapeApplication *inkscape;
-private:
Inkscape::SPWidgetImpl *_impl;
};
@@ -58,10 +50,10 @@ struct SPWidgetClass {
void (* set_selection) (SPWidget *spw, Inkscape::Selection *selection);
};
-/* fixme: Think (Lauris) */
+GType sp_widget_get_type();
/** Generic constructor for global widget. */
-GtkWidget *sp_widget_new_global(Inkscape::Application *inkscape);
+GtkWidget *sp_widget_new_global(InkscapeApplication *inkscape);
#endif // SEEN_SP_WIDGET_H
/*
diff --git a/src/widgets/sp-xmlview-attr-list.cpp b/src/widgets/sp-xmlview-attr-list.cpp
index 47b0ebb9d..dd763aea5 100644
--- a/src/widgets/sp-xmlview-attr-list.cpp
+++ b/src/widgets/sp-xmlview-attr-list.cpp
@@ -20,9 +20,6 @@
#include "../xml/node-event-vector.h"
#include "sp-xmlview-attr-list.h"
-static void sp_xmlview_attr_list_class_init (SPXMLViewAttrListClass * klass);
-static void sp_xmlview_attr_list_init (SPXMLViewAttrList * list);
-
#if GTK_CHECK_VERSION(3,0,0)
static void sp_xmlview_attr_list_destroy(GtkWidget * object);
#else
@@ -31,8 +28,6 @@ static void sp_xmlview_attr_list_destroy(GtkObject * object);
static void event_attr_changed (Inkscape::XML::Node * repr, const gchar * name, const gchar * old_value, const gchar * new_value, bool is_interactive, gpointer data);
-static GtkTreeViewClass * parent_class = NULL;
-
static Inkscape::XML::NodeEventVector repr_events = {
NULL, /* child_added */
NULL, /* child_removed */
@@ -88,28 +83,7 @@ sp_xmlview_attr_list_set_repr (SPXMLViewAttrList * list, Inkscape::XML::Node * r
}
}
-GType sp_xmlview_attr_list_get_type(void)
-{
- static GType type = 0;
-
- if (!type) {
- GTypeInfo info = {
- sizeof(SPXMLViewAttrListClass),
- 0, // base_init
- 0, // base_finalize
- (GClassInitFunc)sp_xmlview_attr_list_class_init,
- 0, // class_finalize
- 0, // class_data
- sizeof(SPXMLViewAttrList),
- 0, // n_preallocs
- (GInstanceInitFunc)sp_xmlview_attr_list_init,
- 0 // value_table
- };
- type = g_type_register_static(GTK_TYPE_TREE_VIEW, "SPXMLViewAttrList", &info, static_cast<GTypeFlags>(0));
- }
-
- return type;
-}
+G_DEFINE_TYPE(SPXMLViewAttrList, sp_xmlview_attr_list, GTK_TYPE_TREE_VIEW);
void sp_xmlview_attr_list_class_init (SPXMLViewAttrListClass * klass)
{
@@ -121,8 +95,6 @@ void sp_xmlview_attr_list_class_init (SPXMLViewAttrListClass * klass)
object_class->destroy = sp_xmlview_attr_list_destroy;
#endif
- parent_class = GTK_TREE_VIEW_CLASS(g_type_class_peek_parent (klass));
-
g_signal_new("row-value-changed",
G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_FIRST,
@@ -154,9 +126,9 @@ void sp_xmlview_attr_list_destroy(GtkObject * object)
sp_xmlview_attr_list_set_repr (list, NULL);
#if GTK_CHECK_VERSION(3,0,0)
- GTK_WIDGET_CLASS(parent_class)->destroy (object);
+ GTK_WIDGET_CLASS(sp_xmlview_attr_list_parent_class)->destroy (object);
#else
- GTK_OBJECT_CLASS(parent_class)->destroy (object);
+ GTK_OBJECT_CLASS(sp_xmlview_attr_list_parent_class)->destroy (object);
#endif
}
diff --git a/src/widgets/sp-xmlview-attr-list.h b/src/widgets/sp-xmlview-attr-list.h
index 367ef1a12..08b115bfa 100644
--- a/src/widgets/sp-xmlview-attr-list.h
+++ b/src/widgets/sp-xmlview-attr-list.h
@@ -12,10 +12,8 @@
* Released under the GNU GPL; see COPYING for details
*/
-#include <stdio.h>
#include <gtk/gtk.h>
-
#define SP_TYPE_XMLVIEW_ATTR_LIST (sp_xmlview_attr_list_get_type ())
#define SP_XMLVIEW_ATTR_LIST(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_XMLVIEW_ATTR_LIST, SPXMLViewAttrList))
#define SP_IS_XMLVIEW_ATTR_LIST(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SP_TYPE_XMLVIEW_ATTR_LIST))
@@ -23,7 +21,6 @@
struct SPXMLViewAttrList
{
-
GtkTreeView list;
GtkListStore *store;
diff --git a/src/widgets/sp-xmlview-content.cpp b/src/widgets/sp-xmlview-content.cpp
index ac64dabdb..9243760bd 100644
--- a/src/widgets/sp-xmlview-content.cpp
+++ b/src/widgets/sp-xmlview-content.cpp
@@ -23,9 +23,6 @@
using Inkscape::DocumentUndo;
-static void sp_xmlview_content_class_init (SPXMLViewContentClass * klass);
-static void sp_xmlview_content_init (SPXMLViewContent * text);
-
#if GTK_CHECK_VERSION(3,0,0)
static void sp_xmlview_content_destroy(GtkWidget * object);
#else
@@ -36,8 +33,6 @@ void sp_xmlview_content_changed (GtkTextBuffer *tb, SPXMLViewContent *text);
static void event_content_changed (Inkscape::XML::Node * repr, const gchar * old_content, const gchar * new_content, gpointer data);
-static GtkTextViewClass * parent_class = NULL;
-
static Inkscape::XML::NodeEventVector repr_events = {
NULL, /* child_added */
NULL, /* child_removed */
@@ -81,28 +76,7 @@ sp_xmlview_content_set_repr (SPXMLViewContent * text, Inkscape::XML::Node * repr
}
}
-GType sp_xmlview_content_get_type(void)
-{
- static GType type = 0;
-
- if (!type) {
- GTypeInfo info = {
- sizeof(SPXMLViewContentClass),
- 0, // base_init
- 0, // base_finalize
- (GClassInitFunc)sp_xmlview_content_class_init,
- 0, // class_finalize
- 0, // class_data
- sizeof(SPXMLViewContent),
- 0, // n_preallocs
- (GInstanceInitFunc)sp_xmlview_content_init,
- 0 // value_table
- };
- type = g_type_register_static(GTK_TYPE_TEXT_VIEW, "SPXMLViewContent", &info, static_cast<GTypeFlags>(0));
- }
-
- return type;
-}
+G_DEFINE_TYPE(SPXMLViewContent, sp_xmlview_content, GTK_TYPE_TEXT_VIEW);
void sp_xmlview_content_class_init(SPXMLViewContentClass * klass)
{
@@ -113,8 +87,6 @@ void sp_xmlview_content_class_init(SPXMLViewContentClass * klass)
GtkObjectClass * object_class = GTK_OBJECT_CLASS(klass);
object_class->destroy = sp_xmlview_content_destroy;
#endif
-
- parent_class = GTK_TEXT_VIEW_CLASS(g_type_class_peek_parent (klass));
}
void
@@ -135,9 +107,9 @@ void sp_xmlview_content_destroy(GtkObject * object)
sp_xmlview_content_set_repr (text, NULL);
#if GTK_CHECK_VERSION(3,0,0)
- GTK_WIDGET_CLASS (parent_class)->destroy (object);
+ GTK_WIDGET_CLASS (sp_xmlview_content_parent_class)->destroy (object);
#else
- GTK_OBJECT_CLASS (parent_class)->destroy (object);
+ GTK_OBJECT_CLASS (sp_xmlview_content_parent_class)->destroy (object);
#endif
}
diff --git a/src/widgets/sp-xmlview-content.h b/src/widgets/sp-xmlview-content.h
index 8b1342c5e..140eacf46 100644
--- a/src/widgets/sp-xmlview-content.h
+++ b/src/widgets/sp-xmlview-content.h
@@ -13,10 +13,7 @@
*/
#include <config.h>
-#include <stdio.h>
#include <gtk/gtk.h>
-#include <glib.h>
-
#define SP_TYPE_XMLVIEW_CONTENT (sp_xmlview_content_get_type ())
#define SP_XMLVIEW_CONTENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_XMLVIEW_CONTENT, SPXMLViewContent))
diff --git a/src/widgets/sp-xmlview-tree.cpp b/src/widgets/sp-xmlview-tree.cpp
index 43b7dc289..5dff9adf3 100644
--- a/src/widgets/sp-xmlview-tree.cpp
+++ b/src/widgets/sp-xmlview-tree.cpp
@@ -1,6 +1,4 @@
-#define __SP_XMLVIEW_TREE_C__
-
-/*
+/**
* Specialization of GtkTreeView for the XML tree view
*
* Authors:
@@ -14,7 +12,7 @@
#include <cstring>
#include <string>
-#include "../xml/node-event-vector.h"
+#include "xml/node-event-vector.h"
#include "sp-xmlview-tree.h"
struct NodeData {
@@ -25,9 +23,6 @@ struct NodeData {
enum { STORE_TEXT_COL = 0, STORE_DATA_COL, STORE_REPR_COL, STORE_N_COLS };
-static void sp_xmlview_tree_class_init (SPXMLViewTreeClass * klass);
-static void sp_xmlview_tree_init (SPXMLViewTree * tree);
-
#if GTK_CHECK_VERSION(3,0,0)
static void sp_xmlview_tree_destroy(GtkWidget * object);
#else
@@ -92,8 +87,6 @@ static const Inkscape::XML::NodeEventVector pi_repr_events = {
NULL /* order_changed */
};
-static GtkTreeViewClass * parent_class = NULL;
-
GtkWidget *sp_xmlview_tree_new(Inkscape::XML::Node * repr, void * /*factory*/, void * /*data*/)
{
SPXMLViewTree *tree = SP_XMLVIEW_TREE(g_object_new (SP_TYPE_XMLVIEW_TREE, NULL));
@@ -124,28 +117,7 @@ GtkWidget *sp_xmlview_tree_new(Inkscape::XML::Node * repr, void * /*factory*/, v
return GTK_WIDGET(tree);
}
-GType
-sp_xmlview_tree_get_type (void)
-{
- static GType type = 0;
-
- if (!type) {
- static const GTypeInfo info = {
- sizeof (SPXMLViewTreeClass),
- NULL, NULL,
- (GClassInitFunc) sp_xmlview_tree_class_init,
- NULL, NULL,
- sizeof (SPXMLViewTree),
- 0,
- (GInstanceInitFunc) sp_xmlview_tree_init,
- NULL
- };
- type = g_type_register_static (GTK_TYPE_TREE_VIEW, "SPXMLViewTree", &info, (GTypeFlags)0);
- }
-
-
- return type;
-}
+G_DEFINE_TYPE(SPXMLViewTree, sp_xmlview_tree, GTK_TYPE_TREE_VIEW);
void sp_xmlview_tree_class_init(SPXMLViewTreeClass * klass)
{
@@ -157,8 +129,6 @@ void sp_xmlview_tree_class_init(SPXMLViewTreeClass * klass)
object_class->destroy = sp_xmlview_tree_destroy;
#endif
- parent_class = GTK_TREE_VIEW_CLASS(g_type_class_peek_parent (klass));
-
// Signal for when a tree drag and drop has completed
g_signal_new ( "tree_move",
G_TYPE_FROM_CLASS(klass),
@@ -190,9 +160,9 @@ void sp_xmlview_tree_destroy(GtkObject * object)
sp_xmlview_tree_set_repr (tree, NULL);
#if GTK_CHECK_VERSION(3,0,0)
- GTK_WIDGET_CLASS(parent_class)->destroy (object);
+ GTK_WIDGET_CLASS(sp_xmlview_tree_parent_class)->destroy (object);
#else
- GTK_OBJECT_CLASS(parent_class)->destroy (object);
+ GTK_OBJECT_CLASS(sp_xmlview_tree_parent_class)->destroy (object);
#endif
}
@@ -734,4 +704,4 @@ gboolean search_equal_func(GtkTreeModel *model, gint /*column*/, const gchar *ke
fill-column:99
End:
*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8 :
diff --git a/src/widgets/sp-xmlview-tree.h b/src/widgets/sp-xmlview-tree.h
index 69228fa88..7ecbcb471 100644
--- a/src/widgets/sp-xmlview-tree.h
+++ b/src/widgets/sp-xmlview-tree.h
@@ -1,9 +1,4 @@
-#ifndef __SP_XMLVIEW_TREE_H__
-#define __SP_XMLVIEW_TREE_H__
-
-/*
- * Specialization of GtkTreeView for the XML editor
- *
+/**
* Authors:
* MenTaLguY <mental@rydia.net>
*
@@ -12,9 +7,15 @@
* Released under the GNU GPL; see COPYING for details
*/
+#ifndef SEEN_SP_XMLVIEW_TREE_H
+#define SEEN_SP_XMLVIEW_TREE_H
+
#include <gtk/gtk.h>
#include <glib.h>
+/**
+ * Specialization of GtkTreeView for the XML editor
+ */
#define SP_TYPE_XMLVIEW_TREE (sp_xmlview_tree_get_type ())
#define SP_XMLVIEW_TREE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SP_TYPE_XMLVIEW_TREE, SPXMLViewTree))
@@ -49,7 +50,7 @@ Inkscape::XML::Node * sp_xmlview_tree_node_get_repr (GtkTreeModel *model, GtkTre
gboolean sp_xmlview_tree_get_repr_node (SPXMLViewTree * tree, Inkscape::XML::Node * repr, GtkTreeIter *node);
-#endif
+#endif // !SEEN_SP_XMLVIEW_TREE_H
/*
Local Variables:
@@ -60,4 +61,4 @@ gboolean sp_xmlview_tree_get_repr_node (SPXMLViewTree * tree, Inkscape::XML::Nod
fill-column:99
End:
*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8 :
diff --git a/src/widgets/spinbutton-events.h b/src/widgets/spinbutton-events.h
index c1df88c8a..9bf50d87c 100644
--- a/src/widgets/spinbutton-events.h
+++ b/src/widgets/spinbutton-events.h
@@ -10,7 +10,9 @@
*/
#include <glib.h>
-#include <gtk/gtk.h> /* GtkWidget */
+
+typedef struct _GdkEventKey GdkEventKey;
+typedef struct _GtkWidget GtkWidget;
gboolean spinbutton_focus_in (GtkWidget *w, GdkEventKey *event, gpointer data);
void spinbutton_undo (GtkWidget *w);
diff --git a/src/widgets/spiral-toolbar.cpp b/src/widgets/spiral-toolbar.cpp
index 710be9440..e85b024ed 100644
--- a/src/widgets/spiral-toolbar.cpp
+++ b/src/widgets/spiral-toolbar.cpp
@@ -34,9 +34,9 @@
#include "desktop-handles.h"
#include "desktop.h"
#include "document-undo.h"
-#include "ege-adjustment-action.h"
-#include "ege-output-action.h"
-#include "ink-action.h"
+#include "widgets/ege-adjustment-action.h"
+#include "widgets/ege-output-action.h"
+#include "widgets/ink-action.h"
#include "preferences.h"
#include "selection.h"
#include "sp-spiral.h"
diff --git a/src/widgets/spray-toolbar.cpp b/src/widgets/spray-toolbar.cpp
index 788ce6475..183814b7e 100644
--- a/src/widgets/spray-toolbar.cpp
+++ b/src/widgets/spray-toolbar.cpp
@@ -33,9 +33,9 @@
#include "spray-toolbar.h"
#include "desktop.h"
#include "document-undo.h"
-#include "ege-adjustment-action.h"
-#include "ege-select-one-action.h"
-#include "ink-action.h"
+#include "widgets/ege-adjustment-action.h"
+#include "widgets/ege-select-one-action.h"
+#include "widgets/ink-action.h"
#include "preferences.h"
#include "toolbox.h"
#include "ui/icon-names.h"
diff --git a/src/widgets/spw-utilities.cpp b/src/widgets/spw-utilities.cpp
index 9c0c8d7c6..f87889bb1 100644
--- a/src/widgets/spw-utilities.cpp
+++ b/src/widgets/spw-utilities.cpp
@@ -64,8 +64,15 @@ Gtk::Label * spw_label(Gtk::Table *table, const gchar *label_text, int col, int
label_widget->set_hexpand();
label_widget->set_halign(Gtk::ALIGN_FILL);
label_widget->set_valign(Gtk::ALIGN_CENTER);
+
+ #if GTK_CHECK_VERSION(3,12,0)
+ label_widget->set_margin_start(4);
+ label_widget->set_margin_end(4);
+ #else
label_widget->set_margin_left(4);
label_widget->set_margin_right(4);
+ #endif
+
table->attach(*label_widget, col, row, 1, 1);
#else
table->attach(*label_widget, col, col+1, row, row+1, (Gtk::EXPAND | Gtk::FILL), static_cast<Gtk::AttachOptions>(0), 4, 0);
@@ -238,7 +245,11 @@ sp_set_font_size_recursive (GtkWidget *w, gpointer font)
PangoFontDescription* pan = pango_font_description_new ();
pango_font_description_set_size (pan, size);
+#if GTK_CHECK_VERSION(3,0,0)
+ gtk_widget_override_font (w, pan);
+#else
gtk_widget_modify_font (w, pan);
+#endif
if (GTK_IS_CONTAINER(w)) {
gtk_container_foreach (GTK_CONTAINER(w), (GtkCallback) sp_set_font_size_recursive, font);
diff --git a/src/widgets/star-toolbar.cpp b/src/widgets/star-toolbar.cpp
index 7a7d0dc71..6213263fc 100644
--- a/src/widgets/star-toolbar.cpp
+++ b/src/widgets/star-toolbar.cpp
@@ -34,14 +34,15 @@
#include "desktop-handles.h"
#include "desktop.h"
#include "document-undo.h"
-#include "ege-adjustment-action.h"
-#include "ege-output-action.h"
-#include "ege-select-one-action.h"
-#include "ink-action.h"
+#include "widgets/ege-adjustment-action.h"
+#include "widgets/ege-output-action.h"
+#include "widgets/ege-select-one-action.h"
+#include "widgets/ink-action.h"
#include "selection.h"
#include "sp-star.h"
#include "toolbox.h"
#include "ui/icon-names.h"
+#include "ui/tools/star-tool.h"
#include "ui/uxmanager.h"
#include "verbs.h"
#include "widgets/../preferences.h"
@@ -435,6 +436,7 @@ static void sp_stb_defaults( GtkWidget * /*widget*/, GObject *dataKludge )
gtk_adjustment_value_changed(adj);
}
+static void star_toolbox_watch_ec(SPDesktop* dt, Inkscape::UI::Tools::ToolBase* ec, GObject* holder);
void sp_star_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder)
{
@@ -571,15 +573,22 @@ void sp_star_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObje
}
}
- sigc::connection *connection = new sigc::connection(
- sp_desktop_selection(desktop)->connectChanged(sigc::bind(sigc::ptr_fun(sp_star_toolbox_selection_changed), holder))
- );
- g_signal_connect( holder, "destroy", G_CALLBACK(delete_connection), connection );
- g_signal_connect( holder, "destroy", G_CALLBACK(purge_repr_listener), holder );
+ desktop->connectEventContextChanged(sigc::bind(sigc::ptr_fun(star_toolbox_watch_ec), holder));
+ g_signal_connect(holder, "destroy", G_CALLBACK(purge_repr_listener), holder);
}
+static void star_toolbox_watch_ec(SPDesktop* desktop, Inkscape::UI::Tools::ToolBase* ec, GObject* holder)
+{
+ static sigc::connection changed;
-
+ if (dynamic_cast<Inkscape::UI::Tools::StarTool const*>(ec) != NULL) {
+ changed = sp_desktop_selection(desktop)->connectChanged(sigc::bind(sigc::ptr_fun(sp_star_toolbox_selection_changed), holder));
+ sp_star_toolbox_selection_changed(sp_desktop_selection(desktop), holder);
+ } else {
+ if (changed)
+ changed.disconnect();
+ }
+}
/*
Local Variables:
@@ -590,4 +599,4 @@ void sp_star_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObje
fill-column:99
End:
*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8 :
diff --git a/src/widgets/stroke-marker-selector.cpp b/src/widgets/stroke-marker-selector.cpp
index 00b6b5c91..23da54e94 100644
--- a/src/widgets/stroke-marker-selector.cpp
+++ b/src/widgets/stroke-marker-selector.cpp
@@ -25,13 +25,13 @@
#include "style.h"
-#include "dialogs/dialog-events.h"
+#include "ui/dialog-events.h"
#include "desktop-handles.h"
#include "desktop-style.h"
#include "preferences.h"
#include "path-prefix.h"
#include "io/sys.h"
-#include "marker.h"
+#include "sp-marker.h"
#include "sp-defs.h"
#include "sp-root.h"
#include "ui/cache/svg_preview_cache.h"
@@ -385,7 +385,7 @@ void MarkerComboBox::add_markers (GSList *marker_list, SPDocument *source, gbool
if (history) {
// add "None"
Gtk::TreeModel::Row row = *(marker_store->prepend());
- row[marker_columns.label] = _("None");
+ row[marker_columns.label] = C_("Marker", "None");
row[marker_columns.stock] = false;
row[marker_columns.marker] = g_strdup("None");
row[marker_columns.image] = NULL;
diff --git a/src/widgets/stroke-style.cpp b/src/widgets/stroke-style.cpp
index a4cca9472..02dd5df6e 100644
--- a/src/widgets/stroke-style.cpp
+++ b/src/widgets/stroke-style.cpp
@@ -18,7 +18,7 @@
#define noSP_SS_VERBOSE
#include "stroke-style.h"
-#include "../gradient-chemistry.h"
+#include "gradient-chemistry.h"
#include "sp-gradient.h"
#include "sp-stop.h"
#include "svg/svg-color.h"
@@ -581,7 +581,8 @@ StrokeStyle::forkMarker(SPObject *marker, int loc, SPItem *item)
Glib::ustring urlId = Glib::ustring::format("url(#", marker->getRepr()->attribute("id"), ")");
unsigned int refs = 0;
for (int i = SP_MARKER_LOC_START; i < SP_MARKER_LOC_QTY; i++) {
- if (item->style->marker[i].set && !strcmp(urlId.c_str(), item->style->marker[i].value)) {
+ if (item->style->marker_ptrs[i]->set &&
+ !strcmp(urlId.c_str(), item->style->marker_ptrs[i]->value)) {
refs++;
}
}
@@ -762,6 +763,9 @@ StrokeStyle::setJoinType (unsigned const jointype)
tb = joinBevel;
break;
default:
+ // Should not happen
+ std::cerr << "StrokeStyle::setJoinType(): Invalid value: " << jointype << std::endl;
+ tb = joinMiter;
break;
}
setJoinButtons(tb);
@@ -785,6 +789,9 @@ StrokeStyle::setCapType (unsigned const captype)
tb = capSquare;
break;
default:
+ // Should not happen
+ std::cerr << "StrokeStyle::setCapType(): Invalid value: " << captype << std::endl;
+ tb = capButt;
break;
}
setCapButtons(tb);
@@ -877,13 +884,15 @@ StrokeStyle::updateLine()
miterLimitAdj->set_value(query->stroke_miterlimit.value); // TODO: reflect averagedness?
#endif
- if (result_join != QUERY_STYLE_MULTIPLE_DIFFERENT) {
+ if (result_join != QUERY_STYLE_MULTIPLE_DIFFERENT &&
+ result_join != QUERY_STYLE_NOTHING ) {
setJoinType(query->stroke_linejoin.value);
} else {
setJoinButtons(NULL);
}
- if (result_cap != QUERY_STYLE_MULTIPLE_DIFFERENT) {
+ if (result_cap != QUERY_STYLE_MULTIPLE_DIFFERENT &&
+ result_cap != QUERY_STYLE_NOTHING ) {
setCapType (query->stroke_linecap.value);
} else {
setCapButtons(NULL);
@@ -1176,11 +1185,11 @@ StrokeStyle::updateAllMarkers(GSList const *objects)
combo->setDesktop(desktop);
- if (object->style->marker[keyloc[i].loc].value != NULL && !all_texts) {
+ if (object->style->marker_ptrs[keyloc[i].loc]->value != NULL && !all_texts) {
// If the object has this type of markers,
// Extract the name of the marker that the object uses
- SPObject *marker = getMarkerObj(object->style->marker[keyloc[i].loc].value, object->document);
+ SPObject *marker = getMarkerObj(object->style->marker_ptrs[keyloc[i].loc]->value, object->document);
// Scroll the combobox to that marker
combo->set_current(marker);
diff --git a/src/widgets/stroke-style.h b/src/widgets/stroke-style.h
index 6f0fe583b..15e394097 100644
--- a/src/widgets/stroke-style.h
+++ b/src/widgets/stroke-style.h
@@ -12,6 +12,8 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
+// WHOA! talk about header bloat!
+
#ifndef SEEN_DIALOGS_STROKE_STYLE_H
#define SEEN_DIALOGS_STROKE_STYLE_H
@@ -33,7 +35,7 @@
#include "desktop.h"
#include "desktop-handles.h"
#include "desktop-style.h"
-#include "dialogs/dialog-events.h"
+#include "ui/dialog-events.h"
#include "display/canvas-bpath.h" // for SP_STROKE_LINEJOIN_*
#include "display/drawing.h"
#include "document-private.h"
@@ -42,7 +44,7 @@
#include "helper/stock-items.h"
#include "inkscape.h"
#include "io/sys.h"
-#include "marker.h"
+#include "sp-marker.h"
#include "preferences.h"
#include "path-prefix.h"
#include "selection.h"
diff --git a/src/widgets/text-toolbar.cpp b/src/widgets/text-toolbar.cpp
index 349fefa12..d62bb8027 100644
--- a/src/widgets/text-toolbar.cpp
+++ b/src/widgets/text-toolbar.cpp
@@ -31,16 +31,15 @@
#include "libnrtype/font-lister.h"
#include <glibmm/i18n.h>
#include "text-toolbar.h"
-#include "connection-pool.h"
#include "desktop-handles.h"
#include "desktop-style.h"
#include "desktop.h"
#include "document-undo.h"
#include "document.h"
-#include "ege-adjustment-action.h"
-#include "ege-select-one-action.h"
-#include "ink-action.h"
-#include "ink-comboboxentry-action.h"
+#include "widgets/ege-adjustment-action.h"
+#include "widgets/ege-select-one-action.h"
+#include "widgets/ink-action.h"
+#include "widgets/ink-comboboxentry-action.h"
#include "inkscape.h"
#include "preferences.h"
#include "selection-chemistry.h"
@@ -54,6 +53,7 @@
#include "toolbox.h"
#include "ui/icon-names.h"
#include "ui/tools/text-tool.h"
+#include "ui/tools/tool-base.h"
#include "verbs.h"
#include "xml/repr.h"
@@ -72,20 +72,20 @@ using Inkscape::UI::PrefPusher;
static void sp_print_font( SPStyle *query ) {
- bool family_set = query->text->font_family.set;
+ bool family_set = query->font_family.set;
bool style_set = query->font_style.set;
- bool fontspec_set = query->text->font_specification.set;
+ bool fontspec_set = query->font_specification.set;
std::cout << " Family set? " << family_set
<< " Style set? " << style_set
<< " FontSpec set? " << fontspec_set
<< std::endl;
std::cout << " Family: "
- << (query->text->font_family.value ? query->text->font_family.value : "No value")
+ << (query->font_family.value ? query->font_family.value : "No value")
<< " Style: " << query->font_style.computed
<< " Weight: " << query->font_weight.computed
<< " FontSpec: "
- << (query->text->font_specification.value ? query->text->font_specification.value : "No value")
+ << (query->font_specification.value ? query->font_specification.value : "No value")
<< std::endl;
std::cout << " LineHeight: " << query->line_height.computed
<< " WordSpacing: " << query->word_spacing.computed
@@ -134,6 +134,7 @@ static void sp_text_fontfamily_value_changed( Ink_ComboBoxEntry_Action *act, GOb
g_object_set_data( tbl, "freeze", GINT_TO_POINTER(TRUE) );
Glib::ustring new_family = ink_comboboxentry_action_get_active_text( act );
+ css_font_family_unquote( new_family ); // Remove quotes around font family names.
// TODO: Think about how to handle handle multiple selections. While
// the font-family may be the same for all, the styles might be different.
@@ -146,6 +147,13 @@ static void sp_text_fontfamily_value_changed( Ink_ComboBoxEntry_Action *act, GOb
std::cout << " New active: " << act->active << std::endl;
#endif
if( new_family.compare( fontlister->get_font_family() ) != 0 ) {
+ // Changed font-family
+
+ if( act->active == -1 ) {
+ // New font-family, not in document, not on system (could be fallback list)
+ fontlister->insert_font_family( new_family );
+ act->active = 0; // New family is always at top of list.
+ }
std::pair<Glib::ustring,Glib::ustring> ui = fontlister->set_font_family( act->active );
// active text set in sp_text_toolbox_selection_changed()
@@ -811,7 +819,7 @@ static void sp_text_set_sizes(GtkListStore* model_size, int unit)
* It is called whenever a text selection is changed, including stepping cursor
* through text, or setting focus to text.
*/
-static void sp_text_toolbox_selection_changed(Inkscape::Selection */*selection*/, GObject *tbl)
+static void sp_text_toolbox_selection_changed(Inkscape::Selection */*selection*/, GObject *tbl, bool subselection = false) // don't bother to update font list if subsel changed
{
#ifdef DEBUG_TEXT
static int count = 0;
@@ -851,7 +859,9 @@ static void sp_text_toolbox_selection_changed(Inkscape::Selection */*selection*/
INK_COMBOBOXENTRY_ACTION( g_object_get_data( tbl, "TextFontStyleAction" ) );
Inkscape::FontLister* fontlister = Inkscape::FontLister::get_instance();
- fontlister->update_font_list( sp_desktop_document( SP_ACTIVE_DESKTOP ));
+ if (!subselection) {
+ fontlister->update_font_list( sp_desktop_document( SP_ACTIVE_DESKTOP ));
+ }
fontlister->selection_update();
// Update font list, but only if widget already created.
@@ -923,7 +933,6 @@ static void sp_text_toolbox_selection_changed(Inkscape::Selection */*selection*/
}
// If we have valid query data for text (font-family, font-specification) set toolbar accordingly.
- if (query->text)
{
// Size (average of text selected)
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
@@ -1051,11 +1060,11 @@ static void sp_text_toolbox_selection_changed(Inkscape::Selection */*selection*/
ege_select_one_action_set_active( textOrientationAction, activeButton2 );
- } // if( query->text )
+ }
#ifdef DEBUG_TEXT
std::cout << " GUI: fontfamily.value: "
- << (query->text->font_family.value ? query->text->font_family.value : "No value")
+ << (query->font_family.value ? query->font_family.value : "No value")
<< std::endl;
std::cout << " GUI: font_size.computed: " << query->font_size.computed << std::endl;
std::cout << " GUI: font_weight.computed: " << query->font_weight.computed << std::endl;
@@ -1147,7 +1156,7 @@ static void sp_text_toolbox_selection_modified(Inkscape::Selection *selection, g
static void
sp_text_toolbox_subselection_changed (gpointer /*tc*/, GObject *tbl)
{
- sp_text_toolbox_selection_changed (NULL, tbl);
+ sp_text_toolbox_selection_changed (NULL, tbl, true);
}
// TODO: possibly share with font-selector by moving most code to font-lister (passing family name)
@@ -1167,15 +1176,15 @@ static void sp_text_toolbox_select_cb( GtkEntry* entry, GtkEntryIconPosition /*p
SPItem *item = SP_ITEM(i->data);
SPStyle *style = item->style;
- if (style && style->text) {
+ if (style) {
Glib::ustring family_style;
- if (style->text->font_family.set) {
- family_style = style->text->font_family.value;
+ if (style->font_family.set) {
+ family_style = style->font_family.value;
//std::cout << " family style from font_family: " << family_style << std::endl;
}
- else if (style->text->font_specification.set) {
- family_style = style->text->font_specification.value;
+ else if (style->font_specification.set) {
+ family_style = style->font_specification.value;
//std::cout << " family style from font_spec: " << family_style << std::endl;
}
@@ -1193,6 +1202,7 @@ static void sp_text_toolbox_select_cb( GtkEntry* entry, GtkEntryIconPosition /*p
selection->setList(selectList);
}
+static void text_toolbox_watch_ec(SPDesktop* dt, Inkscape::UI::Tools::ToolBase* ec, GObject* holder);
// Define all the "widgets" in the toolbar.
void sp_text_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObject* holder)
@@ -1615,31 +1625,35 @@ void sp_text_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObje
// Is this necessary to call? Shouldn't hurt.
sp_text_toolbox_selection_changed(sp_desktop_selection(desktop), holder);
- // Watch selection
- Inkscape::ConnectionPool* pool = Inkscape::ConnectionPool::new_connection_pool ("ISTextToolboxGTK");
-
- sigc::connection *c_selection_changed =
- new sigc::connection (sp_desktop_selection (desktop)->connectChanged
- (sigc::bind (sigc::ptr_fun (sp_text_toolbox_selection_changed), holder)));
- pool->add_connection ("selection-changed", c_selection_changed);
-
- sigc::connection *c_selection_modified =
- new sigc::connection (sp_desktop_selection (desktop)->connectModified
- (sigc::bind (sigc::ptr_fun (sp_text_toolbox_selection_modified), holder)));
- pool->add_connection ("selection-modified", c_selection_modified);
-
- sigc::connection *c_subselection_changed =
- new sigc::connection (desktop->connectToolSubselectionChanged
- (sigc::bind (sigc::ptr_fun (sp_text_toolbox_subselection_changed), holder)));
- pool->add_connection ("tool-subselection-changed", c_subselection_changed);
-
- Inkscape::ConnectionPool::connect_destroy (G_OBJECT (holder), pool);
+ desktop->connectEventContextChanged(sigc::bind(sigc::ptr_fun(text_toolbox_watch_ec), holder));
g_signal_connect( holder, "destroy", G_CALLBACK(purge_repr_listener), holder );
}
+static void text_toolbox_watch_ec(SPDesktop* desktop, Inkscape::UI::Tools::ToolBase* ec, GObject* holder) {
+ using sigc::connection;
+ using sigc::bind;
+ using sigc::ptr_fun;
+
+ static connection c_selection_changed;
+ static connection c_selection_modified;
+ static connection c_subselection_changed;
+ if (SP_IS_TEXT_CONTEXT(ec)) {
+ // Watch selection
+ c_selection_changed = sp_desktop_selection(desktop)->connectChanged(bind(ptr_fun(sp_text_toolbox_selection_changed), holder, false));
+ c_selection_modified = sp_desktop_selection (desktop)->connectModified(bind(ptr_fun(sp_text_toolbox_selection_modified), holder));
+ c_subselection_changed = desktop->connectToolSubselectionChanged(bind(ptr_fun(sp_text_toolbox_subselection_changed), holder));
+ } else {
+ if (c_selection_changed)
+ c_selection_changed.disconnect();
+ if (c_selection_modified)
+ c_selection_modified.disconnect();
+ if (c_subselection_changed)
+ c_subselection_changed.disconnect();
+ }
+}
/*
Local Variables:
mode:c++
@@ -1649,4 +1663,4 @@ void sp_text_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObje
fill-column:99
End:
*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8 :
diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp
index 02da805bf..9e55d1cf6 100644
--- a/src/widgets/toolbox.cpp
+++ b/src/widgets/toolbox.cpp
@@ -43,20 +43,20 @@
#include "../desktop-handles.h"
#include "../desktop-style.h"
#include "document-undo.h"
-#include "../ege-adjustment-action.h"
-#include "../ege-output-action.h"
-#include "../ege-select-one-action.h"
+#include "widgets/ege-adjustment-action.h"
+#include "widgets/ege-output-action.h"
+#include "widgets/ege-select-one-action.h"
#include "../graphlayout.h"
#include "../helper/action.h"
#include "../helper/action-context.h"
#include "icon.h"
-#include "../ink-action.h"
-#include "../ink-comboboxentry-action.h"
+#include "ink-action.h"
+#include "ink-comboboxentry-action.h"
#include "../inkscape.h"
-#include "../interface.h"
+#include "ui/interface.h"
#include "../shortcuts.h"
#include "../sp-namedview.h"
-#include "../tools-switch.h"
+#include "ui/tools-switch.h"
#include "../ui/icon-names.h"
#include "../ui/widget/style-swatch.h"
#include "../verbs.h"
@@ -314,8 +314,8 @@ static gchar const * ui_descr =
" <toolitem action='SprayModeAction' />"
" <separator />"
" <toolitem action='SprayWidthAction' />"
- " <toolitem action='SprayPressureAction' />"
" <toolitem action='SprayPopulationAction' />"
+ " <toolitem action='SprayPressureAction' />"
" <separator />"
" <toolitem action='SprayRotationAction' />"
" <toolitem action='SprayScaleAction' />"
@@ -1301,8 +1301,9 @@ void setup_tool_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
" <toolitem action='ToolDropper' />"
" <toolitem action='ToolConnector' />"
-
-// " <toolitem action='ToolLPETool' />"
+#ifdef WITH_LPETOOL
+ " <toolitem action='ToolLPETool' />"
+#endif
" </toolbar>"
"</ui>";
diff --git a/src/widgets/toolbox.h b/src/widgets/toolbox.h
index fb749bfb5..db9130034 100644
--- a/src/widgets/toolbox.h
+++ b/src/widgets/toolbox.h
@@ -13,15 +13,15 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include <gtk/gtk.h>
#include <glibmm/ustring.h>
#include "icon-size.h"
-#include "../ege-adjustment-action.h"
-#include "../preferences.h"
+#include "preferences.h"
#define TOOLBAR_SLIDER_HINT "full"
+typedef struct _EgeAdjustmentAction EgeAdjustmentAction;
+
class SPDesktop;
namespace Inkscape {
diff --git a/src/widgets/tweak-toolbar.cpp b/src/widgets/tweak-toolbar.cpp
index 050d7fb5e..a5d90fc3d 100644
--- a/src/widgets/tweak-toolbar.cpp
+++ b/src/widgets/tweak-toolbar.cpp
@@ -33,10 +33,10 @@
#include "tweak-toolbar.h"
#include "desktop.h"
#include "document-undo.h"
-#include "ege-adjustment-action.h"
-#include "ege-output-action.h"
-#include "ege-select-one-action.h"
-#include "ink-action.h"
+#include "widgets/ege-adjustment-action.h"
+#include "widgets/ege-output-action.h"
+#include "widgets/ege-select-one-action.h"
+#include "widgets/ink-action.h"
#include "preferences.h"
#include "toolbox.h"
#include "ui/icon-names.h"