From 55b451bf382e0c3d5ed8728e42fbb535acfa8a33 Mon Sep 17 00:00:00 2001 From: Markus Engel Date: Thu, 7 Nov 2013 21:44:00 +0100 Subject: First step of moving tools into appropriate namespaces. (bzr r12782) --- src/arc-context.cpp | 48 ++++--- src/arc-context.h | 18 ++- src/box3d-context.cpp | 52 ++++---- src/box3d-context.h | 18 ++- src/common-context.cpp | 10 +- src/common-context.h | 10 +- src/connector-context.cpp | 135 ++++++++++---------- src/connector-context.h | 21 ++-- src/context-fns.cpp | 4 +- src/context-fns.h | 13 +- src/desktop-events.cpp | 10 +- src/desktop-handles.cpp | 2 +- src/desktop-handles.h | 14 ++- src/desktop.cpp | 20 +-- src/desktop.h | 22 +++- src/dialogs/dialog-events.cpp | 2 +- src/doxygen-main.cpp | 28 ++--- src/draw-anchor.cpp | 2 +- src/draw-anchor.h | 13 +- src/draw-context.cpp | 20 ++- src/draw-context.h | 20 ++- src/dropper-context.cpp | 36 +++--- src/dropper-context.h | 18 ++- src/dyna-draw-context.cpp | 58 +++++---- src/dyna-draw-context.h | 14 ++- src/eraser-context.cpp | 46 ++++--- src/eraser-context.h | 14 ++- src/event-context.cpp | 94 +++++++------- src/event-context.h | 67 +++++----- src/flood-context.cpp | 48 ++++--- src/flood-context.h | 18 ++- src/gradient-chemistry.cpp | 2 +- src/gradient-context.cpp | 59 +++++---- src/gradient-context.h | 24 ++-- src/helper/window.cpp | 2 +- src/inkscape-private.h | 2 +- src/inkscape.cpp | 6 +- src/inkscape.h | 13 +- src/knot.cpp | 6 +- src/live_effects/effect.cpp | 4 +- src/live_effects/lpe-line_segment.cpp | 2 +- src/live_effects/parameter/path.cpp | 2 +- src/lpe-tool-context.cpp | 69 +++++----- src/lpe-tool-context.h | 34 +++-- src/main.cpp | 16 ++- src/measure-context.cpp | 41 +++--- src/measure-context.h | 18 ++- src/mesh-context.cpp | 54 ++++---- src/mesh-context.h | 22 ++-- src/pen-context.cpp | 216 ++++++++++++++++---------------- src/pen-context.h | 30 +++-- src/pencil-context.cpp | 88 +++++++------ src/pencil-context.h | 22 ++-- src/persp3d.cpp | 4 +- src/persp3d.h | 12 +- src/proofs | 2 +- src/rect-context.cpp | 49 ++++---- src/rect-context.h | 18 ++- src/select-context.cpp | 51 ++++---- src/select-context.h | 18 ++- src/selection-chemistry.cpp | 31 ++--- src/seltrans.cpp | 2 +- src/shortcuts.cpp | 2 +- src/spiral-context.cpp | 46 ++++--- src/spiral-context.h | 18 ++- src/spray-context.cpp | 56 +++++---- src/spray-context.h | 20 ++- src/star-context.cpp | 46 ++++--- src/star-context.h | 14 ++- src/text-context.cpp | 119 +++++++++--------- src/text-context.h | 34 +++-- src/tool-factory.h | 15 ++- src/tools-switch.cpp | 2 +- src/tweak-context.cpp | 53 ++++---- src/tweak-context.h | 14 ++- src/ui/clipboard.cpp | 6 +- src/ui/dialog/align-and-distribute.cpp | 6 +- src/ui/dialog/dialog.cpp | 4 +- src/ui/dialog/layer-properties.cpp | 2 +- src/ui/dialog/layers.cpp | 2 +- src/ui/dialog/xml-tree.cpp | 4 +- src/ui/tool/control-point-selection.cpp | 2 +- src/ui/tool/control-point-selection.h | 2 +- src/ui/tool/control-point.cpp | 6 +- src/ui/tool/control-point.h | 13 +- src/ui/tool/curve-drag-point.cpp | 2 +- src/ui/tool/curve-drag-point.h | 2 +- src/ui/tool/manipulator.h | 4 +- src/ui/tool/multi-path-manipulator.cpp | 2 +- src/ui/tool/multi-path-manipulator.h | 2 +- src/ui/tool/node-tool.cpp | 66 +++++----- src/ui/tool/node-tool.h | 18 ++- src/ui/tool/node.cpp | 4 +- src/ui/tool/node.h | 4 +- src/ui/tool/path-manipulator.cpp | 2 +- src/ui/tool/path-manipulator.h | 2 +- src/ui/tool/selector.cpp | 8 +- src/ui/tool/selector.h | 2 +- src/ui/tool/transform-handle-set.cpp | 4 +- src/ui/tool/transform-handle-set.h | 2 +- src/ui/widget/rotateable.cpp | 2 +- src/ui/widget/spinbutton.cpp | 2 +- src/vanishing-point.cpp | 2 +- src/verbs.cpp | 10 +- src/widgets/connector-toolbar.cpp | 8 +- src/widgets/fill-style.cpp | 6 +- src/widgets/gradient-toolbar.cpp | 21 ++-- src/widgets/lpe-toolbar.cpp | 18 +-- src/widgets/mesh-toolbar.cpp | 2 +- src/widgets/node-toolbar.cpp | 45 +++---- src/widgets/paintbucket-toolbar.cpp | 8 +- src/widgets/pencil-toolbar.cpp | 2 +- src/widgets/sp-color-notebook.cpp | 2 +- src/widgets/spinbutton-events.cpp | 2 +- src/widgets/text-toolbar.cpp | 8 +- src/widgets/toolbox.cpp | 17 +-- src/widgets/toolbox.h | 13 +- src/widgets/tweak-toolbar.cpp | 14 +-- src/zoom-context.cpp | 32 +++-- src/zoom-context.h | 18 ++- 120 files changed, 1573 insertions(+), 1083 deletions(-) (limited to 'src') diff --git a/src/arc-context.cpp b/src/arc-context.cpp index a14562a32..4e99953f6 100644 --- a/src/arc-context.cpp +++ b/src/arc-context.cpp @@ -50,22 +50,26 @@ using Inkscape::DocumentUndo; #include "tool-factory.h" +namespace Inkscape { +namespace UI { +namespace Tools { + namespace { - SPEventContext* createArcContext() { - return new SPArcContext(); + ToolBase* createArcContext() { + return new ArcTool(); } bool arcContextRegistered = ToolFactory::instance().registerObject("/tools/shapes/arc", createArcContext); } -const std::string& SPArcContext::getPrefsPath() { - return SPArcContext::prefsPath; +const std::string& ArcTool::getPrefsPath() { + return ArcTool::prefsPath; } -const std::string SPArcContext::prefsPath = "/tools/shapes/arc"; +const std::string ArcTool::prefsPath = "/tools/shapes/arc"; -SPArcContext::SPArcContext() : SPEventContext() { +ArcTool::ArcTool() : ToolBase() { this->cursor_shape = cursor_ellipse_xpm; this->hot_x = 4; this->hot_y = 4; @@ -79,15 +83,15 @@ SPArcContext::SPArcContext() : SPEventContext() { this->arc = NULL; } -void SPArcContext::finish() { +void ArcTool::finish() { sp_canvas_item_ungrab(SP_CANVAS_ITEM(desktop->acetate), GDK_CURRENT_TIME); this->finishItem(); this->sel_changed_connection.disconnect(); - SPEventContext::finish(); + ToolBase::finish(); } -SPArcContext::~SPArcContext() { +ArcTool::~ArcTool() { this->enableGrDrag(false); this->sel_changed_connection.disconnect(); @@ -105,13 +109,13 @@ SPArcContext::~SPArcContext() { * Callback that processes the "changed" signal on the selection; * destroys old and creates new knotholder. */ -void SPArcContext::selection_changed(Inkscape::Selection* selection) { +void ArcTool::selection_changed(Inkscape::Selection* selection) { this->shape_editor->unset_item(SH_KNOTHOLDER); this->shape_editor->set_item(selection->singleItem(), SH_KNOTHOLDER); } -void SPArcContext::setup() { - SPEventContext::setup(); +void ArcTool::setup() { + ToolBase::setup(); Inkscape::Selection *selection = sp_desktop_selection(this->desktop); @@ -124,7 +128,7 @@ void SPArcContext::setup() { this->sel_changed_connection.disconnect(); this->sel_changed_connection = selection->connectChanged( - sigc::mem_fun(this, &SPArcContext::selection_changed) + sigc::mem_fun(this, &ArcTool::selection_changed) ); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -137,7 +141,7 @@ void SPArcContext::setup() { } } -bool SPArcContext::item_handler(SPItem* item, GdkEvent* event) { +bool ArcTool::item_handler(SPItem* item, GdkEvent* event) { gint ret = FALSE; switch (event->type) { @@ -156,12 +160,12 @@ bool SPArcContext::item_handler(SPItem* item, GdkEvent* event) { // ret = (SP_EVENT_CONTEXT_CLASS(sp_arc_context_parent_class))->item_handler(event_context, item, event); // } // CPPIFY: ret is overwritten... - ret = SPEventContext::item_handler(item, event); + ret = ToolBase::item_handler(item, event); return ret; } -bool SPArcContext::root_handler(GdkEvent* event) { +bool ArcTool::root_handler(GdkEvent* event) { static bool dragging; Inkscape::Selection *selection = sp_desktop_selection(desktop); @@ -343,13 +347,13 @@ bool SPArcContext::root_handler(GdkEvent* event) { } if (!ret) { - ret = SPEventContext::root_handler(event); + ret = ToolBase::root_handler(event); } return ret; } -void SPArcContext::drag(Geom::Point pt, guint state) { +void ArcTool::drag(Geom::Point pt, guint state) { if (!this->arc) { if (Inkscape::have_viable_layer(desktop, this->message_context) == false) { return; @@ -441,7 +445,7 @@ void SPArcContext::drag(Geom::Point pt, guint state) { g_string_free(ys, FALSE); } -void SPArcContext::finishItem() { +void ArcTool::finishItem() { this->message_context->clear(); if (this->arc != NULL) { @@ -463,7 +467,7 @@ void SPArcContext::finishItem() { } } -void SPArcContext::cancel() { +void ArcTool::cancel() { sp_desktop_selection(desktop)->clear(); sp_canvas_item_ungrab(SP_CANVAS_ITEM(desktop->acetate), 0); @@ -482,6 +486,10 @@ void SPArcContext::cancel() { DocumentUndo::cancel(sp_desktop_document(desktop)); } +} +} +} + /* Local Variables: diff --git a/src/arc-context.h b/src/arc-context.h index 6a0a6c071..7d99011d0 100644 --- a/src/arc-context.h +++ b/src/arc-context.h @@ -23,13 +23,17 @@ #include "sp-ellipse.h" -#define SP_ARC_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_ARC_CONTEXT(obj) (dynamic_cast(const SPEventContext*(obj)) != NULL) +#define SP_ARC_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define SP_IS_ARC_CONTEXT(obj) (dynamic_cast(const Inkscape::UI::Tools::ToolBase*(obj)) != NULL) -class SPArcContext : public SPEventContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class ArcTool : public ToolBase { public: - SPArcContext(); - virtual ~SPArcContext(); + ArcTool(); + virtual ~ArcTool(); static const std::string prefsPath; @@ -54,6 +58,10 @@ private: void cancel(); }; +} +} +} + #endif /* !SEEN_ARC_CONTEXT_H */ /* diff --git a/src/box3d-context.cpp b/src/box3d-context.cpp index f270fa244..a441d45eb 100644 --- a/src/box3d-context.cpp +++ b/src/box3d-context.cpp @@ -54,21 +54,25 @@ using Inkscape::DocumentUndo; #include "tool-factory.h" +namespace Inkscape { +namespace UI { +namespace Tools { + namespace { - SPEventContext* createBox3dContext() { - return new Box3DContext(); + ToolBase* createBox3dTool() { + return new Box3dTool(); } - bool box3dContextRegistered = ToolFactory::instance().registerObject("/tools/shapes/3dbox", createBox3dContext); + bool Box3dToolRegistered = ToolFactory::instance().registerObject("/tools/shapes/3dbox", createBox3dTool); } -const std::string& Box3DContext::getPrefsPath() { - return Box3DContext::prefsPath; +const std::string& Box3dTool::getPrefsPath() { + return Box3dTool::prefsPath; } -const std::string Box3DContext::prefsPath = "/tools/shapes/3dbox"; +const std::string Box3dTool::prefsPath = "/tools/shapes/3dbox"; -Box3DContext::Box3DContext() : SPEventContext() { +Box3dTool::Box3dTool() : ToolBase() { this->cursor_shape = cursor_3dbox_xpm; this->hot_x = 4; this->hot_y = 4; @@ -86,16 +90,16 @@ Box3DContext::Box3DContext() : SPEventContext() { this->_vpdrag = NULL; } -void Box3DContext::finish() { +void Box3dTool::finish() { sp_canvas_item_ungrab(SP_CANVAS_ITEM(desktop->acetate), GDK_CURRENT_TIME); this->finishItem(); this->sel_changed_connection.disconnect(); - SPEventContext::finish(); + ToolBase::finish(); } -Box3DContext::~Box3DContext() { +Box3dTool::~Box3dTool() { this->enableGrDrag(false); delete (this->_vpdrag); @@ -116,7 +120,7 @@ Box3DContext::~Box3DContext() { * Callback that processes the "changed" signal on the selection; * destroys old and creates new knotholder. */ -void Box3DContext::selection_changed(Inkscape::Selection* selection) { +void Box3dTool::selection_changed(Inkscape::Selection* selection) { this->shape_editor->unset_item(SH_KNOTHOLDER); this->shape_editor->set_item(selection->singleItem(), SH_KNOTHOLDER); @@ -145,8 +149,8 @@ static void sp_box3d_context_ensure_persp_in_defs(SPDocument *document) { } } -void Box3DContext::setup() { - SPEventContext::setup(); +void Box3dTool::setup() { + ToolBase::setup(); this->shape_editor = new ShapeEditor(this->desktop); @@ -157,7 +161,7 @@ void Box3DContext::setup() { this->sel_changed_connection.disconnect(); this->sel_changed_connection = sp_desktop_selection(this->desktop)->connectChanged( - sigc::mem_fun(this, &Box3DContext::selection_changed) + sigc::mem_fun(this, &Box3dTool::selection_changed) ); this->_vpdrag = new Box3D::VPDrag(sp_desktop_document(this->desktop)); @@ -173,7 +177,7 @@ void Box3DContext::setup() { } } -bool Box3DContext::item_handler(SPItem* item, GdkEvent* event) { +bool Box3dTool::item_handler(SPItem* item, GdkEvent* event) { gint ret = FALSE; switch (event->type) { @@ -188,16 +192,16 @@ bool Box3DContext::item_handler(SPItem* item, GdkEvent* event) { break; } -// if (((SPEventContextClass *) sp_box3d_context_parent_class)->item_handler) { -// ret = ((SPEventContextClass *) sp_box3d_context_parent_class)->item_handler(event_context, item, event); +// if (((ToolBaseClass *) sp_box3d_context_parent_class)->item_handler) { +// ret = ((ToolBaseClass *) sp_box3d_context_parent_class)->item_handler(event_context, item, event); // } // CPPIFY: ret is always overwritten... - ret = SPEventContext::item_handler(item, event); + ret = ToolBase::item_handler(item, event); return ret; } -bool Box3DContext::root_handler(GdkEvent* event) { +bool Box3dTool::root_handler(GdkEvent* event) { static bool dragging; SPDocument *document = sp_desktop_document (desktop); @@ -505,13 +509,13 @@ bool Box3DContext::root_handler(GdkEvent* event) { } if (!ret) { - ret = SPEventContext::root_handler(event); + ret = ToolBase::root_handler(event); } return ret; } -void Box3DContext::drag(guint state) { +void Box3dTool::drag(guint state) { if (!this->box3d) { if (Inkscape::have_viable_layer(desktop, this->message_context) == false) { return; @@ -588,7 +592,7 @@ void Box3DContext::drag(guint state) { this->message_context->setF(Inkscape::NORMAL_MESSAGE, "%s", _("3D Box; with Shift to extrude along the Z axis")); } -void Box3DContext::finishItem() { +void Box3dTool::finishItem() { this->message_context->clear(); this->ctrl_dragged = false; this->extruded = false; @@ -617,6 +621,10 @@ void Box3DContext::finishItem() { } } +} +} +} + /* Local Variables: mode:c++ diff --git a/src/box3d-context.h b/src/box3d-context.h index 044d79d7d..4f8032eeb 100644 --- a/src/box3d-context.h +++ b/src/box3d-context.h @@ -23,13 +23,17 @@ #include "box3d.h" -#define SP_BOX3D_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_BOX3D_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_BOX3D_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define SP_IS_BOX3D_CONTEXT(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj) != NULL) -class Box3DContext : public SPEventContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class Box3dTool : public ToolBase { public: - Box3DContext(); - virtual ~Box3DContext(); + Box3dTool(); + virtual ~Box3dTool(); Box3D::VPDrag * _vpdrag; @@ -73,6 +77,10 @@ private: void finishItem(); }; +} +} +} + #endif /* __SP_BOX3D_CONTEXT_H__ */ /* diff --git a/src/common-context.cpp b/src/common-context.cpp index 2155f9739..e896d0829 100644 --- a/src/common-context.cpp +++ b/src/common-context.cpp @@ -19,8 +19,12 @@ #define DRAG_DEFAULT 1.0 #define DRAG_MAX 1.0 +namespace Inkscape { +namespace UI { +namespace Tools { + SPCommonContext::SPCommonContext() : - SPEventContext(), + ToolBase(), accumulated(NULL), segments(NULL), currentshape(NULL), @@ -142,6 +146,10 @@ Geom::Point SPCommonContext::getViewPoint(Geom::Point n) const { return Geom::Point(n[Geom::X] * max + drect.min()[Geom::X], n[Geom::Y] * max + drect.min()[Geom::Y]); } +} +} +} + /* Local Variables: mode:c++ diff --git a/src/common-context.h b/src/common-context.h index dc4c82251..658d2ef17 100644 --- a/src/common-context.h +++ b/src/common-context.h @@ -25,7 +25,11 @@ #define SAMPLING_SIZE 8 /* fixme: ?? */ -class SPCommonContext : public SPEventContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class SPCommonContext : public ToolBase { public: SPCommonContext(); virtual ~SPCommonContext(); @@ -100,6 +104,10 @@ protected: Geom::Point getNormalizedPoint(Geom::Point v) const; }; +} +} +} + #endif // COMMON_CONTEXT_H_SEEN /* diff --git a/src/connector-context.cpp b/src/connector-context.cpp index 99239533d..6af223b54 100644 --- a/src/connector-context.cpp +++ b/src/connector-context.cpp @@ -109,32 +109,38 @@ using Inkscape::DocumentUndo; +#include "tool-factory.h" + +namespace Inkscape { +namespace UI { +namespace Tools { + // Stuff borrowed from DrawContext -static void spcc_connector_set_initial_point(SPConnectorContext *cc, Geom::Point const p); -static void spcc_connector_set_subsequent_point(SPConnectorContext *cc, Geom::Point const p); -static void spcc_connector_finish_segment(SPConnectorContext *cc, Geom::Point p); -static void spcc_reset_colors(SPConnectorContext *cc); -static void spcc_connector_finish(SPConnectorContext *cc); -static void spcc_concat_colors_and_flush(SPConnectorContext *cc); -static void spcc_flush_white(SPConnectorContext *cc, SPCurve *gc); +static void spcc_connector_set_initial_point(ConnectorTool *cc, Geom::Point const p); +static void spcc_connector_set_subsequent_point(ConnectorTool *cc, Geom::Point const p); +static void spcc_connector_finish_segment(ConnectorTool *cc, Geom::Point p); +static void spcc_reset_colors(ConnectorTool *cc); +static void spcc_connector_finish(ConnectorTool *cc); +static void spcc_concat_colors_and_flush(ConnectorTool *cc); +static void spcc_flush_white(ConnectorTool *cc, SPCurve *gc); // Context event handlers -static gint connector_handle_button_press(SPConnectorContext *const cc, GdkEventButton const &bevent); -static gint connector_handle_motion_notify(SPConnectorContext *const cc, GdkEventMotion const &mevent); -static gint connector_handle_button_release(SPConnectorContext *const cc, GdkEventButton const &revent); -static gint connector_handle_key_press(SPConnectorContext *const cc, guint const keyval); +static gint connector_handle_button_press(ConnectorTool *const cc, GdkEventButton const &bevent); +static gint connector_handle_motion_notify(ConnectorTool *const cc, GdkEventMotion const &mevent); +static gint connector_handle_button_release(ConnectorTool *const cc, GdkEventButton const &revent); +static gint connector_handle_key_press(ConnectorTool *const cc, guint const keyval); -static void cc_active_shape_add_knot(SPConnectorContext *cc, SPItem* item); -static void cc_set_active_shape(SPConnectorContext *cc, SPItem *item); +static void cc_active_shape_add_knot(ConnectorTool *cc, SPItem* item); +static void cc_set_active_shape(ConnectorTool *cc, SPItem *item); static void cc_clear_active_knots(SPKnotList k); -static void cc_clear_active_shape(SPConnectorContext *cc); -static void cc_set_active_conn(SPConnectorContext *cc, SPItem *item); -static void cc_clear_active_conn(SPConnectorContext *cc); -static bool conn_pt_handle_test(SPConnectorContext *cc, Geom::Point& p, gchar **href); +static void cc_clear_active_shape(ConnectorTool *cc); +static void cc_set_active_conn(ConnectorTool *cc, SPItem *item); +static void cc_clear_active_conn(ConnectorTool *cc); +static bool conn_pt_handle_test(ConnectorTool *cc, Geom::Point& p, gchar **href); static void cc_select_handle(SPKnot* knot); static void cc_deselect_handle(SPKnot* knot); static bool cc_item_is_shape(SPItem *item); -static void cc_connector_rerouting_finish(SPConnectorContext *const cc, +static void cc_connector_rerouting_finish(ConnectorTool *const cc, Geom::Point *const p); static void shape_event_attr_deleted(Inkscape::XML::Node *repr, @@ -162,24 +168,21 @@ static Inkscape::XML::NodeEventVector layer_repr_events = { NULL /* order_changed */ }; - -#include "tool-factory.h" - namespace { - SPEventContext* createConnectorContext() { - return new SPConnectorContext(); + ToolBase* createConnectorContext() { + return new ConnectorTool(); } bool connectorContextRegistered = ToolFactory::instance().registerObject("/tools/connector", createConnectorContext); } -const std::string& SPConnectorContext::getPrefsPath() { - return SPConnectorContext::prefsPath; +const std::string& ConnectorTool::getPrefsPath() { + return ConnectorTool::prefsPath; } -const std::string SPConnectorContext::prefsPath = "/tools/connector"; +const std::string ConnectorTool::prefsPath = "/tools/connector"; -SPConnectorContext::SPConnectorContext() : SPEventContext() { +ConnectorTool::ConnectorTool() : ToolBase() { this->red_curve = 0; this->isOrthogonal = false; this->c1 = 0; @@ -229,7 +232,7 @@ SPConnectorContext::SPConnectorContext() : SPEventContext() { this->state = SP_CONNECTOR_CONTEXT_IDLE; } -SPConnectorContext::~SPConnectorContext() { +ConnectorTool::~ConnectorTool() { this->sel_changed_connection.disconnect(); for (int i = 0; i < 2; ++i) { @@ -252,14 +255,14 @@ SPConnectorContext::~SPConnectorContext() { g_assert( this->newConnRef == NULL ); } -void SPConnectorContext::setup() { - SPEventContext::setup(); +void ConnectorTool::setup() { + ToolBase::setup(); this->selection = sp_desktop_selection(this->desktop); this->sel_changed_connection.disconnect(); this->sel_changed_connection = this->selection->connectChanged( - sigc::mem_fun(this, &SPConnectorContext::selection_changed) + sigc::mem_fun(this, &ConnectorTool::selection_changed) ); /* Create red bpath */ @@ -292,7 +295,7 @@ void SPConnectorContext::setup() { this->desktop->canvas->gen_all_enter_events = true; } -void SPConnectorContext::set(const Inkscape::Preferences::Entry& val) { +void ConnectorTool::set(const Inkscape::Preferences::Entry& val) { /* fixme: Proper error handling for non-numeric data. Use a locale-independent function like * g_ascii_strtod (or a thin wrapper that does the right thing for invalid values inf/nan). */ Glib::ustring name = val.getEntryName(); @@ -304,11 +307,11 @@ void SPConnectorContext::set(const Inkscape::Preferences::Entry& val) { } } -void SPConnectorContext::finish() { +void ConnectorTool::finish() { spcc_connector_finish(this); this->state = SP_CONNECTOR_CONTEXT_IDLE; - SPEventContext::finish(); + ToolBase::finish(); if (this->selection) { this->selection = NULL; @@ -325,7 +328,7 @@ void SPConnectorContext::finish() { static void -cc_clear_active_shape(SPConnectorContext *cc) +cc_clear_active_shape(ConnectorTool *cc) { if (cc->active_shape == NULL) { return; @@ -360,7 +363,7 @@ cc_clear_active_knots(SPKnotList k) } static void -cc_clear_active_conn(SPConnectorContext *cc) +cc_clear_active_conn(ConnectorTool *cc) { if (cc->active_conn == NULL) { return; @@ -385,7 +388,7 @@ cc_clear_active_conn(SPConnectorContext *cc) static bool -conn_pt_handle_test(SPConnectorContext *cc, Geom::Point& p, gchar **href) +conn_pt_handle_test(ConnectorTool *cc, Geom::Point& p, gchar **href) { if (cc->active_handle && (cc->knots.find(cc->active_handle) != cc->knots.end())) { @@ -417,7 +420,7 @@ cc_deselect_handle(SPKnot* knot) sp_knot_update_ctrl(knot); } -bool SPConnectorContext::item_handler(SPItem* item, GdkEvent* event) { +bool ConnectorTool::item_handler(SPItem* item, GdkEvent* event) { gint ret = FALSE; Geom::Point p(event->button.x, event->button.y); @@ -472,7 +475,7 @@ bool SPConnectorContext::item_handler(SPItem* item, GdkEvent* event) { return ret; } -bool SPConnectorContext::root_handler(GdkEvent* event) { +bool ConnectorTool::root_handler(GdkEvent* event) { gint ret = FALSE; switch (event->type) { @@ -497,7 +500,7 @@ bool SPConnectorContext::root_handler(GdkEvent* event) { } if (!ret) { - ret = SPEventContext::root_handler(event); + ret = ToolBase::root_handler(event); } return ret; @@ -505,12 +508,12 @@ bool SPConnectorContext::root_handler(GdkEvent* event) { static gint -connector_handle_button_press(SPConnectorContext *const cc, GdkEventButton const &bevent) +connector_handle_button_press(ConnectorTool *const cc, GdkEventButton const &bevent) { Geom::Point const event_w(bevent.x, bevent.y); /* Find desktop coordinates */ Geom::Point p = cc->desktop->w2d(event_w); - SPEventContext *event_context = SP_EVENT_CONTEXT(cc); + ToolBase *event_context = SP_EVENT_CONTEXT(cc); gint ret = FALSE; @@ -612,10 +615,10 @@ connector_handle_button_press(SPConnectorContext *const cc, GdkEventButton const } static gint -connector_handle_motion_notify(SPConnectorContext *const cc, GdkEventMotion const &mevent) +connector_handle_motion_notify(ConnectorTool *const cc, GdkEventMotion const &mevent) { gint ret = FALSE; - SPEventContext *event_context = SP_EVENT_CONTEXT(cc); + ToolBase *event_context = SP_EVENT_CONTEXT(cc); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); if (event_context->space_panning || mevent.state & GDK_BUTTON2_MASK || mevent.state & GDK_BUTTON3_MASK) { @@ -706,10 +709,10 @@ connector_handle_motion_notify(SPConnectorContext *const cc, GdkEventMotion cons } static gint -connector_handle_button_release(SPConnectorContext *const cc, GdkEventButton const &revent) +connector_handle_button_release(ConnectorTool *const cc, GdkEventButton const &revent) { gint ret = FALSE; - SPEventContext *event_context = SP_EVENT_CONTEXT(cc); + ToolBase *event_context = SP_EVENT_CONTEXT(cc); if ( revent.button == 1 && !event_context->space_panning ) { SPDesktop *desktop = SP_EVENT_CONTEXT_DESKTOP(cc); @@ -771,7 +774,7 @@ connector_handle_button_release(SPConnectorContext *const cc, GdkEventButton con } static gint -connector_handle_key_press(SPConnectorContext *const cc, guint const keyval) +connector_handle_key_press(ConnectorTool *const cc, guint const keyval) { gint ret = FALSE; @@ -814,7 +817,7 @@ connector_handle_key_press(SPConnectorContext *const cc, guint const keyval) static void -cc_connector_rerouting_finish(SPConnectorContext *const cc, Geom::Point *const p) +cc_connector_rerouting_finish(ConnectorTool *const cc, Geom::Point *const p) { SPDesktop *desktop = SP_EVENT_CONTEXT_DESKTOP(cc); SPDocument *doc = sp_desktop_document(desktop); @@ -849,7 +852,7 @@ cc_connector_rerouting_finish(SPConnectorContext *const cc, Geom::Point *const p static void -spcc_reset_colors(SPConnectorContext *cc) +spcc_reset_colors(ConnectorTool *cc) { /* Red */ cc->red_curve->reset(); @@ -861,7 +864,7 @@ spcc_reset_colors(SPConnectorContext *cc) static void -spcc_connector_set_initial_point(SPConnectorContext *const cc, Geom::Point const p) +spcc_connector_set_initial_point(ConnectorTool *const cc, Geom::Point const p) { g_assert( cc->npoints == 0 ); @@ -873,7 +876,7 @@ spcc_connector_set_initial_point(SPConnectorContext *const cc, Geom::Point const static void -spcc_connector_set_subsequent_point(SPConnectorContext *const cc, Geom::Point const p) +spcc_connector_set_subsequent_point(ConnectorTool *const cc, Geom::Point const p) { g_assert( cc->npoints != 0 ); @@ -910,7 +913,7 @@ spcc_connector_set_subsequent_point(SPConnectorContext *const cc, Geom::Point co * Invoke _flush_white to write result back to object. */ static void -spcc_concat_colors_and_flush(SPConnectorContext *cc) +spcc_concat_colors_and_flush(ConnectorTool *cc) { SPCurve *c = cc->green_curve; cc->green_curve = new SPCurve(); @@ -938,7 +941,7 @@ spcc_concat_colors_and_flush(SPConnectorContext *cc) */ static void -spcc_flush_white(SPConnectorContext *cc, SPCurve *gc) +spcc_flush_white(ConnectorTool *cc, SPCurve *gc) { SPCurve *c; @@ -1015,7 +1018,7 @@ spcc_flush_white(SPConnectorContext *cc, SPCurve *gc) static void -spcc_connector_finish_segment(SPConnectorContext *const cc, Geom::Point const /*p*/) +spcc_connector_finish_segment(ConnectorTool *const cc, Geom::Point const /*p*/) { if (!cc->red_curve->is_empty()) { cc->green_curve->append_continuous(cc->red_curve, 0.0625); @@ -1030,7 +1033,7 @@ spcc_connector_finish_segment(SPConnectorContext *const cc, Geom::Point const /* static void -spcc_connector_finish(SPConnectorContext *const cc) +spcc_connector_finish(ConnectorTool *const cc) { SPDesktop *const desktop = cc->desktop; desktop->messageStack()->flash(Inkscape::NORMAL_MESSAGE, _("Finishing connector")); @@ -1055,7 +1058,7 @@ cc_generic_knot_handler(SPCanvasItem *, GdkEvent *event, SPKnot *knot) g_object_ref(knot); - SPConnectorContext *cc = SP_CONNECTOR_CONTEXT( + ConnectorTool *cc = SP_CONNECTOR_CONTEXT( knot->desktop->event_context); gboolean consumed = FALSE; @@ -1096,7 +1099,7 @@ cc_generic_knot_handler(SPCanvasItem *, GdkEvent *event, SPKnot *knot) static gboolean -endpt_handler(SPKnot */*knot*/, GdkEvent *event, SPConnectorContext *cc) +endpt_handler(SPKnot */*knot*/, GdkEvent *event, ConnectorTool *cc) { //g_assert( SP_IS_CONNECTOR_CONTEXT(cc) ); @@ -1144,7 +1147,7 @@ endpt_handler(SPKnot */*knot*/, GdkEvent *event, SPConnectorContext *cc) return consumed; } -static void cc_active_shape_add_knot(SPConnectorContext *cc, SPItem* item) +static void cc_active_shape_add_knot(ConnectorTool *cc, SPItem* item) { SPDesktop *desktop = cc->desktop; SPKnot *knot = sp_knot_new(desktop, 0); @@ -1168,7 +1171,7 @@ static void cc_active_shape_add_knot(SPConnectorContext *cc, SPItem* item) cc->knots[knot] = 1; } -static void cc_set_active_shape(SPConnectorContext *cc, SPItem *item) +static void cc_set_active_shape(ConnectorTool *cc, SPItem *item) { g_assert(item != NULL ); @@ -1219,7 +1222,7 @@ static void cc_set_active_shape(SPConnectorContext *cc, SPItem *item) static void -cc_set_active_conn(SPConnectorContext *cc, SPItem *item) +cc_set_active_conn(ConnectorTool *cc, SPItem *item) { g_assert( SP_IS_PATH(item) ); @@ -1323,7 +1326,7 @@ cc_set_active_conn(SPConnectorContext *cc, SPItem *item) sp_knot_show(cc->endpt_handle[1]); } -void cc_create_connection_point(SPConnectorContext* cc) +void cc_create_connection_point(ConnectorTool* cc) { if (cc->active_shape && cc->state == SP_CONNECTOR_CONTEXT_IDLE) { @@ -1419,7 +1422,7 @@ void cc_selection_set_avoid(bool const set_avoid) DocumentUndo::done(document, SP_VERB_CONTEXT_CONNECTOR, event_desc); } -void SPConnectorContext::selection_changed(Inkscape::Selection *selection) { +void ConnectorTool::selection_changed(Inkscape::Selection *selection) { SPItem *item = selection->singleItem(); if (this->active_conn == item) { @@ -1442,7 +1445,7 @@ shape_event_attr_deleted(Inkscape::XML::Node */*repr*/, Inkscape::XML::Node *chi Inkscape::XML::Node */*ref*/, gpointer data) { g_assert(data); - SPConnectorContext *cc = SP_CONNECTOR_CONTEXT(data); + ConnectorTool *cc = SP_CONNECTOR_CONTEXT(data); if (child == cc->active_shape_repr) { // The active shape has been deleted. Clear active shape. @@ -1457,7 +1460,7 @@ shape_event_attr_changed(Inkscape::XML::Node *repr, gchar const *name, bool /*is_interactive*/, gpointer data) { g_assert(data); - SPConnectorContext *cc = SP_CONNECTOR_CONTEXT(data); + ConnectorTool *cc = SP_CONNECTOR_CONTEXT(data); // Look for changes that result in onscreen movement. if (!strcmp(name, "d") || !strcmp(name, "x") || !strcmp(name, "y") || @@ -1476,6 +1479,10 @@ shape_event_attr_changed(Inkscape::XML::Node *repr, gchar const *name, } } +} +} +} + /* Local Variables: diff --git a/src/connector-context.h b/src/connector-context.h index 1c4bfc34d..b568b44fc 100644 --- a/src/connector-context.h +++ b/src/connector-context.h @@ -20,8 +20,8 @@ #include "libavoid/connector.h" #include -#define SP_CONNECTOR_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -//#define SP_IS_CONNECTOR_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_CONNECTOR_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +//#define SP_IS_CONNECTOR_CONTEXT(obj) (dynamic_cast((const ToolBase*)obj) != NULL) struct SPKnot; class SPCurve; @@ -42,10 +42,14 @@ enum { typedef std::map SPKnotList; -class SPConnectorContext : public SPEventContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class ConnectorTool : public ToolBase { public: - SPConnectorContext(); - virtual ~SPConnectorContext(); + ConnectorTool(); + virtual ~ConnectorTool(); Inkscape::Selection *selection; Geom::Point p[5]; @@ -109,10 +113,13 @@ private: }; void cc_selection_set_avoid(bool const set_ignore); -void cc_create_connection_point(SPConnectorContext* cc); -void cc_remove_connection_point(SPConnectorContext* cc); +void cc_create_connection_point(ConnectorTool* cc); +void cc_remove_connection_point(ConnectorTool* cc); bool cc_item_is_connector(SPItem *item); +} +} +} #endif /* !SEEN_CONNECTOR_CONTEXT_H */ diff --git a/src/context-fns.cpp b/src/context-fns.cpp index 81eb6fdb5..8c18c0764 100644 --- a/src/context-fns.cpp +++ b/src/context-fns.cpp @@ -217,14 +217,14 @@ Geom::Rect Inkscape::snap_rectangular_box(SPDesktop const *desktop, SPItem *item -Geom::Point Inkscape::setup_for_drag_start(SPDesktop *desktop, SPEventContext* ec, GdkEvent *ev) +Geom::Point Inkscape::setup_for_drag_start(SPDesktop *desktop, Inkscape::UI::Tools::ToolBase* ec, GdkEvent *ev) { ec->xp = static_cast(ev->button.x); ec->yp = static_cast(ev->button.y); ec->within_tolerance = true; Geom::Point const p(ev->button.x, ev->button.y); - ec->item_to_select = sp_event_context_find_item(desktop, p, ev->button.state & GDK_MOD1_MASK, TRUE); + ec->item_to_select = Inkscape::UI::Tools::sp_event_context_find_item(desktop, p, ev->button.state & GDK_MOD1_MASK, TRUE); return ec->desktop->w2d(p); } diff --git a/src/context-fns.h b/src/context-fns.h index 43a45e4c7..bd48e5fb8 100644 --- a/src/context-fns.h +++ b/src/context-fns.h @@ -16,7 +16,16 @@ class SPDesktop; class SPItem; -class SPEventContext; + +namespace Inkscape { +namespace UI { +namespace Tools { + +class ToolBase; + +} +} +} const double goldenratio = 1.61803398874989484820; // golden ratio @@ -30,7 +39,7 @@ extern bool have_viable_layer(SPDesktop *desktop, MessageContext *message); extern bool have_viable_layer(SPDesktop *desktop, MessageStack *message); Geom::Rect snap_rectangular_box(SPDesktop const *desktop, SPItem *item, Geom::Point const &pt, Geom::Point const ¢er, int state); -Geom::Point setup_for_drag_start(SPDesktop *desktop, SPEventContext* ec, GdkEvent *ev); +Geom::Point setup_for_drag_start(SPDesktop *desktop, Inkscape::UI::Tools::ToolBase* ec, GdkEvent *ev); } diff --git a/src/desktop-events.cpp b/src/desktop-events.cpp index 5cb26abc0..67c500b05 100644 --- a/src/desktop-events.cpp +++ b/src/desktop-events.cpp @@ -245,7 +245,7 @@ static gint sp_dt_ruler_event(GtkWidget *widget, GdkEvent *event, SPDesktopWidge int sp_dt_hruler_event(GtkWidget *widget, GdkEvent *event, SPDesktopWidget *dtw) { if (event->type == GDK_MOTION_NOTIFY) { - sp_event_context_snap_delay_handler(dtw->desktop->event_context, (gpointer) widget, (gpointer) dtw, (GdkEventMotion *)event, DelayedSnapEvent::GUIDE_HRULER); + sp_event_context_snap_delay_handler(dtw->desktop->event_context, (gpointer) widget, (gpointer) dtw, (GdkEventMotion *)event, Inkscape::UI::Tools::DelayedSnapEvent::GUIDE_HRULER); } return sp_dt_ruler_event(widget, event, dtw, true); } @@ -253,7 +253,7 @@ int sp_dt_hruler_event(GtkWidget *widget, GdkEvent *event, SPDesktopWidget *dtw) int sp_dt_vruler_event(GtkWidget *widget, GdkEvent *event, SPDesktopWidget *dtw) { if (event->type == GDK_MOTION_NOTIFY) { - sp_event_context_snap_delay_handler(dtw->desktop->event_context, (gpointer) widget, (gpointer) dtw, (GdkEventMotion *)event, DelayedSnapEvent::GUIDE_VRULER); + sp_event_context_snap_delay_handler(dtw->desktop->event_context, (gpointer) widget, (gpointer) dtw, (GdkEventMotion *)event, Inkscape::UI::Tools::DelayedSnapEvent::GUIDE_VRULER); } return sp_dt_ruler_event(widget, event, dtw, false); } @@ -324,7 +324,7 @@ gint sp_dt_guide_event(SPCanvasItem *item, GdkEvent *event, gpointer data) event->motion.y); Geom::Point motion_dt(desktop->w2d(motion_w)); - sp_event_context_snap_delay_handler(desktop->event_context, (gpointer) item, data, (GdkEventMotion *)event, DelayedSnapEvent::GUIDE_HANDLER); + sp_event_context_snap_delay_handler(desktop->event_context, (gpointer) item, data, (GdkEventMotion *)event, Inkscape::UI::Tools::DelayedSnapEvent::GUIDE_HANDLER); // This is for snapping while dragging existing guidelines. New guidelines, // which are dragged off the ruler, are being snapped in sp_dt_ruler_event @@ -525,7 +525,7 @@ gint sp_dt_guide_event(SPCanvasItem *item, GdkEvent *event, gpointer data) desktop->guidesMessageContext()->clear(); break; case GDK_KEY_PRESS: - switch (get_group0_keyval (&event->key)) { + switch (Inkscape::UI::Tools::get_group0_keyval (&event->key)) { case GDK_KEY_Delete: case GDK_KEY_KP_Delete: case GDK_KEY_BackSpace: @@ -558,7 +558,7 @@ gint sp_dt_guide_event(SPCanvasItem *item, GdkEvent *event, gpointer data) } break; case GDK_KEY_RELEASE: - switch (get_group0_keyval (&event->key)) { + switch (Inkscape::UI::Tools::get_group0_keyval (&event->key)) { case GDK_KEY_Shift_L: case GDK_KEY_Shift_R: GdkCursor *guide_cursor; diff --git a/src/desktop-handles.cpp b/src/desktop-handles.cpp index ebfa22c3e..bb8699d89 100644 --- a/src/desktop-handles.cpp +++ b/src/desktop-handles.cpp @@ -15,7 +15,7 @@ #include "desktop.h" #include "desktop-handles.h" -//SPEventContext * +//ToolBase * //sp_desktop_event_context (SPDesktop const * desktop) //{ // g_return_val_if_fail (desktop != NULL, NULL); diff --git a/src/desktop-handles.h b/src/desktop-handles.h index 9413f075b..70a8c8b5f 100644 --- a/src/desktop-handles.h +++ b/src/desktop-handles.h @@ -16,7 +16,17 @@ class SPDesktop; class SPDocument; -class SPEventContext; + +namespace Inkscape { +namespace UI { +namespace Tools { + +class ToolBase; + +} +} +} + class SPNamedView; struct SPCanvas; struct SPCanvasGroup; @@ -34,7 +44,7 @@ namespace Inkscape { #define SP_COORDINATES_UNDERLINE_X (1 << Geom::X) #define SP_COORDINATES_UNDERLINE_Y (1 << Geom::Y) -//SPEventContext * sp_desktop_event_context (SPDesktop const * desktop); +//ToolBase * sp_desktop_event_context (SPDesktop const * desktop); Inkscape::Selection * sp_desktop_selection (SPDesktop const * desktop); SPDocument * sp_desktop_document (SPDesktop const * desktop); SPCanvas * sp_desktop_canvas (SPDesktop const * desktop); diff --git a/src/desktop.cpp b/src/desktop.cpp index ec446e0f0..52aed1cce 100644 --- a/src/desktop.cpp +++ b/src/desktop.cpp @@ -362,7 +362,7 @@ void SPDesktop::destroy() g_signal_handlers_disconnect_by_func(G_OBJECT (drawing), (gpointer) G_CALLBACK(_arena_handler), this); // while (event_context) { -// SPEventContext *ec = event_context; +// ToolBase *ec = event_context; // event_context = ec->next; // sp_event_context_finish (ec); // g_object_unref (G_OBJECT (ec)); @@ -401,7 +401,7 @@ SPDesktop::~SPDesktop() } -SPEventContext* SPDesktop::getEventContext() const { +Inkscape::UI::Tools::ToolBase* SPDesktop::getEventContext() const { return event_context; } @@ -672,13 +672,13 @@ SPDesktop::change_document (SPDocument *theDocument) #include "tool-factory.h" void SPDesktop::set_event_context2(const std::string& toolName) { - SPEventContext* ec_old = event_context; + Inkscape::UI::Tools::ToolBase* ec_old = event_context; if (ec_old) { ec_old->deactivate(); } - SPEventContext* ec_new = ToolFactory::instance().createObject(toolName); + Inkscape::UI::Tools::ToolBase* ec_new = ToolFactory::instance().createObject(toolName); ec_new->desktop = this; ec_new->message_context = new Inkscape::MessageContext(this->messageStack()); @@ -702,13 +702,13 @@ void SPDesktop::set_event_context2(const std::string& toolName) { //void //SPDesktop::set_event_context (GType type, const gchar *config) //{ -// //SPEventContext *ec; +// //ToolBase *ec; // //while (event_context) { // //ec = event_context; // sp_event_context_deactivate (event_context); // // we have to keep event_context valid during destruction - otherwise writing // // destructors is next to impossible -// // SPEventContext *next = ec->next; +// // ToolBase *next = ec->next; // sp_event_context_finish (event_context); // g_object_unref (G_OBJECT (event_context)); // // event_context = next; @@ -733,7 +733,7 @@ void SPDesktop::set_event_context2(const std::string& toolName) { //void //SPDesktop::push_event_context (GType type, const gchar *config, unsigned int key) //{ -// SPEventContext *ref, *ec; +// ToolBase *ref, *ec; // // if (event_context && event_context->key == key) return; // ref = event_context; @@ -976,7 +976,7 @@ void SPDesktop::zoom_quick(bool enable) // TODO This needs to migrate into the node tool, but currently the design // of this method is sufficiently wrong to prevent this. if (!zoomed && INK_IS_NODE_TOOL(event_context)) { - InkNodeTool *nt = static_cast(event_context); + Inkscape::UI::Tools::NodeTool *nt = static_cast(event_context); if (!nt->_selected_nodes->empty()) { Geom::Rect nodes = *nt->_selected_nodes->bounds(); double area = nodes.area(); @@ -1945,7 +1945,7 @@ SPDesktop::show_dialogs() // void // SPDesktop::pop_event_context (unsigned int key) // { -// SPEventContext *ec = NULL; +// ToolBase *ec = NULL; // // if (event_context && event_context->key == key) { // g_return_if_fail (event_context); @@ -1957,7 +1957,7 @@ SPDesktop::show_dialogs() // _event_context_changed_signal.emit (this, ec); // } // -// SPEventContext *ref = event_context; +// ToolBase *ref = event_context; // while (ref && ref->next && ref->next->key != key) // ref = ref->next; // diff --git a/src/desktop.h b/src/desktop.h index 938c2153a..faaa7e3a5 100644 --- a/src/desktop.h +++ b/src/desktop.h @@ -41,7 +41,17 @@ class SPCSSAttr; struct SPCanvas; struct SPCanvasItem; struct SPCanvasGroup; -class SPEventContext; + +namespace Inkscape { +namespace UI { +namespace Tools { + +class ToolBase; + +} +} +} + class SPItem; class SPNamedView; class SPObject; @@ -110,7 +120,7 @@ namespace Inkscape { * data, like grid and guideline placement, snapping options and so on. * * Associated with each SPDesktop are the two most important editing - * related objects - SPSelection and SPEventContext. + * related objects - SPSelection and ToolBase. * * Sodipodi keeps track of the active desktop and invokes notification * signals whenever it changes. UI elements can use these to update their @@ -128,14 +138,14 @@ public: Inkscape::LayerModel *layers; /// current selection; will never generally be NULL Inkscape::Selection *selection; - SPEventContext *event_context; + Inkscape::UI::Tools::ToolBase *event_context; Inkscape::LayerManager *layer_manager; Inkscape::EventLog *event_log; DocumentInterface *dbus_document_interface; Inkscape::Display::TemporaryItemList *temporary_item_list; Inkscape::Display::SnapIndicator *snapindicator; - SPEventContext* getEventContext() const; + Inkscape::UI::Tools::ToolBase* getEventContext() const; Inkscape::Selection* getSelection() const; SPDocument* getDocument() const; SPCanvas* getCanvas() const; @@ -207,7 +217,7 @@ public: return _document_replaced_signal.connect (slot); } - sigc::connection connectEventContextChanged (const sigc::slot & slot) + sigc::connection connectEventContextChanged (const sigc::slot & slot) { return _event_context_changed_signal.connect (slot); } @@ -425,7 +435,7 @@ private: sigc::signal _document_replaced_signal; sigc::signal _activate_signal; sigc::signal _deactivate_signal; - sigc::signal _event_context_changed_signal; + sigc::signal _event_context_changed_signal; sigc::signal _tool_subselection_changed; sigc::connection _activate_connection; diff --git a/src/dialogs/dialog-events.cpp b/src/dialogs/dialog-events.cpp index 4fbf26f94..ac4ed58f9 100644 --- a/src/dialogs/dialog-events.cpp +++ b/src/dialogs/dialog-events.cpp @@ -107,7 +107,7 @@ sp_dialog_event_handler (GtkWindow *win, GdkEvent *event, gpointer data) case GDK_KEY_PRESS: - switch (get_group0_keyval (&event->key)) { + switch (Inkscape::UI::Tools::get_group0_keyval (&event->key)) { case GDK_KEY_Escape: sp_dialog_defocus (win); ret = TRUE; diff --git a/src/doxygen-main.cpp b/src/doxygen-main.cpp index e581b8708..6a5723bfd 100644 --- a/src/doxygen-main.cpp +++ b/src/doxygen-main.cpp @@ -258,27 +258,27 @@ namespace XML {} * * \section Event Context Class Hierarchy * - *- SPEventContext[\ref event-context.cpp, \ref event-context.h] - * - SPArcContext [\ref arc-context.cpp, \ref arc-context.h] + *- ToolBase[\ref event-context.cpp, \ref event-context.h] + * - ArcTool [\ref arc-context.cpp, \ref arc-context.h] * - SPDrawContext [\ref draw-context.cpp, \ref draw-context.h] - * - SPPenContext [\ref pen-context.cpp, \ref pen-context.h] - * - SPPencilContext [\ref pencil-context.cpp, \ref pencil-context.h] - * - SPConnectorContext [\ref connector-context.cpp, \ref connector-context.h, \ref sp-conn-end.cpp, \ref sp-conn-end-pair.cpp] - * - SPGradientContext [\ref gradient-context.cpp, \ref gradient-context.h, \ref gradient-drag.cpp, \ref gradient-toolbar.cpp] - * - SPRectContext [\ref rect-context.cpp, \ref rect-context.h] - * - SPSelectContext [\ref select-context.cpp, \ref select-context.h] - * - SPSpiralContext [\ref spiral-context.cpp, \ref spiral-context.h] - * - SPStarContext [\ref star-context.cpp, \ref star-context.h] + * - PenTool [\ref pen-context.cpp, \ref pen-context.h] + * - PencilTool [\ref pencil-context.cpp, \ref pencil-context.h] + * - ConnectorTool [\ref connector-context.cpp, \ref connector-context.h, \ref sp-conn-end.cpp, \ref sp-conn-end-pair.cpp] + * - GradientTool [\ref gradient-context.cpp, \ref gradient-context.h, \ref gradient-drag.cpp, \ref gradient-toolbar.cpp] + * - RectTool [\ref rect-context.cpp, \ref rect-context.h] + * - SelectTool [\ref select-context.cpp, \ref select-context.h] + * - SpiralTool [\ref spiral-context.cpp, \ref spiral-context.h] + * - StarTool [\ref star-context.cpp, \ref star-context.h] * - FloodContext [\ref flood-context.cpp, \ref flood-context.h] - * - Box3DContext [\ref box3d-context.cpp, \ref box3d-context.h] + * - Box3dTool [\ref box3d-context.cpp, \ref box3d-context.h] * * SPNodeContext [\ref node-context.cpp, \ref node-context.h] * - * SPZoomContext [\ref zoom-context.cpp, \ref zoom-context.h] + * ZoomTool [\ref zoom-context.cpp, \ref zoom-context.h] * - * SPDynaDrawContext [\ref dyna-draw-context.cpp, \ref dyna-draw-context.h] + * CalligraphicTool [\ref dyna-draw-context.cpp, \ref dyna-draw-context.h] * - * SPDropperContext [\ref dropper-context.cpp, \ref dropper-context.h] + * DropperTool [\ref dropper-context.cpp, \ref dropper-context.h] */ /** \page UI User Interface Classes and Files * diff --git a/src/draw-anchor.cpp b/src/draw-anchor.cpp index 2133d5de6..7cd6daeb5 100644 --- a/src/draw-anchor.cpp +++ b/src/draw-anchor.cpp @@ -30,7 +30,7 @@ using Inkscape::ControlManager; /** * Creates an anchor object and initializes it. */ -SPDrawAnchor *sp_draw_anchor_new(SPDrawContext *dc, SPCurve *curve, gboolean start, Geom::Point delta) +SPDrawAnchor *sp_draw_anchor_new(Inkscape::UI::Tools::SPDrawContext *dc, SPCurve *curve, gboolean start, Geom::Point delta) { if (SP_IS_LPETOOL_CONTEXT(dc)) { // suppress all kinds of anchors in LPEToolContext diff --git a/src/draw-anchor.h b/src/draw-anchor.h index 1ca2b9888..2312c6c32 100644 --- a/src/draw-anchor.h +++ b/src/draw-anchor.h @@ -8,14 +8,23 @@ #include #include <2geom/point.h> +namespace Inkscape { +namespace UI { +namespace Tools { + class SPDrawContext; + +} +} +} + class SPCurve; struct SPCanvasItem; /// The drawing anchor. /// \todo Make this a regular knot, this will allow to set statusbar tips. struct SPDrawAnchor { - SPDrawContext *dc; + Inkscape::UI::Tools::SPDrawContext *dc; SPCurve *curve; guint start : 1; guint active : 1; @@ -24,7 +33,7 @@ struct SPDrawAnchor { }; -SPDrawAnchor *sp_draw_anchor_new(SPDrawContext *dc, SPCurve *curve, gboolean start, +SPDrawAnchor *sp_draw_anchor_new(Inkscape::UI::Tools::SPDrawContext *dc, SPCurve *curve, gboolean start, Geom::Point delta); SPDrawAnchor *sp_draw_anchor_destroy(SPDrawAnchor *anchor); SPDrawAnchor *sp_draw_anchor_test(SPDrawAnchor *anchor, Geom::Point w, gboolean activate); diff --git a/src/draw-context.cpp b/src/draw-context.cpp index 365da38ac..8fd52b83e 100644 --- a/src/draw-context.cpp +++ b/src/draw-context.cpp @@ -50,6 +50,10 @@ using Inkscape::DocumentUndo; +namespace Inkscape { +namespace UI { +namespace Tools { + static void spdc_selection_changed(Inkscape::Selection *sel, SPDrawContext *dc); static void spdc_selection_modified(Inkscape::Selection *sel, guint flags, SPDrawContext *dc); @@ -66,7 +70,7 @@ static void spdc_flush_white(SPDrawContext *dc, SPCurve *gc); static void spdc_reset_white(SPDrawContext *dc); static void spdc_free_colors(SPDrawContext *dc); -SPDrawContext::SPDrawContext() : SPEventContext() { +SPDrawContext::SPDrawContext() : ToolBase() { this->selection = 0; this->grab = 0; this->anchor_statusbar = false; @@ -113,7 +117,7 @@ SPDrawContext::~SPDrawContext() { } void SPDrawContext::setup() { - SPEventContext::setup(); + ToolBase::setup(); this->selection = sp_desktop_selection(desktop); @@ -192,7 +196,7 @@ bool SPDrawContext::root_handler(GdkEvent* event) { } if (!ret) { - ret = SPEventContext::root_handler(event); + ret = ToolBase::root_handler(event); } return ret; @@ -398,7 +402,7 @@ static void spdc_attach_selection(SPDrawContext *dc, Inkscape::Selection */*sel* } -void spdc_endpoint_snap_rotation(SPEventContext const *const ec, Geom::Point &p, Geom::Point const &o, +void spdc_endpoint_snap_rotation(ToolBase const *const ec, Geom::Point &p, Geom::Point const &o, guint state) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -427,7 +431,7 @@ void spdc_endpoint_snap_rotation(SPEventContext const *const ec, Geom::Point &p, } -void spdc_endpoint_snap_free(SPEventContext const * const ec, Geom::Point& p, boost::optional &start_of_line, guint const /*state*/) +void spdc_endpoint_snap_free(ToolBase const * const ec, Geom::Point& p, boost::optional &start_of_line, guint const /*state*/) { SPDesktop *dt = SP_EVENT_CONTEXT_DESKTOP(ec); SnapManager &m = dt->namedview->snap_manager; @@ -702,7 +706,7 @@ static void spdc_free_colors(SPDrawContext *dc) } } -void spdc_create_single_dot(SPEventContext *ec, Geom::Point const &pt, char const *tool, guint event_state) { +void spdc_create_single_dot(ToolBase *ec, Geom::Point const &pt, char const *tool, guint event_state) { g_return_if_fail(!strcmp(tool, "/tools/freehand/pen") || !strcmp(tool, "/tools/freehand/pencil")); Glib::ustring tool_path = tool; @@ -765,6 +769,10 @@ void spdc_create_single_dot(SPEventContext *ec, Geom::Point const &pt, char cons DocumentUndo::done(sp_desktop_document(desktop), SP_VERB_NONE, _("Create single dot")); } +} +} +} + /* Local Variables: mode:c++ diff --git a/src/draw-context.h b/src/draw-context.h index 534c706d6..691080b72 100644 --- a/src/draw-context.h +++ b/src/draw-context.h @@ -22,8 +22,8 @@ /* Freehand context */ -#define SP_DRAW_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_DRAW_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_DRAW_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define SP_IS_DRAW_CONTEXT(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj) != NULL) struct SPDrawAnchor; namespace Inkscape @@ -31,7 +31,11 @@ namespace Inkscape class Selection; } -class SPDrawContext : public SPEventContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class SPDrawContext : public ToolBase { public: SPDrawContext(); virtual ~SPDrawContext(); @@ -107,9 +111,9 @@ void spdc_concat_colors_and_flush(SPDrawContext *dc, gboolean forceclosed); * @param o origin point. * @param state keyboard state to check if ctrl or shift was pressed. */ -void spdc_endpoint_snap_rotation(SPEventContext const *const ec, Geom::Point &p, Geom::Point const &o, guint state); +void spdc_endpoint_snap_rotation(ToolBase const *const ec, Geom::Point &p, Geom::Point const &o, guint state); -void spdc_endpoint_snap_free(SPEventContext const *ec, Geom::Point &p, boost::optional &start_of_line, guint state); +void spdc_endpoint_snap_free(ToolBase const *ec, Geom::Point &p, boost::optional &start_of_line, guint state); /** * If we have an item and a waiting LPE, apply the effect to the item @@ -120,7 +124,11 @@ void spdc_check_for_and_apply_waiting_LPE(SPDrawContext *dc, SPItem *item); /** * Create a single dot represented by a circle. */ -void spdc_create_single_dot(SPEventContext *ec, Geom::Point const &pt, char const *tool, guint event_state); +void spdc_create_single_dot(ToolBase *ec, Geom::Point const &pt, char const *tool, guint event_state); + +} +} +} #endif // SEEN_SP_DRAW_CONTEXT_H diff --git a/src/dropper-context.cpp b/src/dropper-context.cpp index dcb1ab66c..cf2f6b6c9 100644 --- a/src/dropper-context.cpp +++ b/src/dropper-context.cpp @@ -54,21 +54,25 @@ static GdkCursor *cursor_dropper_stroke = NULL; #include "tool-factory.h" +namespace Inkscape { +namespace UI { +namespace Tools { + namespace { - SPEventContext* createDropperContext() { - return new SPDropperContext(); + ToolBase* createDropperContext() { + return new DropperTool(); } bool dropperContextRegistered = ToolFactory::instance().registerObject("/tools/dropper", createDropperContext); } -const std::string& SPDropperContext::getPrefsPath() { - return SPDropperContext::prefsPath; +const std::string& DropperTool::getPrefsPath() { + return DropperTool::prefsPath; } -const std::string SPDropperContext::prefsPath = "/tools/dropper"; +const std::string DropperTool::prefsPath = "/tools/dropper"; -SPDropperContext::SPDropperContext() : SPEventContext() { +DropperTool::DropperTool() : ToolBase() { this->R = 0; this->G = 0; this->B = 0; @@ -87,13 +91,13 @@ SPDropperContext::SPDropperContext() : SPEventContext() { cursor_dropper_stroke = sp_cursor_new_from_xpm(cursor_dropper_s_xpm , 7, 7); } -SPDropperContext::~SPDropperContext() { +DropperTool::~DropperTool() { } -void SPDropperContext::setup() { - SPEventContext::setup(); +void DropperTool::setup() { + ToolBase::setup(); - /* TODO: have a look at SPDynaDrawContext::setup where the same is done.. generalize? */ + /* TODO: have a look at CalligraphicTool::setup where the same is done.. generalize? */ Geom::PathVector path; Geom::Circle(0, 0, 1).getPath(path); @@ -118,7 +122,7 @@ void SPDropperContext::setup() { } } -void SPDropperContext::finish() { +void DropperTool::finish() { this->enableGrDrag(false); if (this->grabbed) { @@ -153,7 +157,7 @@ void SPDropperContext::finish() { /** * Returns the current dropper context color. */ -guint32 SPDropperContext::get_color() { +guint32 DropperTool::get_color() { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); int pick = prefs->getInt("/tools/dropper/pick", SP_DROPPER_PICK_VISIBLE); @@ -165,7 +169,7 @@ guint32 SPDropperContext::get_color() { (pick == SP_DROPPER_PICK_ACTUAL && setalpha) ? this->alpha : 1.0); } -bool SPDropperContext::root_handler(GdkEvent* event) { +bool DropperTool::root_handler(GdkEvent* event) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); int ret = FALSE; @@ -387,12 +391,16 @@ bool SPDropperContext::root_handler(GdkEvent* event) { } if (!ret) { - ret = SPEventContext::root_handler(event); + ret = ToolBase::root_handler(event); } return ret; } +} +} +} + /* Local Variables: diff --git a/src/dropper-context.h b/src/dropper-context.h index 6e1015644..a56720693 100644 --- a/src/dropper-context.h +++ b/src/dropper-context.h @@ -14,18 +14,22 @@ #include "event-context.h" -#define SP_DROPPER_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_DROPPER_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_DROPPER_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define SP_IS_DROPPER_CONTEXT(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj) != NULL) enum { SP_DROPPER_PICK_VISIBLE, SP_DROPPER_PICK_ACTUAL }; -class SPDropperContext : public SPEventContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class DropperTool : public ToolBase { public: - SPDropperContext(); - virtual ~SPDropperContext(); + DropperTool(); + virtual ~DropperTool(); static const std::string prefsPath; @@ -51,6 +55,10 @@ private: Geom::Point centre; }; +} +} +} + #endif /* diff --git a/src/dyna-draw-context.cpp b/src/dyna-draw-context.cpp index f8980e218..8fc777712 100644 --- a/src/dyna-draw-context.cpp +++ b/src/dyna-draw-context.cpp @@ -82,27 +82,30 @@ using Inkscape::DocumentUndo; #define DYNA_MIN_WIDTH 1.0e-6 -static void add_cap(SPCurve *curve, Geom::Point const &from, Geom::Point const &to, double rounding); +#include "tool-factory.h" +namespace Inkscape { +namespace UI { +namespace Tools { -#include "tool-factory.h" +static void add_cap(SPCurve *curve, Geom::Point const &from, Geom::Point const &to, double rounding); namespace { - SPEventContext* createCalligraphicContext() { - return new SPDynaDrawContext(); + ToolBase* createCalligraphicContext() { + return new CalligraphicTool(); } bool calligraphicContextRegistered = ToolFactory::instance().registerObject("/tools/calligraphic", createCalligraphicContext); } -const std::string& SPDynaDrawContext::getPrefsPath() { - return SPDynaDrawContext::prefsPath; +const std::string& CalligraphicTool::getPrefsPath() { + return CalligraphicTool::prefsPath; } -const std::string SPDynaDrawContext::prefsPath = "/tools/calligraphic"; +const std::string CalligraphicTool::prefsPath = "/tools/calligraphic"; -SPDynaDrawContext::SPDynaDrawContext() : SPCommonContext() { +CalligraphicTool::CalligraphicTool() : SPCommonContext() { this->cursor_shape = cursor_calligraphy_xpm; this->hot_x = 4; this->hot_y = 4; @@ -128,14 +131,14 @@ SPDynaDrawContext::SPDynaDrawContext() : SPCommonContext() { this->just_started_drawing = false; } -SPDynaDrawContext::~SPDynaDrawContext() { +CalligraphicTool::~CalligraphicTool() { if (this->hatch_area) { sp_canvas_item_destroy(this->hatch_area); this->hatch_area = NULL; } } -void SPDynaDrawContext::setup() { +void CalligraphicTool::setup() { SPCommonContext::setup(); this->accumulated = new SPCurve(); @@ -152,7 +155,7 @@ void SPDynaDrawContext::setup() { g_signal_connect(G_OBJECT(this->currentshape), "event", G_CALLBACK(sp_desktop_root_handler), this->desktop); { - /* TODO: have a look at SPDropperContext::setup where the same is done.. generalize? */ + /* TODO: have a look at DropperTool::setup where the same is done.. generalize? */ Geom::PathVector path; Geom::Circle(0, 0, 1).getPath(path); @@ -189,7 +192,7 @@ void SPDynaDrawContext::setup() { } } -void SPDynaDrawContext::set(const Inkscape::Preferences::Entry& val) { +void CalligraphicTool::set(const Inkscape::Preferences::Entry& val) { Glib::ustring path = val.getEntryName(); if (path == "tracebackground") { @@ -211,7 +214,7 @@ flerp(double f0, double f1, double p) } ///* Get normalized point */ -//Geom::Point SPDynaDrawContext::getNormalizedPoint(Geom::Point v) const { +//Geom::Point CalligraphicTool::getNormalizedPoint(Geom::Point v) const { // Geom::Rect drect = desktop->get_display_area(); // // double const max = MAX ( drect.dimensions()[Geom::X], drect.dimensions()[Geom::Y] ); @@ -220,7 +223,7 @@ flerp(double f0, double f1, double p) //} // ///* Get view point */ -//Geom::Point SPDynaDrawContext::getViewPoint(Geom::Point n) const { +//Geom::Point CalligraphicTool::getViewPoint(Geom::Point n) const { // Geom::Rect drect = desktop->get_display_area(); // // double const max = MAX ( drect.dimensions()[Geom::X], drect.dimensions()[Geom::Y] ); @@ -228,7 +231,7 @@ flerp(double f0, double f1, double p) // return Geom::Point(n[Geom::X] * max + drect.min()[Geom::X], n[Geom::Y] * max + drect.min()[Geom::Y]); //} -void SPDynaDrawContext::reset(Geom::Point p) { +void CalligraphicTool::reset(Geom::Point p) { this->last = this->cur = this->getNormalizedPoint(p); this->vel = Geom::Point(0,0); @@ -238,7 +241,7 @@ void SPDynaDrawContext::reset(Geom::Point p) { this->del = Geom::Point(0,0); } -void SPDynaDrawContext::extinput(GdkEvent *event) { +void CalligraphicTool::extinput(GdkEvent *event) { if (gdk_event_get_axis (event, GDK_AXIS_PRESSURE, &this->pressure)) { this->pressure = CLAMP (this->pressure, DDC_MIN_PRESSURE, DDC_MAX_PRESSURE); } else { @@ -259,7 +262,7 @@ void SPDynaDrawContext::extinput(GdkEvent *event) { } -bool SPDynaDrawContext::apply(Geom::Point p) { +bool CalligraphicTool::apply(Geom::Point p) { Geom::Point n = this->getNormalizedPoint(p); /* Calculate mass and drag */ @@ -356,7 +359,7 @@ bool SPDynaDrawContext::apply(Geom::Point p) { return TRUE; } -void SPDynaDrawContext::brush() { +void CalligraphicTool::brush() { g_assert( this->npoints >= 0 && this->npoints < SAMPLING_SIZE ); // How much velocity thins strokestyle @@ -436,7 +439,7 @@ sp_ddc_update_toolbox (SPDesktop *desktop, const gchar *id, double value) desktop->setToolboxAdjustmentValue (id, value); } -void SPDynaDrawContext::cancel() { +void CalligraphicTool::cancel() { this->dragging = false; this->is_drawing = false; @@ -457,7 +460,7 @@ void SPDynaDrawContext::cancel() { } } -bool SPDynaDrawContext::root_handler(GdkEvent* event) { +bool CalligraphicTool::root_handler(GdkEvent* event) { gint ret = FALSE; switch (event->type) { @@ -907,7 +910,7 @@ bool SPDynaDrawContext::root_handler(GdkEvent* event) { } -void SPDynaDrawContext::clear_current() { +void CalligraphicTool::clear_current() { /* reset bpath */ sp_canvas_bpath_set_bpath(SP_CANVAS_BPATH(this->currentshape), NULL); /* reset curve */ @@ -918,7 +921,7 @@ void SPDynaDrawContext::clear_current() { this->npoints = 0; } -void SPDynaDrawContext::set_to_accumulated(bool unionize, bool subtract) { +void CalligraphicTool::set_to_accumulated(bool unionize, bool subtract) { if (!this->accumulated->is_empty()) { if (!this->repr) { /* Create object */ @@ -995,7 +998,7 @@ add_cap(SPCurve *curve, } } -bool SPDynaDrawContext::accumulate() { +bool CalligraphicTool::accumulate() { if ( this->cal1->is_empty() || this->cal2->is_empty() || @@ -1050,7 +1053,7 @@ static double square(double const x) return x * x; } -void SPDynaDrawContext::fit_and_split(bool release) { +void CalligraphicTool::fit_and_split(bool release) { double const tolerance_sq = square( desktop->w2d().descrim() * TOLERANCE_CALLIGRAPHIC ); #ifdef DYNA_DRAW_VERBOSE @@ -1175,7 +1178,7 @@ void SPDynaDrawContext::fit_and_split(bool release) { } } -void SPDynaDrawContext::draw_temporary_box() { +void CalligraphicTool::draw_temporary_box() { this->currentcurve->reset(); this->currentcurve->moveto(this->point2[this->npoints-1]); @@ -1196,6 +1199,11 @@ void SPDynaDrawContext::draw_temporary_box() { sp_canvas_bpath_set_bpath(SP_CANVAS_BPATH(this->currentshape), this->currentcurve); } +} +} +} + + /* Local Variables: mode:c++ diff --git a/src/dyna-draw-context.h b/src/dyna-draw-context.h index 36a429a8d..5793b1142 100644 --- a/src/dyna-draw-context.h +++ b/src/dyna-draw-context.h @@ -29,10 +29,14 @@ #define DDC_MAX_TILT 1.0 #define DDC_DEFAULT_TILT 0.0 -class SPDynaDrawContext : public SPCommonContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class CalligraphicTool : public SPCommonContext { public: - SPDynaDrawContext(); - virtual ~SPDynaDrawContext(); + CalligraphicTool(); + virtual ~CalligraphicTool(); static const std::string prefsPath; @@ -72,6 +76,10 @@ private: void reset(Geom::Point p); }; +} +} +} + #endif // SP_DYNA_DRAW_CONTEXT_H_SEEN /* diff --git a/src/eraser-context.cpp b/src/eraser-context.cpp index b2df86434..6445ac3d5 100644 --- a/src/eraser-context.cpp +++ b/src/eraser-context.cpp @@ -85,30 +85,34 @@ using Inkscape::DocumentUndo; #include "tool-factory.h" +namespace Inkscape { +namespace UI { +namespace Tools { + namespace { - SPEventContext* createEraserContext() { - return new SPEraserContext(); + ToolBase* createEraserContext() { + return new EraserTool(); } bool eraserContextRegistered = ToolFactory::instance().registerObject("/tools/eraser", createEraserContext); } -const std::string& SPEraserContext::getPrefsPath() { - return SPEraserContext::prefsPath; +const std::string& EraserTool::getPrefsPath() { + return EraserTool::prefsPath; } -const std::string SPEraserContext::prefsPath = "/tools/eraser"; +const std::string EraserTool::prefsPath = "/tools/eraser"; -SPEraserContext::SPEraserContext() : SPCommonContext() { +EraserTool::EraserTool() : SPCommonContext() { this->cursor_shape = cursor_eraser_xpm; this->hot_x = 4; this->hot_y = 4; } -SPEraserContext::~SPEraserContext() { +EraserTool::~EraserTool() { } -void SPEraserContext::setup() { +void EraserTool::setup() { SPCommonContext::setup(); this->accumulated = new SPCurve(); @@ -167,7 +171,7 @@ flerp(double f0, double f1, double p) return f0 + ( f1 - f0 ) * p; } -void SPEraserContext::reset(Geom::Point p) { +void EraserTool::reset(Geom::Point p) { this->last = this->cur = getNormalizedPoint(p); this->vel = Geom::Point(0,0); this->vel_max = 0; @@ -176,7 +180,7 @@ void SPEraserContext::reset(Geom::Point p) { this->del = Geom::Point(0,0); } -void SPEraserContext::extinput(GdkEvent *event) { +void EraserTool::extinput(GdkEvent *event) { if (gdk_event_get_axis (event, GDK_AXIS_PRESSURE, &this->pressure)) this->pressure = CLAMP (this->pressure, ERC_MIN_PRESSURE, ERC_MAX_PRESSURE); else @@ -194,7 +198,7 @@ void SPEraserContext::extinput(GdkEvent *event) { } -bool SPEraserContext::apply(Geom::Point p) { +bool EraserTool::apply(Geom::Point p) { Geom::Point n = getNormalizedPoint(p); /* Calculate mass and drag */ @@ -291,7 +295,7 @@ bool SPEraserContext::apply(Geom::Point p) { return TRUE; } -void SPEraserContext::brush() { +void EraserTool::brush() { g_assert( this->npoints >= 0 && this->npoints < SAMPLING_SIZE ); // How much velocity thins strokestyle @@ -357,7 +361,7 @@ sp_erc_update_toolbox (SPDesktop *desktop, const gchar *id, double value) desktop->setToolboxAdjustmentValue (id, value); } -void SPEraserContext::cancel() { +void EraserTool::cancel() { SPDesktop *desktop = SP_EVENT_CONTEXT(this)->desktop; this->dragging = FALSE; this->is_drawing = false; @@ -375,7 +379,7 @@ void SPEraserContext::cancel() { } } -bool SPEraserContext::root_handler(GdkEvent* event) { +bool EraserTool::root_handler(GdkEvent* event) { gint ret = FALSE; switch (event->type) { @@ -620,7 +624,7 @@ bool SPEraserContext::root_handler(GdkEvent* event) { return ret; } -void SPEraserContext::clear_current() { +void EraserTool::clear_current() { // reset bpath sp_canvas_bpath_set_bpath(SP_CANVAS_BPATH(this->currentshape), NULL); @@ -633,7 +637,7 @@ void SPEraserContext::clear_current() { this->npoints = 0; } -void SPEraserContext::set_to_accumulated() { +void EraserTool::set_to_accumulated() { bool workDone = false; if (!this->accumulated->is_empty()) { @@ -801,7 +805,7 @@ add_cap(SPCurve *curve, } } -void SPEraserContext::accumulate() { +void EraserTool::accumulate() { if ( !this->cal1->is_empty() && !this->cal2->is_empty() ) { this->accumulated->reset(); /* Is this required ?? */ SPCurve *rev_cal2 = this->cal2->create_reverse(); @@ -843,7 +847,7 @@ static double square(double const x) return x * x; } -void SPEraserContext::fit_and_split(bool release) { +void EraserTool::fit_and_split(bool release) { double const tolerance_sq = square( desktop->w2d().descrim() * TOLERANCE_ERASER ); #ifdef ERASER_VERBOSE @@ -978,7 +982,7 @@ void SPEraserContext::fit_and_split(bool release) { } } -void SPEraserContext::draw_temporary_box() { +void EraserTool::draw_temporary_box() { this->currentcurve->reset(); this->currentcurve->moveto(this->point1[this->npoints-1]); @@ -999,6 +1003,10 @@ void SPEraserContext::draw_temporary_box() { sp_canvas_bpath_set_bpath(SP_CANVAS_BPATH(this->currentshape), this->currentcurve); } +} +} +} + /* Local Variables: mode:c++ diff --git a/src/eraser-context.h b/src/eraser-context.h index 7ff1cf712..a3ce4a241 100644 --- a/src/eraser-context.h +++ b/src/eraser-context.h @@ -29,10 +29,14 @@ #define ERC_MAX_TILT 1.0 #define ERC_DEFAULT_TILT 0.0 -class SPEraserContext : public SPCommonContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class EraserTool : public SPCommonContext { public: - SPEraserContext(); - virtual ~SPEraserContext(); + EraserTool(); + virtual ~EraserTool(); static const std::string prefsPath; @@ -54,6 +58,10 @@ private: void draw_temporary_box(); }; +} +} +} + #endif // SP_ERASER_CONTEXT_H_SEEN /* diff --git a/src/event-context.cpp b/src/event-context.cpp index 398d3b0e3..70502ca64 100644 --- a/src/event-context.cpp +++ b/src/event-context.cpp @@ -58,8 +58,6 @@ #include "sp-guide.h" #include "color.h" -static void set_event_location(SPDesktop * desktop, GdkEvent * event); - // globals for temporary switching to selector by space static bool selector_toggled = FALSE; static int switch_selector_to = 0; @@ -77,20 +75,28 @@ static guint32 scroll_event_time = 0; static gdouble scroll_multiply = 1; static guint scroll_keyval = 0; -void SPEventContext::set(const Inkscape::Preferences::Entry& /*val*/) { + +namespace Inkscape { +namespace UI { +namespace Tools { + +static void set_event_location(SPDesktop * desktop, GdkEvent * event); + + +void ToolBase::set(const Inkscape::Preferences::Entry& /*val*/) { } -void SPEventContext::activate() { +void ToolBase::activate() { } -void SPEventContext::deactivate() { +void ToolBase::deactivate() { } -void SPEventContext::finish() { +void ToolBase::finish() { this->enableSelectionCue(false); } -SPEventContext::SPEventContext() { +ToolBase::ToolBase() { this->hot_y = 0; this->xp = 0; this->cursor_shape = 0; @@ -114,7 +120,7 @@ SPEventContext::SPEventContext() { //this->tool_url = NULL; } -SPEventContext::~SPEventContext() { +ToolBase::~ToolBase() { if (this->message_context) { delete this->message_context; } @@ -145,7 +151,7 @@ SPEventContext::~SPEventContext() { /** * Set the cursor to a standard GDK cursor */ -static void sp_event_context_set_cursor(SPEventContext *event_context, GdkCursorType cursor_type) { +static void sp_event_context_set_cursor(ToolBase *event_context, GdkCursorType cursor_type) { GtkWidget *w = GTK_WIDGET(sp_desktop_canvas(event_context->desktop)); GdkDisplay *display = gdk_display_get_default(); @@ -164,9 +170,9 @@ static void sp_event_context_set_cursor(SPEventContext *event_context, GdkCursor } /** - * Recreates and draws cursor on desktop related to SPEventContext. + * Recreates and draws cursor on desktop related to ToolBase. */ -void SPEventContext::sp_event_context_update_cursor() { +void ToolBase::sp_event_context_update_cursor() { GtkWidget *w = GTK_WIDGET(sp_desktop_canvas(this->desktop)); if (gtk_widget_get_window (w)) { @@ -223,14 +229,14 @@ void SPEventContext::sp_event_context_update_cursor() { } /** - * Callback that gets called on initialization of SPEventContext object. + * Callback that gets called on initialization of ToolBase object. * Redraws mouse cursor, at the moment. */ /** * When you override it, call this method first. */ -void SPEventContext::setup() { +void ToolBase::setup() { this->pref_observer = new ToolPrefObserver(this->getPrefsPath(), this); Inkscape::Preferences::get()->addObserver(*(this->pref_observer)); @@ -356,12 +362,12 @@ static gdouble accelerate_scroll(GdkEvent *event, gdouble acceleration, * Main event dispatch, gets called from Gdk. */ //static gint sp_event_context_private_root_handler( -// SPEventContext *event_context, GdkEvent *event) { +// ToolBase *event_context, GdkEvent *event) { // // return event_context->ceventcontext->root_handler(event); //} -bool SPEventContext::root_handler(GdkEvent* event) { +bool ToolBase::root_handler(GdkEvent* event) { static Geom::Point button_w; static unsigned int panning = 0; static unsigned int panning_cursor = 0; @@ -866,13 +872,13 @@ bool SPEventContext::root_handler(GdkEvent* event) { * Only reacts to right mouse button at the moment. * \todo Fixme: do context sensitive popup menu on items. */ -//gint sp_event_context_private_item_handler(SPEventContext *ec, SPItem *item, +//gint sp_event_context_private_item_handler(ToolBase *ec, SPItem *item, // GdkEvent *event) { // // return ec->ceventcontext->item_handler(item, event); //} -bool SPEventContext::item_handler(SPItem* item, GdkEvent* event) { +bool ToolBase::item_handler(SPItem* item, GdkEvent* event) { int ret = FALSE; switch (event->type) { @@ -893,7 +899,7 @@ bool SPEventContext::item_handler(SPItem* item, GdkEvent* event) { /** * Returns true if we're hovering above a knot (needed because we don't want to pre-snap in that case). */ -bool sp_event_context_knot_mouseover(SPEventContext *ec) +bool sp_event_context_knot_mouseover(ToolBase *ec) { if (ec->shape_editor) { return ec->shape_editor->knot_mouseover(); @@ -903,16 +909,16 @@ bool sp_event_context_knot_mouseover(SPEventContext *ec) } /** - * Creates new SPEventContext object and calls its virtual setup() function. + * Creates new ToolBase object and calls its virtual setup() function. * @todo This is bogus. pref_path should be a private property of the inheriting objects. */ -//SPEventContext * +//ToolBase * //sp_event_context_new(GType type, SPDesktop *desktop, gchar const *pref_path, // unsigned int key) { // g_return_val_if_fail(g_type_is_a(type, SP_TYPE_EVENT_CONTEXT), NULL); // g_return_val_if_fail(desktop != NULL, NULL); // -// SPEventContext * const ec = static_cast(g_object_new(type, NULL)); +// ToolBase * const ec = static_cast(g_object_new(type, NULL)); // // ec->desktop = desktop; // ec->_message_context @@ -935,9 +941,9 @@ bool sp_event_context_knot_mouseover(SPEventContext *ec) //} /** - * Finishes SPEventContext. + * Finishes ToolBase. */ -//void sp_event_context_finish(SPEventContext *ec) { +//void sp_event_context_finish(ToolBase *ec) { // g_return_if_fail(ec != NULL); // g_return_if_fail(SP_IS_EVENT_CONTEXT(ec)); // @@ -955,9 +961,9 @@ bool sp_event_context_knot_mouseover(SPEventContext *ec) //-------------------------------member functions /** - * Enables/disables the SPEventContext's SelCue. + * Enables/disables the ToolBase's SelCue. */ -void SPEventContext::enableSelectionCue(bool enable) { +void ToolBase::enableSelectionCue(bool enable) { if (enable) { if (!_selcue) { _selcue = new Inkscape::SelCue(desktop); @@ -969,9 +975,9 @@ void SPEventContext::enableSelectionCue(bool enable) { } /** - * Enables/disables the SPEventContext's GrDrag. + * Enables/disables the ToolBase's GrDrag. */ -void SPEventContext::enableGrDrag(bool enable) { +void ToolBase::enableGrDrag(bool enable) { if (enable) { if (!_grdrag) { _grdrag = new GrDrag(desktop); @@ -987,7 +993,7 @@ void SPEventContext::enableGrDrag(bool enable) { /** * Delete a selected GrDrag point */ -bool SPEventContext::deleteSelectedDrag(bool just_one) { +bool ToolBase::deleteSelectedDrag(bool just_one) { if (_grdrag && _grdrag->selected) { _grdrag->deleteSelected(just_one); @@ -998,9 +1004,9 @@ bool SPEventContext::deleteSelectedDrag(bool just_one) { } /** - * Calls virtual set() function of SPEventContext. + * Calls virtual set() function of ToolBase. */ -void sp_event_context_read(SPEventContext *ec, gchar const *key) { +void sp_event_context_read(ToolBase *ec, gchar const *key) { g_return_if_fail(ec != NULL); g_return_if_fail(SP_IS_EVENT_CONTEXT(ec)); g_return_if_fail(key != NULL); @@ -1018,9 +1024,9 @@ void sp_event_context_read(SPEventContext *ec, gchar const *key) { } /** - * Calls virtual activate() function of SPEventContext. + * Calls virtual activate() function of ToolBase. */ -void sp_event_context_activate(SPEventContext *ec) { +void sp_event_context_activate(ToolBase *ec) { g_return_if_fail(ec != NULL); g_return_if_fail(SP_IS_EVENT_CONTEXT(ec)); @@ -1035,9 +1041,9 @@ void sp_event_context_activate(SPEventContext *ec) { } /** - * Calls virtual deactivate() function of SPEventContext. + * Calls virtual deactivate() function of ToolBase. */ -//void sp_event_context_deactivate(SPEventContext *ec) { +//void sp_event_context_deactivate(ToolBase *ec) { // g_return_if_fail(ec != NULL); // g_return_if_fail(SP_IS_EVENT_CONTEXT(ec)); // @@ -1049,7 +1055,7 @@ void sp_event_context_activate(SPEventContext *ec) { /** * Calls virtual root_handler(), the main event handling function. */ -gint sp_event_context_root_handler(SPEventContext * event_context, +gint sp_event_context_root_handler(ToolBase * event_context, GdkEvent * event) { switch (event->type) { @@ -1080,7 +1086,7 @@ gint sp_event_context_root_handler(SPEventContext * event_context, return sp_event_context_virtual_root_handler(event_context, event); } -gint sp_event_context_virtual_root_handler(SPEventContext * event_context, GdkEvent * event) { +gint sp_event_context_virtual_root_handler(ToolBase * event_context, GdkEvent * event) { gint ret = false; if (event_context) { // If no event-context is available then do nothing, otherwise Inkscape would crash // (see the comment in SPDesktop::set_event_context, and bug LP #622350) @@ -1095,7 +1101,7 @@ gint sp_event_context_virtual_root_handler(SPEventContext * event_context, GdkEv /** * Calls virtual item_handler(), the item event handling function. */ -gint sp_event_context_item_handler(SPEventContext * event_context, +gint sp_event_context_item_handler(ToolBase * event_context, SPItem * item, GdkEvent * event) { switch (event->type) { case GDK_MOTION_NOTIFY: @@ -1121,7 +1127,7 @@ gint sp_event_context_item_handler(SPEventContext * event_context, return sp_event_context_virtual_item_handler(event_context, item, event); } -gint sp_event_context_virtual_item_handler(SPEventContext * event_context, SPItem * item, GdkEvent * event) { +gint sp_event_context_virtual_item_handler(ToolBase * event_context, SPItem * item, GdkEvent * event) { gint ret = false; if (event_context) { // If no event-context is available then do nothing, otherwise Inkscape would crash // (see the comment in SPDesktop::set_event_context, and bug LP #622350) @@ -1269,7 +1275,7 @@ sp_event_context_over_item(SPDesktop *desktop, SPItem *item, } ShapeEditor * -sp_event_context_get_shape_editor(SPEventContext *ec) { +sp_event_context_get_shape_editor(ToolBase *ec) { return ec->shape_editor; } @@ -1326,7 +1332,7 @@ void event_context_print_event_info(GdkEvent *event, bool print_return) { * @param event Pointer to the motion event. * @param origin Identifier (enum) specifying where the delay (and the call to this method) were initiated. */ -void sp_event_context_snap_delay_handler(SPEventContext *ec, +void sp_event_context_snap_delay_handler(ToolBase *ec, gpointer const dse_item, gpointer const dse_item2, GdkEventMotion *event, DelayedSnapEvent::DelayedSnapEventOrigin origin) { @@ -1415,7 +1421,7 @@ gboolean sp_event_context_snap_watchdog_callback(gpointer data) { return FALSE; } - SPEventContext *ec = dse->getEventContext(); + ToolBase *ec = dse->getEventContext(); if (ec == NULL) { delete dse; return false; @@ -1513,12 +1519,16 @@ gboolean sp_event_context_snap_watchdog_callback(gpointer data) { return FALSE; //Kills the timer and stops it from executing this callback over and over again. } -void sp_event_context_discard_delayed_snap_event(SPEventContext *ec) { +void sp_event_context_discard_delayed_snap_event(ToolBase *ec) { delete ec->_delayed_snap_event; ec->_delayed_snap_event = NULL; ec->desktop->namedview->snap_manager.snapprefs.setSnapPostponedGlobally(false); } +} +} +} + /* Local Variables: mode:c++ diff --git a/src/event-context.h b/src/event-context.h index 33bab5e3e..5185f89b1 100644 --- a/src/event-context.h +++ b/src/event-context.h @@ -23,7 +23,6 @@ class GrDrag; class SPDesktop; class SPItem; class ShapeEditor; -class SPEventContext; namespace Inkscape { class MessageContext; @@ -33,11 +32,17 @@ namespace Inkscape { } } -#define SP_EVENT_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_EVENT_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_EVENT_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define SP_IS_EVENT_CONTEXT(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj) != NULL) + +namespace Inkscape { +namespace UI { +namespace Tools { + +class ToolBase; gboolean sp_event_context_snap_watchdog_callback(gpointer data); -void sp_event_context_discard_delayed_snap_event(SPEventContext *ec); +void sp_event_context_discard_delayed_snap_event(ToolBase *ec); class DelayedSnapEvent { @@ -53,7 +58,7 @@ public: GUIDE_VRULER }; - DelayedSnapEvent(SPEventContext *event_context, gpointer const dse_item, gpointer dse_item2, GdkEventMotion const *event, DelayedSnapEvent::DelayedSnapEventOrigin const origin) + DelayedSnapEvent(ToolBase *event_context, gpointer const dse_item, gpointer dse_item2, GdkEventMotion const *event, DelayedSnapEvent::DelayedSnapEventOrigin const origin) : _timer_id(0), _event(NULL), _item(dse_item), _item2(dse_item2), _origin(origin), _event_context(event_context) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -68,7 +73,7 @@ public: if (_event != NULL) gdk_event_free(_event); // Remove the copy of the original event } - SPEventContext* getEventContext() {return _event_context;} + ToolBase* getEventContext() {return _event_context;} DelayedSnapEventOrigin getOrigin() {return _origin;} GdkEvent* getEvent() {return _event;} gpointer getItem() {return _item;} @@ -80,10 +85,10 @@ private: gpointer _item; gpointer _item2; DelayedSnapEventOrigin _origin; - SPEventContext* _event_context; + ToolBase* _event_context; }; -void sp_event_context_snap_delay_handler(SPEventContext *ec, gpointer const dse_item, gpointer const dse_item2, GdkEventMotion *event, DelayedSnapEvent::DelayedSnapEventOrigin origin); +void sp_event_context_snap_delay_handler(ToolBase *ec, gpointer const dse_item, gpointer const dse_item2, GdkEventMotion *event, DelayedSnapEvent::DelayedSnapEventOrigin origin); /** @@ -92,21 +97,21 @@ void sp_event_context_snap_delay_handler(SPEventContext *ec, gpointer const dse_ * This is per desktop object, which (its derivatives) implements * different actions bound to mouse events. * - * SPEventContext is an abstract base class of all tools. As the name + * ToolBase is an abstract base class of all tools. As the name * indicates, event context implementations process UI events (mouse * movements and keypresses) and take actions (like creating or modifying * objects). There is one event context implementation for each tool, * plus few abstract base classes. Writing a new tool involves - * subclassing SPEventContext. + * subclassing ToolBase. */ -class SPEventContext { +class ToolBase { public: void enableSelectionCue (bool enable=true); void enableGrDrag (bool enable=true); bool deleteSelectedDrag(bool just_one); - SPEventContext(); - virtual ~SPEventContext(); + ToolBase(); + virtual ~ToolBase(); SPDesktop *desktop; Inkscape::Preferences::Observer *pref_observer; @@ -158,7 +163,7 @@ public: */ class ToolPrefObserver: public Inkscape::Preferences::Observer { public: - ToolPrefObserver(Glib::ustring const &path, SPEventContext *ec) : + ToolPrefObserver(Glib::ustring const &path, ToolBase *ec) : Inkscape::Preferences::Observer(path), ec(ec) { } @@ -167,15 +172,15 @@ public: } private: - SPEventContext * const ec; + ToolBase * const ec; }; //protected: void sp_event_context_update_cursor(); private: - SPEventContext(const SPEventContext&); - SPEventContext& operator=(const SPEventContext&); + ToolBase(const ToolBase&); + ToolBase& operator=(const ToolBase&); }; #define SP_EVENT_CONTEXT_DESKTOP(e) (SP_EVENT_CONTEXT(e)->desktop) @@ -183,23 +188,23 @@ private: #define SP_EVENT_CONTEXT_STATIC 0 -//SPEventContext *sp_event_context_new(GType type, SPDesktop *desktop, gchar const *pref_path, unsigned key); -//void sp_event_context_finish(SPEventContext *ec); -void sp_event_context_read(SPEventContext *ec, gchar const *key); -void sp_event_context_activate(SPEventContext *ec); -//void sp_event_context_deactivate(SPEventContext *ec); +//ToolBase *sp_event_context_new(GType type, SPDesktop *desktop, gchar const *pref_path, unsigned key); +//void sp_event_context_finish(ToolBase *ec); +void sp_event_context_read(ToolBase *ec, gchar const *key); +void sp_event_context_activate(ToolBase *ec); +//void sp_event_context_deactivate(ToolBase *ec); -gint sp_event_context_root_handler(SPEventContext *ec, GdkEvent *event); -gint sp_event_context_virtual_root_handler(SPEventContext *ec, GdkEvent *event); -gint sp_event_context_item_handler(SPEventContext *ec, SPItem *item, GdkEvent *event); -gint sp_event_context_virtual_item_handler(SPEventContext *ec, SPItem *item, GdkEvent *event); +gint sp_event_context_root_handler(ToolBase *ec, GdkEvent *event); +gint sp_event_context_virtual_root_handler(ToolBase *ec, GdkEvent *event); +gint sp_event_context_item_handler(ToolBase *ec, SPItem *item, GdkEvent *event); +gint sp_event_context_virtual_item_handler(ToolBase *ec, SPItem *item, GdkEvent *event); void sp_event_root_menu_popup(SPDesktop *desktop, SPItem *item, GdkEvent *event); gint gobble_key_events(guint keyval, gint mask); gint gobble_motion_events(gint mask); -//void sp_event_context_update_cursor(SPEventContext *ec); +//void sp_event_context_update_cursor(ToolBase *ec); void sp_event_show_modifier_tip(Inkscape::MessageContext *message_context, GdkEvent *event, gchar const *ctrl_tip, gchar const *shift_tip, gchar const *alt_tip); @@ -211,8 +216,8 @@ SPItem *sp_event_context_over_item (SPDesktop *desktop, SPItem *item, Geom::Poin void sp_toggle_dropper(SPDesktop *dt); -//ShapeEditor *sp_event_context_get_shape_editor (SPEventContext *ec); -bool sp_event_context_knot_mouseover(SPEventContext *ec); +//ShapeEditor *sp_event_context_get_shape_editor (ToolBase *ec); +bool sp_event_context_knot_mouseover(ToolBase *ec); //void ec_shape_event_attr_changed(Inkscape::XML::Node *shape_repr, // gchar const *name, gchar const *old_value, gchar const *new_value, @@ -220,6 +225,10 @@ bool sp_event_context_knot_mouseover(SPEventContext *ec); // //void event_context_print_event_info(GdkEvent *event, bool print_return = true); +} +} +} + #endif // SEEN_SP_EVENT_CONTEXT_H diff --git a/src/flood-context.cpp b/src/flood-context.cpp index dc89fb0a9..1f45f1d63 100644 --- a/src/flood-context.cpp +++ b/src/flood-context.cpp @@ -76,21 +76,25 @@ using Inkscape::Display::AssembleARGB32; #include "tool-factory.h" +namespace Inkscape { +namespace UI { +namespace Tools { + namespace { - SPEventContext* createPaintbucketContext() { - return new SPFloodContext(); + ToolBase* createPaintbucketContext() { + return new FloodTool(); } bool paintbucketContextRegistered = ToolFactory::instance().registerObject("/tools/paintbucket", createPaintbucketContext); } -const std::string& SPFloodContext::getPrefsPath() { - return SPFloodContext::prefsPath; +const std::string& FloodTool::getPrefsPath() { + return FloodTool::prefsPath; } -const std::string SPFloodContext::prefsPath = "/tools/paintbucket"; +const std::string FloodTool::prefsPath = "/tools/paintbucket"; -SPFloodContext::SPFloodContext() : SPEventContext() { +FloodTool::FloodTool() : ToolBase() { this->cursor_shape = cursor_paintbucket_xpm; this->hot_x = 11; this->hot_y = 30; @@ -103,7 +107,7 @@ SPFloodContext::SPFloodContext() : SPEventContext() { this->item = NULL; } -SPFloodContext::~SPFloodContext() { +FloodTool::~FloodTool() { this->sel_changed_connection.disconnect(); delete this->shape_editor; @@ -119,13 +123,13 @@ SPFloodContext::~SPFloodContext() { * Callback that processes the "changed" signal on the selection; * destroys old and creates new knotholder. */ -void SPFloodContext::selection_changed(Inkscape::Selection* selection) { +void FloodTool::selection_changed(Inkscape::Selection* selection) { this->shape_editor->unset_item(SH_KNOTHOLDER); this->shape_editor->set_item(selection->singleItem(), SH_KNOTHOLDER); } -void SPFloodContext::setup() { - SPEventContext::setup(); +void FloodTool::setup() { + ToolBase::setup(); this->shape_editor = new ShapeEditor(this->desktop); @@ -136,7 +140,7 @@ void SPFloodContext::setup() { this->sel_changed_connection.disconnect(); this->sel_changed_connection = sp_desktop_selection(this->desktop)->connectChanged( - sigc::mem_fun(this, &SPFloodContext::selection_changed) + sigc::mem_fun(this, &FloodTool::selection_changed) ); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -739,7 +743,7 @@ static bool sort_fill_queue_horizontal(Geom::Point a, Geom::Point b) { * @param is_point_fill If false, use the Rubberband "touch selection" to get the initial points for the fill. * @param is_touch_fill If true, use only the initial contact point in the Rubberband "touch selection" as the fill target color. */ -static void sp_flood_do_flood_fill(SPEventContext *event_context, GdkEvent *event, bool union_with_selection, bool is_point_fill, bool is_touch_fill) { +static void sp_flood_do_flood_fill(ToolBase *event_context, GdkEvent *event, bool union_with_selection, bool is_point_fill, bool is_touch_fill) { SPDesktop *desktop = event_context->desktop; SPDocument *document = sp_desktop_document(desktop); @@ -1084,7 +1088,7 @@ static void sp_flood_do_flood_fill(SPEventContext *event_context, GdkEvent *even DocumentUndo::done(document, SP_VERB_CONTEXT_PAINTBUCKET, _("Fill bounded area")); } -bool SPFloodContext::item_handler(SPItem* item, GdkEvent* event) { +bool FloodTool::item_handler(SPItem* item, GdkEvent* event) { gint ret = FALSE; switch (event->type) { @@ -1107,16 +1111,16 @@ bool SPFloodContext::item_handler(SPItem* item, GdkEvent* event) { break; } -// if (((SPEventContextClass *) sp_flood_context_parent_class)->item_handler) { -// ret = ((SPEventContextClass *) sp_flood_context_parent_class)->item_handler(event_context, item, event); +// if (((ToolBaseClass *) sp_flood_context_parent_class)->item_handler) { +// ret = ((ToolBaseClass *) sp_flood_context_parent_class)->item_handler(event_context, item, event); // } // CPPIFY: ret is overwritten... - ret = SPEventContext::item_handler(item, event); + ret = ToolBase::item_handler(item, event); return ret; } -bool SPFloodContext::root_handler(GdkEvent* event) { +bool FloodTool::root_handler(GdkEvent* event) { static bool dragging; gint ret = FALSE; @@ -1216,13 +1220,13 @@ bool SPFloodContext::root_handler(GdkEvent* event) { } if (!ret) { - ret = SPEventContext::root_handler(event); + ret = ToolBase::root_handler(event); } return ret; } -void SPFloodContext::finishItem() { +void FloodTool::finishItem() { this->message_context->clear(); if (this->item != NULL) { @@ -1238,11 +1242,15 @@ void SPFloodContext::finishItem() { } } -void SPFloodContext::set_channels(gint channels) { +void FloodTool::set_channels(gint channels) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); prefs->setInt("/tools/paintbucket/channels", channels); } +} +} +} + /* Local Variables: mode:c++ diff --git a/src/flood-context.h b/src/flood-context.h index 48bf36f85..93d2c12de 100644 --- a/src/flood-context.h +++ b/src/flood-context.h @@ -16,8 +16,8 @@ #include #include "event-context.h" -#define SP_FLOOD_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_FLOOD_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_FLOOD_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define SP_IS_FLOOD_CONTEXT(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj) != NULL) #define FLOOD_COLOR_CHANNEL_R 1 @@ -25,10 +25,14 @@ #define FLOOD_COLOR_CHANNEL_B 4 #define FLOOD_COLOR_CHANNEL_A 8 -class SPFloodContext : public SPEventContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class FloodTool : public ToolBase { public: - SPFloodContext(); - virtual ~SPFloodContext(); + FloodTool(); + virtual ~FloodTool(); SPItem *item; @@ -63,4 +67,8 @@ enum PaintBucketChannels { FLOOD_CHANNELS_ALPHA }; +} +} +} + #endif diff --git a/src/gradient-chemistry.cpp b/src/gradient-chemistry.cpp index 40260ea66..a12db7b59 100644 --- a/src/gradient-chemistry.cpp +++ b/src/gradient-chemistry.cpp @@ -1571,7 +1571,7 @@ void sp_gradient_invert_selected_gradients(SPDesktop *desktop, Inkscape::PaintTa void sp_gradient_reverse_selected_gradients(SPDesktop *desktop) { Inkscape::Selection *selection = sp_desktop_selection(desktop); - SPEventContext *ev = desktop->getEventContext(); + Inkscape::UI::Tools::ToolBase *ev = desktop->getEventContext(); if (!ev) { return; diff --git a/src/gradient-context.cpp b/src/gradient-context.cpp index 3456f33c3..3a0261cc7 100644 --- a/src/gradient-context.cpp +++ b/src/gradient-context.cpp @@ -51,27 +51,30 @@ using Inkscape::DocumentUndo; -static void sp_gradient_drag(SPGradientContext &rc, Geom::Point const pt, guint state, guint32 etime); +#include "tool-factory.h" +namespace Inkscape { +namespace UI { +namespace Tools { -#include "tool-factory.h" +static void sp_gradient_drag(GradientTool &rc, Geom::Point const pt, guint state, guint32 etime); namespace { - SPEventContext* createGradientContext() { - return new SPGradientContext(); + ToolBase* createGradientContext() { + return new GradientTool(); } bool gradientContextRegistered = ToolFactory::instance().registerObject("/tools/gradient", createGradientContext); } -const std::string& SPGradientContext::getPrefsPath() { - return SPGradientContext::prefsPath; +const std::string& GradientTool::getPrefsPath() { + return GradientTool::prefsPath; } -const std::string SPGradientContext::prefsPath = "/tools/gradient"; +const std::string GradientTool::prefsPath = "/tools/gradient"; -SPGradientContext::SPGradientContext() : SPEventContext() { +GradientTool::GradientTool() : ToolBase() { this->node_added = false; this->subselcon = 0; this->selcon = 0; @@ -87,7 +90,7 @@ SPGradientContext::SPGradientContext() : SPEventContext() { this->item_to_select = NULL; } -SPGradientContext::~SPGradientContext() { +GradientTool::~GradientTool() { this->enableGrDrag(false); this->selcon->disconnect(); @@ -109,8 +112,8 @@ const gchar *gr_handle_descr [] = { N_("Radial gradient mid stop") }; -void SPGradientContext::selection_changed(Inkscape::Selection*) { - SPGradientContext *rc = (SPGradientContext *) this; +void GradientTool::selection_changed(Inkscape::Selection*) { + GradientTool *rc = (GradientTool *) this; GrDrag *drag = rc->_grdrag; Inkscape::Selection *selection = sp_desktop_selection(SP_EVENT_CONTEXT(rc)->desktop); @@ -158,8 +161,8 @@ void SPGradientContext::selection_changed(Inkscape::Selection*) { } } -void SPGradientContext::setup() { - SPEventContext::setup(); +void GradientTool::setup() { + ToolBase::setup(); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -171,12 +174,12 @@ void SPGradientContext::setup() { Inkscape::Selection *selection = sp_desktop_selection(this->desktop); this->selcon = new sigc::connection(selection->connectChanged( - sigc::mem_fun(this, &SPGradientContext::selection_changed) + sigc::mem_fun(this, &GradientTool::selection_changed) )); this->subselcon = new sigc::connection(this->desktop->connectToolSubselectionChanged( sigc::hide(sigc::bind( - sigc::mem_fun(this, &SPGradientContext::selection_changed), + sigc::mem_fun(this, &GradientTool::selection_changed), (Inkscape::Selection*)NULL )) )); @@ -185,7 +188,7 @@ void SPGradientContext::setup() { } void -sp_gradient_context_select_next (SPEventContext *event_context) +sp_gradient_context_select_next (ToolBase *event_context) { GrDrag *drag = event_context->_grdrag; g_assert (drag); @@ -196,7 +199,7 @@ sp_gradient_context_select_next (SPEventContext *event_context) } void -sp_gradient_context_select_prev (SPEventContext *event_context) +sp_gradient_context_select_prev (ToolBase *event_context) { GrDrag *drag = event_context->_grdrag; g_assert (drag); @@ -207,7 +210,7 @@ sp_gradient_context_select_prev (SPEventContext *event_context) } static bool -sp_gradient_context_is_over_line (SPGradientContext *rc, SPItem *item, Geom::Point event_p) +sp_gradient_context_is_over_line (GradientTool *rc, SPItem *item, Geom::Point event_p) { SPDesktop *desktop = SP_EVENT_CONTEXT (rc)->desktop; @@ -311,7 +314,7 @@ sp_gradient_context_get_stop_intervals (GrDrag *drag, GSList **these_stops, GSLi } void -sp_gradient_context_add_stops_between_selected_stops (SPGradientContext *rc) +sp_gradient_context_add_stops_between_selected_stops (GradientTool *rc) { SPDocument *doc = NULL; GrDrag *drag = rc->_grdrag; @@ -383,7 +386,7 @@ sp_gradient_context_add_stops_between_selected_stops (SPGradientContext *rc) static double sqr(double x) {return x*x;} static void -sp_gradient_simplify(SPGradientContext *rc, double tolerance) +sp_gradient_simplify(GradientTool *rc, double tolerance) { SPDocument *doc = NULL; GrDrag *drag = rc->_grdrag; @@ -449,11 +452,11 @@ sp_gradient_simplify(SPGradientContext *rc, double tolerance) static void -sp_gradient_context_add_stop_near_point (SPGradientContext *rc, SPItem *item, Geom::Point mouse_p, guint32 /*etime*/) +sp_gradient_context_add_stop_near_point (GradientTool *rc, SPItem *item, Geom::Point mouse_p, guint32 /*etime*/) { // item is the selected item. mouse_p the location in doc coordinates of where to add the stop - SPEventContext *ec = SP_EVENT_CONTEXT(rc); + ToolBase *ec = SP_EVENT_CONTEXT(rc); SPDesktop *desktop = SP_EVENT_CONTEXT (rc)->desktop; double tolerance = (double) ec->tolerance; @@ -468,7 +471,7 @@ sp_gradient_context_add_stop_near_point (SPGradientContext *rc, SPItem *item, G ec->get_drag()->selectByStop(newstop); } -bool SPGradientContext::root_handler(GdkEvent* event) { +bool GradientTool::root_handler(GdkEvent* event) { static bool dragging; Inkscape::Selection *selection = sp_desktop_selection (desktop); @@ -879,18 +882,18 @@ bool SPGradientContext::root_handler(GdkEvent* event) { } if (!ret) { - ret = SPEventContext::root_handler(event); + ret = ToolBase::root_handler(event); } return ret; } -static void sp_gradient_drag(SPGradientContext &rc, Geom::Point const pt, guint /*state*/, guint32 etime) +static void sp_gradient_drag(GradientTool &rc, Geom::Point const pt, guint /*state*/, guint32 etime) { SPDesktop *desktop = SP_EVENT_CONTEXT(&rc)->desktop; Inkscape::Selection *selection = sp_desktop_selection(desktop); SPDocument *document = sp_desktop_document(desktop); - SPEventContext *ec = SP_EVENT_CONTEXT(&rc); + ToolBase *ec = SP_EVENT_CONTEXT(&rc); if (!selection->isEmpty()) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -957,6 +960,10 @@ static void sp_gradient_drag(SPGradientContext &rc, Geom::Point const pt, guint } } +} +} +} + /* Local Variables: diff --git a/src/gradient-context.h b/src/gradient-context.h index 7a2918f3d..5530791df 100644 --- a/src/gradient-context.h +++ b/src/gradient-context.h @@ -19,13 +19,17 @@ #include #include "event-context.h" -#define SP_GRADIENT_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_GRADIENT_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_GRADIENT_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define SP_IS_GRADIENT_CONTEXT(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj) != NULL) -class SPGradientContext : public SPEventContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class GradientTool : public ToolBase { public: - SPGradientContext(); - virtual ~SPGradientContext(); + GradientTool(); + virtual ~GradientTool(); Geom::Point origin; @@ -49,9 +53,13 @@ private: void selection_changed(Inkscape::Selection*); }; -void sp_gradient_context_select_next (SPEventContext *event_context); -void sp_gradient_context_select_prev (SPEventContext *event_context); -void sp_gradient_context_add_stops_between_selected_stops (SPGradientContext *rc); +void sp_gradient_context_select_next (ToolBase *event_context); +void sp_gradient_context_select_prev (ToolBase *event_context); +void sp_gradient_context_add_stops_between_selected_stops (GradientTool *rc); + +} +} +} #endif diff --git a/src/helper/window.cpp b/src/helper/window.cpp index cf6fb12ec..17501c260 100644 --- a/src/helper/window.cpp +++ b/src/helper/window.cpp @@ -29,7 +29,7 @@ static bool on_window_key_press(GdkEventKey* event) { unsigned int shortcut; - shortcut = get_group0_keyval (event) | + shortcut = Inkscape::UI::Tools::get_group0_keyval (event) | ( event->state & GDK_SHIFT_MASK ? SP_SHORTCUT_SHIFT_MASK : 0 ) | ( event->state & GDK_CONTROL_MASK ? diff --git a/src/inkscape-private.h b/src/inkscape-private.h index 364e3dab6..d28ed223e 100644 --- a/src/inkscape-private.h +++ b/src/inkscape-private.h @@ -43,7 +43,7 @@ void inkscape_trackalt(guint); void inkscape_selection_modified (Inkscape::Selection *selection, guint flags); void inkscape_selection_changed (Inkscape::Selection * selection); void inkscape_selection_set (Inkscape::Selection * selection); -void inkscape_eventcontext_set (SPEventContext * eventcontext); +void inkscape_eventcontext_set (Inkscape::UI::Tools::ToolBase * eventcontext); void inkscape_add_desktop (SPDesktop * desktop); void inkscape_remove_desktop (SPDesktop * desktop); void inkscape_activate_desktop (SPDesktop * desktop); diff --git a/src/inkscape.cpp b/src/inkscape.cpp index 228841362..8973c7b25 100644 --- a/src/inkscape.cpp +++ b/src/inkscape.cpp @@ -145,7 +145,7 @@ struct Inkscape::ApplicationClass { void (* change_subselection) (Inkscape::Application * inkscape, SPDesktop *desktop); void (* modify_selection) (Inkscape::Application * inkscape, Inkscape::Selection * selection, guint flags); void (* set_selection) (Inkscape::Application * inkscape, Inkscape::Selection * selection); - void (* set_eventcontext) (Inkscape::Application * inkscape, SPEventContext * eventcontext); + void (* set_eventcontext) (Inkscape::Application * inkscape, Inkscape::UI::Tools::ToolBase * eventcontext); void (* activate_desktop) (Inkscape::Application * inkscape, SPDesktop * desktop); void (* deactivate_desktop) (Inkscape::Application * inkscape, SPDesktop * desktop); void (* destroy_document) (Inkscape::Application *inkscape, SPDocument *doc); @@ -991,7 +991,7 @@ inkscape_selection_set (Inkscape::Selection * selection) void -inkscape_eventcontext_set (SPEventContext * eventcontext) +inkscape_eventcontext_set (Inkscape::UI::Tools::ToolBase * eventcontext) { g_return_if_fail (eventcontext != NULL); g_return_if_fail (SP_IS_EVENT_CONTEXT (eventcontext)); @@ -1338,7 +1338,7 @@ bool inkscape_is_sole_desktop_for_document(SPDesktop const &desktop) { return true; } -SPEventContext * +Inkscape::UI::Tools::ToolBase * inkscape_active_event_context (void) { if (SP_ACTIVE_DESKTOP) { diff --git a/src/inkscape.h b/src/inkscape.h index 0effc3c38..823e7524f 100644 --- a/src/inkscape.h +++ b/src/inkscape.h @@ -17,7 +17,16 @@ class SPDesktop; class SPDocument; -class SPEventContext; + +namespace Inkscape { +namespace UI { +namespace Tools { + +class ToolBase; + +} +} +} namespace Inkscape { class ActionContext; @@ -49,7 +58,7 @@ bool inkscapeIsCrashing(); SPDesktop * inkscape_find_desktop_by_dkey (unsigned int dkey); #define SP_ACTIVE_EVENTCONTEXT inkscape_active_event_context () -SPEventContext * inkscape_active_event_context (void); +Inkscape::UI::Tools::ToolBase * inkscape_active_event_context (void); #define SP_ACTIVE_DOCUMENT inkscape_active_document () SPDocument * inkscape_active_document (void); diff --git a/src/knot.cpp b/src/knot.cpp index 2b67440dc..0fb0600c4 100644 --- a/src/knot.cpp +++ b/src/knot.cpp @@ -396,7 +396,7 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot SP_KNOT_DRAGGING, TRUE); } - sp_event_context_snap_delay_handler(knot->desktop->event_context, NULL, (gpointer) knot, (GdkEventMotion *)event, DelayedSnapEvent::KNOT_HANDLER); + sp_event_context_snap_delay_handler(knot->desktop->event_context, NULL, (gpointer) knot, (GdkEventMotion *)event, Inkscape::UI::Tools::DelayedSnapEvent::KNOT_HANDLER); sp_knot_handler_request_position(event, knot); moved = TRUE; } @@ -426,7 +426,7 @@ static int sp_knot_handler(SPCanvasItem */*item*/, GdkEvent *event, SPKnot *knot consumed = TRUE; break; case GDK_KEY_PRESS: // keybindings for knot - switch (get_group0_keyval(&event->key)) { + switch (Inkscape::UI::Tools::get_group0_keyval(&event->key)) { case GDK_KEY_Escape: sp_knot_set_flag(knot, SP_KNOT_GRABBED, FALSE); if (!nograb) { @@ -471,7 +471,7 @@ void sp_knot_handler_request_position(GdkEvent *event, SPKnot *knot) knot->desktop->scroll_to_point (motion_dt); knot->desktop->set_coordinate_status(knot->pos); // display the coordinate of knot, not cursor - they may be different! if (event->motion.state & GDK_BUTTON1_MASK) - gobble_motion_events(GDK_BUTTON1_MASK); + Inkscape::UI::Tools::gobble_motion_events(GDK_BUTTON1_MASK); } SPKnot *sp_knot_new(SPDesktop *desktop, const gchar *tip) diff --git a/src/live_effects/effect.cpp b/src/live_effects/effect.cpp index 623879ac5..21ef02359 100644 --- a/src/live_effects/effect.cpp +++ b/src/live_effects/effect.cpp @@ -343,8 +343,8 @@ Effect::doAcceptPathPreparations(SPLPEItem *lpeitem) tools_switch(desktop, TOOLS_FREEHAND_PEN); } - SPEventContext *ec = desktop->event_context; - SPPenContext *pc = SP_PEN_CONTEXT(ec); + Inkscape::UI::Tools::ToolBase *ec = desktop->event_context; + Inkscape::UI::Tools::PenTool *pc = SP_PEN_CONTEXT(ec); pc->expecting_clicks_for_LPE = this->acceptsNumClicks(); pc->waiting_LPE = this; pc->waiting_item = lpeitem; diff --git a/src/live_effects/lpe-line_segment.cpp b/src/live_effects/lpe-line_segment.cpp index 2e7240e25..793b00bcc 100644 --- a/src/live_effects/lpe-line_segment.cpp +++ b/src/live_effects/lpe-line_segment.cpp @@ -45,7 +45,7 @@ LPELineSegment::~LPELineSegment() void LPELineSegment::doBeforeEffect (SPLPEItem const* lpeitem) { - lpetool_get_limiting_bbox_corners(lpeitem->document, bboxA, bboxB); + Inkscape::UI::Tools::lpetool_get_limiting_bbox_corners(lpeitem->document, bboxA, bboxB); } std::vector diff --git a/src/live_effects/parameter/path.cpp b/src/live_effects/parameter/path.cpp index e5648dc68..6e951f6ea 100644 --- a/src/live_effects/parameter/path.cpp +++ b/src/live_effects/parameter/path.cpp @@ -208,7 +208,7 @@ PathParam::param_editOncanvas(SPItem *item, SPDesktop * dt) tools_switch(dt, TOOLS_NODES); } - InkNodeTool *nt = static_cast(dt->event_context); + Inkscape::UI::Tools::NodeTool *nt = static_cast(dt->event_context); std::set shapes; ShapeRecord r; diff --git a/src/lpe-tool-context.cpp b/src/lpe-tool-context.cpp index bf912746e..3d004f821 100644 --- a/src/lpe-tool-context.cpp +++ b/src/lpe-tool-context.cpp @@ -42,8 +42,7 @@ #include "lpe-tool-context.h" using Inkscape::Util::unit_table; - -void sp_lpetool_context_selection_changed(Inkscape::Selection *selection, gpointer data); +using Inkscape::UI::Tools::PenTool; const int num_subtools = 8; @@ -62,21 +61,27 @@ SubtoolEntry lpesubtools[] = { #include "tool-factory.h" +namespace Inkscape { +namespace UI { +namespace Tools { + +void sp_lpetool_context_selection_changed(Inkscape::Selection *selection, gpointer data); + namespace { - SPEventContext* createLPEToolContext() { - return new SPLPEToolContext(); + ToolBase* createLPEToolContext() { + return new LpeTool(); } bool lpetoolContextRegistered = ToolFactory::instance().registerObject("/tools/lpetool", createLPEToolContext); } -const std::string& SPLPEToolContext::getPrefsPath() { - return SPLPEToolContext::prefsPath; +const std::string& LpeTool::getPrefsPath() { + return LpeTool::prefsPath; } -const std::string SPLPEToolContext::prefsPath = "/tools/lpetool"; +const std::string LpeTool::prefsPath = "/tools/lpetool"; -SPLPEToolContext::SPLPEToolContext() : SPPenContext() { +LpeTool::LpeTool() : PenTool() { this->mode = Inkscape::LivePathEffect::BEND_PATH; this->shape_editor = 0; @@ -88,7 +93,7 @@ SPLPEToolContext::SPLPEToolContext() : SPPenContext() { this->measuring_items = new std::map; } -SPLPEToolContext::~SPLPEToolContext() { +LpeTool::~LpeTool() { delete this->shape_editor; this->shape_editor = NULL; @@ -104,8 +109,8 @@ SPLPEToolContext::~SPLPEToolContext() { this->sel_changed_connection.disconnect(); } -void SPLPEToolContext::setup() { - SPPenContext::setup(); +void LpeTool::setup() { + PenTool::setup(); Inkscape::Selection *selection = sp_desktop_selection (this->desktop); SPItem *item = selection->singleItem(); @@ -141,21 +146,21 @@ void SPLPEToolContext::setup() { */ void sp_lpetool_context_selection_changed(Inkscape::Selection *selection, gpointer data) { - SPLPEToolContext *lc = SP_LPETOOL_CONTEXT(data); + LpeTool *lc = SP_LPETOOL_CONTEXT(data); lc->shape_editor->unset_item(SH_KNOTHOLDER); SPItem *item = selection->singleItem(); lc->shape_editor->set_item(item, SH_KNOTHOLDER); } -void SPLPEToolContext::set(const Inkscape::Preferences::Entry& val) { +void LpeTool::set(const Inkscape::Preferences::Entry& val) { if (val.getEntryName() == "mode") { Inkscape::Preferences::get()->setString("/tools/geometric/mode", "drag"); - SP_PEN_CONTEXT(this)->mode = SPPenContext::MODE_DRAG; + SP_PEN_CONTEXT(this)->mode = PenTool::MODE_DRAG; } } -bool SPLPEToolContext::item_handler(SPItem* item, GdkEvent* event) { +bool LpeTool::item_handler(SPItem* item, GdkEvent* event) { gint ret = FALSE; switch (event->type) { @@ -177,21 +182,21 @@ bool SPLPEToolContext::item_handler(SPItem* item, GdkEvent* event) { } if (!ret) { - ret = SPPenContext::item_handler(item, event); + ret = PenTool::item_handler(item, event); } return ret; } -bool SPLPEToolContext::root_handler(GdkEvent* event) { +bool LpeTool::root_handler(GdkEvent* event) { Inkscape::Selection *selection = sp_desktop_selection (desktop); bool ret = false; if (sp_pen_context_has_waiting_LPE(this)) { // quit when we are waiting for a LPE to be applied - //ret = ((SPEventContextClass *) sp_lpetool_context_parent_class)->root_handler(event_context, event); - return SPPenContext::root_handler(event); + //ret = ((ToolBaseClass *) sp_lpetool_context_parent_class)->root_handler(event_context, event); + return PenTool::root_handler(event); } switch (event->type) { @@ -222,8 +227,8 @@ bool SPLPEToolContext::root_handler(GdkEvent* event) { sp_pen_context_wait_for_LPE_mouse_clicks(this, type, Inkscape::LivePathEffect::Effect::acceptsNumClicks(type)); // we pass the mouse click on to pen tool as the first click which it should collect - //ret = ((SPEventContextClass *) sp_lpetool_context_parent_class)->root_handler(event_context, event); - ret = SPPenContext::root_handler(event); + //ret = ((ToolBaseClass *) sp_lpetool_context_parent_class)->root_handler(event_context, event); + ret = PenTool::root_handler(event); } break; @@ -259,7 +264,7 @@ bool SPLPEToolContext::root_handler(GdkEvent* event) { } if (!ret) { - ret = SPPenContext::root_handler(event); + ret = PenTool::root_handler(event); } return ret; @@ -283,7 +288,7 @@ lpetool_mode_to_index(Inkscape::LivePathEffect::EffectType const type) { * Checks whether an item has a construction applied as LPE and if so returns the index in * lpesubtools of this construction */ -int lpetool_item_has_construction(SPLPEToolContext */*lc*/, SPItem *item) +int lpetool_item_has_construction(LpeTool */*lc*/, SPItem *item) { if (!SP_IS_LPE_ITEM(item)) { return -1; @@ -301,7 +306,7 @@ int lpetool_item_has_construction(SPLPEToolContext */*lc*/, SPItem *item) * a single selected item. Returns whether we succeeded. */ bool -lpetool_try_construction(SPLPEToolContext *lc, Inkscape::LivePathEffect::EffectType const type) +lpetool_try_construction(LpeTool *lc, Inkscape::LivePathEffect::EffectType const type) { Inkscape::Selection *selection = sp_desktop_selection(lc->desktop); SPItem *item = selection->singleItem(); @@ -315,7 +320,7 @@ lpetool_try_construction(SPLPEToolContext *lc, Inkscape::LivePathEffect::EffectT } void -lpetool_context_switch_mode(SPLPEToolContext *lc, Inkscape::LivePathEffect::EffectType const type) +lpetool_context_switch_mode(LpeTool *lc, Inkscape::LivePathEffect::EffectType const type) { int index = lpetool_mode_to_index(type); if (index != -1) { @@ -347,7 +352,7 @@ lpetool_get_limiting_bbox_corners(SPDocument *document, Geom::Point &A, Geom::Po */ // TODO: Note that currently the bbox is not user-settable; we simply use the page borders void -lpetool_context_reset_limiting_bbox(SPLPEToolContext *lc) +lpetool_context_reset_limiting_bbox(LpeTool *lc) { if (lc->canvas_bbox) { sp_canvas_item_destroy(lc->canvas_bbox); @@ -391,7 +396,7 @@ set_pos_and_anchor(SPCanvasText *canvas_text, const Geom::Piecewisedesktop); @@ -434,7 +439,7 @@ lpetool_create_measuring_items(SPLPEToolContext *lc, Inkscape::Selection *select } void -lpetool_delete_measuring_items(SPLPEToolContext *lc) +lpetool_delete_measuring_items(LpeTool *lc) { std::map::iterator i; for (i = lc->measuring_items->begin(); i != lc->measuring_items->end(); ++i) { @@ -444,7 +449,7 @@ lpetool_delete_measuring_items(SPLPEToolContext *lc) } void -lpetool_update_measuring_items(SPLPEToolContext *lc) +lpetool_update_measuring_items(LpeTool *lc) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); for ( std::map::iterator i = lc->measuring_items->begin(); @@ -470,7 +475,7 @@ lpetool_update_measuring_items(SPLPEToolContext *lc) } void -lpetool_show_measuring_info(SPLPEToolContext *lc, bool show) +lpetool_show_measuring_info(LpeTool *lc, bool show) { std::map::iterator i; for (i = lc->measuring_items->begin(); i != lc->measuring_items->end(); ++i) { @@ -482,6 +487,10 @@ lpetool_show_measuring_info(SPLPEToolContext *lc, bool show) } } +} +} +} + /* Local Variables: mode:c++ diff --git a/src/lpe-tool-context.h b/src/lpe-tool-context.h index 0e9851cdb..8be416e9b 100644 --- a/src/lpe-tool-context.h +++ b/src/lpe-tool-context.h @@ -17,8 +17,8 @@ #include "pen-context.h" -#define SP_LPETOOL_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_LPETOOL_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_LPETOOL_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define SP_IS_LPETOOL_CONTEXT(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj) != NULL) /* This is the list of subtools from which the toolbar of the LPETool is built automatically */ extern const int num_subtools; @@ -41,10 +41,14 @@ class Selection; class ShapeEditor; -class SPLPEToolContext : public SPPenContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class LpeTool : public PenTool { public: - SPLPEToolContext(); - virtual ~SPLPEToolContext(); + LpeTool(); + virtual ~LpeTool(); ShapeEditor* shape_editor; SPCanvasItem *canvas_bbox; @@ -67,15 +71,19 @@ protected: }; int lpetool_mode_to_index(Inkscape::LivePathEffect::EffectType const type); -int lpetool_item_has_construction(SPLPEToolContext *lc, SPItem *item); -bool lpetool_try_construction(SPLPEToolContext *lc, Inkscape::LivePathEffect::EffectType const type); -void lpetool_context_switch_mode(SPLPEToolContext *lc, Inkscape::LivePathEffect::EffectType const type); +int lpetool_item_has_construction(LpeTool *lc, SPItem *item); +bool lpetool_try_construction(LpeTool *lc, Inkscape::LivePathEffect::EffectType const type); +void lpetool_context_switch_mode(LpeTool *lc, Inkscape::LivePathEffect::EffectType const type); void lpetool_get_limiting_bbox_corners(SPDocument *document, Geom::Point &A, Geom::Point &B); -void lpetool_context_reset_limiting_bbox(SPLPEToolContext *lc); -void lpetool_create_measuring_items(SPLPEToolContext *lc, Inkscape::Selection *selection = NULL); -void lpetool_delete_measuring_items(SPLPEToolContext *lc); -void lpetool_update_measuring_items(SPLPEToolContext *lc); -void lpetool_show_measuring_info(SPLPEToolContext *lc, bool show = true); +void lpetool_context_reset_limiting_bbox(LpeTool *lc); +void lpetool_create_measuring_items(LpeTool *lc, Inkscape::Selection *selection = NULL); +void lpetool_delete_measuring_items(LpeTool *lc); +void lpetool_update_measuring_items(LpeTool *lc); +void lpetool_show_measuring_info(LpeTool *lc, bool show = true); + +} +} +} #endif // SP_LPETOOL_CONTEXT_H_SEEN diff --git a/src/main.cpp b/src/main.cpp index 1c0f4cee7..29bc7f7e9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -917,6 +917,16 @@ static int sp_common_main( int argc, char const **argv, GSList **flDest ) return 0; } +namespace Inkscape { +namespace UI { +namespace Tools { + +guint get_group0_keyval(GdkEventKey* event); + +} +} +} + static void snooper(GdkEvent *event, gpointer /*data*/) { if (inkscape_mapalt()) /* returns the map of the keyboard modifier to map to Alt, zero if no mapping */ @@ -959,7 +969,7 @@ snooper(GdkEvent *event, gpointer /*data*/) { static gboolean altL_pressed = FALSE; static gboolean altR_pressed = FALSE; static gboolean alt_pressed = FALSE; - guint get_group0_keyval(GdkEventKey* event); + guint keyval = 0; switch (event->type) { case GDK_MOTION_NOTIFY: @@ -969,7 +979,7 @@ snooper(GdkEvent *event, gpointer /*data*/) { alt_pressed = TRUE && (event->button.state & GDK_MOD1_MASK); break; case GDK_KEY_PRESS: - keyval = get_group0_keyval(&event->key); + keyval = Inkscape::UI::Tools::get_group0_keyval(&event->key); if (keyval == GDK_KEY_Alt_L) altL_pressed = TRUE; if (keyval == GDK_KEY_Alt_R) altR_pressed = TRUE; alt_pressed = alt_pressed || altL_pressed || altR_pressed; @@ -980,7 +990,7 @@ snooper(GdkEvent *event, gpointer /*data*/) { event->key.state &= ~GDK_MOD1_MASK; break; case GDK_KEY_RELEASE: - keyval = get_group0_keyval(&event->key); + keyval = Inkscape::UI::Tools::get_group0_keyval(&event->key); if (keyval == GDK_KEY_Alt_L) altL_pressed = FALSE; if (keyval == GDK_KEY_Alt_R) altR_pressed = FALSE; if (!altL_pressed && !altR_pressed) diff --git a/src/measure-context.cpp b/src/measure-context.cpp index 7570e36e7..11161dc8f 100644 --- a/src/measure-context.cpp +++ b/src/measure-context.cpp @@ -48,24 +48,27 @@ using Inkscape::ControlManager; using Inkscape::CTLINE_SECONDARY; using Inkscape::Util::unit_table; -std::vector measure_tmp_items; +#include "tool-factory.h" +namespace Inkscape { +namespace UI { +namespace Tools { -#include "tool-factory.h" +std::vector measure_tmp_items; namespace { - SPEventContext* createMeasureContext() { - return new SPMeasureContext(); + ToolBase* createMeasureContext() { + return new MeasureTool(); } bool measureContextRegistered = ToolFactory::instance().registerObject("/tools/measure", createMeasureContext); } -const std::string& SPMeasureContext::getPrefsPath() { - return SPMeasureContext::prefsPath; +const std::string& MeasureTool::getPrefsPath() { + return MeasureTool::prefsPath; } -const std::string SPMeasureContext::prefsPath = "/tools/measure"; +const std::string MeasureTool::prefsPath = "/tools/measure"; namespace { @@ -233,7 +236,7 @@ void createAngleDisplayCurve(SPDesktop *desktop, Geom::Point const ¢er, Geom } // namespace -SPMeasureContext::SPMeasureContext() : SPEventContext() { +MeasureTool::MeasureTool() : ToolBase() { this->grabbed = 0; this->cursor_shape = cursor_measure_xpm; @@ -241,10 +244,10 @@ SPMeasureContext::SPMeasureContext() : SPEventContext() { this->hot_y = 4; } -SPMeasureContext::~SPMeasureContext() { +MeasureTool::~MeasureTool() { } -void SPMeasureContext::finish() { +void MeasureTool::finish() { this->enableGrDrag(false); if (this->grabbed) { @@ -253,22 +256,22 @@ void SPMeasureContext::finish() { } } -//void SPMeasureContext::setup() { -// SPEventContext* ec = this; +//void MeasureTool::setup() { +// ToolBase* ec = this; // //// if (SP_EVENT_CONTEXT_CLASS(sp_measure_context_parent_class)->setup) { //// SP_EVENT_CONTEXT_CLASS(sp_measure_context_parent_class)->setup(ec); //// } -// SPEventContext::setup(); +// ToolBase::setup(); //} -//gint SPMeasureContext::item_handler(SPItem* item, GdkEvent* event) { +//gint MeasureTool::item_handler(SPItem* item, GdkEvent* event) { // gint ret = FALSE; // //// if (SP_EVENT_CONTEXT_CLASS(sp_measure_context_parent_class)->item_handler) { //// ret = SP_EVENT_CONTEXT_CLASS(sp_measure_context_parent_class)->item_handler(event_context, item, event); //// } -// ret = SPEventContext::item_handler(item, event); +// ret = ToolBase::item_handler(item, event); // // return ret; //} @@ -308,7 +311,7 @@ static void calculate_intersections(SPDesktop * /*desktop*/, SPItem* item, Geom: } } -bool SPMeasureContext::root_handler(GdkEvent* event) { +bool MeasureTool::root_handler(GdkEvent* event) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); tolerance = prefs->getIntLimited("/options/dragtolerance/value", 0, 0, 100); @@ -752,12 +755,16 @@ bool SPMeasureContext::root_handler(GdkEvent* event) { } if (!ret) { - ret = SPEventContext::root_handler(event); + ret = ToolBase::root_handler(event); } return ret; } +} +} +} + /* Local Variables: mode:c++ diff --git a/src/measure-context.h b/src/measure-context.h index 7d5a88ab7..97f896e0b 100644 --- a/src/measure-context.h +++ b/src/measure-context.h @@ -16,13 +16,17 @@ #include <2geom/point.h> #include -#define SP_MEASURE_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_MEASURE_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_MEASURE_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define SP_IS_MEASURE_CONTEXT(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj) != NULL) -class SPMeasureContext : public SPEventContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class MeasureTool : public ToolBase { public: - SPMeasureContext(); - virtual ~SPMeasureContext(); + MeasureTool(); + virtual ~MeasureTool(); static const std::string prefsPath; @@ -39,4 +43,8 @@ private: boost::optional lastEnd; }; +} +} +} + #endif // SEEN_SP_MEASURING_CONTEXT_H diff --git a/src/mesh-context.cpp b/src/mesh-context.cpp index 142c3d2b1..6b5542e3f 100644 --- a/src/mesh-context.cpp +++ b/src/mesh-context.cpp @@ -53,26 +53,29 @@ using Inkscape::DocumentUndo; -static void sp_mesh_drag(SPMeshContext &rc, Geom::Point const pt, guint state, guint32 etime); +#include "tool-factory.h" +namespace Inkscape { +namespace UI { +namespace Tools { -#include "tool-factory.h" +static void sp_mesh_drag(MeshTool &rc, Geom::Point const pt, guint state, guint32 etime); namespace { - SPEventContext* createMeshContext() { - return new SPMeshContext(); + ToolBase* createMeshContext() { + return new MeshTool(); } bool meshContextRegistered = ToolFactory::instance().registerObject("/tools/mesh", createMeshContext); } -const std::string& SPMeshContext::getPrefsPath() { - return SPMeshContext::prefsPath; +const std::string& MeshTool::getPrefsPath() { + return MeshTool::prefsPath; } -const std::string SPMeshContext::prefsPath = "/tools/mesh"; +const std::string MeshTool::prefsPath = "/tools/mesh"; -SPMeshContext::SPMeshContext() : SPEventContext() { +MeshTool::MeshTool() : ToolBase() { this->selcon = 0; this->node_added = false; this->subselcon = 0; @@ -88,7 +91,7 @@ SPMeshContext::SPMeshContext() : SPEventContext() { this->item_to_select = NULL; } -SPMeshContext::~SPMeshContext() { +MeshTool::~MeshTool() { this->enableGrDrag(false); this->selcon->disconnect(); @@ -104,7 +107,7 @@ const gchar *ms_handle_descr [] = { N_("Mesh gradient tensor") }; -void SPMeshContext::selection_changed(Inkscape::Selection* /*sel*/) { +void MeshTool::selection_changed(Inkscape::Selection* /*sel*/) { GrDrag *drag = this->_grdrag; Inkscape::Selection *selection = sp_desktop_selection(this->desktop); @@ -224,8 +227,8 @@ void SPMeshContext::selection_changed(Inkscape::Selection* /*sel*/) { // } } -void SPMeshContext::setup() { - SPEventContext::setup(); +void MeshTool::setup() { + ToolBase::setup(); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); if (prefs->getBool("/tools/mesh/selcue", true)) { @@ -236,12 +239,12 @@ void SPMeshContext::setup() { Inkscape::Selection *selection = sp_desktop_selection(this->desktop); this->selcon = new sigc::connection(selection->connectChanged( - sigc::mem_fun(this, &SPMeshContext::selection_changed) + sigc::mem_fun(this, &MeshTool::selection_changed) )); this->subselcon = new sigc::connection(this->desktop->connectToolSubselectionChanged( sigc::hide(sigc::bind( - sigc::mem_fun(*this, &SPMeshContext::selection_changed), + sigc::mem_fun(*this, &MeshTool::selection_changed), (Inkscape::Selection*)NULL) ) )); @@ -250,7 +253,7 @@ void SPMeshContext::setup() { } void -sp_mesh_context_select_next (SPEventContext *event_context) +sp_mesh_context_select_next (ToolBase *event_context) { GrDrag *drag = event_context->_grdrag; g_assert (drag); @@ -261,7 +264,7 @@ sp_mesh_context_select_next (SPEventContext *event_context) } void -sp_mesh_context_select_prev (SPEventContext *event_context) +sp_mesh_context_select_prev (ToolBase *event_context) { GrDrag *drag = event_context->_grdrag; g_assert (drag); @@ -275,7 +278,7 @@ sp_mesh_context_select_prev (SPEventContext *event_context) Returns true if mouse cursor over mesh edge. */ static bool -sp_mesh_context_is_over_line (SPMeshContext *rc, SPItem *item, Geom::Point event_p) +sp_mesh_context_is_over_line (MeshTool *rc, SPItem *item, Geom::Point event_p) { SPDesktop *desktop = SP_EVENT_CONTEXT (rc)->desktop; @@ -300,7 +303,7 @@ sp_mesh_context_is_over_line (SPMeshContext *rc, SPItem *item, Geom::Point event /** Split row/column near the mouse point. */ -static void sp_mesh_context_split_near_point(SPMeshContext *rc, SPItem *item, Geom::Point mouse_p, guint32 /*etime*/) +static void sp_mesh_context_split_near_point(MeshTool *rc, SPItem *item, Geom::Point mouse_p, guint32 /*etime*/) { #ifdef DEBUG_MESH @@ -309,7 +312,7 @@ static void sp_mesh_context_split_near_point(SPMeshContext *rc, SPItem *item, G // item is the selected item. mouse_p the location in doc coordinates of where to add the stop - SPEventContext *ec = SP_EVENT_CONTEXT(rc); + ToolBase *ec = SP_EVENT_CONTEXT(rc); SPDesktop *desktop = SP_EVENT_CONTEXT (rc)->desktop; double tolerance = (double) ec->tolerance; @@ -326,7 +329,7 @@ static void sp_mesh_context_split_near_point(SPMeshContext *rc, SPItem *item, G Wrapper for various mesh operations that require a list of selected corner nodes. */ static void -sp_mesh_context_corner_operation (SPMeshContext *rc, MeshCornerOperation operation ) +sp_mesh_context_corner_operation (MeshTool *rc, MeshCornerOperation operation ) { #ifdef DEBUG_MESH @@ -436,7 +439,7 @@ sp_mesh_context_corner_operation (SPMeshContext *rc, MeshCornerOperation operati /** Handles all keyboard and mouse input for meshs. */ -bool SPMeshContext::root_handler(GdkEvent* event) { +bool MeshTool::root_handler(GdkEvent* event) { static bool dragging; Inkscape::Selection *selection = sp_desktop_selection (desktop); @@ -924,17 +927,17 @@ bool SPMeshContext::root_handler(GdkEvent* event) { } if (!ret) { - ret = SPEventContext::root_handler(event); + ret = ToolBase::root_handler(event); } return ret; } -static void sp_mesh_drag(SPMeshContext &rc, Geom::Point const /*pt*/, guint /*state*/, guint32 /*etime*/) { +static void sp_mesh_drag(MeshTool &rc, Geom::Point const /*pt*/, guint /*state*/, guint32 /*etime*/) { SPDesktop *desktop = SP_EVENT_CONTEXT(&rc)->desktop; Inkscape::Selection *selection = sp_desktop_selection(desktop); SPDocument *document = sp_desktop_document(desktop); - SPEventContext *ec = SP_EVENT_CONTEXT(&rc); + ToolBase *ec = SP_EVENT_CONTEXT(&rc); if (!selection->isEmpty()) { @@ -998,6 +1001,9 @@ static void sp_mesh_drag(SPMeshContext &rc, Geom::Point const /*pt*/, guint /*st } +} +} +} /* Local Variables: diff --git a/src/mesh-context.h b/src/mesh-context.h index 531587654..a8c35e4d8 100644 --- a/src/mesh-context.h +++ b/src/mesh-context.h @@ -21,13 +21,17 @@ #include #include "event-context.h" -#define SP_MESH_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_MESH_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_MESH_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define SP_IS_MESH_CONTEXT(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj) != NULL) -class SPMeshContext : public SPEventContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class MeshTool : public ToolBase { public: - SPMeshContext(); - virtual ~SPMeshContext(); + MeshTool(); + virtual ~MeshTool(); Geom::Point origin; @@ -51,8 +55,12 @@ private: void selection_changed(Inkscape::Selection* sel); }; -void sp_mesh_context_select_next(SPEventContext *event_context); -void sp_mesh_context_select_prev(SPEventContext *event_context); +void sp_mesh_context_select_next(ToolBase *event_context); +void sp_mesh_context_select_prev(ToolBase *event_context); + +} +} +} #endif // SEEN_SP_MESH_CONTEXT_H diff --git a/src/pen-context.cpp b/src/pen-context.cpp index 428ebd6d9..726034fac 100644 --- a/src/pen-context.cpp +++ b/src/pen-context.cpp @@ -42,52 +42,54 @@ #include "context-fns.h" #include "tools-switch.h" #include "ui/control-manager.h" +#include "tool-factory.h" using Inkscape::ControlManager; -static void spdc_pen_set_initial_point(SPPenContext *pc, Geom::Point const p); -static void spdc_pen_set_subsequent_point(SPPenContext *const pc, Geom::Point const p, bool statusbar, guint status = 0); -static void spdc_pen_set_ctrl(SPPenContext *pc, Geom::Point const p, guint state); -static void spdc_pen_finish_segment(SPPenContext *pc, Geom::Point p, guint state); +namespace Inkscape { +namespace UI { +namespace Tools { + +static void spdc_pen_set_initial_point(PenTool *pc, Geom::Point const p); +static void spdc_pen_set_subsequent_point(PenTool *const pc, Geom::Point const p, bool statusbar, guint status = 0); +static void spdc_pen_set_ctrl(PenTool *pc, Geom::Point const p, guint state); +static void spdc_pen_finish_segment(PenTool *pc, Geom::Point p, guint state); -static void spdc_pen_finish(SPPenContext *pc, gboolean closed); +static void spdc_pen_finish(PenTool *pc, gboolean closed); -static gint pen_handle_button_press(SPPenContext *const pc, GdkEventButton const &bevent); -static gint pen_handle_motion_notify(SPPenContext *const pc, GdkEventMotion const &mevent); -static gint pen_handle_button_release(SPPenContext *const pc, GdkEventButton const &revent); -static gint pen_handle_2button_press(SPPenContext *const pc, GdkEventButton const &bevent); -static gint pen_handle_key_press(SPPenContext *const pc, GdkEvent *event); -static void spdc_reset_colors(SPPenContext *pc); +static gint pen_handle_button_press(PenTool *const pc, GdkEventButton const &bevent); +static gint pen_handle_motion_notify(PenTool *const pc, GdkEventMotion const &mevent); +static gint pen_handle_button_release(PenTool *const pc, GdkEventButton const &revent); +static gint pen_handle_2button_press(PenTool *const pc, GdkEventButton const &bevent); +static gint pen_handle_key_press(PenTool *const pc, GdkEvent *event); +static void spdc_reset_colors(PenTool *pc); -static void pen_disable_events(SPPenContext *const pc); -static void pen_enable_events(SPPenContext *const pc); +static void pen_disable_events(PenTool *const pc); +static void pen_enable_events(PenTool *const pc); static Geom::Point pen_drag_origin_w(0, 0); static bool pen_within_tolerance = false; -static int pen_next_paraxial_direction(const SPPenContext *const pc, Geom::Point const &pt, Geom::Point const &origin, guint state); -static void pen_set_to_nearest_horiz_vert(const SPPenContext *const pc, Geom::Point &pt, guint const state, bool snap); +static int pen_next_paraxial_direction(const PenTool *const pc, Geom::Point const &pt, Geom::Point const &origin, guint state); +static void pen_set_to_nearest_horiz_vert(const PenTool *const pc, Geom::Point &pt, guint const state, bool snap); static int pen_last_paraxial_dir = 0; // last used direction in horizontal/vertical mode; 0 = horizontal, 1 = vertical - -#include "tool-factory.h" - namespace { - SPEventContext* createPenContext() { - return new SPPenContext(); + ToolBase* createPenContext() { + return new PenTool(); } bool penContextRegistered = ToolFactory::instance().registerObject("/tools/freehand/pen", createPenContext); } -const std::string& SPPenContext::getPrefsPath() { - return SPPenContext::prefsPath; +const std::string& PenTool::getPrefsPath() { + return PenTool::prefsPath; } -const std::string SPPenContext::prefsPath = "/tools/freehand/pen"; +const std::string PenTool::prefsPath = "/tools/freehand/pen"; -SPPenContext::SPPenContext() : SPDrawContext() { +PenTool::PenTool() : SPDrawContext() { this->polylines_only = false; this->polylines_paraxial = false; this->expecting_clicks_for_LPE = 0; @@ -112,7 +114,7 @@ SPPenContext::SPPenContext() : SPDrawContext() { this->waiting_item = NULL; } -SPPenContext::~SPPenContext() { +PenTool::~PenTool() { if (this->c0) { sp_canvas_item_destroy(this->c0); this->c0 = NULL; @@ -136,7 +138,7 @@ SPPenContext::~SPPenContext() { } } -void sp_pen_context_set_polyline_mode(SPPenContext *const pc) { +void sp_pen_context_set_polyline_mode(PenTool *const pc) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); guint mode = prefs->getInt("/tools/freehand/pen/freehand-mode", 0); pc->polylines_only = (mode == 2 || mode == 3); @@ -144,9 +146,9 @@ void sp_pen_context_set_polyline_mode(SPPenContext *const pc) { } /** - * Callback to initialize SPPenContext object. + * Callback to initialize PenTool object. */ -void SPPenContext::setup() { +void PenTool::setup() { SPDrawContext::setup(); ControlManager &mgr = ControlManager::getManager(); @@ -178,10 +180,10 @@ void SPPenContext::setup() { } } -static void pen_cancel (SPPenContext *const pc) +static void pen_cancel (PenTool *const pc) { pc->num_clicks = 0; - pc->state = SPPenContext::STOP; + pc->state = PenTool::STOP; spdc_reset_colors(pc); sp_canvas_item_hide(pc->c0); sp_canvas_item_hide(pc->c1); @@ -196,7 +198,7 @@ static void pen_cancel (SPPenContext *const pc) /** * Finalization callback. */ -void SPPenContext::finish() { +void PenTool::finish() { sp_event_context_discard_delayed_snap_event(this); if (this->npoints != 0) { @@ -209,7 +211,7 @@ void SPPenContext::finish() { /** * Callback that sets key to value in pen context. */ -void SPPenContext::set(const Inkscape::Preferences::Entry& val) { +void PenTool::set(const Inkscape::Preferences::Entry& val) { Glib::ustring name = val.getEntryName(); if (name == "mode") { @@ -224,7 +226,7 @@ void SPPenContext::set(const Inkscape::Preferences::Entry& val) { /** * Snaps new node relative to the previous node. */ -static void spdc_endpoint_snap(SPPenContext const *const pc, Geom::Point &p, guint const state) +static void spdc_endpoint_snap(PenTool const *const pc, Geom::Point &p, guint const state) { if ((state & GDK_CONTROL_MASK) && !pc->polylines_paraxial) { //CTRL enables angular snapping if (pc->npoints > 0) { @@ -248,7 +250,7 @@ static void spdc_endpoint_snap(SPPenContext const *const pc, Geom::Point &p, gui /** * Snaps new node's handle relative to the new node. */ -static void spdc_endpoint_snap_handle(SPPenContext const *const pc, Geom::Point &p, guint const state) +static void spdc_endpoint_snap_handle(PenTool const *const pc, Geom::Point &p, guint const state) { g_return_if_fail(( pc->npoints == 2 || pc->npoints == 5 )); @@ -263,7 +265,7 @@ static void spdc_endpoint_snap_handle(SPPenContext const *const pc, Geom::Point } } -bool SPPenContext::item_handler(SPItem* item, GdkEvent* event) { +bool PenTool::item_handler(SPItem* item, GdkEvent* event) { gint ret = FALSE; switch (event->type) { @@ -287,7 +289,7 @@ bool SPPenContext::item_handler(SPItem* item, GdkEvent* event) { /** * Callback to handle all pen events. */ -bool SPPenContext::root_handler(GdkEvent* event) { +bool PenTool::root_handler(GdkEvent* event) { gint ret = FALSE; switch (event->type) { @@ -325,7 +327,7 @@ bool SPPenContext::root_handler(GdkEvent* event) { /** * Handle mouse button press event. */ -static gint pen_handle_button_press(SPPenContext *const pc, GdkEventButton const &bevent) +static gint pen_handle_button_press(PenTool *const pc, GdkEventButton const &bevent) { if (pc->events_disabled) { // skip event processing if events are disabled @@ -336,7 +338,7 @@ static gint pen_handle_button_press(SPPenContext *const pc, GdkEventButton const SPDesktop * const desktop = SP_EVENT_CONTEXT_DESKTOP(dc); Geom::Point const event_w(bevent.x, bevent.y); Geom::Point event_dt(desktop->w2d(event_w)); - SPEventContext *event_context = SP_EVENT_CONTEXT(pc); + ToolBase *event_context = SP_EVENT_CONTEXT(pc); gint ret = FALSE; if (bevent.button == 1 && !event_context->space_panning @@ -363,26 +365,26 @@ static gint pen_handle_button_press(SPPenContext *const pc, GdkEventButton const SPDrawAnchor * const anchor = spdc_test_inside(pc, event_w); switch (pc->mode) { - case SPPenContext::MODE_CLICK: + case PenTool::MODE_CLICK: // In click mode we add point on release switch (pc->state) { - case SPPenContext::POINT: - case SPPenContext::CONTROL: - case SPPenContext::CLOSE: + case PenTool::POINT: + case PenTool::CONTROL: + case PenTool::CLOSE: break; - case SPPenContext::STOP: + case PenTool::STOP: // This is allowed, if we just canceled curve - pc->state = SPPenContext::POINT; + pc->state = PenTool::POINT; break; default: break; } break; - case SPPenContext::MODE_DRAG: + case PenTool::MODE_DRAG: switch (pc->state) { - case SPPenContext::STOP: + case PenTool::STOP: // This is allowed, if we just canceled curve - case SPPenContext::POINT: + case PenTool::POINT: if (pc->npoints == 0) { Geom::Point p; @@ -438,7 +440,7 @@ static gint pen_handle_button_press(SPPenContext *const pc, GdkEventButton const p = anchor->dp; // we hit an anchor, will finish the curve (either with or without closing) // in release handler - pc->state = SPPenContext::CLOSE; + pc->state = PenTool::CLOSE; if (pc->green_anchor && pc->green_anchor->active) { // we clicked on the current curve start, so close it even if @@ -455,13 +457,13 @@ static gint pen_handle_button_press(SPPenContext *const pc, GdkEventButton const } } - pc->state = pc->polylines_only ? SPPenContext::POINT : SPPenContext::CONTROL; + pc->state = pc->polylines_only ? PenTool::POINT : PenTool::CONTROL; ret = TRUE; break; - case SPPenContext::CONTROL: + case PenTool::CONTROL: g_warning("Button down in CONTROL state"); break; - case SPPenContext::CLOSE: + case PenTool::CLOSE: g_warning("Button down in CLOSE state"); break; default: @@ -499,11 +501,11 @@ static gint pen_handle_button_press(SPPenContext *const pc, GdkEventButton const /** * Handle motion_notify event. */ -static gint pen_handle_motion_notify(SPPenContext *const pc, GdkEventMotion const &mevent) +static gint pen_handle_motion_notify(PenTool *const pc, GdkEventMotion const &mevent) { gint ret = FALSE; - SPEventContext *event_context = SP_EVENT_CONTEXT(pc); + ToolBase *event_context = SP_EVENT_CONTEXT(pc); SPDesktop * const dt = SP_EVENT_CONTEXT_DESKTOP(event_context); if (event_context->space_panning || mevent.state & GDK_BUTTON2_MASK || mevent.state & GDK_BUTTON3_MASK) { @@ -537,9 +539,9 @@ static gint pen_handle_motion_notify(SPPenContext *const pc, GdkEventMotion cons SPDrawAnchor *anchor = spdc_test_inside(pc, event_w); switch (pc->mode) { - case SPPenContext::MODE_CLICK: + case PenTool::MODE_CLICK: switch (pc->state) { - case SPPenContext::POINT: + case PenTool::POINT: if ( pc->npoints != 0 ) { // Only set point, if we are already appending spdc_endpoint_snap(pc, p, mevent.state); @@ -552,23 +554,23 @@ static gint pen_handle_motion_notify(SPPenContext *const pc, GdkEventMotion cons m.unSetup(); } break; - case SPPenContext::CONTROL: - case SPPenContext::CLOSE: + case PenTool::CONTROL: + case PenTool::CLOSE: // Placing controls is last operation in CLOSE state spdc_endpoint_snap(pc, p, mevent.state); spdc_pen_set_ctrl(pc, p, mevent.state); ret = TRUE; break; - case SPPenContext::STOP: + case PenTool::STOP: // This is perfectly valid break; default: break; } break; - case SPPenContext::MODE_DRAG: + case PenTool::MODE_DRAG: switch (pc->state) { - case SPPenContext::POINT: + case PenTool::POINT: if ( pc->npoints > 0 ) { // Only set point, if we are already appending @@ -604,8 +606,8 @@ static gint pen_handle_motion_notify(SPPenContext *const pc, GdkEventMotion cons } } break; - case SPPenContext::CONTROL: - case SPPenContext::CLOSE: + case PenTool::CONTROL: + case PenTool::CLOSE: // Placing controls is last operation in CLOSE state // snap the handle @@ -619,7 +621,7 @@ static gint pen_handle_motion_notify(SPPenContext *const pc, GdkEventMotion cons gobble_motion_events(GDK_BUTTON1_MASK); ret = TRUE; break; - case SPPenContext::STOP: + case PenTool::STOP: // This is perfectly valid break; default: @@ -641,7 +643,7 @@ static gint pen_handle_motion_notify(SPPenContext *const pc, GdkEventMotion cons /** * Handle mouse button release event. */ -static gint pen_handle_button_release(SPPenContext *const pc, GdkEventButton const &revent) +static gint pen_handle_button_release(PenTool *const pc, GdkEventButton const &revent) { if (pc->events_disabled) { // skip event processing if events are disabled @@ -649,7 +651,7 @@ static gint pen_handle_button_release(SPPenContext *const pc, GdkEventButton con } gint ret = FALSE; - SPEventContext *event_context = SP_EVENT_CONTEXT(pc); + ToolBase *event_context = SP_EVENT_CONTEXT(pc); if ( revent.button == 1 && !event_context->space_panning) { SPDrawContext *dc = SP_DRAW_CONTEXT (pc); @@ -663,9 +665,9 @@ static gint pen_handle_button_release(SPPenContext *const pc, GdkEventButton con SPDrawAnchor *anchor = spdc_test_inside(pc, event_w); switch (pc->mode) { - case SPPenContext::MODE_CLICK: + case PenTool::MODE_CLICK: switch (pc->state) { - case SPPenContext::POINT: + case PenTool::POINT: if ( pc->npoints == 0 ) { // Start new thread only with button release if (anchor) { @@ -680,43 +682,43 @@ static gint pen_handle_button_release(SPPenContext *const pc, GdkEventButton con p = anchor->dp; } } - pc->state = SPPenContext::CONTROL; + pc->state = PenTool::CONTROL; ret = TRUE; break; - case SPPenContext::CONTROL: + case PenTool::CONTROL: // End current segment spdc_endpoint_snap(pc, p, revent.state); spdc_pen_finish_segment(pc, p, revent.state); - pc->state = SPPenContext::POINT; + pc->state = PenTool::POINT; ret = TRUE; break; - case SPPenContext::CLOSE: + case PenTool::CLOSE: // End current segment if (!anchor) { // Snap node only if not hitting anchor spdc_endpoint_snap(pc, p, revent.state); } spdc_pen_finish_segment(pc, p, revent.state); spdc_pen_finish(pc, TRUE); - pc->state = SPPenContext::POINT; + pc->state = PenTool::POINT; ret = TRUE; break; - case SPPenContext::STOP: + case PenTool::STOP: // This is allowed, if we just canceled curve - pc->state = SPPenContext::POINT; + pc->state = PenTool::POINT; ret = TRUE; break; default: break; } break; - case SPPenContext::MODE_DRAG: + case PenTool::MODE_DRAG: switch (pc->state) { - case SPPenContext::POINT: - case SPPenContext::CONTROL: + case PenTool::POINT: + case PenTool::CONTROL: spdc_endpoint_snap(pc, p, revent.state); spdc_pen_finish_segment(pc, p, revent.state); break; - case SPPenContext::CLOSE: + case PenTool::CLOSE: spdc_endpoint_snap(pc, p, revent.state); spdc_pen_finish_segment(pc, p, revent.state); if (pc->green_closed) { @@ -727,13 +729,13 @@ static gint pen_handle_button_release(SPPenContext *const pc, GdkEventButton con spdc_pen_finish(pc, FALSE); } break; - case SPPenContext::STOP: + case PenTool::STOP: // This is allowed, if we just cancelled curve break; default: break; } - pc->state = SPPenContext::POINT; + pc->state = PenTool::POINT; ret = TRUE; break; default: @@ -756,7 +758,7 @@ static gint pen_handle_button_release(SPPenContext *const pc, GdkEventButton con if (pc->expecting_clicks_for_LPE == 0 && sp_pen_context_has_waiting_LPE(pc)) { sp_pen_context_set_polyline_mode(pc); - SPEventContext *ec = SP_EVENT_CONTEXT(pc); + ToolBase *ec = SP_EVENT_CONTEXT(pc); Inkscape::Selection *selection = sp_desktop_selection (ec->desktop); if (pc->waiting_LPE) { @@ -773,7 +775,7 @@ static gint pen_handle_button_release(SPPenContext *const pc, GdkEventButton con return ret; } -static gint pen_handle_2button_press(SPPenContext *const pc, GdkEventButton const &bevent) +static gint pen_handle_2button_press(PenTool *const pc, GdkEventButton const &bevent) { gint ret = FALSE; // only end on LMB double click. Otherwise horizontal scrolling causes ending of the path @@ -784,7 +786,7 @@ static gint pen_handle_2button_press(SPPenContext *const pc, GdkEventButton cons return ret; } -static void pen_redraw_all (SPPenContext *const pc) +static void pen_redraw_all (PenTool *const pc) { // green if (pc->green_bpaths) { @@ -838,7 +840,7 @@ static void pen_redraw_all (SPPenContext *const pc) } } -static void pen_lastpoint_move (SPPenContext *const pc, gdouble x, gdouble y) +static void pen_lastpoint_move (PenTool *const pc, gdouble x, gdouble y) { if (pc->npoints != 5) return; @@ -859,12 +861,12 @@ static void pen_lastpoint_move (SPPenContext *const pc, gdouble x, gdouble y) pen_redraw_all(pc); } -static void pen_lastpoint_move_screen (SPPenContext *const pc, gdouble x, gdouble y) +static void pen_lastpoint_move_screen (PenTool *const pc, gdouble x, gdouble y) { pen_lastpoint_move (pc, x / pc->desktop->current_zoom(), y / pc->desktop->current_zoom()); } -static void pen_lastpoint_tocurve (SPPenContext *const pc) +static void pen_lastpoint_tocurve (PenTool *const pc) { if (pc->npoints != 5) return; @@ -879,7 +881,7 @@ static void pen_lastpoint_tocurve (SPPenContext *const pc) pen_redraw_all(pc); } -static void pen_lastpoint_toline (SPPenContext *const pc) +static void pen_lastpoint_toline (PenTool *const pc) { if (pc->npoints != 5) return; @@ -890,7 +892,7 @@ static void pen_lastpoint_toline (SPPenContext *const pc) } -static gint pen_handle_key_press(SPPenContext *const pc, GdkEvent *event) +static gint pen_handle_key_press(PenTool *const pc, GdkEvent *event) { gint ret = FALSE; @@ -1075,7 +1077,7 @@ static gint pen_handle_key_press(SPPenContext *const pc, GdkEvent *event) sp_canvas_item_hide(pc->c1); sp_canvas_item_hide(pc->cl0); sp_canvas_item_hide(pc->cl1); - pc->state = SPPenContext::POINT; + pc->state = PenTool::POINT; spdc_pen_set_subsequent_point(pc, pt, true); pen_last_paraxial_dir = !pen_last_paraxial_dir; ret = TRUE; @@ -1087,7 +1089,7 @@ static gint pen_handle_key_press(SPPenContext *const pc, GdkEvent *event) return ret; } -static void spdc_reset_colors(SPPenContext *pc) +static void spdc_reset_colors(PenTool *pc) { // Red pc->red_curve->reset(); @@ -1111,7 +1113,7 @@ static void spdc_reset_colors(SPPenContext *pc) } -static void spdc_pen_set_initial_point(SPPenContext *const pc, Geom::Point const p) +static void spdc_pen_set_initial_point(PenTool *const pc, Geom::Point const p) { g_assert( pc->npoints == 0 ); @@ -1128,7 +1130,7 @@ static void spdc_pen_set_initial_point(SPPenContext *const pc, Geom::Point const * This type of message always shows angle/distance as the last * two parameters ("angle %3.2f°, distance %s"). */ -static void spdc_pen_set_angle_distance_status_message(SPPenContext *const pc, Geom::Point const p, int pc_point_to_compare, gchar const *message) +static void spdc_pen_set_angle_distance_status_message(PenTool *const pc, Geom::Point const p, int pc_point_to_compare, gchar const *message) { g_assert(pc != NULL); g_assert((pc_point_to_compare == 0) || (pc_point_to_compare == 3)); // exclude control handles @@ -1151,7 +1153,7 @@ static void spdc_pen_set_angle_distance_status_message(SPPenContext *const pc, G g_string_free(dist, FALSE); } -static void spdc_pen_set_subsequent_point(SPPenContext *const pc, Geom::Point const p, bool statusbar, guint status) +static void spdc_pen_set_subsequent_point(PenTool *const pc, Geom::Point const p, bool statusbar, guint status) { g_assert( pc->npoints != 0 ); // todo: Check callers to see whether 2 <= npoints is guaranteed. @@ -1196,7 +1198,7 @@ static void spdc_pen_set_subsequent_point(SPPenContext *const pc, Geom::Point co } } -static void spdc_pen_set_ctrl(SPPenContext *const pc, Geom::Point const p, guint const state) +static void spdc_pen_set_ctrl(PenTool *const pc, Geom::Point const p, guint const state) { sp_canvas_item_show(pc->c1); sp_canvas_item_show(pc->cl1); @@ -1214,8 +1216,8 @@ static void spdc_pen_set_ctrl(SPPenContext *const pc, Geom::Point const p, guint sp_canvas_item_show(pc->c0); sp_canvas_item_show(pc->cl0); bool is_symm = false; - if ( ( ( pc->mode == SPPenContext::MODE_CLICK ) && ( state & GDK_CONTROL_MASK ) ) || - ( ( pc->mode == SPPenContext::MODE_DRAG ) && !( state & GDK_SHIFT_MASK ) ) ) { + if ( ( ( pc->mode == PenTool::MODE_CLICK ) && ( state & GDK_CONTROL_MASK ) ) || + ( ( pc->mode == PenTool::MODE_DRAG ) && !( state & GDK_SHIFT_MASK ) ) ) { Geom::Point delta = p - pc->p[3]; pc->p[2] = pc->p[3] - delta; is_symm = true; @@ -1238,7 +1240,7 @@ static void spdc_pen_set_ctrl(SPPenContext *const pc, Geom::Point const p, guint } } -static void spdc_pen_finish_segment(SPPenContext *const pc, Geom::Point const p, guint const state) +static void spdc_pen_finish_segment(PenTool *const pc, Geom::Point const p, guint const state) { if (pc->polylines_paraxial) { pen_last_paraxial_dir = pen_next_paraxial_direction(pc, p, pc->p[0], state); @@ -1264,7 +1266,7 @@ static void spdc_pen_finish_segment(SPPenContext *const pc, Geom::Point const p, } } -static void spdc_pen_finish(SPPenContext *const pc, gboolean const closed) +static void spdc_pen_finish(PenTool *const pc, gboolean const closed) { if (pc->expecting_clicks_for_LPE > 1) { // don't let the path be finished before we have collected the required number of mouse clicks @@ -1285,7 +1287,7 @@ static void spdc_pen_finish(SPPenContext *const pc, gboolean const closed) pc->ea = NULL; pc->npoints = 0; - pc->state = SPPenContext::POINT; + pc->state = PenTool::POINT; sp_canvas_item_hide(pc->c0); sp_canvas_item_hide(pc->c1); @@ -1302,17 +1304,17 @@ static void spdc_pen_finish(SPPenContext *const pc, gboolean const closed) pen_enable_events(pc); } -static void pen_disable_events(SPPenContext *const pc) { +static void pen_disable_events(PenTool *const pc) { pc->events_disabled++; } -static void pen_enable_events(SPPenContext *const pc) { +static void pen_enable_events(PenTool *const pc) { g_return_if_fail(pc->events_disabled != 0); pc->events_disabled--; } -void sp_pen_context_wait_for_LPE_mouse_clicks(SPPenContext *pc, Inkscape::LivePathEffect::EffectType effect_type, +void sp_pen_context_wait_for_LPE_mouse_clicks(PenTool *pc, Inkscape::LivePathEffect::EffectType effect_type, unsigned int num_clicks, bool use_polylines) { if (effect_type == Inkscape::LivePathEffect::INVALID_LPE) @@ -1324,14 +1326,14 @@ void sp_pen_context_wait_for_LPE_mouse_clicks(SPPenContext *pc, Inkscape::LivePa pc->polylines_paraxial = false; // TODO: think if this is correct for all cases } -void sp_pen_context_cancel_waiting_for_LPE(SPPenContext *pc) +void sp_pen_context_cancel_waiting_for_LPE(PenTool *pc) { pc->waiting_LPE_type = Inkscape::LivePathEffect::INVALID_LPE; pc->expecting_clicks_for_LPE = 0; sp_pen_context_set_polyline_mode(pc); } -static int pen_next_paraxial_direction(const SPPenContext *const pc, +static int pen_next_paraxial_direction(const PenTool *const pc, Geom::Point const &pt, Geom::Point const &origin, guint state) { // // after the first mouse click we determine whether the mouse pointer is closest to a @@ -1355,7 +1357,7 @@ static int pen_next_paraxial_direction(const SPPenContext *const pc, } } -void pen_set_to_nearest_horiz_vert(const SPPenContext *const pc, Geom::Point &pt, guint const state, bool snap) +void pen_set_to_nearest_horiz_vert(const PenTool *const pc, Geom::Point &pt, guint const state, bool snap) { Geom::Point const origin = pc->p[0]; @@ -1386,6 +1388,10 @@ void pen_set_to_nearest_horiz_vert(const SPPenContext *const pc, Geom::Point &pt } } +} +} +} + /* Local Variables: mode:c++ diff --git a/src/pen-context.h b/src/pen-context.h index c096865f1..9c84ee540 100644 --- a/src/pen-context.h +++ b/src/pen-context.h @@ -2,24 +2,28 @@ #define SEEN_PEN_CONTEXT_H /** \file - * SPPenContext: a context for pen tool events. + * PenTool: a context for pen tool events. */ #include "draw-context.h" #include "live_effects/effect.h" -#define SP_PEN_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_PEN_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_PEN_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define SP_IS_PEN_CONTEXT(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj) != NULL) struct SPCtrlLine; +namespace Inkscape { +namespace UI { +namespace Tools { + /** - * SPPenContext: a context for pen tool events. + * PenTool: a context for pen tool events. */ -class SPPenContext : public SPDrawContext { +class PenTool : public SPDrawContext { public: - SPPenContext(); - virtual ~SPPenContext(); + PenTool(); + virtual ~PenTool(); enum Mode { MODE_CLICK, @@ -70,19 +74,23 @@ protected: virtual bool item_handler(SPItem* item, GdkEvent* event); }; -inline bool sp_pen_context_has_waiting_LPE(SPPenContext *pc) { +inline bool sp_pen_context_has_waiting_LPE(PenTool *pc) { // note: waiting_LPE_type is defined in SPDrawContext return (pc->waiting_LPE != NULL || pc->waiting_LPE_type != Inkscape::LivePathEffect::INVALID_LPE); } -void sp_pen_context_set_polyline_mode(SPPenContext *const pc); -void sp_pen_context_wait_for_LPE_mouse_clicks(SPPenContext *pc, Inkscape::LivePathEffect::EffectType effect_type, +void sp_pen_context_set_polyline_mode(PenTool *const pc); +void sp_pen_context_wait_for_LPE_mouse_clicks(PenTool *pc, Inkscape::LivePathEffect::EffectType effect_type, unsigned int num_clicks, bool use_polylines = true); -void sp_pen_context_cancel_waiting_for_LPE(SPPenContext *pc); +void sp_pen_context_cancel_waiting_for_LPE(PenTool *pc); void sp_pen_context_put_into_waiting_mode(SPDesktop *desktop, Inkscape::LivePathEffect::EffectType effect_type, unsigned int num_clicks, bool use_polylines = true); +} +} +} + #endif /* !SEEN_PEN_CONTEXT_H */ /* diff --git a/src/pencil-context.cpp b/src/pencil-context.cpp index abd9af1d3..bd9dac5dc 100644 --- a/src/pencil-context.cpp +++ b/src/pencil-context.cpp @@ -44,43 +44,46 @@ #include "display/sp-canvas.h" #include "display/curve.h" #include "livarot/Path.h" +#include "tool-factory.h" + +namespace Inkscape { +namespace UI { +namespace Tools { -static gint pencil_handle_button_press(SPPencilContext *const pc, GdkEventButton const &bevent); -static gint pencil_handle_motion_notify(SPPencilContext *const pc, GdkEventMotion const &mevent); -static gint pencil_handle_button_release(SPPencilContext *const pc, GdkEventButton const &revent); -static gint pencil_handle_key_press(SPPencilContext *const pc, guint const keyval, guint const state); -static gint pencil_handle_key_release(SPPencilContext *const pc, guint const keyval, guint const state); +static gint pencil_handle_button_press(PencilTool *const pc, GdkEventButton const &bevent); +static gint pencil_handle_motion_notify(PencilTool *const pc, GdkEventMotion const &mevent); +static gint pencil_handle_button_release(PencilTool *const pc, GdkEventButton const &revent); +static gint pencil_handle_key_press(PencilTool *const pc, guint const keyval, guint const state); +static gint pencil_handle_key_release(PencilTool *const pc, guint const keyval, guint const state); -static void spdc_set_startpoint(SPPencilContext *pc, Geom::Point const &p); -static void spdc_set_endpoint(SPPencilContext *pc, Geom::Point const &p); -static void spdc_finish_endpoint(SPPencilContext *pc); -static void spdc_add_freehand_point(SPPencilContext *pc, Geom::Point const &p, guint state); -static void fit_and_split(SPPencilContext *pc); -static void interpolate(SPPencilContext *pc); -static void sketch_interpolate(SPPencilContext *pc); +static void spdc_set_startpoint(PencilTool *pc, Geom::Point const &p); +static void spdc_set_endpoint(PencilTool *pc, Geom::Point const &p); +static void spdc_finish_endpoint(PencilTool *pc); +static void spdc_add_freehand_point(PencilTool *pc, Geom::Point const &p, guint state); +static void fit_and_split(PencilTool *pc); +static void interpolate(PencilTool *pc); +static void sketch_interpolate(PencilTool *pc); static Geom::Point pencil_drag_origin_w(0, 0); static bool pencil_within_tolerance = false; static bool in_svg_plane(Geom::Point const &p) { return Geom::LInfty(p) < 1e18; } -#include "tool-factory.h" - namespace { - SPEventContext* createPencilContext() { - return new SPPencilContext(); + ToolBase* createPencilContext() { + return new PencilTool(); } bool pencilContextRegistered = ToolFactory::instance().registerObject("/tools/freehand/pencil", createPencilContext); } -const std::string& SPPencilContext::getPrefsPath() { - return SPPencilContext::prefsPath; +const std::string& PencilTool::getPrefsPath() { + return PencilTool::prefsPath; } -const std::string SPPencilContext::prefsPath = "/tools/freehand/pencil"; +const std::string PencilTool::prefsPath = "/tools/freehand/pencil"; -SPPencilContext::SPPencilContext() : +PencilTool::PencilTool() : SPDrawContext(), p(), npoints(0), @@ -88,7 +91,7 @@ SPPencilContext::SPPencilContext() : req_tangent(0,0), is_drawing(false), ps(), - sketch_interpolation(Geom::Piecewise >())// since SPPencilContext is not properly constructed... + sketch_interpolation(Geom::Piecewise >())// since PencilTool is not properly constructed... { this->cursor_shape = cursor_pencil_xpm; this->hot_x = 4; @@ -96,7 +99,7 @@ SPPencilContext::SPPencilContext() : this->sketch_n = 0; } -void SPPencilContext::setup() { +void PencilTool::setup() { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); if (prefs->getBool("/tools/freehand/pencil/selcue")) { this->enableSelectionCue(); @@ -108,12 +111,12 @@ void SPPencilContext::setup() { this->anchor_statusbar = false; } -SPPencilContext::~SPPencilContext() { +PencilTool::~PencilTool() { } /** Snaps new node relative to the previous node. */ static void -spdc_endpoint_snap(SPPencilContext const *pc, Geom::Point &p, guint const state) +spdc_endpoint_snap(PencilTool const *pc, Geom::Point &p, guint const state) { if ((state & GDK_CONTROL_MASK)) { //CTRL enables constrained snapping if (pc->npoints > 0) { @@ -132,7 +135,7 @@ spdc_endpoint_snap(SPPencilContext const *pc, Geom::Point &p, guint const state) /** * Callback for handling all pencil context events. */ -bool SPPencilContext::root_handler(GdkEvent* event) { +bool PencilTool::root_handler(GdkEvent* event) { gint ret = FALSE; switch (event->type) { @@ -168,10 +171,10 @@ bool SPPencilContext::root_handler(GdkEvent* event) { } static gint -pencil_handle_button_press(SPPencilContext *const pc, GdkEventButton const &bevent) +pencil_handle_button_press(PencilTool *const pc, GdkEventButton const &bevent) { gint ret = FALSE; - SPEventContext *event_context = SP_EVENT_CONTEXT(pc); + ToolBase *event_context = SP_EVENT_CONTEXT(pc); if ( bevent.button == 1 && !event_context->space_panning) { SPDrawContext *dc = SP_DRAW_CONTEXT (pc); @@ -251,7 +254,7 @@ pencil_handle_button_press(SPPencilContext *const pc, GdkEventButton const &beve } static gint -pencil_handle_motion_notify(SPPencilContext *const pc, GdkEventMotion const &mevent) +pencil_handle_motion_notify(PencilTool *const pc, GdkEventMotion const &mevent) { SPDesktop *const dt = pc->desktop; @@ -263,7 +266,7 @@ pencil_handle_motion_notify(SPPencilContext *const pc, GdkEventMotion const &mev } gint ret = FALSE; - SPEventContext *event_context = SP_EVENT_CONTEXT(pc); + ToolBase *event_context = SP_EVENT_CONTEXT(pc); if (event_context->space_panning || mevent.state & GDK_BUTTON2_MASK || mevent.state & GDK_BUTTON3_MASK) { // allow scrolling return FALSE; @@ -373,11 +376,11 @@ pencil_handle_motion_notify(SPPencilContext *const pc, GdkEventMotion const &mev } static gint -pencil_handle_button_release(SPPencilContext *const pc, GdkEventButton const &revent) +pencil_handle_button_release(PencilTool *const pc, GdkEventButton const &revent) { gint ret = FALSE; - SPEventContext *event_context = SP_EVENT_CONTEXT(pc); + ToolBase *event_context = SP_EVENT_CONTEXT(pc); if ( revent.button == 1 && pc->is_drawing && !event_context->space_panning) { SPDesktop *const dt = pc->desktop; @@ -474,7 +477,7 @@ pencil_handle_button_release(SPPencilContext *const pc, GdkEventButton const &re } static void -pencil_cancel (SPPencilContext *const pc) +pencil_cancel (PencilTool *const pc) { if (pc->grab) { /* Release grab now */ @@ -504,7 +507,7 @@ pencil_cancel (SPPencilContext *const pc) } static gint -pencil_handle_key_press(SPPencilContext *const pc, guint const keyval, guint const state) +pencil_handle_key_press(PencilTool *const pc, guint const keyval, guint const state) { gint ret = FALSE; switch (keyval) { @@ -558,7 +561,7 @@ pencil_handle_key_press(SPPencilContext *const pc, guint const keyval, guint con } static gint -pencil_handle_key_release(SPPencilContext *const pc, guint const keyval, guint const /*state*/) +pencil_handle_key_release(PencilTool *const pc, guint const keyval, guint const /*state*/) { gint ret = FALSE; switch (keyval) { @@ -590,7 +593,7 @@ pencil_handle_key_release(SPPencilContext *const pc, guint const keyval, guint c * Reset points and set new starting point. */ static void -spdc_set_startpoint(SPPencilContext *const pc, Geom::Point const &p) +spdc_set_startpoint(PencilTool *const pc, Geom::Point const &p) { pc->npoints = 0; pc->red_curve_is_valid = false; @@ -610,7 +613,7 @@ spdc_set_startpoint(SPPencilContext *const pc, Geom::Point const &p) * We change RED curve. */ static void -spdc_set_endpoint(SPPencilContext *const pc, Geom::Point const &p) +spdc_set_endpoint(PencilTool *const pc, Geom::Point const &p) { if (pc->npoints == 0) { return; @@ -645,7 +648,7 @@ spdc_set_endpoint(SPPencilContext *const pc, Geom::Point const &p) * Still not sure, how it will make most sense. */ static void -spdc_finish_endpoint(SPPencilContext *const pc) +spdc_finish_endpoint(PencilTool *const pc) { if ( ( pc->red_curve->is_empty() ) || ( *(pc->red_curve->first_point()) == *(pc->red_curve->second_point()) ) ) @@ -662,7 +665,7 @@ spdc_finish_endpoint(SPPencilContext *const pc) static void -spdc_add_freehand_point(SPPencilContext *pc, Geom::Point const &p, guint /*state*/) +spdc_add_freehand_point(PencilTool *pc, Geom::Point const &p, guint /*state*/) { g_assert( pc->npoints > 0 ); g_return_if_fail(unsigned(pc->npoints) < G_N_ELEMENTS(pc->p)); @@ -683,7 +686,7 @@ square(double const x) } static void -interpolate(SPPencilContext *pc) +interpolate(PencilTool *pc) { if ( pc->ps.size() <= 1 ) { return; @@ -749,7 +752,7 @@ interpolate(SPPencilContext *pc) /* interpolates the sketched curve and tweaks the current sketch interpolation*/ static void -sketch_interpolate(SPPencilContext *pc) +sketch_interpolate(PencilTool *pc) { if ( pc->ps.size() <= 1 ) { return; @@ -841,7 +844,7 @@ sketch_interpolate(SPPencilContext *pc) } static void -fit_and_split(SPPencilContext *pc) +fit_and_split(PencilTool *pc) { g_assert( pc->npoints > 1 ); @@ -897,6 +900,9 @@ fit_and_split(SPPencilContext *pc) } } +} +} +} /* Local Variables: diff --git a/src/pencil-context.h b/src/pencil-context.h index b3ded0242..ad6ed23b9 100644 --- a/src/pencil-context.h +++ b/src/pencil-context.h @@ -2,13 +2,17 @@ #define SEEN_PENCIL_CONTEXT_H /** \file - * SPPencilContext: a context for pencil tool events + * PencilTool: a context for pencil tool events */ #include "draw-context.h" -#define SP_PENCIL_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_PENCIL_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_PENCIL_CONTEXT(obj) (dynamic_cast((ToolBase*)obj)) +#define SP_IS_PENCIL_CONTEXT(obj) (dynamic_cast((const ToolBase*)obj) != NULL) + +namespace Inkscape { +namespace UI { +namespace Tools { enum PencilState { SP_PENCIL_CONTEXT_IDLE, @@ -18,12 +22,12 @@ enum PencilState { }; /** - * SPPencilContext: a context for pencil tool events + * PencilTool: a context for pencil tool events */ -class SPPencilContext : public SPDrawContext { +class PencilTool : public SPDrawContext { public: - SPPencilContext(); - virtual ~SPPencilContext(); + PencilTool(); + virtual ~PencilTool(); Geom::Point p[16]; gint npoints; @@ -46,6 +50,10 @@ protected: virtual bool root_handler(GdkEvent* event); }; +} +} +} + #endif /* !SEEN_PENCIL_CONTEXT_H */ /* diff --git a/src/persp3d.cpp b/src/persp3d.cpp index 530da0799..a737c0634 100644 --- a/src/persp3d.cpp +++ b/src/persp3d.cpp @@ -140,9 +140,9 @@ void Persp3D::set(unsigned key, gchar const *value) { } // FIXME: Is this the right place for resetting the draggers? - SPEventContext *ec = inkscape_active_event_context(); + Inkscape::UI::Tools::ToolBase *ec = inkscape_active_event_context(); if (SP_IS_BOX3D_CONTEXT(ec)) { - Box3DContext *bc = SP_BOX3D_CONTEXT(ec); + Inkscape::UI::Tools::Box3dTool *bc = SP_BOX3D_CONTEXT(ec); bc->_vpdrag->updateDraggers(); bc->_vpdrag->updateLines(); bc->_vpdrag->updateBoxHandles(); diff --git a/src/persp3d.h b/src/persp3d.h index cb7e7f900..4690c0582 100644 --- a/src/persp3d.h +++ b/src/persp3d.h @@ -24,7 +24,17 @@ #include "inkscape.h" class SPBox3D; -class Box3DContext; + +namespace Inkscape { +namespace UI { +namespace Tools { + +class Box3dTool; + +} +} +} + class Persp3DImpl { public: diff --git a/src/proofs b/src/proofs index 05f27daea..d1922647e 100644 --- a/src/proofs +++ b/src/proofs @@ -23,7 +23,7 @@ in which case we'd have filled in pc->red_curve to a non-empty curve. Expansion of the above claim of at least 3 distinct points: We know n_segs <= 0 || unsigned(dc->npoints) >= G_N_ELEMENTS(pc->p) from the negation of the containing `if' condition. -G_N_ELEMENTS(pc->p) is greater than 3 (in int arithmetic), from SPPencilContext::p array definition +G_N_ELEMENTS(pc->p) is greater than 3 (in int arithmetic), from PencilTool::p array definition in pencil-context.h. npoints grows by no more than one per fit_and_split invocation; we should be able to establish that dc->npoints == G_N_ELEMENTS(pc->p) if unsigned(dc->npoints) >= G_N_ELEMENTS(pc->p), in which case 3 <= dc->npoints in int arithmetic. We know that dc->npoints >= diff --git a/src/rect-context.cpp b/src/rect-context.cpp index a0e751359..95a7f1f2d 100644 --- a/src/rect-context.cpp +++ b/src/rect-context.cpp @@ -48,21 +48,25 @@ using Inkscape::DocumentUndo; #include "tool-factory.h" +namespace Inkscape { +namespace UI { +namespace Tools { + namespace { - SPEventContext* createRectContext() { - return new SPRectContext(); + ToolBase* createRectContext() { + return new RectTool(); } bool rectContextRegistered = ToolFactory::instance().registerObject("/tools/shapes/rect", createRectContext); } -const std::string& SPRectContext::getPrefsPath() { - return SPRectContext::prefsPath; +const std::string& RectTool::getPrefsPath() { + return RectTool::prefsPath; } -const std::string SPRectContext::prefsPath = "/tools/shapes/rect"; +const std::string RectTool::prefsPath = "/tools/shapes/rect"; -SPRectContext::SPRectContext() : SPEventContext() { +RectTool::RectTool() : ToolBase() { this->cursor_shape = cursor_rect_xpm; this->hot_x = 4; this->hot_y = 4; @@ -78,16 +82,16 @@ SPRectContext::SPRectContext() : SPEventContext() { this->ry = 0.0; } -void SPRectContext::finish() { +void RectTool::finish() { sp_canvas_item_ungrab(SP_CANVAS_ITEM(this->desktop->acetate), GDK_CURRENT_TIME); this->finishItem(); this->sel_changed_connection.disconnect(); - SPEventContext::finish(); + ToolBase::finish(); } -SPRectContext::~SPRectContext() { +RectTool::~RectTool() { this->enableGrDrag(false); this->sel_changed_connection.disconnect(); @@ -105,13 +109,13 @@ SPRectContext::~SPRectContext() { * Callback that processes the "changed" signal on the selection; * destroys old and creates new knotholder. */ -void SPRectContext::selection_changed(Inkscape::Selection* selection) { +void RectTool::selection_changed(Inkscape::Selection* selection) { this->shape_editor->unset_item(SH_KNOTHOLDER); this->shape_editor->set_item(selection->singleItem(), SH_KNOTHOLDER); } -void SPRectContext::setup() { - SPEventContext::setup(); +void RectTool::setup() { + ToolBase::setup(); this->shape_editor = new ShapeEditor(this->desktop); @@ -122,7 +126,7 @@ void SPRectContext::setup() { this->sel_changed_connection.disconnect(); this->sel_changed_connection = sp_desktop_selection(this->desktop)->connectChanged( - sigc::mem_fun(this, &SPRectContext::selection_changed) + sigc::mem_fun(this, &RectTool::selection_changed) ); sp_event_context_read(this, "rx"); @@ -138,7 +142,7 @@ void SPRectContext::setup() { } } -void SPRectContext::set(const Inkscape::Preferences::Entry& val) { +void RectTool::set(const Inkscape::Preferences::Entry& val) { /* fixme: Proper error handling for non-numeric data. Use a locale-independent function like * g_ascii_strtod (or a thin wrapper that does the right thing for invalid values inf/nan). */ Glib::ustring name = val.getEntryName(); @@ -150,7 +154,7 @@ void SPRectContext::set(const Inkscape::Preferences::Entry& val) { } } -bool SPRectContext::item_handler(SPItem* item, GdkEvent* event) { +bool RectTool::item_handler(SPItem* item, GdkEvent* event) { gint ret = FALSE; switch (event->type) { @@ -165,12 +169,12 @@ bool SPRectContext::item_handler(SPItem* item, GdkEvent* event) { break; } - ret = SPEventContext::item_handler(item, event); + ret = ToolBase::item_handler(item, event); return ret; } -bool SPRectContext::root_handler(GdkEvent* event) { +bool RectTool::root_handler(GdkEvent* event) { static bool dragging; SPDesktop *desktop = this->desktop; @@ -375,13 +379,13 @@ bool SPRectContext::root_handler(GdkEvent* event) { } if (!ret) { - ret = SPEventContext::root_handler(event); + ret = ToolBase::root_handler(event); } return ret; } -void SPRectContext::drag(Geom::Point const pt, guint state) { +void RectTool::drag(Geom::Point const pt, guint state) { SPDesktop *desktop = this->desktop; if (!this->rect) { @@ -466,7 +470,7 @@ void SPRectContext::drag(Geom::Point const pt, guint state) { g_string_free(ys, FALSE); } -void SPRectContext::finishItem() { +void RectTool::finishItem() { this->message_context->clear(); if (this->rect != NULL) { @@ -488,7 +492,7 @@ void SPRectContext::finishItem() { } } -void SPRectContext::cancel(){ +void RectTool::cancel(){ sp_desktop_selection(this->desktop)->clear(); sp_canvas_item_ungrab(SP_CANVAS_ITEM(this->desktop->acetate), 0); @@ -507,6 +511,9 @@ void SPRectContext::cancel(){ DocumentUndo::cancel(sp_desktop_document(this->desktop)); } +} +} +} /* Local Variables: diff --git a/src/rect-context.h b/src/rect-context.h index a85968b1c..cf1682620 100644 --- a/src/rect-context.h +++ b/src/rect-context.h @@ -21,13 +21,17 @@ #include "sp-rect.h" -#define SP_RECT_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_RECT_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_RECT_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define SP_IS_RECT_CONTEXT(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj) != NULL) -class SPRectContext : public SPEventContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class RectTool : public ToolBase { public: - SPRectContext(); - virtual ~SPRectContext(); + RectTool(); + virtual ~RectTool(); static const std::string prefsPath; @@ -54,4 +58,8 @@ private: void selection_changed(Inkscape::Selection* selection); }; +} +} +} + #endif diff --git a/src/select-context.cpp b/src/select-context.cpp index 99eb01fea..11b2e6298 100644 --- a/src/select-context.cpp +++ b/src/select-context.cpp @@ -49,30 +49,35 @@ #include "display/sp-canvas.h" #include "display/sp-canvas-item.h" #include "display/drawing-item.h" +#include "tool-factory.h" using Inkscape::DocumentUndo; +GdkPixbuf *handles[13]; + +namespace Inkscape { +namespace UI { +namespace Tools { + static GdkCursor *CursorSelectMouseover = NULL; static GdkCursor *CursorSelectDragging = NULL; -GdkPixbuf *handles[13]; static gint rb_escaped = 0; // if non-zero, rubberband was canceled by esc, so the next button release should not deselect static gint drag_escaped = 0; // if non-zero, drag was canceled by esc -#include "tool-factory.h" namespace { - SPEventContext* createSelectContext() { - return new SPSelectContext(); + ToolBase* createSelectContext() { + return new SelectTool(); } bool selectContextRegistered = ToolFactory::instance().registerObject("/tools/select", createSelectContext); } -const std::string& SPSelectContext::getPrefsPath() { - return SPSelectContext::prefsPath; +const std::string& SelectTool::getPrefsPath() { + return SelectTool::prefsPath; } -const std::string SPSelectContext::prefsPath = "/tools/select"; +const std::string SelectTool::prefsPath = "/tools/select"; //Creates rotated variations for handles @@ -85,7 +90,7 @@ sp_load_handles(int start, int count, char const **xpm) { } } -SPSelectContext::SPSelectContext() : SPEventContext() { +SelectTool::SelectTool() : ToolBase() { this->grabbed = 0; this->item = 0; @@ -120,10 +125,10 @@ SPSelectContext::SPSelectContext() : SPEventContext() { //static bool within_tolerance = false; static bool is_cycling = false; static bool moved_while_cycling = false; -SPEventContext *prev_event_context = NULL; +ToolBase *prev_event_context = NULL; -SPSelectContext::~SPSelectContext() { +SelectTool::~SelectTool() { this->enableGrDrag(false); if (this->grabbed) { @@ -156,8 +161,8 @@ SPSelectContext::~SPSelectContext() { } } -void SPSelectContext::setup() { - SPEventContext::setup(); +void SelectTool::setup() { + ToolBase::setup(); this->_describer = new Inkscape::SelectionDescriber( desktop->selection, @@ -178,7 +183,7 @@ void SPSelectContext::setup() { } } -void SPSelectContext::set(const Inkscape::Preferences::Entry& val) { +void SelectTool::set(const Inkscape::Preferences::Entry& val) { Glib::ustring path = val.getEntryName(); if (path == "show") { @@ -190,7 +195,7 @@ void SPSelectContext::set(const Inkscape::Preferences::Entry& val) { } } -bool SPSelectContext::sp_select_context_abort() { +bool SelectTool::sp_select_context_abort() { Inkscape::SelTrans *seltrans = this->_seltrans; if (this->dragging) { @@ -273,7 +278,7 @@ sp_select_context_up_one_layer(SPDesktop *desktop) } } -bool SPSelectContext::item_handler(SPItem* item, GdkEvent* event) { +bool SelectTool::item_handler(SPItem* item, GdkEvent* event) { gint ret = FALSE; Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -387,13 +392,13 @@ bool SPSelectContext::item_handler(SPItem* item, GdkEvent* event) { } if (!ret) { - ret = SPEventContext::item_handler(item, event); + ret = ToolBase::item_handler(item, event); } return ret; } -void SPSelectContext::sp_select_context_cycle_through_items(Inkscape::Selection *selection, GdkEventScroll *scroll_event, bool shift_pressed) { +void SelectTool::sp_select_context_cycle_through_items(Inkscape::Selection *selection, GdkEventScroll *scroll_event, bool shift_pressed) { if (!this->cycling_cur_item) { return; } @@ -438,10 +443,10 @@ void SPSelectContext::sp_select_context_cycle_through_items(Inkscape::Selection static void -sp_select_context_reset_opacities(SPEventContext *event_context) +sp_select_context_reset_opacities(ToolBase *event_context) { // SPDesktop *desktop = event_context->desktop; - SPSelectContext *sc = SP_SELECT_CONTEXT(event_context); + SelectTool *sc = SP_SELECT_CONTEXT(event_context); Inkscape::DrawingItem *arenaitem; for (GList *l = sc->cycling_items; l != NULL; l = g_list_next(l)) { arenaitem = SP_ITEM(l->data)->get_arenaitem(event_context->desktop->dkey); @@ -456,7 +461,7 @@ sp_select_context_reset_opacities(SPEventContext *event_context) sc->cycling_items_cmp = NULL; } -bool SPSelectContext::root_handler(GdkEvent* event) { +bool SelectTool::root_handler(GdkEvent* event) { SPItem *item = NULL; SPItem *item_at_point = NULL, *group_at_point = NULL, *item_in_group = NULL; gint ret = FALSE; @@ -1225,12 +1230,16 @@ bool SPSelectContext::root_handler(GdkEvent* event) { } if (!ret) { - ret = SPEventContext::root_handler(event); + ret = ToolBase::root_handler(event); } return ret; } +} +} +} + /* Local Variables: mode:c++ diff --git a/src/select-context.h b/src/select-context.h index bcea8537a..ed4c02648 100644 --- a/src/select-context.h +++ b/src/select-context.h @@ -15,8 +15,8 @@ #include "event-context.h" #include -#define SP_SELECT_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_SELECT_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_SELECT_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define SP_IS_SELECT_CONTEXT(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj) != NULL) struct SPCanvasItem; @@ -26,10 +26,14 @@ namespace Inkscape { class SelectionDescriber; } -class SPSelectContext : public SPEventContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class SelectTool : public ToolBase { public: - SPSelectContext(); - virtual ~SPSelectContext(); + SelectTool(); + virtual ~SelectTool(); guint dragging : 1; guint moved : 1; @@ -62,4 +66,8 @@ private: void sp_select_context_cycle_through_items(Inkscape::Selection *selection, GdkEventScroll *scroll_event, bool shift_pressed); }; +} +} +} + #endif diff --git a/src/selection-chemistry.cpp b/src/selection-chemistry.cpp index e68feb188..ae85df295 100644 --- a/src/selection-chemistry.cpp +++ b/src/selection-chemistry.cpp @@ -119,6 +119,7 @@ SPCycleType SP_CYCLING = SP_CYCLE_FOCUS; using Inkscape::DocumentUndo; using Geom::X; using Geom::Y; +using Inkscape::UI::Tools::NodeTool; /* The clipboard handling is in ui/clipboard.cpp now. There are some legacy functions left here, because the layer manipulation code uses them. It should be rewritten specifically @@ -146,7 +147,7 @@ namespace Inkscape { void SelectionHelper::selectAll(SPDesktop *dt) { if (tools_isactive(dt, TOOLS_NODES)) { - InkNodeTool *nt = static_cast(dt->event_context); + NodeTool *nt = static_cast(dt->event_context); if (!nt->_multipath->empty()) { nt->_multipath->selectSubpaths(); return; @@ -158,7 +159,7 @@ void SelectionHelper::selectAll(SPDesktop *dt) void SelectionHelper::selectAllInAll(SPDesktop *dt) { if (tools_isactive(dt, TOOLS_NODES)) { - InkNodeTool *nt = static_cast(dt->event_context); + NodeTool *nt = static_cast(dt->event_context); nt->_selected_nodes->selectAll(); } else { sp_edit_select_all_in_all_layers(dt); @@ -167,9 +168,9 @@ void SelectionHelper::selectAllInAll(SPDesktop *dt) void SelectionHelper::selectNone(SPDesktop *dt) { - InkNodeTool *nt = NULL; + NodeTool *nt = NULL; if (tools_isactive(dt, TOOLS_NODES)) { - nt = static_cast(dt->event_context); + nt = static_cast(dt->event_context); } if (nt && !nt->_selected_nodes->empty()) { @@ -210,7 +211,7 @@ void SelectionHelper::selectSameObjectType(SPDesktop *dt) void SelectionHelper::invert(SPDesktop *dt) { if (tools_isactive(dt, TOOLS_NODES)) { - InkNodeTool *nt = static_cast(dt->event_context); + NodeTool *nt = static_cast(dt->event_context); nt->_multipath->invertSelectionInSubpaths(); } else { sp_edit_invert(dt); @@ -220,7 +221,7 @@ void SelectionHelper::invert(SPDesktop *dt) void SelectionHelper::invertAllInAll(SPDesktop *dt) { if (tools_isactive(dt, TOOLS_NODES)) { - InkNodeTool *nt = static_cast(dt->event_context); + NodeTool *nt = static_cast(dt->event_context); nt->_selected_nodes->invertSelection(); } else { sp_edit_invert_in_all_layers(dt); @@ -231,7 +232,7 @@ void SelectionHelper::reverse(SPDesktop *dt) { // TODO make this a virtual method of event context! if (tools_isactive(dt, TOOLS_NODES)) { - InkNodeTool *nt = static_cast(dt->event_context); + NodeTool *nt = static_cast(dt->event_context); nt->_multipath->reverseSubpaths(); } else { sp_selected_path_reverse(dt); @@ -240,13 +241,13 @@ void SelectionHelper::reverse(SPDesktop *dt) void SelectionHelper::selectNext(SPDesktop *dt) { - SPEventContext *ec = dt->event_context; + Inkscape::UI::Tools::ToolBase *ec = dt->event_context; if (tools_isactive(dt, TOOLS_NODES)) { - InkNodeTool *nt = static_cast(dt->event_context); + NodeTool *nt = static_cast(dt->event_context); nt->_multipath->shiftSelection(1); } else if (tools_isactive(dt, TOOLS_GRADIENT) && ec->_grdrag->isNonEmpty()) { - sp_gradient_context_select_next(ec); + Inkscape::UI::Tools::sp_gradient_context_select_next(ec); } else { sp_selection_item_next(dt); } @@ -254,13 +255,13 @@ void SelectionHelper::selectNext(SPDesktop *dt) void SelectionHelper::selectPrev(SPDesktop *dt) { - SPEventContext *ec = dt->event_context; + Inkscape::UI::Tools::ToolBase *ec = dt->event_context; if (tools_isactive(dt, TOOLS_NODES)) { - InkNodeTool *nt = static_cast(dt->event_context); + NodeTool *nt = static_cast(dt->event_context); nt->_multipath->shiftSelection(-1); } else if (tools_isactive(dt, TOOLS_GRADIENT) && ec->_grdrag->isNonEmpty()) { - sp_gradient_context_select_prev(ec); + Inkscape::UI::Tools::sp_gradient_context_select_prev(ec); } else { sp_selection_item_prev(dt); } @@ -388,7 +389,7 @@ void sp_selection_delete(SPDesktop *desktop) } if (tools_isactive(desktop, TOOLS_TEXT)) - if (sp_text_delete_selection(desktop->event_context)) { + if (Inkscape::UI::Tools::sp_text_delete_selection(desktop->event_context)) { DocumentUndo::done(sp_desktop_document(desktop), SP_VERB_CONTEXT_TEXT, _("Delete text")); return; @@ -1471,7 +1472,7 @@ void sp_selection_apply_affine(Inkscape::Selection *selection, Geom::Affine cons // If we're moving a connector, we want to detach it // from shapes that aren't part of the selection, but // leave it attached if they are - if (cc_item_is_connector(item)) { + if (Inkscape::UI::Tools::cc_item_is_connector(item)) { SPItem *attItem[2]; SP_PATH(item)->connEndPair.getAttachedItems(attItem); diff --git a/src/seltrans.cpp b/src/seltrans.cpp index ed0fd3a08..568ad6a09 100644 --- a/src/seltrans.cpp +++ b/src/seltrans.cpp @@ -66,7 +66,7 @@ static gboolean sp_sel_trans_handle_event(SPKnot *knot, GdkEvent *event, gpointe case GDK_MOTION_NOTIFY: break; case GDK_KEY_PRESS: - if (get_group0_keyval (&event->key) == GDK_KEY_space) { + if (Inkscape::UI::Tools::get_group0_keyval (&event->key) == GDK_KEY_space) { /* stamping mode: both mode(show content and outline) operation with knot */ if (!SP_KNOT_IS_GRABBED(knot)) { return FALSE; diff --git a/src/shortcuts.cpp b/src/shortcuts.cpp index 231e33e4a..ab8e5f761 100644 --- a/src/shortcuts.cpp +++ b/src/shortcuts.cpp @@ -121,7 +121,7 @@ unsigned int sp_gdkmodifier_to_shortcut(guint accel_key, Gdk::ModifierType gdkmo event.state = gdkmodifier; event.keyval = accel_key; event.hardware_keycode = hardware_keycode; - guint keyval = get_group0_keyval (&event); + guint keyval = Inkscape::UI::Tools::get_group0_keyval (&event); shortcut = accel_key | ( (gdkmodifier & GDK_SHIFT_MASK) || ( accel_key != keyval) ? diff --git a/src/spiral-context.cpp b/src/spiral-context.cpp index 9d44b5adb..d8e51c91e 100644 --- a/src/spiral-context.cpp +++ b/src/spiral-context.cpp @@ -47,21 +47,25 @@ using Inkscape::DocumentUndo; #include "tool-factory.h" +namespace Inkscape { +namespace UI { +namespace Tools { + namespace { - SPEventContext* createSpiralContext() { - return new SPSpiralContext(); + ToolBase* createSpiralContext() { + return new SpiralTool(); } bool spiralContextRegistered = ToolFactory::instance().registerObject("/tools/shapes/spiral", createSpiralContext); } -const std::string& SPSpiralContext::getPrefsPath() { - return SPSpiralContext::prefsPath; +const std::string& SpiralTool::getPrefsPath() { + return SpiralTool::prefsPath; } -const std::string SPSpiralContext::prefsPath = "/tools/shapes/spiral"; +const std::string SpiralTool::prefsPath = "/tools/shapes/spiral"; -SPSpiralContext::SPSpiralContext() : SPEventContext() { +SpiralTool::SpiralTool() : ToolBase() { this->cursor_shape = cursor_spiral_xpm; this->hot_x = 4; this->hot_y = 4; @@ -78,7 +82,7 @@ SPSpiralContext::SPSpiralContext() : SPEventContext() { this->t0 = 0.0; } -void SPSpiralContext::finish() { +void SpiralTool::finish() { SPDesktop *desktop = this->desktop; sp_canvas_item_ungrab(SP_CANVAS_ITEM(desktop->acetate), GDK_CURRENT_TIME); @@ -86,10 +90,10 @@ void SPSpiralContext::finish() { this->finishItem(); this->sel_changed_connection.disconnect(); - SPEventContext::finish(); + ToolBase::finish(); } -SPSpiralContext::~SPSpiralContext() { +SpiralTool::~SpiralTool() { this->enableGrDrag(false); this->sel_changed_connection.disconnect(); @@ -107,13 +111,13 @@ SPSpiralContext::~SPSpiralContext() { * Callback that processes the "changed" signal on the selection; * destroys old and creates new knotholder. */ -void SPSpiralContext::selection_changed(Inkscape::Selection *selection) { +void SpiralTool::selection_changed(Inkscape::Selection *selection) { this->shape_editor->unset_item(SH_KNOTHOLDER); this->shape_editor->set_item(selection->singleItem(), SH_KNOTHOLDER); } -void SPSpiralContext::setup() { - SPEventContext::setup(); +void SpiralTool::setup() { + ToolBase::setup(); sp_event_context_read(this, "expansion"); sp_event_context_read(this, "revolution"); @@ -129,7 +133,7 @@ void SPSpiralContext::setup() { Inkscape::Selection *selection = sp_desktop_selection(this->desktop); this->sel_changed_connection.disconnect(); - this->sel_changed_connection = selection->connectChanged(sigc::mem_fun(this, &SPSpiralContext::selection_changed)); + this->sel_changed_connection = selection->connectChanged(sigc::mem_fun(this, &SpiralTool::selection_changed)); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -142,7 +146,7 @@ void SPSpiralContext::setup() { } } -void SPSpiralContext::set(const Inkscape::Preferences::Entry& val) { +void SpiralTool::set(const Inkscape::Preferences::Entry& val) { Glib::ustring name = val.getEntryName(); if (name == "expansion") { @@ -154,7 +158,7 @@ void SPSpiralContext::set(const Inkscape::Preferences::Entry& val) { } } -bool SPSpiralContext::root_handler(GdkEvent* event) { +bool SpiralTool::root_handler(GdkEvent* event) { static gboolean dragging; SPDesktop *desktop = this->desktop; @@ -340,13 +344,13 @@ bool SPSpiralContext::root_handler(GdkEvent* event) { } if (!ret) { - ret = SPEventContext::root_handler(event); + ret = ToolBase::root_handler(event); } return ret; } -void SPSpiralContext::drag(Geom::Point const &p, guint state) { +void SpiralTool::drag(Geom::Point const &p, guint state) { SPDesktop *desktop = SP_EVENT_CONTEXT(this)->desktop; Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -406,7 +410,7 @@ void SPSpiralContext::drag(Geom::Point const &p, guint state) { g_string_free(rads, FALSE); } -void SPSpiralContext::finishItem() { +void SpiralTool::finishItem() { this->message_context->clear(); if (this->spiral != NULL) { @@ -428,7 +432,7 @@ void SPSpiralContext::finishItem() { } } -void SPSpiralContext::cancel() { +void SpiralTool::cancel() { sp_desktop_selection(this->desktop)->clear(); sp_canvas_item_ungrab(SP_CANVAS_ITEM(this->desktop->acetate), 0); @@ -447,6 +451,10 @@ void SPSpiralContext::cancel() { DocumentUndo::cancel(sp_desktop_document(this->desktop)); } +} +} +} + /* Local Variables: mode:c++ diff --git a/src/spiral-context.h b/src/spiral-context.h index d5bd15941..e6b5eeb0c 100644 --- a/src/spiral-context.h +++ b/src/spiral-context.h @@ -23,13 +23,17 @@ #include "sp-spiral.h" -#define SP_SPIRAL_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_SPIRAL_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_SPIRAL_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define SP_IS_SPIRAL_CONTEXT(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj) != NULL) -class SPSpiralContext : public SPEventContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class SpiralTool : public ToolBase { public: - SPSpiralContext(); - virtual ~SPSpiralContext(); + SpiralTool(); + virtual ~SpiralTool(); static const std::string prefsPath; @@ -55,4 +59,8 @@ private: void selection_changed(Inkscape::Selection *selection); }; +} +} +} + #endif diff --git a/src/spray-context.cpp b/src/spray-context.cpp index 6b97dcc17..5a2346dab 100644 --- a/src/spray-context.cpp +++ b/src/spray-context.cpp @@ -81,19 +81,23 @@ using namespace std; #include "tool-factory.h" +namespace Inkscape { +namespace UI { +namespace Tools { + namespace { - SPEventContext* createSprayContext() { - return new SPSprayContext(); + ToolBase* createSprayContext() { + return new SprayTool(); } bool sprayContextRegistered = ToolFactory::instance().registerObject("/tools/spray", createSprayContext); } -const std::string& SPSprayContext::getPrefsPath() { - return SPSprayContext::prefsPath; +const std::string& SprayTool::getPrefsPath() { + return SprayTool::prefsPath; } -const std::string SPSprayContext::prefsPath = "/tools/spray"; +const std::string SprayTool::prefsPath = "/tools/spray"; /** * This function returns pseudo-random numbers from a normal distribution @@ -130,7 +134,7 @@ static void sp_spray_scale_rel(Geom::Point c, SPDesktop */*desktop*/, SPItem *it item->doWriteTransform(item->getRepr(), item->transform); } -SPSprayContext::SPSprayContext() : SPEventContext() { +SprayTool::SprayTool() : ToolBase() { this->usetilt = 0; this->dilate_area = 0; this->usetext = false; @@ -161,7 +165,7 @@ SPSprayContext::SPSprayContext() : SPEventContext() { this->has_dilated = false; } -SPSprayContext::~SPSprayContext() { +SprayTool::~SprayTool() { this->enableGrDrag(false); this->style_set_connection.disconnect(); @@ -179,7 +183,7 @@ static bool is_transform_modes(gint mode) mode == SPRAY_OPTION); } -void SPSprayContext::update_cursor(bool /*with_shift*/) { +void SprayTool::update_cursor(bool /*with_shift*/) { guint num = 0; gchar *sel_message = NULL; @@ -208,8 +212,8 @@ void SPSprayContext::update_cursor(bool /*with_shift*/) { g_free(sel_message); } -void SPSprayContext::setup() { - SPEventContext::setup(); +void SprayTool::setup() { + ToolBase::setup(); { /* TODO: have a look at sp_dyna_draw_context_setup where the same is done.. generalize? at least make it an arcto! */ @@ -250,7 +254,7 @@ void SPSprayContext::setup() { } } -void SPSprayContext::set(const Inkscape::Preferences::Entry& val) { +void SprayTool::set(const Inkscape::Preferences::Entry& val) { Glib::ustring path = val.getEntryName(); if (path == "mode") { @@ -282,7 +286,7 @@ void SPSprayContext::set(const Inkscape::Preferences::Entry& val) { } } -static void sp_spray_extinput(SPSprayContext *tc, GdkEvent *event) +static void sp_spray_extinput(SprayTool *tc, GdkEvent *event) { if (gdk_event_get_axis(event, GDK_AXIS_PRESSURE, &tc->pressure)) { tc->pressure = CLAMP(tc->pressure, TC_MIN_PRESSURE, TC_MAX_PRESSURE); @@ -291,12 +295,12 @@ static void sp_spray_extinput(SPSprayContext *tc, GdkEvent *event) } } -static double get_dilate_radius(SPSprayContext *tc) +static double get_dilate_radius(SprayTool *tc) { return 250 * tc->width/SP_EVENT_CONTEXT(tc)->desktop->current_zoom(); } -static double get_path_force(SPSprayContext *tc) +static double get_path_force(SprayTool *tc) { double force = 8 * (tc->usepressure? tc->pressure : TC_DEFAULT_PRESSURE) /sqrt(SP_EVENT_CONTEXT(tc)->desktop->current_zoom()); @@ -306,28 +310,28 @@ static double get_path_force(SPSprayContext *tc) return force * tc->force; } -static double get_path_mean(SPSprayContext *tc) +static double get_path_mean(SprayTool *tc) { return tc->mean; } -static double get_path_standard_deviation(SPSprayContext *tc) +static double get_path_standard_deviation(SprayTool *tc) { return tc->standard_deviation; } -static double get_move_force(SPSprayContext *tc) +static double get_move_force(SprayTool *tc) { double force = (tc->usepressure? tc->pressure : TC_DEFAULT_PRESSURE); return force * tc->force; } -static double get_move_mean(SPSprayContext *tc) +static double get_move_mean(SprayTool *tc) { return tc->mean; } -static double get_move_standard_deviation(SPSprayContext *tc) +static double get_move_standard_deviation(SprayTool *tc) { return tc->standard_deviation; } @@ -523,7 +527,7 @@ static bool sp_spray_recursive(SPDesktop *desktop, return did; } -static bool sp_spray_dilate(SPSprayContext *tc, Geom::Point /*event_p*/, Geom::Point p, Geom::Point vector, bool reverse) +static bool sp_spray_dilate(SprayTool *tc, Geom::Point /*event_p*/, Geom::Point p, Geom::Point vector, bool reverse) { Inkscape::Selection *selection = sp_desktop_selection(SP_EVENT_CONTEXT(tc)->desktop); SPDesktop *desktop = SP_EVENT_CONTEXT(tc)->desktop; @@ -568,7 +572,7 @@ static bool sp_spray_dilate(SPSprayContext *tc, Geom::Point /*event_p*/, Geom::P return did; } -static void sp_spray_update_area(SPSprayContext *tc) +static void sp_spray_update_area(SprayTool *tc) { double radius = get_dilate_radius(tc); Geom::Affine const sm ( Geom::Scale(radius/(1-tc->ratio), radius/(1+tc->ratio)) ); @@ -576,7 +580,7 @@ static void sp_spray_update_area(SPSprayContext *tc) sp_canvas_item_show(tc->dilate_area); } -static void sp_spray_switch_mode(SPSprayContext *tc, gint mode, bool with_shift) +static void sp_spray_switch_mode(SprayTool *tc, gint mode, bool with_shift) { // select the button mode SP_EVENT_CONTEXT(tc)->desktop->setToolboxSelectOneValue("spray_tool_mode", mode); @@ -585,7 +589,7 @@ static void sp_spray_switch_mode(SPSprayContext *tc, gint mode, bool with_shift) tc->update_cursor(with_shift); } -bool SPSprayContext::root_handler(GdkEvent* event) { +bool SprayTool::root_handler(GdkEvent* event) { gint ret = FALSE; switch (event->type) { @@ -863,12 +867,16 @@ bool SPSprayContext::root_handler(GdkEvent* event) { // if ((SP_EVENT_CONTEXT_CLASS(sp_spray_context_parent_class))->root_handler) { // ret = (SP_EVENT_CONTEXT_CLASS(sp_spray_context_parent_class))->root_handler(event_context, event); // } - ret = SPEventContext::root_handler(event); + ret = ToolBase::root_handler(event); } return ret; } +} +} +} + /* Local Variables: mode:c++ diff --git a/src/spray-context.h b/src/spray-context.h index 4e1ab9dc0..ce03a8bc0 100644 --- a/src/spray-context.h +++ b/src/spray-context.h @@ -21,8 +21,8 @@ #include <2geom/point.h> #include "event-context.h" -#define SP_SPRAY_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_SPRAY_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_SPRAY_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define SP_IS_SPRAY_CONTEXT(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj) != NULL) namespace Inkscape { namespace UI { @@ -39,6 +39,10 @@ namespace Inkscape { #define TC_MAX_PRESSURE 1.0 #define TC_DEFAULT_PRESSURE 0.35 +namespace Inkscape { +namespace UI { +namespace Tools { + enum { SPRAY_MODE_COPY, SPRAY_MODE_CLONE, @@ -46,12 +50,12 @@ enum { SPRAY_OPTION, }; -class SPSprayContext : public SPEventContext { +class SprayTool : public ToolBase { public: - SPSprayContext(); - virtual ~SPSprayContext(); + SprayTool(); + virtual ~SprayTool(); - //SPEventContext event_context; + //ToolBase event_context; //Inkscape::UI::Dialog::Dialog *dialog_option;//Attribut de type SprayOptionClass, localisé dans scr/ui/dialog /* extended input data */ gdouble pressure; @@ -98,6 +102,10 @@ public: void update_cursor(bool /*with_shift*/); }; +} +} +} + #endif /* diff --git a/src/star-context.cpp b/src/star-context.cpp index d801ad0a0..69eb40370 100644 --- a/src/star-context.cpp +++ b/src/star-context.cpp @@ -51,21 +51,25 @@ using Inkscape::DocumentUndo; #include "tool-factory.h" +namespace Inkscape { +namespace UI { +namespace Tools { + namespace { - SPEventContext* createStarContext() { - return new SPStarContext(); + ToolBase* createStarContext() { + return new StarTool(); } bool starContextRegistered = ToolFactory::instance().registerObject("/tools/shapes/star", createStarContext); } -const std::string& SPStarContext::getPrefsPath() { - return SPStarContext::prefsPath; +const std::string& StarTool::getPrefsPath() { + return StarTool::prefsPath; } -const std::string SPStarContext::prefsPath = "/tools/shapes/star"; +const std::string StarTool::prefsPath = "/tools/shapes/star"; -SPStarContext::SPStarContext() : SPEventContext() { +StarTool::StarTool() : ToolBase() { this->randomized = 0; this->rounded = 0; @@ -86,16 +90,16 @@ SPStarContext::SPStarContext() : SPEventContext() { this->isflatsided = false; } -void SPStarContext::finish() { +void StarTool::finish() { sp_canvas_item_ungrab(SP_CANVAS_ITEM(desktop->acetate), GDK_CURRENT_TIME); this->finishItem(); this->sel_changed_connection.disconnect(); - SPEventContext::finish(); + ToolBase::finish(); } -SPStarContext::~SPStarContext() { +StarTool::~StarTool() { this->enableGrDrag(false); this->sel_changed_connection.disconnect(); @@ -115,15 +119,15 @@ SPStarContext::~SPStarContext() { * * @param selection Should not be NULL. */ -void SPStarContext::selection_changed(Inkscape::Selection* selection) { +void StarTool::selection_changed(Inkscape::Selection* selection) { g_assert (selection != NULL); this->shape_editor->unset_item(SH_KNOTHOLDER); this->shape_editor->set_item(selection->singleItem(), SH_KNOTHOLDER); } -void SPStarContext::setup() { - SPEventContext::setup(); +void StarTool::setup() { + ToolBase::setup(); sp_event_context_read(this, "magnitude"); sp_event_context_read(this, "proportion"); @@ -142,7 +146,7 @@ void SPStarContext::setup() { this->sel_changed_connection.disconnect(); - this->sel_changed_connection = selection->connectChanged(sigc::mem_fun(this, &SPStarContext::selection_changed)); + this->sel_changed_connection = selection->connectChanged(sigc::mem_fun(this, &StarTool::selection_changed)); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); if (prefs->getBool("/tools/shapes/selcue")) { @@ -154,7 +158,7 @@ void SPStarContext::setup() { } } -void SPStarContext::set(const Inkscape::Preferences::Entry& val) { +void StarTool::set(const Inkscape::Preferences::Entry& val) { Glib::ustring path = val.getEntryName(); if (path == "magnitude") { @@ -170,7 +174,7 @@ void SPStarContext::set(const Inkscape::Preferences::Entry& val) { } } -bool SPStarContext::root_handler(GdkEvent* event) { +bool StarTool::root_handler(GdkEvent* event) { static bool dragging; SPDesktop *desktop = this->desktop; @@ -356,13 +360,13 @@ bool SPStarContext::root_handler(GdkEvent* event) { } if (!ret) { - ret = SPEventContext::root_handler(event); + ret = ToolBase::root_handler(event); } return ret; } -void SPStarContext::drag(Geom::Point p, guint state) +void StarTool::drag(Geom::Point p, guint state) { SPDesktop *desktop = this->desktop; @@ -427,7 +431,7 @@ void SPStarContext::drag(Geom::Point p, guint state) g_string_free(rads, FALSE); } -void SPStarContext::finishItem() { +void StarTool::finishItem() { this->message_context->clear(); if (this->star != NULL) { @@ -455,7 +459,7 @@ void SPStarContext::finishItem() { } } -void SPStarContext::cancel() { +void StarTool::cancel() { sp_desktop_selection(desktop)->clear(); sp_canvas_item_ungrab(SP_CANVAS_ITEM(desktop->acetate), 0); @@ -474,6 +478,10 @@ void SPStarContext::cancel() { DocumentUndo::cancel(sp_desktop_document(desktop)); } +} +} +} + /* Local Variables: mode:c++ diff --git a/src/star-context.h b/src/star-context.h index af66f3201..3d792206a 100644 --- a/src/star-context.h +++ b/src/star-context.h @@ -21,10 +21,14 @@ #include "sp-star.h" -class SPStarContext : public SPEventContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class StarTool : public ToolBase { public: - SPStarContext(); - virtual ~SPStarContext(); + StarTool(); + virtual ~StarTool(); static const std::string prefsPath; @@ -63,4 +67,8 @@ private: void selection_changed(Inkscape::Selection* selection); }; +} +} +} + #endif diff --git a/src/text-context.cpp b/src/text-context.cpp index 5b79c1f1a..cc27e5589 100644 --- a/src/text-context.cpp +++ b/src/text-context.cpp @@ -1,5 +1,5 @@ /* - * SPTextContext + * TextTool * * Authors: * Lauris Kaplinski @@ -52,44 +52,46 @@ #include "xml/node-event-vector.h" #include "xml/repr.h" #include +#include "tool-factory.h" using Inkscape::ControlManager; using Inkscape::DocumentUndo; -static void sp_text_context_selection_changed(Inkscape::Selection *selection, SPTextContext *tc); -static void sp_text_context_selection_modified(Inkscape::Selection *selection, guint flags, SPTextContext *tc); -static bool sp_text_context_style_set(SPCSSAttr const *css, SPTextContext *tc); -static int sp_text_context_style_query(SPStyle *style, int property, SPTextContext *tc); - -static void sp_text_context_validate_cursor_iterators(SPTextContext *tc); -static void sp_text_context_update_cursor(SPTextContext *tc, bool scroll_to_see = true); -static void sp_text_context_update_text_selection(SPTextContext *tc); -static gint sp_text_context_timeout(SPTextContext *tc); -static void sp_text_context_forget_text(SPTextContext *tc); +namespace Inkscape { +namespace UI { +namespace Tools { -static gint sptc_focus_in(GtkWidget *widget, GdkEventFocus *event, SPTextContext *tc); -static gint sptc_focus_out(GtkWidget *widget, GdkEventFocus *event, SPTextContext *tc); -static void sptc_commit(GtkIMContext *imc, gchar *string, SPTextContext *tc); +static void sp_text_context_selection_changed(Inkscape::Selection *selection, TextTool *tc); +static void sp_text_context_selection_modified(Inkscape::Selection *selection, guint flags, TextTool *tc); +static bool sp_text_context_style_set(SPCSSAttr const *css, TextTool *tc); +static int sp_text_context_style_query(SPStyle *style, int property, TextTool *tc); +static void sp_text_context_validate_cursor_iterators(TextTool *tc); +static void sp_text_context_update_cursor(TextTool *tc, bool scroll_to_see = true); +static void sp_text_context_update_text_selection(TextTool *tc); +static gint sp_text_context_timeout(TextTool *tc); +static void sp_text_context_forget_text(TextTool *tc); -#include "tool-factory.h" +static gint sptc_focus_in(GtkWidget *widget, GdkEventFocus *event, TextTool *tc); +static gint sptc_focus_out(GtkWidget *widget, GdkEventFocus *event, TextTool *tc); +static void sptc_commit(GtkIMContext *imc, gchar *string, TextTool *tc); namespace { - SPEventContext* createTextContext() { - return new SPTextContext(); + ToolBase* createTextContext() { + return new TextTool(); } bool textContextRegistered = ToolFactory::instance().registerObject("/tools/text", createTextContext); } -const std::string& SPTextContext::getPrefsPath() { - return SPTextContext::prefsPath; +const std::string& TextTool::getPrefsPath() { + return TextTool::prefsPath; } -const std::string SPTextContext::prefsPath = "/tools/text"; +const std::string TextTool::prefsPath = "/tools/text"; -SPTextContext::SPTextContext() : SPEventContext() { +TextTool::TextTool() : ToolBase() { this->preedit_string = 0; this->unipos = 0; @@ -122,7 +124,7 @@ SPTextContext::SPTextContext() : SPEventContext() { this->creating = 0; } -SPTextContext::~SPTextContext() { +TextTool::~TextTool() { delete this->shape_editor; this->shape_editor = NULL; @@ -134,7 +136,7 @@ SPTextContext::~SPTextContext() { Inkscape::Rubberband::get(this->desktop)->stop(); } -void SPTextContext::setup() { +void TextTool::setup() { GtkSettings* settings = gtk_settings_get_default(); gint timeout = 0; g_object_get( settings, "gtk-cursor-blink-time", &timeout, NULL ); @@ -184,7 +186,7 @@ void SPTextContext::setup() { } } - SPEventContext::setup(); + ToolBase::setup(); this->shape_editor = new ShapeEditor(this->desktop); @@ -217,7 +219,7 @@ void SPTextContext::setup() { } } -void SPTextContext::finish() { +void TextTool::finish() { if (this->desktop) { sp_signal_disconnect_by_data(sp_desktop_canvas(this->desktop), this); } @@ -265,7 +267,7 @@ void SPTextContext::finish() { this->text_selection_quads.clear(); } -bool SPTextContext::item_handler(SPItem* item, GdkEvent* event) { +bool TextTool::item_handler(SPItem* item, GdkEvent* event) { SPItem *item_ungrouped; gint ret = FALSE; @@ -402,15 +404,15 @@ bool SPTextContext::item_handler(SPItem* item, GdkEvent* event) { } if (!ret) { - ret = SPEventContext::item_handler(item, event); + ret = ToolBase::item_handler(item, event); } return ret; } -static void sp_text_context_setup_text(SPTextContext *tc) +static void sp_text_context_setup_text(TextTool *tc) { - SPEventContext *ec = SP_EVENT_CONTEXT(tc); + ToolBase *ec = SP_EVENT_CONTEXT(tc); /* Create */ Inkscape::XML::Document *xml_doc = SP_EVENT_CONTEXT_DESKTOP(ec)->doc()->getReprDoc(); @@ -452,7 +454,7 @@ static void sp_text_context_setup_text(SPTextContext *tc) * * \pre tc.uni/tc.unipos non-empty. */ -static void insert_uni_char(SPTextContext *const tc) +static void insert_uni_char(TextTool *const tc) { g_return_if_fail(tc->unipos && tc->unipos < sizeof(tc->uni) @@ -500,7 +502,7 @@ static void hex_to_printable_utf8_buf(char const *const ehex, char *utf8) utf8[len] = '\0'; } -static void show_curr_uni_char(SPTextContext *const tc) +static void show_curr_uni_char(TextTool *const tc) { g_return_if_fail(tc->unipos < sizeof(tc->uni) && tc->uni[tc->unipos] == '\0'); @@ -524,7 +526,7 @@ static void show_curr_uni_char(SPTextContext *const tc) } } -bool SPTextContext::root_handler(GdkEvent* event) { +bool TextTool::root_handler(GdkEvent* event) { sp_canvas_item_hide(this->indicator); sp_text_context_validate_cursor_iterators(this); @@ -1290,19 +1292,19 @@ bool SPTextContext::root_handler(GdkEvent* event) { // } else { // return FALSE; // return "I did nothing" value so that global shortcuts can be activated // } - return SPEventContext::root_handler(event); + return ToolBase::root_handler(event); } /** Attempts to paste system clipboard into the currently edited text, returns true on success */ -bool sp_text_paste_inline(SPEventContext *ec) +bool sp_text_paste_inline(ToolBase *ec) { if (!SP_IS_TEXT_CONTEXT(ec)) return false; - SPTextContext *tc = SP_TEXT_CONTEXT(ec); + TextTool *tc = SP_TEXT_CONTEXT(ec); if ((tc->text) || (tc->nascent_object)) { // there is an active text object in this context, or a new object was just created @@ -1370,22 +1372,22 @@ bool sp_text_paste_inline(SPEventContext *ec) Gets the raw characters that comprise the currently selected text, converting line breaks into lf characters. */ -Glib::ustring sp_text_get_selected_text(SPEventContext const *ec) +Glib::ustring sp_text_get_selected_text(ToolBase const *ec) { if (!SP_IS_TEXT_CONTEXT(ec)) return ""; - SPTextContext const *tc = SP_TEXT_CONTEXT(ec); + TextTool const *tc = SP_TEXT_CONTEXT(ec); if (tc->text == NULL) return ""; return sp_te_get_string_multiline(tc->text, tc->text_sel_start, tc->text_sel_end); } -SPCSSAttr *sp_text_get_style_at_cursor(SPEventContext const *ec) +SPCSSAttr *sp_text_get_style_at_cursor(ToolBase const *ec) { if (!SP_IS_TEXT_CONTEXT(ec)) return NULL; - SPTextContext const *tc = SP_TEXT_CONTEXT(ec); + TextTool const *tc = SP_TEXT_CONTEXT(ec); if (tc->text == NULL) return NULL; @@ -1402,11 +1404,11 @@ SPCSSAttr *sp_text_get_style_at_cursor(SPEventContext const *ec) Deletes the currently selected characters. Returns false if there is no text selection currently. */ -bool sp_text_delete_selection(SPEventContext *ec) +bool sp_text_delete_selection(ToolBase *ec) { if (!SP_IS_TEXT_CONTEXT(ec)) return false; - SPTextContext *tc = SP_TEXT_CONTEXT(ec); + TextTool *tc = SP_TEXT_CONTEXT(ec); if (tc->text == NULL) return false; @@ -1434,11 +1436,11 @@ bool sp_text_delete_selection(SPEventContext *ec) * \param selection Should not be NULL. */ static void -sp_text_context_selection_changed(Inkscape::Selection *selection, SPTextContext *tc) +sp_text_context_selection_changed(Inkscape::Selection *selection, TextTool *tc) { g_assert(selection != NULL); - SPEventContext *ec = SP_EVENT_CONTEXT(tc); + ToolBase *ec = SP_EVENT_CONTEXT(tc); ec->shape_editor->unset_item(SH_KNOTHOLDER); SPItem *item = selection->singleItem(); @@ -1467,13 +1469,13 @@ sp_text_context_selection_changed(Inkscape::Selection *selection, SPTextContext } static void -sp_text_context_selection_modified(Inkscape::Selection */*selection*/, guint /*flags*/, SPTextContext *tc) +sp_text_context_selection_modified(Inkscape::Selection */*selection*/, guint /*flags*/, TextTool *tc) { sp_text_context_update_cursor(tc); sp_text_context_update_text_selection(tc); } -static bool sp_text_context_style_set(SPCSSAttr const *css, SPTextContext *tc) +static bool sp_text_context_style_set(SPCSSAttr const *css, TextTool *tc) { if (tc->text == NULL) return false; @@ -1490,7 +1492,7 @@ static bool sp_text_context_style_set(SPCSSAttr const *css, SPTextContext *tc) } static int -sp_text_context_style_query(SPStyle *style, int property, SPTextContext *tc) +sp_text_context_style_query(SPStyle *style, int property, TextTool *tc) { if (tc->text == NULL) { return QUERY_STYLE_NOTHING; @@ -1536,7 +1538,7 @@ sp_text_context_style_query(SPStyle *style, int property, SPTextContext *tc) return result; } -static void sp_text_context_validate_cursor_iterators(SPTextContext *tc) +static void sp_text_context_validate_cursor_iterators(TextTool *tc) { if (tc->text == NULL) return; @@ -1547,7 +1549,7 @@ static void sp_text_context_validate_cursor_iterators(SPTextContext *tc) } } -static void sp_text_context_update_cursor(SPTextContext *tc, bool scroll_to_see) +static void sp_text_context_update_cursor(TextTool *tc, bool scroll_to_see) { // due to interruptible display, tc may already be destroyed during a display update before // the cursor update (can't do both atomically, alas) @@ -1628,7 +1630,7 @@ static void sp_text_context_update_cursor(SPTextContext *tc, bool scroll_to_see SP_EVENT_CONTEXT(tc)->desktop->emitToolSubselectionChanged((gpointer)tc); } -static void sp_text_context_update_text_selection(SPTextContext *tc) +static void sp_text_context_update_text_selection(TextTool *tc) { // due to interruptible display, tc may already be destroyed during a display update before // the selection update (can't do both atomically, alas) @@ -1655,7 +1657,7 @@ static void sp_text_context_update_text_selection(SPTextContext *tc) } } -static gint sp_text_context_timeout(SPTextContext *tc) +static gint sp_text_context_timeout(TextTool *tc) { if (tc->show) { sp_canvas_item_show(tc->cursor); @@ -1671,7 +1673,7 @@ static gint sp_text_context_timeout(SPTextContext *tc) return TRUE; } -static void sp_text_context_forget_text(SPTextContext *tc) +static void sp_text_context_forget_text(TextTool *tc) { if (! tc->text) return; SPItem *ti = tc->text; @@ -1699,19 +1701,19 @@ static void sp_text_context_forget_text(SPTextContext *tc) */ } -gint sptc_focus_in(GtkWidget */*widget*/, GdkEventFocus */*event*/, SPTextContext *tc) +gint sptc_focus_in(GtkWidget */*widget*/, GdkEventFocus */*event*/, TextTool *tc) { gtk_im_context_focus_in(tc->imc); return FALSE; } -gint sptc_focus_out(GtkWidget */*widget*/, GdkEventFocus */*event*/, SPTextContext *tc) +gint sptc_focus_out(GtkWidget */*widget*/, GdkEventFocus */*event*/, TextTool *tc) { gtk_im_context_focus_out(tc->imc); return FALSE; } -static void sptc_commit(GtkIMContext */*imc*/, gchar *string, SPTextContext *tc) +static void sptc_commit(GtkIMContext */*imc*/, gchar *string, TextTool *tc) { if (!tc->text) { sp_text_context_setup_text(tc); @@ -1726,7 +1728,7 @@ static void sptc_commit(GtkIMContext */*imc*/, gchar *string, SPTextContext *tc) _("Type text")); } -void sp_text_context_place_cursor (SPTextContext *tc, SPObject *text, Inkscape::Text::Layout::iterator where) +void sp_text_context_place_cursor (TextTool *tc, SPObject *text, Inkscape::Text::Layout::iterator where) { SP_EVENT_CONTEXT_DESKTOP (tc)->selection->set (text); tc->text_sel_start = tc->text_sel_end = where; @@ -1734,19 +1736,22 @@ void sp_text_context_place_cursor (SPTextContext *tc, SPObject *text, Inkscape:: sp_text_context_update_text_selection(tc); } -void sp_text_context_place_cursor_at (SPTextContext *tc, SPObject *text, Geom::Point const p) +void sp_text_context_place_cursor_at (TextTool *tc, SPObject *text, Geom::Point const p) { SP_EVENT_CONTEXT_DESKTOP (tc)->selection->set (text); sp_text_context_place_cursor (tc, text, sp_te_get_position_by_coords(tc->text, p)); } -Inkscape::Text::Layout::iterator *sp_text_context_get_cursor_position(SPTextContext *tc, SPObject *text) +Inkscape::Text::Layout::iterator *sp_text_context_get_cursor_position(TextTool *tc, SPObject *text) { if (text != tc->text) return NULL; return &(tc->text_sel_end); } +} +} +} /* Local Variables: diff --git a/src/text-context.h b/src/text-context.h index 95b812c2b..1b618a1f0 100644 --- a/src/text-context.h +++ b/src/text-context.h @@ -2,7 +2,7 @@ #define __SP_TEXT_CONTEXT_H__ /* - * SPTextContext + * TextTool * * Authors: * Lauris Kaplinski @@ -23,15 +23,19 @@ #include <2geom/point.h> #include "libnrtype/Layout-TNG.h" -#define SP_TEXT_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_TEXT_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_TEXT_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define SP_IS_TEXT_CONTEXT(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj) != NULL) struct SPCtrlLine; -class SPTextContext : public SPEventContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class TextTool : public ToolBase { public: - SPTextContext(); - virtual ~SPTextContext(); + TextTool(); + virtual ~TextTool(); sigc::connection sel_changed_connection; sigc::connection sel_modified_connection; @@ -82,12 +86,16 @@ public: virtual const std::string& getPrefsPath(); }; -bool sp_text_paste_inline(SPEventContext *ec); -Glib::ustring sp_text_get_selected_text(SPEventContext const *ec); -SPCSSAttr *sp_text_get_style_at_cursor(SPEventContext const *ec); -bool sp_text_delete_selection(SPEventContext *ec); -void sp_text_context_place_cursor (SPTextContext *tc, SPObject *text, Inkscape::Text::Layout::iterator where); -void sp_text_context_place_cursor_at (SPTextContext *tc, SPObject *text, Geom::Point const p); -Inkscape::Text::Layout::iterator *sp_text_context_get_cursor_position(SPTextContext *tc, SPObject *text); +bool sp_text_paste_inline(ToolBase *ec); +Glib::ustring sp_text_get_selected_text(ToolBase const *ec); +SPCSSAttr *sp_text_get_style_at_cursor(ToolBase const *ec); +bool sp_text_delete_selection(ToolBase *ec); +void sp_text_context_place_cursor (TextTool *tc, SPObject *text, Inkscape::Text::Layout::iterator where); +void sp_text_context_place_cursor_at (TextTool *tc, SPObject *text, Geom::Point const p); +Inkscape::Text::Layout::iterator *sp_text_context_get_cursor_position(TextTool *tc, SPObject *text); + +} +} +} #endif diff --git a/src/tool-factory.h b/src/tool-factory.h index d8aeb5f04..726706732 100644 --- a/src/tool-factory.h +++ b/src/tool-factory.h @@ -1,5 +1,5 @@ /** @file - * Factory for SPEventContext tree + * Factory for ToolBase tree *//* * Authors: * Markus Engel @@ -13,8 +13,17 @@ #include "factory.h" -class SPEventContext; -typedef Singleton< Factory > ToolFactory; +namespace Inkscape { +namespace UI { +namespace Tools { + +class ToolBase; + +} +} +} + +typedef Singleton< Factory > ToolFactory; #endif diff --git a/src/tools-switch.cpp b/src/tools-switch.cpp index 5f54ad15a..beff0e5f3 100644 --- a/src/tools-switch.cpp +++ b/src/tools-switch.cpp @@ -169,7 +169,7 @@ void tools_switch_by_item(SPDesktop *dt, SPItem *item, Geom::Point const p) } else if (SP_IS_SPIRAL(item)) { tools_switch(dt, TOOLS_SHAPES_SPIRAL); } else if (SP_IS_PATH(item)) { - if (cc_item_is_connector(item)) { + if (Inkscape::UI::Tools::cc_item_is_connector(item)) { tools_switch(dt, TOOLS_CONNECTOR); } else { diff --git a/src/tweak-context.cpp b/src/tweak-context.cpp index a8841985d..5129e152e 100644 --- a/src/tweak-context.cpp +++ b/src/tweak-context.cpp @@ -93,21 +93,25 @@ using Inkscape::DocumentUndo; #include "tool-factory.h" +namespace Inkscape { +namespace UI { +namespace Tools { + namespace { - SPEventContext* createTweakContext() { - return new SPTweakContext(); + ToolBase* createTweakContext() { + return new TweakTool(); } bool tweakContextRegistered = ToolFactory::instance().registerObject("/tools/tweak", createTweakContext); } -const std::string& SPTweakContext::getPrefsPath() { - return SPTweakContext::prefsPath; +const std::string& TweakTool::getPrefsPath() { + return TweakTool::prefsPath; } -const std::string SPTweakContext::prefsPath = "/tools/tweak"; +const std::string TweakTool::prefsPath = "/tools/tweak"; -SPTweakContext::SPTweakContext() : SPEventContext() { +TweakTool::TweakTool() : ToolBase() { this->mode = 0; this->dilate_area = 0; this->usetilt = 0; @@ -135,7 +139,7 @@ SPTweakContext::SPTweakContext() : SPEventContext() { this->do_o = false; } -SPTweakContext::~SPTweakContext() { +TweakTool::~TweakTool() { this->enableGrDrag(false); this->style_set_connection.disconnect(); @@ -161,7 +165,7 @@ static bool is_color_mode (gint mode) return (mode == TWEAK_MODE_COLORPAINT || mode == TWEAK_MODE_COLORJITTER || mode == TWEAK_MODE_BLUR); } -void SPTweakContext::update_cursor (bool with_shift) { +void TweakTool::update_cursor (bool with_shift) { guint num = 0; gchar *sel_message = NULL; @@ -255,7 +259,7 @@ void SPTweakContext::update_cursor (bool with_shift) { g_free(sel_message); } -bool SPTweakContext::set_style(const SPCSSAttr* css) { +bool TweakTool::set_style(const SPCSSAttr* css) { if (this->mode == TWEAK_MODE_COLORPAINT) { // intercept color setting only in this mode // we cannot store properties with uris css = sp_css_attr_unset_uris(const_cast(css)); @@ -267,8 +271,8 @@ bool SPTweakContext::set_style(const SPCSSAttr* css) { return false; } -void SPTweakContext::setup() { - SPEventContext::setup(); +void TweakTool::setup() { + ToolBase::setup(); { /* TODO: have a look at sp_dyna_draw_context_setup where the same is done.. generalize? at least make it an arcto! */ @@ -298,7 +302,7 @@ void SPTweakContext::setup() { this->style_set_connection = this->desktop->connectSetStyle( // catch style-setting signal in this tool //sigc::bind(sigc::ptr_fun(&sp_tweak_context_style_set), this) - sigc::mem_fun(this, &SPTweakContext::set_style) + sigc::mem_fun(this, &TweakTool::set_style) ); Inkscape::Preferences *prefs = Inkscape::Preferences::get(); @@ -310,7 +314,7 @@ void SPTweakContext::setup() { } } -void SPTweakContext::set(const Inkscape::Preferences::Entry& val) { +void TweakTool::set(const Inkscape::Preferences::Entry& val) { Glib::ustring path = val.getEntryName(); if (path == "width") { @@ -336,7 +340,7 @@ void SPTweakContext::set(const Inkscape::Preferences::Entry& val) { } static void -sp_tweak_extinput(SPTweakContext *tc, GdkEvent *event) +sp_tweak_extinput(TweakTool *tc, GdkEvent *event) { if (gdk_event_get_axis (event, GDK_AXIS_PRESSURE, &tc->pressure)) { tc->pressure = CLAMP (tc->pressure, TC_MIN_PRESSURE, TC_MAX_PRESSURE); @@ -346,14 +350,14 @@ sp_tweak_extinput(SPTweakContext *tc, GdkEvent *event) } static double -get_dilate_radius (SPTweakContext *tc) +get_dilate_radius (TweakTool *tc) { // 10 times the pen width: return 500 * tc->width/SP_EVENT_CONTEXT(tc)->desktop->current_zoom(); } static double -get_path_force (SPTweakContext *tc) +get_path_force (TweakTool *tc) { double force = 8 * (tc->usepressure? tc->pressure : TC_DEFAULT_PRESSURE) /sqrt(SP_EVENT_CONTEXT(tc)->desktop->current_zoom()); @@ -364,7 +368,7 @@ get_path_force (SPTweakContext *tc) } static double -get_move_force (SPTweakContext *tc) +get_move_force (TweakTool *tc) { double force = (tc->usepressure? tc->pressure : TC_DEFAULT_PRESSURE); return force * tc->force; @@ -1021,7 +1025,7 @@ sp_tweak_color_recursive (guint mode, SPItem *item, SPItem *item_at_point, static bool -sp_tweak_dilate (SPTweakContext *tc, Geom::Point event_p, Geom::Point p, Geom::Point vector, bool reverse) +sp_tweak_dilate (TweakTool *tc, Geom::Point event_p, Geom::Point p, Geom::Point vector, bool reverse) { Inkscape::Selection *selection = sp_desktop_selection(SP_EVENT_CONTEXT(tc)->desktop); SPDesktop *desktop = SP_EVENT_CONTEXT(tc)->desktop; @@ -1111,7 +1115,7 @@ sp_tweak_dilate (SPTweakContext *tc, Geom::Point event_p, Geom::Point p, Geom::P } static void -sp_tweak_update_area (SPTweakContext *tc) +sp_tweak_update_area (TweakTool *tc) { double radius = get_dilate_radius(tc); Geom::Affine const sm (Geom::Scale(radius, radius) * Geom::Translate(SP_EVENT_CONTEXT(tc)->desktop->point())); @@ -1120,7 +1124,7 @@ sp_tweak_update_area (SPTweakContext *tc) } static void -sp_tweak_switch_mode (SPTweakContext *tc, gint mode, bool with_shift) +sp_tweak_switch_mode (TweakTool *tc, gint mode, bool with_shift) { SP_EVENT_CONTEXT(tc)->desktop->setToolboxSelectOneValue ("tweak_tool_mode", mode); // need to set explicitly, because the prefs may not have changed by the previous @@ -1129,7 +1133,7 @@ sp_tweak_switch_mode (SPTweakContext *tc, gint mode, bool with_shift) } static void -sp_tweak_switch_mode_temporarily (SPTweakContext *tc, gint mode, bool with_shift) +sp_tweak_switch_mode_temporarily (TweakTool *tc, gint mode, bool with_shift) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); // Juggling about so that prefs have the old value but tc->mode and the button show new mode: @@ -1142,7 +1146,7 @@ sp_tweak_switch_mode_temporarily (SPTweakContext *tc, gint mode, bool with_shift tc->update_cursor(with_shift); } -bool SPTweakContext::root_handler(GdkEvent* event) { +bool TweakTool::root_handler(GdkEvent* event) { gint ret = FALSE; switch (event->type) { @@ -1498,12 +1502,15 @@ bool SPTweakContext::root_handler(GdkEvent* event) { } if (!ret) { - ret = SPEventContext::root_handler(event); + ret = ToolBase::root_handler(event); } return ret; } +} +} +} /* Local Variables: diff --git a/src/tweak-context.h b/src/tweak-context.h index da1a50a79..80e2c75b9 100644 --- a/src/tweak-context.h +++ b/src/tweak-context.h @@ -21,6 +21,10 @@ #define TC_MAX_PRESSURE 1.0 #define TC_DEFAULT_PRESSURE 0.35 +namespace Inkscape { +namespace UI { +namespace Tools { + enum { TWEAK_MODE_MOVE, TWEAK_MODE_MOVE_IN_OUT, @@ -37,10 +41,10 @@ enum { TWEAK_MODE_BLUR }; -class SPTweakContext : public SPEventContext { +class TweakTool : public ToolBase { public: - SPTweakContext(); - virtual ~SPTweakContext(); + TweakTool(); + virtual ~TweakTool(); /* extended input data */ gdouble pressure; @@ -84,6 +88,10 @@ private: bool set_style(const SPCSSAttr* css); }; +} +} +} + #endif /* diff --git a/src/ui/clipboard.cpp b/src/ui/clipboard.cpp index da6fed86b..ffb2bdf8c 100644 --- a/src/ui/clipboard.cpp +++ b/src/ui/clipboard.cpp @@ -247,13 +247,13 @@ void ClipboardManagerImpl::copy(SPDesktop *desktop) // not the object that holds it; also copy the style at cursor into if (tools_isactive(desktop, TOOLS_TEXT)) { _discardInternalClipboard(); - Glib::ustring selected_text = sp_text_get_selected_text(desktop->event_context); + Glib::ustring selected_text = Inkscape::UI::Tools::sp_text_get_selected_text(desktop->event_context); _clipboard->set_text(selected_text); if (_text_style) { sp_repr_css_attr_unref(_text_style); _text_style = NULL; } - _text_style = sp_text_get_style_at_cursor(desktop->event_context); + _text_style = Inkscape::UI::Tools::sp_text_get_style_at_cursor(desktop->event_context); return; } @@ -908,7 +908,7 @@ bool ClipboardManagerImpl::_pasteText(SPDesktop *desktop) // if the text editing tool is active, paste the text into the active text object if (tools_isactive(desktop, TOOLS_TEXT)) { - return sp_text_paste_inline(desktop->event_context); + return Inkscape::UI::Tools::sp_text_paste_inline(desktop->event_context); } // try to parse the text as a color and, if successful, apply it as the current style diff --git a/src/ui/dialog/align-and-distribute.cpp b/src/ui/dialog/align-and-distribute.cpp index 38f10c59c..4a3852d5d 100644 --- a/src/ui/dialog/align-and-distribute.cpp +++ b/src/ui/dialog/align-and-distribute.cpp @@ -374,13 +374,13 @@ private : return; } - SPEventContext *event_context = _dialog.getDesktop()->getEventContext(); + Inkscape::UI::Tools::ToolBase *event_context = _dialog.getDesktop()->getEventContext(); if (!INK_IS_NODE_TOOL(event_context)) { return; } - InkNodeTool *nt = INK_NODE_TOOL(event_context); + Inkscape::UI::Tools::NodeTool *nt = INK_NODE_TOOL(event_context); if (_distribute) { nt->_multipath->distributeNodes(_orientation); @@ -829,7 +829,7 @@ private : -static void on_tool_changed(Inkscape::Application */*inkscape*/, SPEventContext */*context*/, AlignAndDistribute *daad) +static void on_tool_changed(Inkscape::Application */*inkscape*/, Inkscape::UI::Tools::ToolBase */*context*/, AlignAndDistribute *daad) { SPDesktop *desktop = SP_ACTIVE_DESKTOP; if (desktop && desktop->getEventContext()) diff --git a/src/ui/dialog/dialog.cpp b/src/ui/dialog/dialog.cpp index f27d344fa..7fc9c3889 100644 --- a/src/ui/dialog/dialog.cpp +++ b/src/ui/dialog/dialog.cpp @@ -270,7 +270,7 @@ bool Dialog::_onEvent(GdkEvent *event) switch (event->type) { case GDK_KEY_PRESS: { - switch (get_group0_keyval (&event->key)) { + switch (Inkscape::UI::Tools::get_group0_keyval (&event->key)) { case GDK_KEY_Escape: { _defocus(); ret = true; @@ -300,7 +300,7 @@ bool Dialog::_onEvent(GdkEvent *event) bool Dialog::_onKeyPress(GdkEventKey *event) { unsigned int shortcut; - shortcut = get_group0_keyval(event) | + shortcut = Inkscape::UI::Tools::get_group0_keyval(event) | ( event->state & GDK_SHIFT_MASK ? SP_SHORTCUT_SHIFT_MASK : 0 ) | ( event->state & GDK_CONTROL_MASK ? diff --git a/src/ui/dialog/layer-properties.cpp b/src/ui/dialog/layer-properties.cpp index b9e5d4883..c726f93af 100644 --- a/src/ui/dialog/layer-properties.cpp +++ b/src/ui/dialog/layer-properties.cpp @@ -318,7 +318,7 @@ SPObject* LayerPropertiesDialog::_selectedLayer() bool LayerPropertiesDialog::_handleKeyEvent(GdkEventKey *event) { - switch (get_group0_keyval(event)) { + switch (Inkscape::UI::Tools::get_group0_keyval(event)) { case GDK_KEY_Return: case GDK_KEY_KP_Enter: { _strategy->perform(*this); diff --git a/src/ui/dialog/layers.cpp b/src/ui/dialog/layers.cpp index c01903f94..ff9265c8d 100644 --- a/src/ui/dialog/layers.cpp +++ b/src/ui/dialog/layers.cpp @@ -544,7 +544,7 @@ void LayersPanel::_toggled( Glib::ustring const& str, int targetCol ) bool LayersPanel::_handleKeyEvent(GdkEventKey *event) { - switch (get_group0_keyval(event)) { + switch (Inkscape::UI::Tools::get_group0_keyval(event)) { case GDK_KEY_Return: case GDK_KEY_KP_Enter: case GDK_KEY_F2: { diff --git a/src/ui/dialog/xml-tree.cpp b/src/ui/dialog/xml-tree.cpp index a537b7fca..dfddfb1d3 100644 --- a/src/ui/dialog/xml-tree.cpp +++ b/src/ui/dialog/xml-tree.cpp @@ -328,7 +328,7 @@ void XmlTree::attr_reset_context(gint attr) bool XmlTree::sp_xml_tree_key_press(GdkEventKey *event) { - unsigned int shortcut = get_group0_keyval (event) | + unsigned int shortcut = Inkscape::UI::Tools::get_group0_keyval (event) | ( event->state & GDK_SHIFT_MASK ? SP_SHORTCUT_SHIFT_MASK : 0 ) | ( event->state & GDK_CONTROL_MASK ? @@ -842,7 +842,7 @@ void XmlTree::on_document_uri_set(gchar const * /*uri*/, SPDocument * /*document gboolean XmlTree::quit_on_esc (GtkWidget *w, GdkEventKey *event, GObject */*tbl*/) { - switch (get_group0_keyval (event)) { + switch (Inkscape::UI::Tools::get_group0_keyval (event)) { case GDK_KEY_Escape: // defocus gtk_widget_destroy(w); return TRUE; diff --git a/src/ui/tool/control-point-selection.cpp b/src/ui/tool/control-point-selection.cpp index 1c42c5d90..b5ee0a597 100644 --- a/src/ui/tool/control-point-selection.cpp +++ b/src/ui/tool/control-point-selection.cpp @@ -582,7 +582,7 @@ void ControlPointSelection::_commitHandlesTransform(CommitEvent ce) signal_commit.emit(ce); } -bool ControlPointSelection::event(SPEventContext * /*event_context*/, GdkEvent *event) +bool ControlPointSelection::event(Inkscape::UI::Tools::ToolBase * /*event_context*/, GdkEvent *event) { // implement generic event handling that should apply for all control point selections here; // for example, keyboard moves and transformations. This way this functionality doesn't need diff --git a/src/ui/tool/control-point-selection.h b/src/ui/tool/control-point-selection.h index f5eb47026..a087e0455 100644 --- a/src/ui/tool/control-point-selection.h +++ b/src/ui/tool/control-point-selection.h @@ -90,7 +90,7 @@ public: void invertSelection(); void spatialGrow(SelectableControlPoint *origin, int dir); - virtual bool event(SPEventContext *, GdkEvent *); + virtual bool event(Inkscape::UI::Tools::ToolBase *, GdkEvent *); void transform(Geom::Affine const &m); void align(Geom::Dim2 d); diff --git a/src/ui/tool/control-point.cpp b/src/ui/tool/control-point.cpp index 069dcc67b..3f1587492 100644 --- a/src/ui/tool/control-point.cpp +++ b/src/ui/tool/control-point.cpp @@ -218,7 +218,7 @@ int ControlPoint::_event_handler(SPCanvasItem */*item*/, GdkEvent *event, Contro } // main event callback, which emits all other callbacks. -bool ControlPoint::_eventHandler(SPEventContext *event_context, GdkEvent *event) +bool ControlPoint::_eventHandler(Inkscape::UI::Tools::ToolBase *event_context, GdkEvent *event) { // NOTE the static variables below are shared for all points! // TODO handle clicks and drags from other buttons too @@ -310,7 +310,7 @@ bool ControlPoint::_eventHandler(SPEventContext *event_context, GdkEvent *event) _desktop->set_coordinate_status(_position); sp_event_context_snap_delay_handler(event_context, NULL, (gpointer) this, &event->motion, - DelayedSnapEvent::CONTROL_POINT_HANDLER); + Inkscape::UI::Tools::DelayedSnapEvent::CONTROL_POINT_HANDLER); } return true; } @@ -375,7 +375,7 @@ bool ControlPoint::_eventHandler(SPEventContext *event_context, GdkEvent *event) // update tips on modifier state change // TODO add ESC keybinding as drag cancel case GDK_KEY_PRESS: - switch (get_group0_keyval(&event->key)) + switch (Inkscape::UI::Tools::get_group0_keyval(&event->key)) { case GDK_KEY_Escape: { // ignore Escape if this is not a drag diff --git a/src/ui/tool/control-point.h b/src/ui/tool/control-point.h index 30efe8a27..b3ed9545e 100644 --- a/src/ui/tool/control-point.h +++ b/src/ui/tool/control-point.h @@ -23,7 +23,16 @@ #include "enums.h" class SPDesktop; -class SPEventContext; + +namespace Inkscape { +namespace UI { +namespace Tools { + +class ToolBase; + +} +} +} namespace Inkscape { namespace UI { @@ -181,7 +190,7 @@ public: static Glib::ustring format_tip(char const *format, ...) G_GNUC_PRINTF(1,2); // temporarily public, until snap delay is refactored a little - virtual bool _eventHandler(SPEventContext *event_context, GdkEvent *event); + virtual bool _eventHandler(Inkscape::UI::Tools::ToolBase *event_context, GdkEvent *event); SPDesktop *const _desktop; ///< The desktop this control point resides on. protected: diff --git a/src/ui/tool/curve-drag-point.cpp b/src/ui/tool/curve-drag-point.cpp index b83ce1b3c..4ca736f80 100644 --- a/src/ui/tool/curve-drag-point.cpp +++ b/src/ui/tool/curve-drag-point.cpp @@ -32,7 +32,7 @@ CurveDragPoint::CurveDragPoint(PathManipulator &pm) : setVisible(false); } -bool CurveDragPoint::_eventHandler(SPEventContext *event_context, GdkEvent *event) +bool CurveDragPoint::_eventHandler(Inkscape::UI::Tools::ToolBase *event_context, GdkEvent *event) { // do not process any events when the manipulator is empty if (_pm.empty()) { diff --git a/src/ui/tool/curve-drag-point.h b/src/ui/tool/curve-drag-point.h index 73e4cd969..ea83978e0 100644 --- a/src/ui/tool/curve-drag-point.h +++ b/src/ui/tool/curve-drag-point.h @@ -35,7 +35,7 @@ public: void setSize(double sz) { _setSize(sz); } void setTimeValue(double t) { _t = t; } void setIterator(NodeList::iterator i) { first = i; } - virtual bool _eventHandler(SPEventContext *event_context, GdkEvent *event); + virtual bool _eventHandler(Inkscape::UI::Tools::ToolBase *event_context, GdkEvent *event); protected: diff --git a/src/ui/tool/manipulator.h b/src/ui/tool/manipulator.h index ffed370d3..2e6d80517 100644 --- a/src/ui/tool/manipulator.h +++ b/src/ui/tool/manipulator.h @@ -40,7 +40,7 @@ public: virtual ~Manipulator() {} /// Handle input event. Returns true if handled. - virtual bool event(SPEventContext *, GdkEvent *)=0; + virtual bool event(Inkscape::UI::Tools::ToolBase *, GdkEvent *)=0; SPDesktop *const _desktop; }; @@ -145,7 +145,7 @@ public: } } - virtual bool event(SPEventContext *event_context, GdkEvent *event) { + virtual bool event(Inkscape::UI::Tools::ToolBase *event_context, GdkEvent *event) { for (typename MapType::iterator i = _mmap.begin(); i != _mmap.end(); ++i) { if ((*i).second->event(event_context, event)) return true; } diff --git a/src/ui/tool/multi-path-manipulator.cpp b/src/ui/tool/multi-path-manipulator.cpp index 5d5ea2adc..519c4ac6a 100644 --- a/src/ui/tool/multi-path-manipulator.cpp +++ b/src/ui/tool/multi-path-manipulator.cpp @@ -557,7 +557,7 @@ void MultiPathManipulator::updateHandles() invokeForAll(&PathManipulator::updateHandles); } -bool MultiPathManipulator::event(SPEventContext *event_context, GdkEvent *event) +bool MultiPathManipulator::event(Inkscape::UI::Tools::ToolBase *event_context, GdkEvent *event) { _tracker.event(event); guint key = 0; diff --git a/src/ui/tool/multi-path-manipulator.h b/src/ui/tool/multi-path-manipulator.h index 54a9b5753..1328372c6 100644 --- a/src/ui/tool/multi-path-manipulator.h +++ b/src/ui/tool/multi-path-manipulator.h @@ -36,7 +36,7 @@ class MultiPathManipulator : public PointManipulator { public: MultiPathManipulator(PathSharedData &data, sigc::connection &chg); virtual ~MultiPathManipulator(); - virtual bool event(SPEventContext *, GdkEvent *event); + virtual bool event(Inkscape::UI::Tools::ToolBase *, GdkEvent *event); bool empty() { return _mmap.empty(); } unsigned size() { return _mmap.empty(); } diff --git a/src/ui/tool/node-tool.cpp b/src/ui/tool/node-tool.cpp index 76e33e506..2eeab7c1b 100644 --- a/src/ui/tool/node-tool.cpp +++ b/src/ui/tool/node-tool.cpp @@ -45,7 +45,7 @@ #include -/** @struct InkNodeTool +/** @struct NodeTool * * Node tool event context. * @@ -104,25 +104,29 @@ using Inkscape::ControlManager; -SPCanvasGroup *create_control_group(SPDesktop *d); - #include "tool-factory.h" +namespace Inkscape { +namespace UI { +namespace Tools { + namespace { - SPEventContext* createNodesContext() { - return new InkNodeTool(); + ToolBase* createNodesContext() { + return new NodeTool(); } bool nodesContextRegistered = ToolFactory::instance().registerObject("/tools/nodes", createNodesContext); } -const std::string& InkNodeTool::getPrefsPath() { - return InkNodeTool::prefsPath; +const std::string& NodeTool::getPrefsPath() { + return NodeTool::prefsPath; } -const std::string InkNodeTool::prefsPath = "/tools/nodes"; +const std::string NodeTool::prefsPath = "/tools/nodes"; + +SPCanvasGroup *create_control_group(SPDesktop *d); -InkNodeTool::InkNodeTool() : SPEventContext() { +NodeTool::NodeTool() : ToolBase() { this->show_handles = false; this->single_node_transform_handles = false; this->show_transform_handles = false; @@ -159,7 +163,7 @@ void destroy_group(SPCanvasGroup *g) sp_canvas_item_destroy(SP_CANVAS_ITEM(g)); } -InkNodeTool::~InkNodeTool() { +NodeTool::~NodeTool() { this->enableGrDrag(false); if (this->flash_tempitem) { @@ -184,8 +188,8 @@ InkNodeTool::~InkNodeTool() { destroy_group(this->_transform_handle_group); } -void InkNodeTool::setup() { - SPEventContext::setup(); +void NodeTool::setup() { + ToolBase::setup(); this->_path_data = new Inkscape::UI::PathSharedData(); @@ -208,14 +212,14 @@ void InkNodeTool::setup() { this->_selection_changed_connection.disconnect(); this->_selection_changed_connection = - selection->connectChanged(sigc::mem_fun(this, &InkNodeTool::selection_changed)); + selection->connectChanged(sigc::mem_fun(this, &NodeTool::selection_changed)); this->_mouseover_changed_connection.disconnect(); this->_mouseover_changed_connection = - Inkscape::UI::ControlPoint::signal_mouseover_change.connect(sigc::mem_fun(this, &InkNodeTool::mouseover_changed)); + Inkscape::UI::ControlPoint::signal_mouseover_change.connect(sigc::mem_fun(this, &NodeTool::mouseover_changed)); this->_sizeUpdatedConn = ControlManager::getManager().connectCtrlSizeChanged( - sigc::mem_fun(this, &InkNodeTool::handleControlUiStyleChange) + sigc::mem_fun(this, &NodeTool::handleControlUiStyleChange) ); this->_selected_nodes = new Inkscape::UI::ControlPointSelection(this->desktop, this->_transform_handle_group); @@ -224,8 +228,8 @@ void InkNodeTool::setup() { this->_multipath = new Inkscape::UI::MultiPathManipulator(data, this->_selection_changed_connection); - this->_selector->signal_point.connect(sigc::mem_fun(this, &InkNodeTool::select_point)); - this->_selector->signal_area.connect(sigc::mem_fun(this, &InkNodeTool::select_area)); + this->_selector->signal_point.connect(sigc::mem_fun(this, &NodeTool::select_point)); + this->_selector->signal_area.connect(sigc::mem_fun(this, &NodeTool::select_area)); this->_multipath->signal_coords_changed.connect( sigc::bind( @@ -240,7 +244,7 @@ void InkNodeTool::setup() { // <=> // void update_tip(GdkEvent *event) sigc::hide(sigc::hide(sigc::bind( - sigc::mem_fun(this, &InkNodeTool::update_tip), + sigc::mem_fun(this, &NodeTool::update_tip), (GdkEvent*)NULL ))) ); @@ -279,7 +283,7 @@ void InkNodeTool::setup() { this->desktop->emitToolSubselectionChanged(NULL); // sets the coord entry fields to inactive } -void InkNodeTool::set(const Inkscape::Preferences::Entry& value) { +void NodeTool::set(const Inkscape::Preferences::Entry& value) { Glib::ustring entry_name = value.getEntryName(); if (entry_name == "show_handles") { @@ -312,12 +316,12 @@ void InkNodeTool::set(const Inkscape::Preferences::Entry& value) { this->edit_masks = value.getBool(); this->selection_changed(this->desktop->selection); } else { - SPEventContext::set(value); + ToolBase::set(value); } } /** Recursively collect ShapeRecords */ -void gather_items(InkNodeTool *nt, SPItem *base, SPObject *obj, Inkscape::UI::ShapeRole role, +void gather_items(NodeTool *nt, SPItem *base, SPObject *obj, Inkscape::UI::ShapeRole role, std::set &s) { using namespace Inkscape::UI; @@ -358,7 +362,7 @@ void gather_items(InkNodeTool *nt, SPItem *base, SPObject *obj, Inkscape::UI::Sh } } -void InkNodeTool::selection_changed(Inkscape::Selection *sel) { +void NodeTool::selection_changed(Inkscape::Selection *sel) { using namespace Inkscape::UI; std::set shapes; @@ -405,7 +409,7 @@ void InkNodeTool::selection_changed(Inkscape::Selection *sel) { this->desktop->updateNow(); } -bool InkNodeTool::root_handler(GdkEvent* event) { +bool NodeTool::root_handler(GdkEvent* event) { /* things to handle here: * 1. selection of items * 2. passing events to manipulators @@ -534,10 +538,10 @@ bool InkNodeTool::root_handler(GdkEvent* event) { break; } - return SPEventContext::root_handler(event); + return ToolBase::root_handler(event); } -void InkNodeTool::update_tip(GdkEvent *event) { +void NodeTool::update_tip(GdkEvent *event) { using namespace Inkscape::UI; if (event && (event->type == GDK_KEY_PRESS || event->type == GDK_KEY_RELEASE)) { @@ -603,7 +607,7 @@ void InkNodeTool::update_tip(GdkEvent *event) { } } -void InkNodeTool::select_area(Geom::Rect const &sel, GdkEventButton *event) { +void NodeTool::select_area(Geom::Rect const &sel, GdkEventButton *event) { using namespace Inkscape::UI; if (this->_multipath->empty()) { @@ -621,7 +625,7 @@ void InkNodeTool::select_area(Geom::Rect const &sel, GdkEventButton *event) { } } -void InkNodeTool::select_point(Geom::Point const &sel, GdkEventButton *event) { +void NodeTool::select_point(Geom::Point const &sel, GdkEventButton *event) { using namespace Inkscape::UI; // pull in event helpers if (!event) { @@ -659,7 +663,7 @@ void InkNodeTool::select_point(Geom::Point const &sel, GdkEventButton *event) { } } -void InkNodeTool::mouseover_changed(Inkscape::UI::ControlPoint *p) { +void NodeTool::mouseover_changed(Inkscape::UI::ControlPoint *p) { using Inkscape::UI::CurveDragPoint; CurveDragPoint *cdp = dynamic_cast(p); @@ -679,10 +683,14 @@ void InkNodeTool::mouseover_changed(Inkscape::UI::ControlPoint *p) { } } -void InkNodeTool::handleControlUiStyleChange() { +void NodeTool::handleControlUiStyleChange() { this->_multipath->updateHandles(); } +} +} +} + //} // anonymous namespace /* diff --git a/src/ui/tool/node-tool.h b/src/ui/tool/node-tool.h index c41f50650..a670256bb 100644 --- a/src/ui/tool/node-tool.h +++ b/src/ui/tool/node-tool.h @@ -30,13 +30,17 @@ namespace Inkscape { } } -#define INK_NODE_TOOL(obj) (dynamic_cast((SPEventContext*)obj)) -#define INK_IS_NODE_TOOL(obj) (dynamic_cast((const SPEventContext*)obj)) +#define INK_NODE_TOOL(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define INK_IS_NODE_TOOL(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj)) -class InkNodeTool : public SPEventContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class NodeTool : public ToolBase { public: - InkNodeTool(); - virtual ~InkNodeTool(); + NodeTool(); + virtual ~NodeTool(); Inkscape::UI::ControlPointSelection* _selected_nodes; Inkscape::UI::MultiPathManipulator* _multipath; @@ -83,6 +87,10 @@ private: void handleControlUiStyleChange(); }; +} +} +} + #endif /* diff --git a/src/ui/tool/node.cpp b/src/ui/tool/node.cpp index 76ec68c3e..e246bf997 100644 --- a/src/ui/tool/node.cpp +++ b/src/ui/tool/node.cpp @@ -250,7 +250,7 @@ char const *Handle::handle_type_to_localized_string(NodeType type) } } -bool Handle::_eventHandler(SPEventContext *event_context, GdkEvent *event) +bool Handle::_eventHandler(Inkscape::UI::Tools::ToolBase *event_context, GdkEvent *event) { switch (event->type) { @@ -834,7 +834,7 @@ NodeType Node::parse_nodetype(char x) } } -bool Node::_eventHandler(SPEventContext *event_context, GdkEvent *event) +bool Node::_eventHandler(Inkscape::UI::Tools::ToolBase *event_context, GdkEvent *event) { int dir = 0; diff --git a/src/ui/tool/node.h b/src/ui/tool/node.h index 591dd8532..e3fc6c2c8 100644 --- a/src/ui/tool/node.h +++ b/src/ui/tool/node.h @@ -106,7 +106,7 @@ protected: Handle(NodeSharedData const &data, Geom::Point const &initial_pos, Node *parent); - virtual bool _eventHandler(SPEventContext *event_context, GdkEvent *event); + virtual bool _eventHandler(Inkscape::UI::Tools::ToolBase *event_context, GdkEvent *event); virtual void dragged(Geom::Point &new_pos, GdkEventMotion *event); virtual bool grabbed(GdkEventMotion *event); virtual void ungrabbed(GdkEventButton *event); @@ -217,7 +217,7 @@ public: // temporarily public /** Customized event handler to catch scroll events needed for selection grow/shrink. */ - virtual bool _eventHandler(SPEventContext *event_context, GdkEvent *event); + virtual bool _eventHandler(Inkscape::UI::Tools::ToolBase *event_context, GdkEvent *event); Inkscape::SnapCandidatePoint snapCandidatePoint(); diff --git a/src/ui/tool/path-manipulator.cpp b/src/ui/tool/path-manipulator.cpp index d12e2958b..ec58e2141 100644 --- a/src/ui/tool/path-manipulator.cpp +++ b/src/ui/tool/path-manipulator.cpp @@ -157,7 +157,7 @@ PathManipulator::~PathManipulator() } /** Handle motion events to update the position of the curve drag point. */ -bool PathManipulator::event(SPEventContext * /*event_context*/, GdkEvent *event) +bool PathManipulator::event(Inkscape::UI::Tools::ToolBase * /*event_context*/, GdkEvent *event) { if (empty()) return false; diff --git a/src/ui/tool/path-manipulator.h b/src/ui/tool/path-manipulator.h index e01e8617f..7a13ce723 100644 --- a/src/ui/tool/path-manipulator.h +++ b/src/ui/tool/path-manipulator.h @@ -56,7 +56,7 @@ public: PathManipulator(MultiPathManipulator &mpm, SPPath *path, Geom::Affine const &edit_trans, guint32 outline_color, Glib::ustring lpe_key); ~PathManipulator(); - virtual bool event(SPEventContext *, GdkEvent *); + virtual bool event(Inkscape::UI::Tools::ToolBase *, GdkEvent *); bool empty(); void writeXML(); diff --git a/src/ui/tool/selector.cpp b/src/ui/tool/selector.cpp index 2b3ba837c..d46a160bc 100644 --- a/src/ui/tool/selector.cpp +++ b/src/ui/tool/selector.cpp @@ -48,12 +48,12 @@ public: SPDesktop *desktop() { return _desktop; } - bool event(SPEventContext *ec, GdkEvent *e) { + bool event(Inkscape::UI::Tools::ToolBase *ec, GdkEvent *e) { return _eventHandler(ec, e); } protected: - virtual bool _eventHandler(SPEventContext *event_context, GdkEvent *event) { + virtual bool _eventHandler(Inkscape::UI::Tools::ToolBase *event_context, GdkEvent *event) { if (event->type == GDK_KEY_PRESS && shortcut_key(event->key) == GDK_KEY_Escape && sp_canvas_item_is_visible(_rubber)) { @@ -110,7 +110,7 @@ Selector::~Selector() delete _dragger; } -bool Selector::event(SPEventContext *event_context, GdkEvent *event) +bool Selector::event(Inkscape::UI::Tools::ToolBase *event_context, GdkEvent *event) { // The hidden control point will capture all events after it obtains the grab, // but it relies on this function to initiate it. If we pass only first button @@ -118,7 +118,7 @@ bool Selector::event(SPEventContext *event_context, GdkEvent *event) switch (event->type) { case GDK_BUTTON_PRESS: // Do not pass button presses other than left button to the control point. - // This way middle click and right click can be handled in SPEventContext. + // This way middle click and right click can be handled in ToolBase. if (event->button.button == 1 && !event_context->space_panning) { _dragger->setPosition(_desktop->w2d(event_point(event->motion))); return _dragger->event(event_context, event); diff --git a/src/ui/tool/selector.h b/src/ui/tool/selector.h index 7e2759b69..dbe751ede 100644 --- a/src/ui/tool/selector.h +++ b/src/ui/tool/selector.h @@ -28,7 +28,7 @@ class Selector : public Manipulator { public: Selector(SPDesktop *d); virtual ~Selector(); - virtual bool event(SPEventContext *, GdkEvent *); + virtual bool event(Inkscape::UI::Tools::ToolBase *, GdkEvent *); sigc::signal signal_area; sigc::signal signal_point; diff --git a/src/ui/tool/transform-handle-set.cpp b/src/ui/tool/transform-handle-set.cpp index daed3a523..535a138ed 100644 --- a/src/ui/tool/transform-handle-set.cpp +++ b/src/ui/tool/transform-handle-set.cpp @@ -128,7 +128,7 @@ bool TransformHandle::grabbed(GdkEventMotion *) _setState(_state); // Collect the snap-candidates, one for each selected node. These will be stored in the _snap_points vector. - InkNodeTool *nt = INK_NODE_TOOL(_th._desktop->event_context); + Inkscape::UI::Tools::NodeTool *nt = INK_NODE_TOOL(_th._desktop->event_context); //ControlPointSelection *selection = nt->_selected_nodes.get(); ControlPointSelection* selection = nt->_selected_nodes; @@ -754,7 +754,7 @@ void TransformHandleSet::setBounds(Geom::Rect const &r, bool preserve_center) } } -bool TransformHandleSet::event(SPEventContext *, GdkEvent*) +bool TransformHandleSet::event(Inkscape::UI::Tools::ToolBase *, GdkEvent*) { return false; } diff --git a/src/ui/tool/transform-handle-set.h b/src/ui/tool/transform-handle-set.h index ce949cbb2..54f81adf5 100644 --- a/src/ui/tool/transform-handle-set.h +++ b/src/ui/tool/transform-handle-set.h @@ -40,7 +40,7 @@ public: TransformHandleSet(SPDesktop *d, SPCanvasGroup *th_group); virtual ~TransformHandleSet(); - virtual bool event(SPEventContext *, GdkEvent *); + virtual bool event(Inkscape::UI::Tools::ToolBase *, GdkEvent *); bool visible() const { return _visible; } Mode mode() const { return _mode; } diff --git a/src/ui/widget/rotateable.cpp b/src/ui/widget/rotateable.cpp index 18d53bf5c..24a21e075 100644 --- a/src/ui/widget/rotateable.cpp +++ b/src/ui/widget/rotateable.cpp @@ -111,7 +111,7 @@ bool Rotateable::on_motion(GdkEventMotion *event) { do_motion(force, modifier); } } - gobble_motion_events(GDK_BUTTON1_MASK); + Inkscape::UI::Tools::gobble_motion_events(GDK_BUTTON1_MASK); return true; } return false; diff --git a/src/ui/widget/spinbutton.cpp b/src/ui/widget/spinbutton.cpp index 6cbc15c1b..aa8f68ce8 100644 --- a/src/ui/widget/spinbutton.cpp +++ b/src/ui/widget/spinbutton.cpp @@ -71,7 +71,7 @@ bool SpinButton::on_my_focus_in_event(GdkEventFocus* /*event*/) bool SpinButton::on_my_key_press_event(GdkEventKey* event) { - switch (get_group0_keyval (event)) { + switch (Inkscape::UI::Tools::get_group0_keyval (event)) { case GDK_KEY_Escape: undo(); return true; // I consumed the event diff --git a/src/vanishing-point.cpp b/src/vanishing-point.cpp index 3adcfbb40..edc3dd15b 100644 --- a/src/vanishing-point.cpp +++ b/src/vanishing-point.cpp @@ -632,7 +632,7 @@ VPDrag::updateBoxHandles () return; } - SPEventContext *ec = inkscape_active_event_context(); + Inkscape::UI::Tools::ToolBase *ec = inkscape_active_event_context(); g_assert (ec != NULL); if (ec->shape_editor != NULL) { ec->shape_editor->update_knotholder(); diff --git a/src/verbs.cpp b/src/verbs.cpp index bdef0526a..4bcfd39fe 100644 --- a/src/verbs.cpp +++ b/src/verbs.cpp @@ -1473,7 +1473,7 @@ void ObjectVerb::perform( SPAction *action, void *data) g_return_if_fail(ensure_desktop_valid(action)); - SPEventContext *ec = dt->event_context; + Inkscape::UI::Tools::ToolBase *ec = dt->event_context; if (sel->isEmpty()) return; @@ -1622,7 +1622,7 @@ void ContextVerb::perform(SPAction *action, void *data) tools_switch(dt, TOOLS_MEASURE); break; case SP_VERB_CONTEXT_DROPPER: - sp_toggle_dropper(dt); // Functionality defined in event-context.cpp + Inkscape::UI::Tools::sp_toggle_dropper(dt); // Functionality defined in event-context.cpp break; case SP_VERB_CONTEXT_CONNECTOR: tools_switch(dt, TOOLS_CONNECTOR); @@ -1767,7 +1767,7 @@ void ZoomVerb::perform(SPAction *action, void *data) { g_return_if_fail(ensure_desktop_valid(action)); SPDesktop *dt = sp_action_get_desktop(action); - SPEventContext *ec = dt->event_context; + Inkscape::UI::Tools::ToolBase *ec = dt->event_context; SPDocument *doc = sp_desktop_document(dt); @@ -1780,7 +1780,7 @@ void ZoomVerb::perform(SPAction *action, void *data) switch (reinterpret_cast(data)) { case SP_VERB_ZOOM_IN: { - gint mul = 1 + gobble_key_events( + gint mul = 1 + Inkscape::UI::Tools::gobble_key_events( GDK_KEY_KP_Add, 0); // with any mask // While drawing with the pen/pencil tool, zoom towards the end of the unfinished path if (tools_isactive(dt, TOOLS_FREEHAND_PENCIL) || tools_isactive(dt, TOOLS_FREEHAND_PEN)) { @@ -1798,7 +1798,7 @@ void ZoomVerb::perform(SPAction *action, void *data) } case SP_VERB_ZOOM_OUT: { - gint mul = 1 + gobble_key_events( + gint mul = 1 + Inkscape::UI::Tools::gobble_key_events( GDK_KEY_KP_Subtract, 0); // with any mask // While drawing with the pen/pencil tool, zoom away from the end of the unfinished path if (tools_isactive(dt, TOOLS_FREEHAND_PENCIL) || tools_isactive(dt, TOOLS_FREEHAND_PEN)) { diff --git a/src/widgets/connector-toolbar.cpp b/src/widgets/connector-toolbar.cpp index 2e5c2ade1..32a6e8fb9 100644 --- a/src/widgets/connector-toolbar.cpp +++ b/src/widgets/connector-toolbar.cpp @@ -76,13 +76,13 @@ using Inkscape::UI::PrefPusher; static void sp_connector_path_set_avoid(void) { - cc_selection_set_avoid(true); + Inkscape::UI::Tools::cc_selection_set_avoid(true); } static void sp_connector_path_set_ignore(void) { - cc_selection_set_avoid(false); + Inkscape::UI::Tools::cc_selection_set_avoid(false); } static void sp_connector_orthogonal_toggled( GtkToggleAction* act, GObject *tbl ) @@ -114,7 +114,7 @@ static void sp_connector_orthogonal_toggled( GtkToggleAction* act, GObject *tbl while (l) { SPItem *item = SP_ITEM(l->data); - if (cc_item_is_connector(item)) { + if (Inkscape::UI::Tools::cc_item_is_connector(item)) { item->setAttribute( "inkscape:connector-type", value, NULL); item->avoidRef->handleSettingChange(); @@ -163,7 +163,7 @@ static void connector_curvature_changed(GtkAdjustment *adj, GObject* tbl) while (l) { SPItem *item = SP_ITEM(l->data); - if (cc_item_is_connector(item)) { + if (Inkscape::UI::Tools::cc_item_is_connector(item)) { item->setAttribute( "inkscape:connector-curvature", value, NULL); item->avoidRef->handleSettingChange(); diff --git a/src/widgets/fill-style.cpp b/src/widgets/fill-style.cpp index d9d62d3ec..d1d318abe 100644 --- a/src/widgets/fill-style.cpp +++ b/src/widgets/fill-style.cpp @@ -88,7 +88,7 @@ private: static void fillruleChangedCB( SPPaintSelector *psel, SPPaintSelector::FillRule mode, FillNStroke *self ); void selectionModifiedCB(guint flags); - void eventContextCB(SPDesktop *desktop, SPEventContext *eventcontext); + void eventContextCB(SPDesktop *desktop, Inkscape::UI::Tools::ToolBase *eventcontext); void dragFromPaint(); void updateFromPaint(); @@ -211,7 +211,7 @@ void FillNStroke::setDesktop(SPDesktop *desktop) if (desktop && desktop->selection) { selectChangedConn = desktop->selection->connectChanged(sigc::hide(sigc::mem_fun(*this, &FillNStroke::performUpdate))); subselChangedConn = desktop->connectToolSubselectionChanged(sigc::hide(sigc::mem_fun(*this, &FillNStroke::performUpdate))); - eventContextConn = desktop->connectEventContextChanged(sigc::hide(sigc::bind(sigc::mem_fun(*this, &FillNStroke::eventContextCB), (SPEventContext *)NULL))); + eventContextConn = desktop->connectEventContextChanged(sigc::hide(sigc::bind(sigc::mem_fun(*this, &FillNStroke::eventContextCB), (Inkscape::UI::Tools::ToolBase *)NULL))); // Must check flags, so can't call performUpdate() directly. selectModifiedConn = desktop->selection->connectModified(sigc::hide<0>(sigc::mem_fun(*this, &FillNStroke::selectionModifiedCB))); @@ -224,7 +224,7 @@ void FillNStroke::setDesktop(SPDesktop *desktop) * Listen to this "change in tool" event, in case a subselection tool (such as Gradient or Node) selection * is changed back to a selection tool - especially needed for selected gradient stops. */ -void FillNStroke::eventContextCB(SPDesktop * /*desktop*/, SPEventContext * /*eventcontext*/) +void FillNStroke::eventContextCB(SPDesktop * /*desktop*/, Inkscape::UI::Tools::ToolBase * /*eventcontext*/) { performUpdate(); } diff --git a/src/widgets/gradient-toolbar.cpp b/src/widgets/gradient-toolbar.cpp index f7d2b2bd5..a9122e54b 100644 --- a/src/widgets/gradient-toolbar.cpp +++ b/src/widgets/gradient-toolbar.cpp @@ -61,6 +61,7 @@ using Inkscape::DocumentUndo; using Inkscape::UI::ToolboxFactory; +using Inkscape::UI::Tools::ToolBase; void gr_apply_gradient_to_item( SPItem *item, SPGradient *gr, SPGradientType initialType, Inkscape::PaintTarget initialMode, Inkscape::PaintTarget mode ); void gr_apply_gradient(Inkscape::Selection *selection, GrDrag *drag, SPGradient *gr); @@ -70,8 +71,8 @@ void gr_read_selection( Inkscape::Selection *selection, GrDrag *drag, SPGradient static gboolean update_stop_list( GtkWidget *stop_combo, SPGradient *gradient, SPStop *new_stop, GtkWidget *widget, bool gr_multi); static void sp_gradient_vector_widget_load_gradient(GtkWidget *widget, SPGradient *gradient); static void select_stop_in_list( GtkWidget *combo_box, SPGradient *gradient, SPStop *new_stop, GtkWidget *data, gboolean block); -static void select_stop_by_drag( GtkWidget *combo_box, SPGradient *gradient, SPEventContext *ev, GtkWidget *data); -static void select_drag_by_stop( GtkWidget *combo_box, SPGradient *gradient, SPEventContext *ev); +static void select_stop_by_drag( GtkWidget *combo_box, SPGradient *gradient, ToolBase *ev, GtkWidget *data); +static void select_drag_by_stop( GtkWidget *combo_box, SPGradient *gradient, ToolBase *ev); static SPGradient *gr_get_selected_gradient(GtkWidget *widget); static void gr_stop_set_offset(GtkComboBox *widget, GtkWidget *data); void add_toolbar_widget(GtkWidget *tbl, GtkWidget *widget); @@ -373,7 +374,7 @@ static void gr_tb_selection_changed(Inkscape::Selection * /*selection*/, gpointe Inkscape::Selection *selection = sp_desktop_selection(desktop); // take from desktop, not from args if (selection) { - SPEventContext *ev = desktop->getEventContext(); + ToolBase *ev = desktop->getEventContext(); GrDrag *drag = NULL; if (ev) { drag = ev->get_drag(); @@ -585,8 +586,8 @@ static void gr_add_stop(GtkWidget * /*button*/, GtkWidget *vb) return; } - SPEventContext *ev = desktop->getEventContext(); - SPGradientContext *rc = SP_GRADIENT_CONTEXT(ev); + ToolBase *ev = desktop->getEventContext(); + Inkscape::UI::Tools::GradientTool *rc = SP_GRADIENT_CONTEXT(ev); if (rc) { sp_gradient_context_add_stops_between_selected_stops(rc); @@ -607,7 +608,7 @@ static void gr_remove_stop(GtkWidget * /*button*/, GtkWidget *vb) return; } - SPEventContext *ev = desktop->getEventContext(); + ToolBase *ev = desktop->getEventContext(); GrDrag *drag = NULL; if (ev) { drag = ev->get_drag(); @@ -641,7 +642,7 @@ static void gr_reverse(GtkWidget * /*button*/, gpointer data) /* * Change desktop drag selection to this stop */ -static void select_drag_by_stop( GtkWidget *data, SPGradient *gradient, SPEventContext *ev) +static void select_drag_by_stop( GtkWidget *data, SPGradient *gradient, ToolBase *ev) { if (blocked || !ev || !gradient) return; @@ -657,7 +658,7 @@ static void select_drag_by_stop( GtkWidget *data, SPGradient *gradient, SPEventC blocked = FALSE; } -static void select_stop_by_drag(GtkWidget *combo_box, SPGradient *gradient, SPEventContext *ev, GtkWidget *data) +static void select_stop_by_drag(GtkWidget *combo_box, SPGradient *gradient, ToolBase *ev, GtkWidget *data) { if (blocked || !ev || !gradient) return; @@ -939,7 +940,7 @@ static void gr_gradient_combo_changed(EgeSelectOneAction *act, gpointer data) SPDesktop *desktop = static_cast(data); Inkscape::Selection *selection = sp_desktop_selection(desktop); - SPEventContext *ev = desktop->getEventContext(); + ToolBase *ev = desktop->getEventContext(); gr_apply_gradient(selection, ev? ev->get_drag() : NULL, gr); @@ -981,7 +982,7 @@ static void gr_stop_combo_changed(GtkComboBox * /*widget*/, GtkWidget *data) } SPDesktop *desktop = static_cast(g_object_get_data(G_OBJECT(data), "desktop")); - SPEventContext *ev = desktop->getEventContext(); + ToolBase *ev = desktop->getEventContext(); SPGradient *gr = gr_get_selected_gradient(data); select_drag_by_stop(data, gr, ev); diff --git a/src/widgets/lpe-toolbar.cpp b/src/widgets/lpe-toolbar.cpp index 045d7aa78..9fdb7b036 100644 --- a/src/widgets/lpe-toolbar.cpp +++ b/src/widgets/lpe-toolbar.cpp @@ -73,6 +73,8 @@ using Inkscape::UI::UXManager; using Inkscape::DocumentUndo; using Inkscape::UI::ToolboxFactory; using Inkscape::UI::PrefPusher; +using Inkscape::UI::Tools::ToolBase; +using Inkscape::UI::Tools::LpeTool; //######################## @@ -87,7 +89,7 @@ static void sp_lpetool_mode_changed(EgeSelectOneAction *act, GObject *tbl) using namespace Inkscape::LivePathEffect; SPDesktop *desktop = static_cast(g_object_get_data(tbl, "desktop")); - SPEventContext *ec = desktop->event_context; + ToolBase *ec = desktop->event_context; if (!SP_IS_LPETOOL_CONTEXT(ec)) { return; } @@ -100,7 +102,7 @@ static void sp_lpetool_mode_changed(EgeSelectOneAction *act, GObject *tbl) gint mode = ege_select_one_action_get_active(act); EffectType type = lpesubtools[mode].type; - SPLPEToolContext *lc = SP_LPETOOL_CONTEXT(desktop->event_context); + LpeTool *lc = SP_LPETOOL_CONTEXT(desktop->event_context); bool success = lpetool_try_construction(lc, type); if (success) { // since the construction was already performed, we set the state back to inactive @@ -122,7 +124,7 @@ static void sp_lpetool_mode_changed(EgeSelectOneAction *act, GObject *tbl) static void sp_lpetool_toolbox_sel_modified(Inkscape::Selection *selection, guint /*flags*/, GObject * /*tbl*/) { - SPEventContext *ec = selection->desktop()->event_context; + ToolBase *ec = selection->desktop()->event_context; if (SP_IS_LPETOOL_CONTEXT(ec)) { lpetool_update_measuring_items(SP_LPETOOL_CONTEXT(ec)); } @@ -131,11 +133,11 @@ static void sp_lpetool_toolbox_sel_modified(Inkscape::Selection *selection, guin static void sp_lpetool_toolbox_sel_changed(Inkscape::Selection *selection, GObject *tbl) { using namespace Inkscape::LivePathEffect; - SPEventContext *ec = selection->desktop()->event_context; + ToolBase *ec = selection->desktop()->event_context; if (!SP_IS_LPETOOL_CONTEXT(ec)) { return; } - SPLPEToolContext *lc = SP_LPETOOL_CONTEXT(ec); + LpeTool *lc = SP_LPETOOL_CONTEXT(ec); lpetool_delete_measuring_items(lc); lpetool_create_measuring_items(lc, selection); @@ -172,7 +174,7 @@ static void lpetool_toggle_show_bbox(GtkToggleAction *act, gpointer data) { prefs->setBool("/tools/lpetool/show_bbox", show); if (tools_isactive(desktop, TOOLS_LPETOOL)) { - SPLPEToolContext *lc = SP_LPETOOL_CONTEXT(desktop->event_context); + LpeTool *lc = SP_LPETOOL_CONTEXT(desktop->event_context); lpetool_context_reset_limiting_bbox(lc); } } @@ -185,7 +187,7 @@ static void lpetool_toggle_show_measuring_info(GtkToggleAction *act, GObject *tb } GtkAction *unitact = static_cast(g_object_get_data(tbl, "lpetool_units_action")); - SPLPEToolContext *lc = SP_LPETOOL_CONTEXT(desktop->event_context); + LpeTool *lc = SP_LPETOOL_CONTEXT(desktop->event_context); if (tools_isactive(desktop, TOOLS_LPETOOL)) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); bool show = gtk_toggle_action_get_active( act ); @@ -204,7 +206,7 @@ static void lpetool_unit_changed(GtkAction* /*act*/, GObject* tbl) SPDesktop *desktop = static_cast(g_object_get_data( tbl, "desktop" )); if (SP_IS_LPETOOL_CONTEXT(desktop->event_context)) { - SPLPEToolContext *lc = SP_LPETOOL_CONTEXT(desktop->event_context); + LpeTool *lc = SP_LPETOOL_CONTEXT(desktop->event_context); lpetool_delete_measuring_items(lc); lpetool_create_measuring_items(lc); } diff --git a/src/widgets/mesh-toolbar.cpp b/src/widgets/mesh-toolbar.cpp index 582243870..926a42f90 100644 --- a/src/widgets/mesh-toolbar.cpp +++ b/src/widgets/mesh-toolbar.cpp @@ -94,7 +94,7 @@ static void ms_tb_selection_changed(Inkscape::Selection * /*selection*/, gpointe // Inkscape::Selection *selection = sp_desktop_selection(desktop); // take from desktop, not from args // if (selection) { - // SPEventContext *ev = sp_desktop_event_context(desktop); + // ToolBase *ev = sp_desktop_event_context(desktop); // GrDrag *drag = NULL; // if (ev) { // drag = ev->get_drag(); diff --git a/src/widgets/node-toolbar.cpp b/src/widgets/node-toolbar.cpp index 0d4868642..8d24fdf82 100644 --- a/src/widgets/node-toolbar.cpp +++ b/src/widgets/node-toolbar.cpp @@ -71,6 +71,7 @@ using Inkscape::DocumentUndo; using Inkscape::UI::ToolboxFactory; using Inkscape::UI::PrefPusher; using Inkscape::Util::unit_table; +using Inkscape::UI::Tools::NodeTool; //#################################### //# node editing callbacks @@ -78,13 +79,13 @@ using Inkscape::Util::unit_table; /** Temporary hack: Returns the node tool in the active desktop. * Will go away during tool refactoring. */ -static InkNodeTool *get_node_tool() +static NodeTool *get_node_tool() { - InkNodeTool *tool = 0; + NodeTool *tool = 0; if (SP_ACTIVE_DESKTOP ) { - SPEventContext *ec = SP_ACTIVE_DESKTOP->event_context; + Inkscape::UI::Tools::ToolBase *ec = SP_ACTIVE_DESKTOP->event_context; if (INK_IS_NODE_TOOL(ec)) { - tool = static_cast(ec); + tool = static_cast(ec); } } return tool; @@ -92,7 +93,7 @@ static InkNodeTool *get_node_tool() static void sp_node_path_edit_add(void) { - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (nt) { nt->_multipath->insertNodes(); } @@ -100,28 +101,28 @@ static void sp_node_path_edit_add(void) static void sp_node_path_edit_add_min_x(void) { - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (nt) { nt->_multipath->insertNodesAtExtrema(Inkscape::UI::PointManipulator::EXTR_MIN_X); } } static void sp_node_path_edit_add_max_x(void) { - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (nt) { nt->_multipath->insertNodesAtExtrema(Inkscape::UI::PointManipulator::EXTR_MAX_X); } } static void sp_node_path_edit_add_min_y(void) { - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (nt) { nt->_multipath->insertNodesAtExtrema(Inkscape::UI::PointManipulator::EXTR_MIN_Y); } } static void sp_node_path_edit_add_max_y(void) { - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (nt) { nt->_multipath->insertNodesAtExtrema(Inkscape::UI::PointManipulator::EXTR_MAX_Y); } @@ -129,7 +130,7 @@ static void sp_node_path_edit_add_max_y(void) static void sp_node_path_edit_delete(void) { - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (nt) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); nt->_multipath->deleteNodes(prefs->getBool("/tools/nodes/delete_preserves_shape", true)); @@ -138,7 +139,7 @@ static void sp_node_path_edit_delete(void) static void sp_node_path_edit_delete_segment(void) { - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (nt) { nt->_multipath->deleteSegments(); } @@ -146,7 +147,7 @@ static void sp_node_path_edit_delete_segment(void) static void sp_node_path_edit_break(void) { - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (nt) { nt->_multipath->breakNodes(); } @@ -154,7 +155,7 @@ static void sp_node_path_edit_break(void) static void sp_node_path_edit_join(void) { - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (nt) { nt->_multipath->joinNodes(); } @@ -162,7 +163,7 @@ static void sp_node_path_edit_join(void) static void sp_node_path_edit_join_segment(void) { - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (nt) { nt->_multipath->joinSegments(); } @@ -170,7 +171,7 @@ static void sp_node_path_edit_join_segment(void) static void sp_node_path_edit_toline(void) { - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (nt) { nt->_multipath->setSegmentType(Inkscape::UI::SEGMENT_STRAIGHT); } @@ -178,7 +179,7 @@ static void sp_node_path_edit_toline(void) static void sp_node_path_edit_tocurve(void) { - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (nt) { nt->_multipath->setSegmentType(Inkscape::UI::SEGMENT_CUBIC_BEZIER); } @@ -186,7 +187,7 @@ static void sp_node_path_edit_tocurve(void) static void sp_node_path_edit_cusp(void) { - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (nt) { nt->_multipath->setNodeType(Inkscape::UI::NODE_CUSP); } @@ -194,7 +195,7 @@ static void sp_node_path_edit_cusp(void) static void sp_node_path_edit_smooth(void) { - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (nt) { nt->_multipath->setNodeType(Inkscape::UI::NODE_SMOOTH); } @@ -202,7 +203,7 @@ static void sp_node_path_edit_smooth(void) static void sp_node_path_edit_symmetrical(void) { - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (nt) { nt->_multipath->setNodeType(Inkscape::UI::NODE_SYMMETRIC); } @@ -210,7 +211,7 @@ static void sp_node_path_edit_symmetrical(void) static void sp_node_path_edit_auto(void) { - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (nt) { nt->_multipath->setNodeType(Inkscape::UI::NODE_AUTO); } @@ -242,7 +243,7 @@ static void sp_node_toolbox_coord_changed(gpointer /*shape_editor*/, GObject *tb } Unit const *unit = tracker->getActiveUnit(); - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (!nt || nt->_selected_nodes->empty()) { // no path selected gtk_action_set_sensitive(xact, FALSE); @@ -289,7 +290,7 @@ static void sp_node_path_value_changed(GtkAdjustment *adj, GObject *tbl, Geom::D // in turn, prevent listener from responding g_object_set_data( tbl, "freeze", GINT_TO_POINTER(TRUE)); - InkNodeTool *nt = get_node_tool(); + NodeTool *nt = get_node_tool(); if (nt && !nt->_selected_nodes->empty()) { double val = Quantity::convert(gtk_adjustment_get_value(adj), unit, "px"); double oldval = nt->_selected_nodes->pointwiseBounds()->midpoint()[d]; diff --git a/src/widgets/paintbucket-toolbar.cpp b/src/widgets/paintbucket-toolbar.cpp index 363fadd3d..e0d406c04 100644 --- a/src/widgets/paintbucket-toolbar.cpp +++ b/src/widgets/paintbucket-toolbar.cpp @@ -80,7 +80,7 @@ static void paintbucket_channels_changed(EgeSelectOneAction* act, GObject* /*tbl { gint channels = ege_select_one_action_get_active( act ); //flood_channels_set_channels( channels ); - SPFloodContext::set_channels(channels); + Inkscape::UI::Tools::FloodTool::set_channels(channels); } static void paintbucket_threshold_changed(GtkAdjustment *adj, GObject * /*tbl*/) @@ -127,7 +127,7 @@ static void paintbucket_defaults(GtkWidget *, GObject *tbl) } EgeSelectOneAction* channels_action = EGE_SELECT_ONE_ACTION( g_object_get_data (tbl, "channels_action" ) ); - ege_select_one_action_set_active( channels_action, FLOOD_CHANNELS_RGB ); + ege_select_one_action_set_active( channels_action, Inkscape::UI::Tools::FLOOD_CHANNELS_RGB ); EgeSelectOneAction* autogap_action = EGE_SELECT_ONE_ACTION( g_object_get_data (tbl, "autogap_action" ) ); ege_select_one_action_set_active( autogap_action, 0 ); } @@ -142,7 +142,7 @@ void sp_paintbucket_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions GList* items = 0; gint count = 0; - for ( items = flood_channels_dropdown_items_list(); items ; items = g_list_next(items) ) + for ( items = Inkscape::UI::Tools::flood_channels_dropdown_items_list(); items ; items = g_list_next(items) ) { GtkTreeIter iter; gtk_list_store_append( model, &iter ); @@ -209,7 +209,7 @@ void sp_paintbucket_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions GList* items = 0; gint count = 0; - for ( items = flood_autogap_dropdown_items_list(); items ; items = g_list_next(items) ) + for ( items = Inkscape::UI::Tools::flood_autogap_dropdown_items_list(); items ; items = g_list_next(items) ) { GtkTreeIter iter; gtk_list_store_append( model, &iter ); diff --git a/src/widgets/pencil-toolbar.cpp b/src/widgets/pencil-toolbar.cpp index f112a35fa..4abff5061 100644 --- a/src/widgets/pencil-toolbar.cpp +++ b/src/widgets/pencil-toolbar.cpp @@ -103,7 +103,7 @@ static void freehand_mode_changed(EgeSelectOneAction* act, GObject* tbl) // in pen tool we have more options than in pencil tool; if one of them was chosen, we do any // preparatory work here if (SP_IS_PEN_CONTEXT(desktop->event_context)) { - SPPenContext *pc = SP_PEN_CONTEXT(desktop->event_context); + Inkscape::UI::Tools::PenTool *pc = SP_PEN_CONTEXT(desktop->event_context); sp_pen_context_set_polyline_mode(pc); } } diff --git a/src/widgets/sp-color-notebook.cpp b/src/widgets/sp-color-notebook.cpp index c709e9775..8b42f4ae1 100644 --- a/src/widgets/sp-color-notebook.cpp +++ b/src/widgets/sp-color-notebook.cpp @@ -542,7 +542,7 @@ void ColorNotebook::_picker_clicked(GtkWidget * /*widget*/, SPColorNotebook * /* // Set the dropper into a "one click" mode, so it reverts to the previous tool after a click Inkscape::Preferences *prefs = Inkscape::Preferences::get(); prefs->setBool("/tools/dropper/onetimepick", true); - sp_toggle_dropper(SP_ACTIVE_DESKTOP); + Inkscape::UI::Tools::sp_toggle_dropper(SP_ACTIVE_DESKTOP); } void ColorNotebook::_rgbaEntryChangedHook(GtkEntry *entry, SPColorNotebook *colorbook) diff --git a/src/widgets/spinbutton-events.cpp b/src/widgets/spinbutton-events.cpp index 7a481aea8..ac5f0040d 100644 --- a/src/widgets/spinbutton-events.cpp +++ b/src/widgets/spinbutton-events.cpp @@ -67,7 +67,7 @@ gboolean spinbutton_keypress(GtkWidget *w, GdkEventKey *event, gpointer /*data*/ { gboolean result = FALSE; // I didn't consume the event - switch (get_group0_keyval(event)) { + switch (Inkscape::UI::Tools::get_group0_keyval(event)) { case GDK_KEY_Escape: // defocus spinbutton_undo(w); spinbutton_defocus(w); diff --git a/src/widgets/text-toolbar.cpp b/src/widgets/text-toolbar.cpp index 6b9fc900c..a9d29ae98 100644 --- a/src/widgets/text-toolbar.cpp +++ b/src/widgets/text-toolbar.cpp @@ -652,7 +652,7 @@ static void sp_text_dx_value_changed( GtkAdjustment *adj, GObject *tbl ) bool modmade = false; if( SP_IS_TEXT_CONTEXT((SP_ACTIVE_DESKTOP)->event_context) ) { - SPTextContext *const tc = SP_TEXT_CONTEXT((SP_ACTIVE_DESKTOP)->event_context); + Inkscape::UI::Tools::TextTool *const tc = SP_TEXT_CONTEXT((SP_ACTIVE_DESKTOP)->event_context); if( tc ) { unsigned char_index = -1; TextTagAttributes *attributes = @@ -686,7 +686,7 @@ static void sp_text_dy_value_changed( GtkAdjustment *adj, GObject *tbl ) bool modmade = false; if( SP_IS_TEXT_CONTEXT((SP_ACTIVE_DESKTOP)->event_context) ) { - SPTextContext *const tc = SP_TEXT_CONTEXT((SP_ACTIVE_DESKTOP)->event_context); + Inkscape::UI::Tools::TextTool *const tc = SP_TEXT_CONTEXT((SP_ACTIVE_DESKTOP)->event_context); if( tc ) { unsigned char_index = -1; TextTagAttributes *attributes = @@ -721,7 +721,7 @@ static void sp_text_rotation_value_changed( GtkAdjustment *adj, GObject *tbl ) bool modmade = false; if( SP_IS_TEXT_CONTEXT((SP_ACTIVE_DESKTOP)->event_context) ) { - SPTextContext *const tc = SP_TEXT_CONTEXT((SP_ACTIVE_DESKTOP)->event_context); + Inkscape::UI::Tools::TextTool *const tc = SP_TEXT_CONTEXT((SP_ACTIVE_DESKTOP)->event_context); if( tc ) { unsigned char_index = -1; TextTagAttributes *attributes = @@ -1091,7 +1091,7 @@ static void sp_text_toolbox_selection_changed(Inkscape::Selection */*selection*/ // Kerning (xshift), yshift, rotation. NB: These are not CSS attributes. if( SP_IS_TEXT_CONTEXT((SP_ACTIVE_DESKTOP)->event_context) ) { - SPTextContext *const tc = SP_TEXT_CONTEXT((SP_ACTIVE_DESKTOP)->event_context); + Inkscape::UI::Tools::TextTool *const tc = SP_TEXT_CONTEXT((SP_ACTIVE_DESKTOP)->event_context); if( tc ) { unsigned char_index = -1; TextTagAttributes *attributes = diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp index ddbe77fbb..bb8d47339 100644 --- a/src/widgets/toolbox.cpp +++ b/src/widgets/toolbox.cpp @@ -104,9 +104,10 @@ using Inkscape::UI::UXManager; using Inkscape::DocumentUndo; using Inkscape::UI::PrefPusher; using Inkscape::UI::ToolboxFactory; +using Inkscape::UI::Tools::ToolBase; typedef void (*SetupFunction)(GtkWidget *toolbox, SPDesktop *desktop); -typedef void (*UpdateFunction)(SPDesktop *desktop, SPEventContext *eventcontext, GtkWidget *toolbox); +typedef void (*UpdateFunction)(SPDesktop *desktop, ToolBase *eventcontext, GtkWidget *toolbox); enum BarId { BAR_TOOL = 0, @@ -550,13 +551,13 @@ static Glib::RefPtr create_or_fetch_actions( SPDesktop* deskto static void setup_snap_toolbox(GtkWidget *toolbox, SPDesktop *desktop); static void setup_tool_toolbox(GtkWidget *toolbox, SPDesktop *desktop); -static void update_tool_toolbox(SPDesktop *desktop, SPEventContext *eventcontext, GtkWidget *toolbox); +static void update_tool_toolbox(SPDesktop *desktop, ToolBase *eventcontext, GtkWidget *toolbox); static void setup_aux_toolbox(GtkWidget *toolbox, SPDesktop *desktop); -static void update_aux_toolbox(SPDesktop *desktop, SPEventContext *eventcontext, GtkWidget *toolbox); +static void update_aux_toolbox(SPDesktop *desktop, ToolBase *eventcontext, GtkWidget *toolbox); static void setup_commands_toolbox(GtkWidget *toolbox, SPDesktop *desktop); -static void update_commands_toolbox(SPDesktop *desktop, SPEventContext *eventcontext, GtkWidget *toolbox); +static void update_commands_toolbox(SPDesktop *desktop, ToolBase *eventcontext, GtkWidget *toolbox); static GtkToolItem * sp_toolbox_button_item_new_from_verb_with_doubleclick( GtkWidget *t, Inkscape::IconSize size, SPButtonType type, Inkscape::Verb *verb, Inkscape::Verb *doubleclick_verb, @@ -1310,7 +1311,7 @@ void setup_tool_toolbox(GtkWidget *toolbox, SPDesktop *desktop) "/toolbox/tools/small"); } -void update_tool_toolbox( SPDesktop *desktop, SPEventContext *eventcontext, GtkWidget * /*toolbox*/ ) +void update_tool_toolbox( SPDesktop *desktop, ToolBase *eventcontext, GtkWidget * /*toolbox*/ ) { gchar const *const tname = ( eventcontext ? eventcontext->getPrefsPath().c_str() //g_type_name(G_OBJECT_TYPE(eventcontext)) @@ -1432,7 +1433,7 @@ void setup_aux_toolbox(GtkWidget *toolbox, SPDesktop *desktop) g_object_unref( G_OBJECT(grouper) ); } -void update_aux_toolbox(SPDesktop * /*desktop*/, SPEventContext *eventcontext, GtkWidget *toolbox) +void update_aux_toolbox(SPDesktop * /*desktop*/, ToolBase *eventcontext, GtkWidget *toolbox) { gchar const *tname = ( eventcontext ? eventcontext->getPrefsPath().c_str() //g_type_name(G_OBJECT_TYPE(eventcontext)) @@ -1495,7 +1496,7 @@ void setup_commands_toolbox(GtkWidget *toolbox, SPDesktop *desktop) "/toolbox/small" ); } -void update_commands_toolbox(SPDesktop * /*desktop*/, SPEventContext * /*eventcontext*/, GtkWidget * /*toolbox*/) +void update_commands_toolbox(SPDesktop * /*desktop*/, ToolBase * /*eventcontext*/, GtkWidget * /*toolbox*/) { } @@ -1864,7 +1865,7 @@ Glib::ustring ToolboxFactory::getToolboxName(GtkWidget* toolbox) return name; } -void ToolboxFactory::updateSnapToolbox(SPDesktop *desktop, SPEventContext * /*eventcontext*/, GtkWidget *toolbox) +void ToolboxFactory::updateSnapToolbox(SPDesktop *desktop, ToolBase * /*eventcontext*/, GtkWidget *toolbox) { g_assert(desktop != NULL); g_assert(toolbox != NULL); diff --git a/src/widgets/toolbox.h b/src/widgets/toolbox.h index e9ffcda4a..fb749bfb5 100644 --- a/src/widgets/toolbox.h +++ b/src/widgets/toolbox.h @@ -23,7 +23,16 @@ #define TOOLBAR_SLIDER_HINT "full" class SPDesktop; -class SPEventContext; + +namespace Inkscape { +namespace UI { +namespace Tools { + +class ToolBase; + +} +} +} namespace Inkscape { namespace UI { @@ -50,7 +59,7 @@ public: static Glib::ustring getToolboxName(GtkWidget* toolbox); - static void updateSnapToolbox(SPDesktop *desktop, SPEventContext *eventcontext, GtkWidget *toolbox); + static void updateSnapToolbox(SPDesktop *desktop, Inkscape::UI::Tools::ToolBase *eventcontext, GtkWidget *toolbox); static Inkscape::IconSize prefToSize(Glib::ustring const &path, int base = 0 ); diff --git a/src/widgets/tweak-toolbar.cpp b/src/widgets/tweak-toolbar.cpp index 6da7608bd..c828373d7 100644 --- a/src/widgets/tweak-toolbar.cpp +++ b/src/widgets/tweak-toolbar.cpp @@ -92,7 +92,7 @@ static void sp_tweak_mode_changed( EgeSelectOneAction *act, GObject *tbl ) prefs->setInt("/tools/tweak/mode", mode); static gchar const* names[] = {"tweak_doh", "tweak_dos", "tweak_dol", "tweak_doo", "tweak_channels_label"}; - bool flag = ((mode == TWEAK_MODE_COLORPAINT) || (mode == TWEAK_MODE_COLORJITTER)); + bool flag = ((mode == Inkscape::UI::Tools::TWEAK_MODE_COLORPAINT) || (mode == Inkscape::UI::Tools::TWEAK_MODE_COLORJITTER)); for (size_t i = 0; i < G_N_ELEMENTS(names); ++i) { GtkAction *act = GTK_ACTION(g_object_get_data( tbl, names[i] )); if (act) { @@ -289,7 +289,7 @@ void sp_tweak_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObj EgeOutputAction* act = ege_output_action_new( "TweakChannelsLabel", _("Channels:"), "", 0 ); ege_output_action_set_use_markup( act, TRUE ); gtk_action_group_add_action( mainActions, GTK_ACTION( act ) ); - if (mode != TWEAK_MODE_COLORPAINT && mode != TWEAK_MODE_COLORJITTER) { + if (mode != Inkscape::UI::Tools::TWEAK_MODE_COLORPAINT && mode != Inkscape::UI::Tools::TWEAK_MODE_COLORJITTER) { gtk_action_set_sensitive (GTK_ACTION(act), FALSE); } g_object_set_data( holder, "tweak_channels_label", act); @@ -306,7 +306,7 @@ void sp_tweak_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObj gtk_action_group_add_action( mainActions, GTK_ACTION( act ) ); g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(tweak_toggle_doh), desktop ); gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), prefs->getBool("/tools/tweak/doh", true) ); - if (mode != TWEAK_MODE_COLORPAINT && mode != TWEAK_MODE_COLORJITTER) { + if (mode != Inkscape::UI::Tools::TWEAK_MODE_COLORPAINT && mode != Inkscape::UI::Tools::TWEAK_MODE_COLORJITTER) { gtk_action_set_sensitive (GTK_ACTION(act), FALSE); } g_object_set_data( holder, "tweak_doh", act); @@ -322,7 +322,7 @@ void sp_tweak_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObj gtk_action_group_add_action( mainActions, GTK_ACTION( act ) ); g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(tweak_toggle_dos), desktop ); gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), prefs->getBool("/tools/tweak/dos", true) ); - if (mode != TWEAK_MODE_COLORPAINT && mode != TWEAK_MODE_COLORJITTER) { + if (mode != Inkscape::UI::Tools::TWEAK_MODE_COLORPAINT && mode != Inkscape::UI::Tools::TWEAK_MODE_COLORJITTER) { gtk_action_set_sensitive (GTK_ACTION(act), FALSE); } g_object_set_data( holder, "tweak_dos", act ); @@ -338,7 +338,7 @@ void sp_tweak_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObj gtk_action_group_add_action( mainActions, GTK_ACTION( act ) ); g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(tweak_toggle_dol), desktop ); gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), prefs->getBool("/tools/tweak/dol", true) ); - if (mode != TWEAK_MODE_COLORPAINT && mode != TWEAK_MODE_COLORJITTER) { + if (mode != Inkscape::UI::Tools::TWEAK_MODE_COLORPAINT && mode != Inkscape::UI::Tools::TWEAK_MODE_COLORJITTER) { gtk_action_set_sensitive (GTK_ACTION(act), FALSE); } g_object_set_data( holder, "tweak_dol", act ); @@ -354,7 +354,7 @@ void sp_tweak_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObj gtk_action_group_add_action( mainActions, GTK_ACTION( act ) ); g_signal_connect_after( G_OBJECT(act), "toggled", G_CALLBACK(tweak_toggle_doo), desktop ); gtk_toggle_action_set_active( GTK_TOGGLE_ACTION(act), prefs->getBool("/tools/tweak/doo", true) ); - if (mode != TWEAK_MODE_COLORPAINT && mode != TWEAK_MODE_COLORJITTER) { + if (mode != Inkscape::UI::Tools::TWEAK_MODE_COLORPAINT && mode != Inkscape::UI::Tools::TWEAK_MODE_COLORJITTER) { gtk_action_set_sensitive (GTK_ACTION(act), FALSE); } g_object_set_data( holder, "tweak_doo", act ); @@ -373,7 +373,7 @@ void sp_tweak_toolbox_prep(SPDesktop *desktop, GtkActionGroup* mainActions, GObj sp_tweak_fidelity_value_changed, NULL /*unit tracker*/, 0.01, 0, 100 ); gtk_action_group_add_action( mainActions, GTK_ACTION(eact) ); gtk_action_set_sensitive( GTK_ACTION(eact), TRUE ); - if (mode == TWEAK_MODE_COLORPAINT || mode == TWEAK_MODE_COLORJITTER) { + if (mode == Inkscape::UI::Tools::TWEAK_MODE_COLORPAINT || mode == Inkscape::UI::Tools::TWEAK_MODE_COLORJITTER) { gtk_action_set_sensitive (GTK_ACTION(eact), FALSE); } g_object_set_data( holder, "tweak_fidelity", eact ); diff --git a/src/zoom-context.cpp b/src/zoom-context.cpp index 6efc122f7..fd04f8cd9 100644 --- a/src/zoom-context.cpp +++ b/src/zoom-context.cpp @@ -27,21 +27,25 @@ #include "zoom-context.h" #include "tool-factory.h" +namespace Inkscape { +namespace UI { +namespace Tools { + namespace { - SPEventContext* createZoomContext() { - return new SPZoomContext(); + ToolBase* createZoomContext() { + return new ZoomTool(); } bool zoomContextRegistered = ToolFactory::instance().registerObject("/tools/zoom", createZoomContext); } -const std::string& SPZoomContext::getPrefsPath() { - return SPZoomContext::prefsPath; +const std::string& ZoomTool::getPrefsPath() { + return ZoomTool::prefsPath; } -const std::string SPZoomContext::prefsPath = "/tools/zoom"; +const std::string ZoomTool::prefsPath = "/tools/zoom"; -SPZoomContext::SPZoomContext() : SPEventContext() { +ZoomTool::ZoomTool() : ToolBase() { this->grabbed = 0; this->cursor_shape = cursor_zoom_xpm; this->hot_x = 6; @@ -49,10 +53,10 @@ SPZoomContext::SPZoomContext() : SPEventContext() { this->escaped = false; } -SPZoomContext::~SPZoomContext() { +ZoomTool::~ZoomTool() { } -void SPZoomContext::finish() { +void ZoomTool::finish() { this->enableGrDrag(false); if (this->grabbed) { @@ -61,7 +65,7 @@ void SPZoomContext::finish() { } } -void SPZoomContext::setup() { +void ZoomTool::setup() { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); if (prefs->getBool("/tools/zoom/selcue")) { @@ -72,10 +76,10 @@ void SPZoomContext::setup() { this->enableGrDrag(); } - SPEventContext::setup(); + ToolBase::setup(); } -bool SPZoomContext::root_handler(GdkEvent* event) { +bool ZoomTool::root_handler(GdkEvent* event) { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); tolerance = prefs->getIntLimited("/options/dragtolerance/value", 0, 0, 100); @@ -224,12 +228,16 @@ bool SPZoomContext::root_handler(GdkEvent* event) { } if (!ret) { - ret = SPEventContext::root_handler(event); + ret = ToolBase::root_handler(event); } return ret; } +} +} +} + /* Local Variables: mode:c++ diff --git a/src/zoom-context.h b/src/zoom-context.h index 3e98915af..83fc69a88 100644 --- a/src/zoom-context.h +++ b/src/zoom-context.h @@ -15,13 +15,17 @@ #include "event-context.h" -#define SP_ZOOM_CONTEXT(obj) (dynamic_cast((SPEventContext*)obj)) -#define SP_IS_ZOOM_CONTEXT(obj) (dynamic_cast((const SPEventContext*)obj) != NULL) +#define SP_ZOOM_CONTEXT(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) +#define SP_IS_ZOOM_CONTEXT(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj) != NULL) -class SPZoomContext : public SPEventContext { +namespace Inkscape { +namespace UI { +namespace Tools { + +class ZoomTool : public ToolBase { public: - SPZoomContext(); - virtual ~SPZoomContext(); + ZoomTool(); + virtual ~ZoomTool(); static const std::string prefsPath; @@ -36,4 +40,8 @@ private: bool escaped; }; +} +} +} + #endif -- cgit v1.2.3