summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMarkus Engel <markus.engel@tum.de>2013-04-20 21:19:46 +0000
committerMarkus Engel <markus.engel@tum.de>2013-04-20 21:19:46 +0000
commit65ba6ad9a82f8f47974eb10665478fd783692bb5 (patch)
tree21ecad9197b19c636e7950503ea8f2a9a5366194 /src
parentFurther changes to EventContexts; they work without GObject (diff)
downloadinkscape-65ba6ad9a82f8f47974eb10665478fd783692bb5.tar.gz
inkscape-65ba6ad9a82f8f47974eb10665478fd783692bb5.zip
Merging of EventContext classes complete.
(bzr r11608.1.98)
Diffstat (limited to 'src')
-rw-r--r--src/arc-context.cpp108
-rw-r--r--src/arc-context.h26
-rw-r--r--src/box3d-context.cpp96
-rw-r--r--src/box3d-context.h26
-rw-r--r--src/common-context.cpp89
-rw-r--r--src/common-context.h25
-rw-r--r--src/connector-context.cpp112
-rw-r--r--src/connector-context.h23
-rw-r--r--src/desktop.cpp2
-rw-r--r--src/draw-context.cpp93
-rw-r--r--src/draw-context.h27
-rw-r--r--src/dropper-context.cpp125
-rw-r--r--src/dropper-context.h40
-rw-r--r--src/dyna-draw-context.cpp103
-rw-r--r--src/dyna-draw-context.h23
-rw-r--r--src/eraser-context.cpp86
-rw-r--r--src/eraser-context.h29
-rw-r--r--src/event-context.cpp103
-rw-r--r--src/event-context.h40
-rw-r--r--src/flood-context.cpp84
-rw-r--r--src/flood-context.h26
-rw-r--r--src/gradient-context.cpp68
-rw-r--r--src/gradient-context.h25
-rw-r--r--src/lpe-tool-context.cpp104
-rw-r--r--src/lpe-tool-context.h22
-rw-r--r--src/measure-context.cpp75
-rw-r--r--src/measure-context.h23
-rw-r--r--src/mesh-context.cpp68
-rw-r--r--src/mesh-context.h26
-rw-r--r--src/pen-context.cpp113
-rw-r--r--src/pen-context.h24
-rw-r--r--src/pencil-context.cpp77
-rw-r--r--src/pencil-context.h26
-rw-r--r--src/rect-context.cpp124
-rw-r--r--src/rect-context.h26
-rw-r--r--src/select-context.cpp124
-rw-r--r--src/select-context.h25
-rw-r--r--src/spiral-context.cpp37
-rw-r--r--src/spiral-context.h24
-rw-r--r--src/spray-context.cpp61
-rw-r--r--src/spray-context.h29
-rw-r--r--src/star-context.cpp72
-rw-r--r--src/star-context.h25
-rw-r--r--src/text-context.cpp93
-rw-r--r--src/text-context.h25
-rw-r--r--src/tweak-context.cpp65
-rw-r--r--src/tweak-context.h28
-rw-r--r--src/ui/tool/node-tool.cpp121
-rw-r--r--src/ui/tool/node-tool.h27
-rw-r--r--src/ui/tool/transform-handle-set.cpp10
-rw-r--r--src/widgets/toolbox.cpp4
-rw-r--r--src/zoom-context.cpp50
-rw-r--r--src/zoom-context.h22
53 files changed, 472 insertions, 2457 deletions
diff --git a/src/arc-context.cpp b/src/arc-context.cpp
index 31e05a6ca..3a90ddba3 100644
--- a/src/arc-context.cpp
+++ b/src/arc-context.cpp
@@ -49,13 +49,6 @@
using Inkscape::DocumentUndo;
-static void sp_arc_context_dispose(GObject *object);
-
-static void sp_arc_context_setup(SPEventContext *ec);
-static void sp_arc_context_finish(SPEventContext *ec);
-static gint sp_arc_context_root_handler(SPEventContext *event_context, GdkEvent *event);
-static gint sp_arc_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event);
-
static void sp_arc_drag(SPArcContext *ec, Geom::Point pt, guint state);
static void sp_arc_finish(SPArcContext *ec);
static void sp_arc_cancel(SPArcContext *ec);
@@ -71,39 +64,16 @@ namespace {
bool arcContextRegistered = ToolFactory::instance().registerObject("/tools/shapes/arc", createArcContext);
}
-const std::string& CArcContext::getPrefsPath() {
+const std::string& SPArcContext::getPrefsPath() {
return SPArcContext::prefsPath;
}
const std::string SPArcContext::prefsPath = "/tools/shapes/arc";
-G_DEFINE_TYPE(SPArcContext, sp_arc_context, SP_TYPE_EVENT_CONTEXT);
-
-static void sp_arc_context_class_init(SPArcContextClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
- SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
-
- object_class->dispose = sp_arc_context_dispose;
-
-// event_context_class->setup = sp_arc_context_setup;
-// event_context_class->finish = sp_arc_context_finish;
-// event_context_class->root_handler = sp_arc_context_root_handler;
-// event_context_class->item_handler = sp_arc_context_item_handler;
-}
-
-CArcContext::CArcContext(SPArcContext* arccontext) : CEventContext(arccontext) {
- this->sparccontext = arccontext;
-}
SPArcContext::SPArcContext() : SPEventContext() {
SPArcContext* arc_context = this;
- arc_context->carccontext = new CArcContext(arc_context);
- delete arc_context->ceventcontext;
- arc_context->ceventcontext = arc_context->carccontext;
- types.insert(typeid(SPArcContext));
-
arc_context->_message_context = 0;
SPEventContext *event_context = SP_EVENT_CONTEXT(arc_context);
@@ -120,21 +90,11 @@ SPArcContext::SPArcContext() : SPEventContext() {
arc_context->item = NULL;
- new (&arc_context->sel_changed_connection) sigc::connection();
-}
-
-static void sp_arc_context_init(SPArcContext *arc_context)
-{
- new (arc_context) SPArcContext();
-}
-
-static void sp_arc_context_finish(SPEventContext *ec)
-{
- ec->ceventcontext->finish();
+ //new (&arc_context->sel_changed_connection) sigc::connection();
}
-void CArcContext::finish() {
- SPEventContext* ec = this->speventcontext;
+void SPArcContext::finish() {
+ SPEventContext* ec = this;
SPArcContext *ac = SP_ARC_CONTEXT(ec);
SPDesktop *desktop = ec->desktop;
@@ -146,7 +106,7 @@ void CArcContext::finish() {
// if ((SP_EVENT_CONTEXT_CLASS(sp_arc_context_parent_class))->finish) {
// (SP_EVENT_CONTEXT_CLASS(sp_arc_context_parent_class))->finish(ec);
// }
- CEventContext::finish();
+ SPEventContext::finish();
}
SPArcContext::~SPArcContext() {
@@ -156,7 +116,7 @@ SPArcContext::~SPArcContext() {
ec->enableGrDrag(false);
ac->sel_changed_connection.disconnect();
- ac->sel_changed_connection.~connection();
+ //ac->sel_changed_connection.~connection();
delete ec->shape_editor;
ec->shape_editor = NULL;
@@ -171,29 +131,6 @@ SPArcContext::~SPArcContext() {
//G_OBJECT_CLASS(sp_arc_context_parent_class)->dispose(object);
}
-static void sp_arc_context_dispose(GObject *object)
-{
- SPEventContext *ec = SP_EVENT_CONTEXT(object);
- SPArcContext *ac = SP_ARC_CONTEXT(object);
-
- ec->enableGrDrag(false);
-
- ac->sel_changed_connection.disconnect();
- ac->sel_changed_connection.~connection();
-
- delete ec->shape_editor;
- ec->shape_editor = NULL;
-
- /* fixme: This is necessary because we do not grab */
- if (ac->item) {
- sp_arc_finish(ac);
- }
-
- delete ac->_message_context;
-
- G_OBJECT_CLASS(sp_arc_context_parent_class)->dispose(object);
-}
-
/**
* Callback that processes the "changed" signal on the selection;
* destroys old and creates new knotholder.
@@ -208,13 +145,8 @@ static void sp_arc_context_selection_changed(Inkscape::Selection * selection, gp
ec->shape_editor->set_item(item, SH_KNOTHOLDER);
}
-static void sp_arc_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
-}
-
-void CArcContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void SPArcContext::setup() {
+ SPEventContext* ec = this;
SPArcContext *ac = SP_ARC_CONTEXT(ec);
Inkscape::Selection *selection = sp_desktop_selection(ec->desktop);
@@ -222,7 +154,7 @@ void CArcContext::setup() {
// if ((SP_EVENT_CONTEXT_CLASS(sp_arc_context_parent_class))->setup) {
// (SP_EVENT_CONTEXT_CLASS(sp_arc_context_parent_class))->setup(ec);
// }
- CEventContext::setup();
+ SPEventContext::setup();
ec->shape_editor = new ShapeEditor(ec->desktop);
@@ -248,13 +180,8 @@ void CArcContext::setup() {
ac->_message_context = new Inkscape::MessageContext(ec->desktop->messageStack());
}
-static gint sp_arc_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event)
-{
- return event_context->ceventcontext->item_handler(item, event);
-}
-
-gint CArcContext::item_handler(SPItem* item, GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPArcContext::item_handler(SPItem* item, GdkEvent* event) {
+ SPEventContext* event_context = this;
SPDesktop *desktop = event_context->desktop;
gint ret = FALSE;
@@ -275,18 +202,13 @@ gint CArcContext::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 = CEventContext::item_handler(item, event);
+ ret = SPEventContext::item_handler(item, event);
return ret;
}
-static gint sp_arc_context_root_handler(SPEventContext *event_context, GdkEvent *event)
-{
- return event_context->ceventcontext->root_handler(event);
-}
-
-gint CArcContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPArcContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
static bool dragging;
@@ -464,7 +386,7 @@ gint CArcContext::root_handler(GdkEvent* event) {
// if ((SP_EVENT_CONTEXT_CLASS(sp_arc_context_parent_class))->root_handler) {
// ret = (SP_EVENT_CONTEXT_CLASS(sp_arc_context_parent_class))->root_handler(event_context, event);
// }
- ret = CEventContext::root_handler(event);
+ ret = SPEventContext::root_handler(event);
}
return ret;
diff --git a/src/arc-context.h b/src/arc-context.h
index 1774b8636..40bc83136 100644
--- a/src/arc-context.h
+++ b/src/arc-context.h
@@ -21,21 +21,13 @@
#include <2geom/point.h>
#include "event-context.h"
-#define SP_TYPE_ARC_CONTEXT (sp_arc_context_get_type())
-//#define SP_ARC_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_ARC_CONTEXT, SPArcContext))
-#define SP_ARC_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_ARC_CONTEXT, SPArcContextClass))
-//#define SP_IS_ARC_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_ARC_CONTEXT))
-#define SP_IS_ARC_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_ARC_CONTEXT))
#define SP_ARC_CONTEXT(obj) ((SPArcContext*)obj)
-#define SP_IS_ARC_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPArcContext)))
-
-class CArcContext;
+#define SP_IS_ARC_CONTEXT(obj) (dynamic_cast<const SPArcContext*>(const SPEventContext*(obj)))
class SPArcContext : public SPEventContext {
public:
SPArcContext();
virtual ~SPArcContext();
- CArcContext* carccontext;
SPItem *item;
Geom::Point center;
@@ -45,15 +37,6 @@ public:
Inkscape::MessageContext *_message_context;
static const std::string prefsPath;
-};
-
-struct SPArcContextClass {
- SPEventContextClass parent_class;
-};
-
-class CArcContext : public CEventContext {
-public:
- CArcContext(SPArcContext* arccontext);
virtual void setup();
virtual void finish();
@@ -61,15 +44,8 @@ public:
virtual gint item_handler(SPItem* item, GdkEvent* event);
virtual const std::string& getPrefsPath();
-private:
- SPArcContext* sparccontext;
};
-/* Standard Gtk function */
-
-GType sp_arc_context_get_type(void);
-
-
#endif /* !SEEN_ARC_CONTEXT_H */
/*
diff --git a/src/box3d-context.cpp b/src/box3d-context.cpp
index 5fee83bbb..0e723f7b7 100644
--- a/src/box3d-context.cpp
+++ b/src/box3d-context.cpp
@@ -53,14 +53,6 @@
using Inkscape::DocumentUndo;
-static void sp_box3d_context_dispose(GObject *object);
-
-static void sp_box3d_context_setup(SPEventContext *ec);
-static void sp_box3d_context_finish(SPEventContext *ec);
-
-static gint sp_box3d_context_root_handler(SPEventContext *event_context, GdkEvent *event);
-static gint sp_box3d_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event);
-
static void sp_box3d_drag(Box3DContext &bc, guint state);
static void sp_box3d_finish(Box3DContext *bc);
@@ -75,39 +67,15 @@ namespace {
bool box3dContextRegistered = ToolFactory::instance().registerObject("/tools/shapes/3dbox", createBox3dContext);
}
-const std::string& CBox3DContext::getPrefsPath() {
+const std::string& Box3DContext::getPrefsPath() {
return Box3DContext::prefsPath;
}
const std::string Box3DContext::prefsPath = "/tools/shapes/3dbox";
-G_DEFINE_TYPE(Box3DContext, sp_box3d_context, SP_TYPE_EVENT_CONTEXT);
-
-static void sp_box3d_context_class_init(Box3DContextClass *klass)
-{
- GObjectClass *object_class = (GObjectClass *) klass;
- SPEventContextClass *event_context_class = (SPEventContextClass *) klass;
-
- object_class->dispose = sp_box3d_context_dispose;
-
-// event_context_class->setup = sp_box3d_context_setup;
-// event_context_class->finish = sp_box3d_context_finish;
-// event_context_class->root_handler = sp_box3d_context_root_handler;
-// event_context_class->item_handler = sp_box3d_context_item_handler;
-}
-
-CBox3DContext::CBox3DContext(Box3DContext* box3dcontext) : CEventContext(box3dcontext) {
- this->box3dcontext = box3dcontext;
-}
-
Box3DContext::Box3DContext() : SPEventContext() {
Box3DContext* box3d_context = this;
- box3d_context->cbox3dcontext = new CBox3DContext(box3d_context);
- delete box3d_context->ceventcontext;
- box3d_context->ceventcontext = box3d_context->cbox3dcontext;
- types.insert(typeid(Box3DContext));
-
box3d_context->_message_context = 0;
SPEventContext *event_context = SP_EVENT_CONTEXT(box3d_context);
@@ -128,21 +96,11 @@ Box3DContext::Box3DContext() : SPEventContext() {
box3d_context->_vpdrag = NULL;
- new (&box3d_context->sel_changed_connection) sigc::connection();
-}
-
-static void sp_box3d_context_init(Box3DContext *box3d_context)
-{
- new (box3d_context) Box3DContext();
-}
-
-static void sp_box3d_context_finish(SPEventContext *ec)
-{
- ec->ceventcontext->finish();
+ //new (&box3d_context->sel_changed_connection) sigc::connection();
}
-void CBox3DContext::finish() {
- SPEventContext* ec = this->box3dcontext;
+void Box3DContext::finish() {
+ SPEventContext* ec = this;
Box3DContext *bc = SP_BOX3D_CONTEXT(ec);
SPDesktop *desktop = ec->desktop;
@@ -155,14 +113,13 @@ void CBox3DContext::finish() {
// if (((SPEventContextClass *) sp_box3d_context_parent_class)->finish) {
// ((SPEventContextClass *) sp_box3d_context_parent_class)->finish(ec);
// }
- CEventContext::finish();
+ SPEventContext::finish();
}
-static void sp_box3d_context_dispose(GObject *object)
-{
- Box3DContext *bc = SP_BOX3D_CONTEXT(object);
- SPEventContext *ec = SP_EVENT_CONTEXT(object);
+Box3DContext::~Box3DContext() {
+ Box3DContext *bc = SP_BOX3D_CONTEXT(this);
+ SPEventContext *ec = SP_EVENT_CONTEXT(this);
ec->enableGrDrag(false);
@@ -170,7 +127,7 @@ static void sp_box3d_context_dispose(GObject *object)
bc->_vpdrag = NULL;
bc->sel_changed_connection.disconnect();
- bc->sel_changed_connection.~connection();
+ //bc->sel_changed_connection.~connection();
delete ec->shape_editor;
ec->shape_editor = NULL;
@@ -184,7 +141,7 @@ static void sp_box3d_context_dispose(GObject *object)
delete bc->_message_context;
}
- G_OBJECT_CLASS(sp_box3d_context_parent_class)->dispose(object);
+ //G_OBJECT_CLASS(sp_box3d_context_parent_class)->dispose(object);
}
/**
@@ -225,20 +182,15 @@ static void sp_box3d_context_ensure_persp_in_defs(SPDocument *document) {
}
}
-static void sp_box3d_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
-}
-
-void CBox3DContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void Box3DContext::setup() {
+ SPEventContext* ec = this;
Box3DContext *bc = SP_BOX3D_CONTEXT(ec);
// if (((SPEventContextClass *) sp_box3d_context_parent_class)->setup) {
// ((SPEventContextClass *) sp_box3d_context_parent_class)->setup(ec);
// }
- CEventContext::setup();
+ SPEventContext::setup();
ec->shape_editor = new ShapeEditor(ec->desktop);
@@ -266,13 +218,8 @@ void CBox3DContext::setup() {
bc->_message_context = new Inkscape::MessageContext((ec->desktop)->messageStack());
}
-static gint sp_box3d_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event)
-{
- return event_context->ceventcontext->item_handler(item, event);
-}
-
-gint CBox3DContext::item_handler(SPItem* item, GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint Box3DContext::item_handler(SPItem* item, GdkEvent* event) {
+ SPEventContext* event_context = this;
SPDesktop *desktop = event_context->desktop;
@@ -294,18 +241,13 @@ gint CBox3DContext::item_handler(SPItem* item, GdkEvent* event) {
// ret = ((SPEventContextClass *) sp_box3d_context_parent_class)->item_handler(event_context, item, event);
// }
// CPPIFY: ret is always overwritten...
- ret = CEventContext::item_handler(item, event);
+ ret = SPEventContext::item_handler(item, event);
return ret;
}
-static gint sp_box3d_context_root_handler(SPEventContext *event_context, GdkEvent *event)
-{
- return event_context->ceventcontext->root_handler(event);
-}
-
-gint CBox3DContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint Box3DContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
static bool dragging;
@@ -614,7 +556,7 @@ gint CBox3DContext::root_handler(GdkEvent* event) {
// if (((SPEventContextClass *) sp_box3d_context_parent_class)->root_handler) {
// ret = ((SPEventContextClass *) sp_box3d_context_parent_class)->root_handler(event_context, event);
// }
- ret = CEventContext::root_handler(event);
+ ret = SPEventContext::root_handler(event);
}
return ret;
diff --git a/src/box3d-context.h b/src/box3d-context.h
index 98446f45c..8fc230660 100644
--- a/src/box3d-context.h
+++ b/src/box3d-context.h
@@ -21,20 +21,13 @@
#include "proj_pt.h"
#include "vanishing-point.h"
-#define SP_TYPE_BOX3D_CONTEXT (sp_box3d_context_get_type ())
-//#define SP_BOX3D_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_BOX3D_CONTEXT, Box3DContext))
-#define SP_BOX3D_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_BOX3D_CONTEXT, Box3DContextClass))
-//#define SP_IS_BOX3D_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_BOX3D_CONTEXT))
-#define SP_IS_BOX3D_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_BOX3D_CONTEXT))
#define SP_BOX3D_CONTEXT(obj) ((Box3DContext*)obj)
-#define SP_IS_BOX3D_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(Box3DContext)))
-
-class CBox3DContext;
+#define SP_IS_BOX3D_CONTEXT(obj) (dynamic_cast<const Box3DContext*>((const SPEventContext*)obj))
class Box3DContext : public SPEventContext {
public:
Box3DContext();
- CBox3DContext* cbox3dcontext;
+ virtual ~Box3DContext();
SPItem *item;
Geom::Point center;
@@ -65,15 +58,6 @@ public:
Inkscape::MessageContext *_message_context;
static const std::string prefsPath;
-};
-
-struct Box3DContextClass {
- SPEventContextClass parent_class;
-};
-
-class CBox3DContext : public CEventContext {
-public:
- CBox3DContext(Box3DContext* box3dcontext);
virtual void setup();
virtual void finish();
@@ -81,14 +65,8 @@ public:
virtual gint item_handler(SPItem* item, GdkEvent* event);
virtual const std::string& getPrefsPath();
-private:
- Box3DContext* box3dcontext;
};
-/* Standard Gtk function */
-
-GType sp_box3d_context_get_type (void);
-
void sp_box3d_context_update_lines(SPEventContext *ec);
#endif /* __SP_BOX3D_CONTEXT_H__ */
diff --git a/src/common-context.cpp b/src/common-context.cpp
index fb0ddb720..4d2125f91 100644
--- a/src/common-context.cpp
+++ b/src/common-context.cpp
@@ -18,41 +18,9 @@
#define DRAG_DEFAULT 1.0
#define DRAG_MAX 1.0
-
-static void sp_common_context_dispose(GObject *object);
-
-static void sp_common_context_setup(SPEventContext *ec);
-static void sp_common_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *val);
-
-static gint sp_common_context_root_handler(SPEventContext *event_context, GdkEvent *event);
-
-G_DEFINE_TYPE(SPCommonContext, sp_common_context, SP_TYPE_EVENT_CONTEXT);
-
-static void sp_common_context_class_init(SPCommonContextClass *klass)
-{
- GObjectClass *object_class = (GObjectClass *) klass;
- SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
-
- object_class->dispose = sp_common_context_dispose;
-
-// event_context_class->setup = sp_common_context_setup;
-// event_context_class->set = sp_common_context_set;
-// event_context_class->root_handler = sp_common_context_root_handler;
-}
-
-CCommonContext::CCommonContext(SPCommonContext* commoncontext) : CEventContext(commoncontext) {
- this->spcommoncontext = commoncontext;
-}
-
SPCommonContext::SPCommonContext() : SPEventContext() {
SPCommonContext* ctx = this;
- //ctx->ccommoncontext = new CCommonContext(ctx);
- //delete ctx->ceventcontext;
- //ctx->ceventcontext = ctx->ccommoncontext;
- ctx->ccommoncontext = 0;
- types.insert(typeid(SPCommonContext));
-
ctx->_message_context = 0;
ctx->tremor = 0;
ctx->usetilt = 0;
@@ -99,14 +67,8 @@ SPCommonContext::SPCommonContext() : SPEventContext() {
ctx->abs_width = false;
}
-static void sp_common_context_init(SPCommonContext *ctx)
-{
- new (ctx) SPCommonContext();
-}
-
-static void sp_common_context_dispose(GObject *object)
-{
- SPCommonContext *ctx = SP_COMMON_CONTEXT(object);
+SPCommonContext::~SPCommonContext() {
+ SPCommonContext *ctx = SP_COMMON_CONTEXT(this);
if (ctx->accumulated) {
ctx->accumulated = ctx->accumulated->unref();
@@ -141,29 +103,11 @@ static void sp_common_context_dispose(GObject *object)
ctx->_message_context = 0;
}
- G_OBJECT_CLASS(sp_common_context_parent_class)->dispose(object);
+ //G_OBJECT_CLASS(sp_common_context_parent_class)->dispose(object);
}
-
-static void sp_common_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
-}
-
-void CCommonContext::setup() {
-// if ( SP_EVENT_CONTEXT_CLASS(sp_common_context_parent_class)->setup ) {
-// SP_EVENT_CONTEXT_CLASS(sp_common_context_parent_class)->setup(ec);
-// }
- CEventContext::setup();
-}
-
-static void sp_common_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *value)
-{
- ec->ceventcontext->set(value);
-}
-
-void CCommonContext::set(Inkscape::Preferences::Entry* value) {
- SPEventContext* ec = this->speventcontext;
+void SPCommonContext::set(Inkscape::Preferences::Entry* value) {
+ SPEventContext* ec = this;
SPCommonContext *ctx = SP_COMMON_CONTEXT(ec);
Glib::ustring path = value->getEntryName();
@@ -199,29 +143,6 @@ void CCommonContext::set(Inkscape::Preferences::Entry* value) {
}
}
-static gint sp_common_context_root_handler(SPEventContext *event_context, GdkEvent *event)
-{
- return event_context->ceventcontext->root_handler(event);
-}
-
-gint CCommonContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
-
- gint ret = FALSE;
-
- // TODO add common hanlding
-
-
- if ( !ret ) {
-// if ( SP_EVENT_CONTEXT_CLASS(sp_common_context_parent_class)->root_handler ) {
-// ret = SP_EVENT_CONTEXT_CLASS(sp_common_context_parent_class)->root_handler(event_context, event);
-// }
- ret = CEventContext::root_handler(event);
- }
-
- return ret;
-}
-
/*
Local Variables:
mode:c++
diff --git a/src/common-context.h b/src/common-context.h
index d203f1f3c..d807c3f2f 100644
--- a/src/common-context.h
+++ b/src/common-context.h
@@ -23,22 +23,15 @@
#include "display/curve.h"
#include <2geom/point.h>
-#define SP_TYPE_COMMON_CONTEXT (sp_common_context_get_type())
-//#define SP_COMMON_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_COMMON_CONTEXT, SPCommonContext))
-#define SP_COMMON_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SP_TYPE_COMMON_CONTEXT, SPCommonContextClass))
-//#define SP_IS_COMMON_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), SP_TYPE_COMMON_CONTEXT))
-#define SP_IS_COMMON_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE((k), SP_TYPE_COMMON_CONTEXT))
#define SP_COMMON_CONTEXT(obj) ((SPCommonContext*)obj)
-#define SP_IS_COMMON_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPCommonContext)))
+#define SP_IS_COMMON_CONTEXT(obj) (dynamic_cast<const SPCommonContext*>((const SPEventContext*)obj))
#define SAMPLING_SIZE 8 /* fixme: ?? */
-class CCommonContext;
-
class SPCommonContext : public SPEventContext {
public:
SPCommonContext();
- CCommonContext* ccommoncontext;
+ virtual ~SPCommonContext();
/** accumulated shape which ultimately goes in svg:path */
SPCurve *accumulated;
@@ -102,24 +95,10 @@ public:
/** uses absolute width independent of zoom */
bool abs_width;
-};
-struct SPCommonContextClass : public SPEventContextClass{};
-
-class CCommonContext : public CEventContext {
-public:
- CCommonContext(SPCommonContext* commoncontext);
-
- virtual void setup();
virtual void set(Inkscape::Preferences::Entry* val);
- virtual gint root_handler(GdkEvent* event);
-
-private:
- SPCommonContext* spcommoncontext;
};
-GType sp_common_context_get_type(void);
-
#endif // COMMON_CONTEXT_H_SEEN
/*
diff --git a/src/connector-context.cpp b/src/connector-context.cpp
index d5a628d46..1dad3cad9 100644
--- a/src/connector-context.cpp
+++ b/src/connector-context.cpp
@@ -109,14 +109,6 @@
using Inkscape::DocumentUndo;
-static void sp_connector_context_dispose(GObject *object);
-
-static void sp_connector_context_setup(SPEventContext *ec);
-static void sp_connector_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *val);
-static void sp_connector_context_finish(SPEventContext *ec);
-static gint sp_connector_context_root_handler(SPEventContext *ec, GdkEvent *event);
-static gint sp_connector_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event);
-
// 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);
@@ -182,41 +174,15 @@ namespace {
bool connectorContextRegistered = ToolFactory::instance().registerObject("/tools/connector", createConnectorContext);
}
-const std::string& CConnectorContext::getPrefsPath() {
+const std::string& SPConnectorContext::getPrefsPath() {
return SPConnectorContext::prefsPath;
}
const std::string SPConnectorContext::prefsPath = "/tools/connector";
-G_DEFINE_TYPE(SPConnectorContext, sp_connector_context, SP_TYPE_EVENT_CONTEXT);
-
-static void
-sp_connector_context_class_init(SPConnectorContextClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
- SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
-
- object_class->dispose = sp_connector_context_dispose;
-
-// event_context_class->setup = sp_connector_context_setup;
-// event_context_class->set = sp_connector_context_set;
-// event_context_class->finish = sp_connector_context_finish;
-// event_context_class->root_handler = sp_connector_context_root_handler;
-// event_context_class->item_handler = sp_connector_context_item_handler;
-}
-
-CConnectorContext::CConnectorContext(SPConnectorContext* connectorcontext) : CEventContext(connectorcontext) {
- this->spconnectorcontext = connectorcontext;
-}
-
SPConnectorContext::SPConnectorContext() : SPEventContext() {
SPConnectorContext* cc = this;
- cc->cconnectorcontext = new CConnectorContext(cc);
- delete cc->ceventcontext;
- cc->ceventcontext = cc->cconnectorcontext;
- types.insert(typeid(SPConnectorContext));
-
cc->red_curve = 0;
cc->isOrthogonal = false;
cc->c1 = 0;
@@ -257,7 +223,7 @@ SPConnectorContext::SPConnectorContext() : SPEventContext() {
cc->clickeditem = NULL;
cc->clickedhandle = NULL;
- new (&cc->knots) SPKnotList();
+ //new (&cc->knots) SPKnotList();
for (int i = 0; i < 2; ++i) {
cc->endpt_handle[i] = NULL;
@@ -269,17 +235,8 @@ SPConnectorContext::SPConnectorContext() : SPEventContext() {
cc->state = SP_CONNECTOR_CONTEXT_IDLE;
}
-static void
-sp_connector_context_init(SPConnectorContext *cc)
-{
- new (cc) SPConnectorContext();
-}
-
-
-static void
-sp_connector_context_dispose(GObject *object)
-{
- SPConnectorContext *cc = SP_CONNECTOR_CONTEXT(object);
+SPConnectorContext::~SPConnectorContext() {
+ SPConnectorContext *cc = SP_CONNECTOR_CONTEXT(this);
cc->sel_changed_connection.disconnect();
@@ -299,18 +256,11 @@ sp_connector_context_dispose(GObject *object)
}
g_assert( cc->newConnRef == NULL );
- G_OBJECT_CLASS(sp_connector_context_parent_class)->dispose(object);
+ //G_OBJECT_CLASS(sp_connector_context_parent_class)->dispose(object);
}
-
-static void
-sp_connector_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
-}
-
-void CConnectorContext::setup() {
- SPConnectorContext* ec = this->spconnectorcontext;
+void SPConnectorContext::setup() {
+ SPConnectorContext* ec = this;
SPConnectorContext *cc = SP_CONNECTOR_CONTEXT(ec);
SPDesktop *dt = ec->desktop;
@@ -318,7 +268,7 @@ void CConnectorContext::setup() {
// if ((SP_EVENT_CONTEXT_CLASS(sp_connector_context_parent_class))->setup) {
// (SP_EVENT_CONTEXT_CLASS(sp_connector_context_parent_class))->setup(ec);
// }
- CEventContext::setup();
+ SPEventContext::setup();
cc->selection = sp_desktop_selection(dt);
@@ -356,15 +306,8 @@ void CConnectorContext::setup() {
dt->canvas->gen_all_enter_events = true;
}
-
-static void
-sp_connector_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *val)
-{
- ec->ceventcontext->set(val);
-}
-
-void CConnectorContext::set(Inkscape::Preferences::Entry* val) {
- SPEventContext* ec = this->spconnectorcontext;
+void SPConnectorContext::set(Inkscape::Preferences::Entry* val) {
+ SPEventContext* ec = this;
SPConnectorContext *cc = SP_CONNECTOR_CONTEXT(ec);
@@ -379,14 +322,8 @@ void CConnectorContext::set(Inkscape::Preferences::Entry* val) {
}
}
-static void
-sp_connector_context_finish(SPEventContext *ec)
-{
- ec->ceventcontext->finish();
-}
-
-void CConnectorContext::finish() {
- SPEventContext* ec = this->speventcontext;
+void SPConnectorContext::finish() {
+ SPEventContext* ec = this;
SPConnectorContext *cc = SP_CONNECTOR_CONTEXT(ec);
@@ -396,7 +333,7 @@ void CConnectorContext::finish() {
// if ((SP_EVENT_CONTEXT_CLASS(sp_connector_context_parent_class))->finish) {
// (SP_EVENT_CONTEXT_CLASS(sp_connector_context_parent_class))->finish(ec);
// }
- CEventContext::finish();
+ SPEventContext::finish();
if (cc->selection) {
cc->selection = NULL;
@@ -505,14 +442,8 @@ cc_deselect_handle(SPKnot* knot)
sp_knot_update_ctrl(knot);
}
-static gint
-sp_connector_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event)
-{
- return event_context->ceventcontext->item_handler(item, event);
-}
-
-gint CConnectorContext::item_handler(SPItem* item, GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPConnectorContext::item_handler(SPItem* item, GdkEvent* event) {
+ SPEventContext* event_context = this;
gint ret = FALSE;
@@ -571,15 +502,8 @@ gint CConnectorContext::item_handler(SPItem* item, GdkEvent* event) {
return ret;
}
-
-gint
-sp_connector_context_root_handler(SPEventContext *ec, GdkEvent *event)
-{
- return ec->ceventcontext->root_handler(event);
-}
-
-gint CConnectorContext::root_handler(GdkEvent* event) {
- SPEventContext* ec = this->speventcontext;
+gint SPConnectorContext::root_handler(GdkEvent* event) {
+ SPEventContext* ec = this;
SPConnectorContext *const cc = SP_CONNECTOR_CONTEXT(ec);
@@ -611,7 +535,7 @@ gint CConnectorContext::root_handler(GdkEvent* event) {
// if (parent_root_handler) {
// ret = parent_root_handler(ec, event);
// }
- ret = CEventContext::root_handler(event);
+ ret = SPEventContext::root_handler(event);
}
return ret;
diff --git a/src/connector-context.h b/src/connector-context.h
index 6e0655c1e..1bc7b5a18 100644
--- a/src/connector-context.h
+++ b/src/connector-context.h
@@ -20,13 +20,8 @@
#include "libavoid/connector.h"
#include <glibmm/i18n.h>
-#define SP_TYPE_CONNECTOR_CONTEXT (sp_connector_context_get_type())
-//#define SP_CONNECTOR_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_CONNECTOR_CONTEXT, SPConnectorContext))
-#define SP_CONNECTOR_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SP_TYPE_CONNECTOR_CONTEXT, SPConnectorContextClass))
-//#define SP_IS_CONNECTOR_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), SP_TYPE_CONNECTOR_CONTEXT))
-#define SP_IS_CONNECTOR_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE((k), SP_TYPE_CONNECTOR_CONTEXT))
#define SP_CONNECTOR_CONTEXT(obj) ((SPConnectorContext*)obj)
-#define SP_IS_CONNECTOR_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPConnectorContext)))
+#define SP_IS_CONNECTOR_CONTEXT(obj) (dynamic_cast<const SPConnectorContext*>((const SPEventContext*)obj))
struct SPKnot;
class SPCurve;
@@ -47,12 +42,10 @@ enum {
typedef std::map<SPKnot *, int> SPKnotList;
-class CConnectorContext;
-
class SPConnectorContext : public SPEventContext {
public:
SPConnectorContext();
- CConnectorContext* cconnectorcontext;
+ virtual ~SPConnectorContext();
Inkscape::Selection *selection;
Geom::Point p[5];
@@ -102,13 +95,6 @@ public:
SPCanvasItem *c0, *c1, *cl0, *cl1;
static const std::string prefsPath;
-};
-
-struct SPConnectorContextClass : public SPEventContextClass { };
-
-class CConnectorContext : public CEventContext {
-public:
- CConnectorContext(SPConnectorContext* connectorcontext);
virtual void setup();
virtual void finish();
@@ -117,13 +103,8 @@ public:
virtual gint item_handler(SPItem* item, GdkEvent* event);
virtual const std::string& getPrefsPath();
-
-private:
- SPConnectorContext* spconnectorcontext;
};
-GType sp_connector_context_get_type();
-
void cc_selection_set_avoid(bool const set_ignore);
void cc_create_connection_point(SPConnectorContext* cc);
void cc_remove_connection_point(SPConnectorContext* cc);
diff --git a/src/desktop.cpp b/src/desktop.cpp
index 3ef668f5f..9df01b990 100644
--- a/src/desktop.cpp
+++ b/src/desktop.cpp
@@ -715,7 +715,7 @@ void SPDesktop::set_event_context2(const std::string& toolName) {
prefs->addObserver(*(ec->pref_observer));
//}
- ec->ceventcontext->setup();
+ ec->setup();
sp_event_context_activate(event_context);
diff --git a/src/draw-context.cpp b/src/draw-context.cpp
index 7e192f7ad..39cb3d613 100644
--- a/src/draw-context.cpp
+++ b/src/draw-context.cpp
@@ -50,14 +50,6 @@
using Inkscape::DocumentUndo;
-static void sp_draw_context_dispose(GObject *object);
-
-static void sp_draw_context_setup(SPEventContext *ec);
-static void sp_draw_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *val);
-static void sp_draw_context_finish(SPEventContext *ec);
-
-static gint sp_draw_context_root_handler(SPEventContext *event_context, GdkEvent *event);
-
static void spdc_selection_changed(Inkscape::Selection *sel, SPDrawContext *dc);
static void spdc_selection_modified(Inkscape::Selection *sel, guint flags, SPDrawContext *dc);
@@ -74,37 +66,9 @@ static void spdc_flush_white(SPDrawContext *dc, SPCurve *gc);
static void spdc_reset_white(SPDrawContext *dc);
static void spdc_free_colors(SPDrawContext *dc);
-G_DEFINE_TYPE(SPDrawContext, sp_draw_context, SP_TYPE_EVENT_CONTEXT);
-
-static void sp_draw_context_class_init(SPDrawContextClass *klass)
-{
- GObjectClass *object_class;
- SPEventContextClass *ec_class;
-
- object_class = (GObjectClass *)klass;
- ec_class = SP_EVENT_CONTEXT_CLASS(klass);
-
- object_class->dispose = sp_draw_context_dispose;
-
-// ec_class->setup = sp_draw_context_setup;
-// ec_class->set = sp_draw_context_set;
-// ec_class->finish = sp_draw_context_finish;
-// ec_class->root_handler = sp_draw_context_root_handler;
-}
-
-CDrawContext::CDrawContext(SPDrawContext* drawcontext) : CEventContext(drawcontext) {
- this->spdrawcontext = drawcontext;
-}
-
SPDrawContext::SPDrawContext() : SPEventContext() {
SPDrawContext* dc = this;
- //dc->cdrawcontext = new CDrawContext(dc);
- //delete dc->ceventcontext;
- //dc->ceventcontext = dc->cdrawcontext;
- dc->cdrawcontext = 0;
- types.insert(typeid(SPDrawContext));
-
dc->selection = 0;
dc->grab = 0;
dc->anchor_statusbar = false;
@@ -136,21 +100,15 @@ SPDrawContext::SPDrawContext() : SPEventContext() {
dc->waiting_LPE_type = Inkscape::LivePathEffect::INVALID_LPE;
- new (&dc->sel_changed_connection) sigc::connection();
- new (&dc->sel_modified_connection) sigc::connection();
+ //new (&dc->sel_changed_connection) sigc::connection();
+ //new (&dc->sel_modified_connection) sigc::connection();
}
-static void sp_draw_context_init(SPDrawContext *dc)
-{
- new (dc) SPDrawContext();
-}
+SPDrawContext::~SPDrawContext() {
+ SPDrawContext *dc = SP_DRAW_CONTEXT(this);
-static void sp_draw_context_dispose(GObject *object)
-{
- SPDrawContext *dc = SP_DRAW_CONTEXT(object);
-
- dc->sel_changed_connection.~connection();
- dc->sel_modified_connection.~connection();
+ //dc->sel_changed_connection.~connection();
+ //dc->sel_modified_connection.~connection();
if (dc->grab) {
sp_canvas_item_ungrab(dc->grab, GDK_CURRENT_TIME);
@@ -163,16 +121,11 @@ static void sp_draw_context_dispose(GObject *object)
spdc_free_colors(dc);
- G_OBJECT_CLASS(sp_draw_context_parent_class)->dispose(object);
+ //G_OBJECT_CLASS(sp_draw_context_parent_class)->dispose(object);
}
-static void sp_draw_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
-}
-
-void CDrawContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void SPDrawContext::setup() {
+ SPEventContext* ec = this;
SPDrawContext *dc = SP_DRAW_CONTEXT(ec);
SPDesktop *dt = ec->desktop;
@@ -180,7 +133,7 @@ void CDrawContext::setup() {
// if ((SP_EVENT_CONTEXT_CLASS(sp_draw_context_parent_class))->setup) {
// (SP_EVENT_CONTEXT_CLASS(sp_draw_context_parent_class))->setup(ec);
// }
- CEventContext::setup();
+ SPEventContext::setup();
dc->selection = sp_desktop_selection(dt);
@@ -217,13 +170,8 @@ void CDrawContext::setup() {
spdc_attach_selection(dc, dc->selection);
}
-static void sp_draw_context_finish(SPEventContext *ec)
-{
- ec->ceventcontext->finish();
-}
-
-void CDrawContext::finish() {
- SPEventContext* ec = this->speventcontext;
+void SPDrawContext::finish() {
+ SPEventContext* ec = this;
SPDrawContext *dc = SP_DRAW_CONTEXT(ec);
@@ -241,20 +189,11 @@ void CDrawContext::finish() {
spdc_free_colors(dc);
}
-static void sp_draw_context_set(SPEventContext */*ec*/, Inkscape::Preferences::Entry */*val*/)
-{
-}
-
-void CDrawContext::set(Inkscape::Preferences::Entry* value) {
-}
-
-gint sp_draw_context_root_handler(SPEventContext *ec, GdkEvent *event)
-{
- return ec->ceventcontext->root_handler(event);
+void SPDrawContext::set(Inkscape::Preferences::Entry* value) {
}
-gint CDrawContext::root_handler(GdkEvent* event) {
- SPEventContext* ec = this->speventcontext;
+gint SPDrawContext::root_handler(GdkEvent* event) {
+ SPEventContext* ec = this;
gint ret = FALSE;
@@ -282,7 +221,7 @@ gint CDrawContext::root_handler(GdkEvent* event) {
// if ((SP_EVENT_CONTEXT_CLASS(sp_draw_context_parent_class))->root_handler) {
// ret = (SP_EVENT_CONTEXT_CLASS(sp_draw_context_parent_class))->root_handler(ec, event);
// }
- ret = CEventContext::root_handler(event);
+ ret = SPEventContext::root_handler(event);
}
return ret;
diff --git a/src/draw-context.h b/src/draw-context.h
index 25165eb27..4bc61461a 100644
--- a/src/draw-context.h
+++ b/src/draw-context.h
@@ -20,16 +20,10 @@
#include "event-context.h"
#include "live_effects/effect.h"
-G_BEGIN_DECLS
/* Freehand context */
-#define SP_TYPE_DRAW_CONTEXT (sp_draw_context_get_type())
-//#define SP_DRAW_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_DRAW_CONTEXT, SPDrawContext))
-#define SP_DRAW_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SP_TYPE_DRAW_CONTEXT, SPDrawContextClass))
-//#define SP_IS_DRAW_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), SP_TYPE_DRAW_CONTEXT))
-#define SP_IS_DRAW_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE((k), SP_TYPE_DRAW_CONTEXT))
#define SP_DRAW_CONTEXT(obj) ((SPDrawContext*)obj)
-#define SP_IS_DRAW_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPDrawContext)))
+#define SP_IS_DRAW_CONTEXT(obj) (dynamic_cast<const SPDrawContext*>((const SPEventContext*)obj))
struct SPDrawAnchor;
namespace Inkscape
@@ -37,12 +31,10 @@ namespace Inkscape
class Selection;
}
-class CDrawContext;
-
-class SPDrawContext : public SPEventContext{
+class SPDrawContext : public SPEventContext {
public:
SPDrawContext();
- CDrawContext* cdrawcontext;
+ virtual ~SPDrawContext();
Inkscape::Selection *selection;
SPCanvasItem *grab;
@@ -87,25 +79,13 @@ public:
bool red_curve_is_valid;
bool anchor_statusbar;
-};
-
-struct SPDrawContextClass : public SPEventContextClass{};
-
-class CDrawContext : public CEventContext {
-public:
- CDrawContext(SPDrawContext* drawcontext);
virtual void setup();
virtual void finish();
virtual void set(Inkscape::Preferences::Entry* val);
virtual gint root_handler(GdkEvent* event);
-
-protected:
- SPDrawContext* spdrawcontext;
};
-GType sp_draw_context_get_type(void) G_GNUC_CONST;
-
/**
* Returns FIRST active anchor (the activated one).
*/
@@ -141,7 +121,6 @@ void spdc_check_for_and_apply_waiting_LPE(SPDrawContext *dc, SPItem *item);
*/
void spdc_create_single_dot(SPEventContext *ec, Geom::Point const &pt, char const *tool, guint event_state);
-G_END_DECLS
#endif // SEEN_SP_DRAW_CONTEXT_H
/*
diff --git a/src/dropper-context.cpp b/src/dropper-context.cpp
index dbc10f6c7..4c55400bb 100644
--- a/src/dropper-context.cpp
+++ b/src/dropper-context.cpp
@@ -48,32 +48,22 @@
using Inkscape::DocumentUndo;
-typedef struct
-{
- double R;
- double G;
- double B;
- double alpha;
-
- unsigned int dragging : 1;
-
- SPCanvasItem *grabbed;
- SPCanvasItem *area;
- Geom::Point centre;
-} SPDropperContextPrivate;
-
-#define SP_DROPPER_CONTEXT_GET_PRIVATE(dc) \
- G_TYPE_INSTANCE_GET_PRIVATE(dc, SP_TYPE_DROPPER_CONTEXT, SPDropperContextPrivate)
-
-static void sp_dropper_context_class_init(SPDropperContextClass *klass);
-static void sp_dropper_context_init(SPDropperContext *dc);
-
-static void sp_dropper_context_setup(SPEventContext *ec);
-static void sp_dropper_context_finish(SPEventContext *ec);
-
-static gint sp_dropper_context_root_handler(SPEventContext *ec, GdkEvent * event);
-
-static SPEventContextClass *parent_class;
+//typedef struct
+//{
+// double R;
+// double G;
+// double B;
+// double alpha;
+//
+// unsigned int dragging : 1;
+//
+// SPCanvasItem *grabbed;
+// SPCanvasItem *area;
+// Geom::Point centre;
+//} SPDropperContextPrivate;
+//
+//#define SP_DROPPER_CONTEXT_GET_PRIVATE(dc) \
+// G_TYPE_INSTANCE_GET_PRIVATE(dc, SP_TYPE_DROPPER_CONTEXT, SPDropperContextPrivate)
static GdkCursor *cursor_dropper_fill = NULL;
static GdkCursor *cursor_dropper_stroke = NULL;
@@ -88,40 +78,24 @@ namespace {
bool dropperContextRegistered = ToolFactory::instance().registerObject("/tools/dropper", createDropperContext);
}
-const std::string& CDropperContext::getPrefsPath() {
+const std::string& SPDropperContext::getPrefsPath() {
return SPDropperContext::prefsPath;
}
const std::string SPDropperContext::prefsPath = "/tools/dropper";
-G_DEFINE_TYPE(SPDropperContext, sp_dropper_context, SP_TYPE_EVENT_CONTEXT);
-
-static void
-sp_dropper_context_class_init(SPDropperContextClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
- SPEventContextClass *ec_class = SP_EVENT_CONTEXT_CLASS(klass);
-
- parent_class = SP_EVENT_CONTEXT_CLASS(g_type_class_peek_parent(klass));
-
-// ec_class->setup = sp_dropper_context_setup;
-// ec_class->finish = sp_dropper_context_finish;
-// ec_class->root_handler = sp_dropper_context_root_handler;
-
- g_type_class_add_private(object_class, sizeof(SPDropperContext));
-}
-
-CDropperContext::CDropperContext(SPDropperContext* droppercontext) : CEventContext(droppercontext) {
- this->spdroppercontext = droppercontext;
-}
-
SPDropperContext::SPDropperContext() : SPEventContext() {
SPDropperContext* dc = this;
- dc->cdroppercontext = new CDropperContext(dc);
- delete dc->ceventcontext;
- dc->ceventcontext = dc->cdroppercontext;
- types.insert(typeid(SPDropperContext));
+ dc->R = 0;
+ dc->G = 0;
+ dc->B = 0;
+ dc->alpha = 0;
+ dc->dragging = 0;
+
+ dc->grabbed = 0;
+ dc->area = 0;
+ dc->centre = Geom::Point(0, 0);
SPEventContext *event_context = SP_EVENT_CONTEXT(dc);
event_context->cursor_shape = cursor_dropper_f_xpm;
@@ -132,27 +106,19 @@ SPDropperContext::SPDropperContext() : SPEventContext() {
cursor_dropper_stroke = sp_cursor_new_from_xpm(cursor_dropper_s_xpm , 7, 7);
}
-static void sp_dropper_context_init(SPDropperContext *dc)
-{
- new (dc) SPDropperContext();
-}
-
-static void
-sp_dropper_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
+SPDropperContext::~SPDropperContext() {
}
-void CDropperContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void SPDropperContext::setup() {
+ SPEventContext* ec = this;
SPDropperContext *dc = SP_DROPPER_CONTEXT(ec);
- SPDropperContextPrivate *priv = SP_DROPPER_CONTEXT_GET_PRIVATE(dc);
+ SPDropperContext *priv = (dc);
// if ((SP_EVENT_CONTEXT_CLASS(parent_class))->setup) {
// (SP_EVENT_CONTEXT_CLASS(parent_class))->setup(ec);
// }
- CEventContext::setup();
+ SPEventContext::setup();
/* TODO: have a look at sp_dyna_draw_context_setup where the same is done.. generalize? at least make it an arcto! */
SPCurve *c = new SPCurve();
@@ -179,17 +145,11 @@ void CDropperContext::setup() {
}
}
-static void
-sp_dropper_context_finish(SPEventContext *ec)
-{
- ec->ceventcontext->finish();
-}
-
-void CDropperContext::finish() {
- SPEventContext* ec = this->speventcontext;
+void SPDropperContext::finish() {
+ SPEventContext* ec = this;
SPDropperContext *dc = SP_DROPPER_CONTEXT(ec);
- SPDropperContextPrivate *priv = SP_DROPPER_CONTEXT_GET_PRIVATE(dc);
+ SPDropperContext *priv = (dc);
ec->enableGrDrag(false);
@@ -232,7 +192,7 @@ guint32
sp_dropper_context_get_color(SPEventContext *ec)
{
SPDropperContext *dc = SP_DROPPER_CONTEXT(ec);
- SPDropperContextPrivate *priv = SP_DROPPER_CONTEXT_GET_PRIVATE(dc);
+ SPDropperContext *priv = (dc);
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
int pick = prefs->getInt("/tools/dropper/pick",
@@ -247,18 +207,11 @@ sp_dropper_context_get_color(SPEventContext *ec)
: 1.0);
}
-static gint
-sp_dropper_context_root_handler(SPEventContext *event_context,
- GdkEvent *event)
-{
- return event_context->ceventcontext->root_handler(event);
-}
-
-gint CDropperContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPDropperContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
SPDropperContext *dc = SP_DROPPER_CONTEXT(event_context);
- SPDropperContextPrivate *priv = SP_DROPPER_CONTEXT_GET_PRIVATE(dc);
+ SPDropperContext *priv = (dc);
SPDesktop *desktop = event_context->desktop;
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
@@ -479,7 +432,7 @@ gint CDropperContext::root_handler(GdkEvent* event) {
// if ((SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler) {
// ret = (SP_EVENT_CONTEXT_CLASS(parent_class))->root_handler(event_context, event);
// }
- ret = CEventContext::root_handler(event);
+ ret = SPEventContext::root_handler(event);
}
return ret;
diff --git a/src/dropper-context.h b/src/dropper-context.h
index d5686bcc0..c2b6a0713 100644
--- a/src/dropper-context.h
+++ b/src/dropper-context.h
@@ -14,39 +14,22 @@
#include "event-context.h"
-G_BEGIN_DECLS
-
-#define SP_TYPE_DROPPER_CONTEXT (sp_dropper_context_get_type ())
-//#define SP_DROPPER_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_DROPPER_CONTEXT, SPDropperContext))
-//#define SP_IS_DROPPER_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_DROPPER_CONTEXT))
#define SP_DROPPER_CONTEXT(obj) ((SPDropperContext*)obj)
-#define SP_IS_DROPPER_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPDropperContext)))
-
+#define SP_IS_DROPPER_CONTEXT(obj) (dynamic_cast<const SPDropperContext*>((const SPEventContext*)obj))
enum {
SP_DROPPER_PICK_VISIBLE,
SP_DROPPER_PICK_ACTUAL
};
-class CDropperContext;
-
class SPDropperContext : public SPEventContext {
public:
SPDropperContext();
- CDropperContext* cdroppercontext;
+ virtual ~SPDropperContext();
- SPEventContext event_context;
+ //SPEventContext event_context;
static const std::string prefsPath;
-};
-
-struct SPDropperContextClass {
- SPEventContextClass parent_class;
-};
-
-class CDropperContext : public CEventContext {
-public:
- CDropperContext(SPDropperContext* droppercontext);
virtual void setup();
virtual void finish();
@@ -54,15 +37,20 @@ public:
virtual const std::string& getPrefsPath();
-private:
- SPDropperContext* spdroppercontext;
-};
+//private:
+ double R;
+ double G;
+ double B;
+ double alpha;
-GType sp_dropper_context_get_type (void);
+ unsigned int dragging : 1;
-guint32 sp_dropper_context_get_color(SPEventContext *ec);
+ SPCanvasItem *grabbed;
+ SPCanvasItem *area;
+ Geom::Point centre;
+};
-G_END_DECLS
+guint32 sp_dropper_context_get_color(SPEventContext *ec);
#endif
diff --git a/src/dyna-draw-context.cpp b/src/dyna-draw-context.cpp
index 048053035..145dc6238 100644
--- a/src/dyna-draw-context.cpp
+++ b/src/dyna-draw-context.cpp
@@ -81,12 +81,6 @@ using Inkscape::DocumentUndo;
#define DYNA_MIN_WIDTH 1.0e-6
-static void sp_dyna_draw_context_dispose(GObject *object);
-
-static void sp_dyna_draw_context_setup(SPEventContext *ec);
-static void sp_dyna_draw_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *value);
-static gint sp_dyna_draw_context_root_handler(SPEventContext *ec, GdkEvent *event);
-
static void clear_current(SPDynaDrawContext *dc);
static void set_to_accumulated(SPDynaDrawContext *dc, bool unionize, bool subtract);
static void add_cap(SPCurve *curve, Geom::Point const &from, Geom::Point const &to, double rounding);
@@ -110,41 +104,16 @@ namespace {
bool calligraphicContextRegistered = ToolFactory::instance().registerObject("/tools/calligraphic", createCalligraphicContext);
}
-const std::string& CDynaDrawContext::getPrefsPath() {
+const std::string& SPDynaDrawContext::getPrefsPath() {
return SPDynaDrawContext::prefsPath;
}
const std::string SPDynaDrawContext::prefsPath = "/tools/calligraphic";
-G_DEFINE_TYPE(SPDynaDrawContext, sp_dyna_draw_context, SP_TYPE_COMMON_CONTEXT);
-
-static void
-sp_dyna_draw_context_class_init(SPDynaDrawContextClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
- SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
-
- object_class->dispose = sp_dyna_draw_context_dispose;
-
-// event_context_class->setup = sp_dyna_draw_context_setup;
-// event_context_class->set = sp_dyna_draw_context_set;
-// event_context_class->root_handler = sp_dyna_draw_context_root_handler;
-}
-
-CDynaDrawContext::CDynaDrawContext(SPDynaDrawContext* dynadrawcontext) : CCommonContext(dynadrawcontext) {
- this->spdynadrawcontext = dynadrawcontext;
-}
-
SPDynaDrawContext::SPDynaDrawContext() : SPCommonContext() {
SPDynaDrawContext* ddc = this;
- ddc->cdynadrawcontext = new CDynaDrawContext(ddc);
- delete ddc->ccommoncontext;
- ddc->ccommoncontext = ddc->cdynadrawcontext;
- ddc->ceventcontext = ddc->cdynadrawcontext;
- types.insert(typeid(SPDynaDrawContext));
-
ddc->cursor_shape = cursor_calligraphy_xpm;
ddc->hot_x = 4;
ddc->hot_y = 4;
@@ -158,10 +127,12 @@ SPDynaDrawContext::SPDynaDrawContext() : SPCommonContext() {
ddc->hatch_spacing = 0;
ddc->hatch_spacing_step = 0;
- new (&ddc->hatch_pointer_past) std::list<double>();
- new (&ddc->hatch_nearest_past) std::list<double>();
- new (&ddc->inertia_vectors) std::list<Geom::Point>();
- new (&ddc->hatch_vectors) std::list<Geom::Point>();
+
+// new (&ddc->hatch_pointer_past) std::list<double>();
+// new (&ddc->hatch_nearest_past) std::list<double>();
+// new (&ddc->inertia_vectors) std::list<Geom::Point>();
+// new (&ddc->hatch_vectors) std::list<Geom::Point>();
+
ddc->hatch_last_nearest = Geom::Point(0,0);
ddc->hatch_last_pointer = Geom::Point(0,0);
ddc->hatch_escaped = false;
@@ -173,16 +144,8 @@ SPDynaDrawContext::SPDynaDrawContext() : SPCommonContext() {
ddc->just_started_drawing = false;
}
-static void
-sp_dyna_draw_context_init(SPDynaDrawContext *ddc)
-{
- new (ddc) SPDynaDrawContext();
-}
-
-static void
-sp_dyna_draw_context_dispose(GObject *object)
-{
- SPDynaDrawContext *ddc = SP_DYNA_DRAW_CONTEXT(object);
+SPDynaDrawContext::~SPDynaDrawContext() {
+ SPDynaDrawContext *ddc = SP_DYNA_DRAW_CONTEXT(this);
if (ddc->hatch_area) {
sp_canvas_item_destroy(ddc->hatch_area);
@@ -190,28 +153,22 @@ sp_dyna_draw_context_dispose(GObject *object)
}
- G_OBJECT_CLASS(sp_dyna_draw_context_parent_class)->dispose(object);
+ //G_OBJECT_CLASS(sp_dyna_draw_context_parent_class)->dispose(object);
- ddc->hatch_pointer_past.~list();
- ddc->hatch_nearest_past.~list();
- ddc->inertia_vectors.~list();
- ddc->hatch_vectors.~list();
-}
-
-static void
-sp_dyna_draw_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
+// ddc->hatch_pointer_past.~list();
+// ddc->hatch_nearest_past.~list();
+// ddc->inertia_vectors.~list();
+// ddc->hatch_vectors.~list();
}
-void CDynaDrawContext::setup() {
- SPEventContext* ec = this->spdynadrawcontext;
+void SPDynaDrawContext::setup() {
+ SPEventContext* ec = this;
SPDynaDrawContext *ddc = SP_DYNA_DRAW_CONTEXT(ec);
// if ((SP_EVENT_CONTEXT_CLASS(sp_dyna_draw_context_parent_class))->setup)
// (SP_EVENT_CONTEXT_CLASS(sp_dyna_draw_context_parent_class))->setup(ec);
- CCommonContext::setup();
+ SPCommonContext::setup();
ddc->accumulated = new SPCurve();
ddc->currentcurve = new SPCurve();
@@ -265,14 +222,8 @@ void CDynaDrawContext::setup() {
}
}
-static void
-sp_dyna_draw_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *val)
-{
- ec->ceventcontext->set(val);
-}
-
-void CDynaDrawContext::set(Inkscape::Preferences::Entry* val) {
- SPEventContext* ec = this->speventcontext;
+void SPDynaDrawContext::set(Inkscape::Preferences::Entry* val) {
+ SPEventContext* ec = this;
SPDynaDrawContext *ddc = SP_DYNA_DRAW_CONTEXT(ec);
Glib::ustring path = val->getEntryName();
@@ -286,7 +237,7 @@ void CDynaDrawContext::set(Inkscape::Preferences::Entry* val) {
// if ( SP_COMMON_CONTEXT_CLASS(sp_dyna_draw_context_parent_class)->set ) {
// SP_COMMON_CONTEXT_CLASS(sp_dyna_draw_context_parent_class)->set(ec, val);
// }
- CCommonContext::set(val);
+ SPCommonContext::set(val);
}
//g_print("DDC: %g %g %g %g\n", ddc->mass, ddc->drag, ddc->angle, ddc->width);
@@ -548,16 +499,8 @@ calligraphic_cancel(SPDynaDrawContext *dc)
}
}
-
-gint
-sp_dyna_draw_context_root_handler(SPEventContext *event_context,
- GdkEvent *event)
-{
- return event_context->ceventcontext->root_handler(event);
-}
-
-gint CDynaDrawContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPDynaDrawContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
SPDynaDrawContext *dc = SP_DYNA_DRAW_CONTEXT(event_context);
SPDesktop *desktop = event_context->desktop;
@@ -1005,7 +948,7 @@ gint CDynaDrawContext::root_handler(GdkEvent* event) {
// if ((SP_EVENT_CONTEXT_CLASS(sp_dyna_draw_context_parent_class))->root_handler) {
// ret = (SP_EVENT_CONTEXT_CLASS(sp_dyna_draw_context_parent_class))->root_handler(event_context, event);
// }
- ret = CCommonContext::root_handler(event);
+ ret = SPCommonContext::root_handler(event);
}
return ret;
diff --git a/src/dyna-draw-context.h b/src/dyna-draw-context.h
index 960d9f055..3b4af3dbc 100644
--- a/src/dyna-draw-context.h
+++ b/src/dyna-draw-context.h
@@ -21,13 +21,8 @@
#include "common-context.h"
#include "splivarot.h"
-#define SP_TYPE_DYNA_DRAW_CONTEXT (sp_dyna_draw_context_get_type())
-//#define SP_DYNA_DRAW_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_DYNA_DRAW_CONTEXT, SPDynaDrawContext))
-#define SP_DYNA_DRAW_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SP_TYPE_DYNA_DRAW_CONTEXT, SPDynaDrawContextClass))
-//#define SP_IS_DYNA_DRAW_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), SP_TYPE_DYNA_DRAW_CONTEXT))
-#define SP_IS_DYNA_DRAW_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE((k), SP_TYPE_DYNA_DRAW_CONTEXT))
#define SP_DYNA_DRAW_CONTEXT(obj) ((SPDynaDrawContext*)obj)
-#define SP_IS_DYNA_DRAW_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPDynaDrawContext)))
+#define SP_IS_DYNA_DRAW_CONTEXT(obj) (dynamic_cast<const SPDynaDrawContext*>((const SPEventContext*)obj))
#define DDC_MIN_PRESSURE 0.0
@@ -38,12 +33,10 @@
#define DDC_MAX_TILT 1.0
#define DDC_DEFAULT_TILT 0.0
-class CDynaDrawContext;
-
class SPDynaDrawContext : public SPCommonContext {
public:
SPDynaDrawContext();
- CDynaDrawContext* cdynadrawcontext;
+ virtual ~SPDynaDrawContext();
/** newly created object remain selected */
bool keep_selected;
@@ -63,26 +56,14 @@ public:
bool trace_bg;
static const std::string prefsPath;
-};
-
-struct SPDynaDrawContextClass : public SPEventContextClass{};
-
-class CDynaDrawContext : public CCommonContext {
-public:
- CDynaDrawContext(SPDynaDrawContext* dynadrawcontext);
virtual void setup();
virtual void set(Inkscape::Preferences::Entry* val);
virtual gint root_handler(GdkEvent* event);
virtual const std::string& getPrefsPath();
-
-private:
- SPDynaDrawContext* spdynadrawcontext;
};
-GType sp_dyna_draw_context_get_type(void);
-
#endif // SP_DYNA_DRAW_CONTEXT_H_SEEN
/*
diff --git a/src/eraser-context.cpp b/src/eraser-context.cpp
index cf6d8021d..7d2abc53f 100644
--- a/src/eraser-context.cpp
+++ b/src/eraser-context.cpp
@@ -83,12 +83,6 @@ using Inkscape::DocumentUndo;
#define DRAG_DEFAULT 1.0
#define DRAG_MAX 1.0
-static void sp_eraser_context_dispose(GObject *object);
-
-static void sp_eraser_context_setup(SPEventContext *ec);
-static void sp_eraser_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *val);
-static gint sp_eraser_context_root_handler(SPEventContext *ec, GdkEvent *event);
-
static void clear_current(SPEraserContext *dc);
static void set_to_accumulated(SPEraserContext *dc);
static void add_cap(SPCurve *curve, Geom::Point const &pre, Geom::Point const &from, Geom::Point const &to, Geom::Point const &post, double rounding);
@@ -111,72 +105,32 @@ namespace {
bool eraserContextRegistered = ToolFactory::instance().registerObject("/tools/eraser", createEraserContext);
}
-const std::string& CEraserContext::getPrefsPath() {
+const std::string& SPEraserContext::getPrefsPath() {
return SPEraserContext::prefsPath;
}
const std::string SPEraserContext::prefsPath = "/tools/eraser";
-G_DEFINE_TYPE(SPEraserContext, sp_eraser_context, SP_TYPE_COMMON_CONTEXT);
-
-static void
-sp_eraser_context_class_init(SPEraserContextClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
- SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
-
- object_class->dispose = sp_eraser_context_dispose;
-
-// event_context_class->setup = sp_eraser_context_setup;
-// event_context_class->set = sp_eraser_context_set;
-// event_context_class->root_handler = sp_eraser_context_root_handler;
-}
-
-CEraserContext::CEraserContext(SPEraserContext* erasercontext) : CCommonContext(erasercontext) {
- this->sperasercontext = erasercontext;
-}
-
SPEraserContext::SPEraserContext() : SPCommonContext() {
SPEraserContext* erc = this;
- erc->cerasercontext = new CEraserContext(erc);
- delete erc->ccommoncontext;
- erc->ccommoncontext = erc->cerasercontext;
- erc->ceventcontext = erc->cerasercontext;
- types.insert(typeid(SPEraserContext));
-
erc->cursor_shape = cursor_eraser_xpm;
erc->hot_x = 4;
erc->hot_y = 4;
}
-static void
-sp_eraser_context_init(SPEraserContext *erc)
-{
- new (erc) SPEraserContext();
+SPEraserContext::~SPEraserContext() {
}
-static void
-sp_eraser_context_dispose(GObject *object)
-{
- G_OBJECT_CLASS(sp_eraser_context_parent_class)->dispose(object);
-}
-
-static void
-sp_eraser_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
-}
-
-void CEraserContext::setup() {
- SPEventContext* ec = this->sperasercontext;
+void SPEraserContext::setup() {
+ SPEventContext* ec = this;
SPEraserContext *erc = SP_ERASER_CONTEXT(ec);
SPDesktop *desktop = ec->desktop;
// if ((SP_EVENT_CONTEXT_CLASS(sp_eraser_context_parent_class))->setup)
// (SP_EVENT_CONTEXT_CLASS(sp_eraser_context_parent_class))->setup(ec);
- CCommonContext::setup();
+ SPCommonContext::setup();
erc->accumulated = new SPCurve();
erc->currentcurve = new SPCurve();
@@ -228,22 +182,6 @@ static ProfileFloatElement f_profile[PROFILE_FLOAT_SIZE] = {
}
-static void
-sp_eraser_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *val)
-{
- ec->ceventcontext->set(val);
-}
-
-void CEraserContext::set(Inkscape::Preferences::Entry* val) {
- SPEventContext* ec = this->sperasercontext;
-
- //pass on up to parent class to handle common attributes.
-// if (SP_EVENT_CONTEXT_CLASS(sp_eraser_context_parent_class)->set ) {
-// SP_EVENT_CONTEXT_CLASS(sp_eraser_context_parent_class)->set(ec, val);
-// }
- CCommonContext::set(val);
-}
-
static double
flerp(double f0, double f1, double p)
{
@@ -486,16 +424,8 @@ eraser_cancel(SPEraserContext *dc)
}
}
-
-gint
-sp_eraser_context_root_handler(SPEventContext *event_context,
- GdkEvent *event)
-{
- return event_context->ceventcontext->root_handler(event);
-}
-
-gint CEraserContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->sperasercontext;
+gint SPEraserContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
SPEraserContext *dc = SP_ERASER_CONTEXT(event_context);
SPDesktop *desktop = event_context->desktop;
@@ -715,7 +645,7 @@ gint CEraserContext::root_handler(GdkEvent* event) {
// if ((SP_EVENT_CONTEXT_CLASS(sp_eraser_context_parent_class))->root_handler) {
// ret = (SP_EVENT_CONTEXT_CLASS(sp_eraser_context_parent_class))->root_handler(event_context, event);
// }
- ret = CCommonContext::root_handler(event);
+ ret = SPCommonContext::root_handler(event);
}
return ret;
diff --git a/src/eraser-context.h b/src/eraser-context.h
index 0400fb5b5..7c9ef7f50 100644
--- a/src/eraser-context.h
+++ b/src/eraser-context.h
@@ -21,15 +21,8 @@
#include "common-context.h"
-G_BEGIN_DECLS
-
-#define SP_TYPE_ERASER_CONTEXT (sp_eraser_context_get_type())
-//#define SP_ERASER_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_ERASER_CONTEXT, SPEraserContext))
-#define SP_ERASER_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SP_TYPE_ERASER_CONTEXT, SPEraserContextClass))
-//#define SP_IS_ERASER_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), SP_TYPE_ERASER_CONTEXT))
-#define SP_IS_ERASER_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE((k), SP_TYPE_ERASER_CONTEXT))
#define SP_ERASER_CONTEXT(obj) ((SPEraserContext*)obj)
-#define SP_IS_ERASER_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPEraserContext)))
+#define SP_IS_ERASER_CONTEXT(obj) (dynamic_cast<const SPEraserContext*>((const SPEventContext*)obj))
#define ERC_MIN_PRESSURE 0.0
#define ERC_MAX_PRESSURE 1.0
@@ -39,37 +32,19 @@ G_BEGIN_DECLS
#define ERC_MAX_TILT 1.0
#define ERC_DEFAULT_TILT 0.0
-class CEraserContext;
-
class SPEraserContext : public SPCommonContext {
public:
SPEraserContext();
- CEraserContext* cerasercontext;
+ virtual ~SPEraserContext();
static const std::string prefsPath;
-};
-
-struct SPEraserContextClass : public SPEventContextClass{};
-
-class CEraserContext : public CCommonContext {
-public:
- CEraserContext(SPEraserContext* erasercontext);
virtual void setup();
- virtual void set(Inkscape::Preferences::Entry* val);
virtual gint root_handler(GdkEvent* event);
virtual const std::string& getPrefsPath();
-
-private:
- SPEraserContext* sperasercontext;
};
-
-GType sp_eraser_context_get_type(void);
-
-G_END_DECLS
-
#endif // SP_ERASER_CONTEXT_H_SEEN
/*
diff --git a/src/event-context.cpp b/src/event-context.cpp
index c10711497..2b84487b6 100644
--- a/src/event-context.cpp
+++ b/src/event-context.cpp
@@ -54,8 +54,6 @@
#include "sp-guide.h"
#include "color.h"
-static void sp_event_context_dispose(GObject *object);
-
static void set_event_location(SPDesktop * desktop, GdkEvent * event);
// globals for temporary switching to selector by space
@@ -75,48 +73,21 @@ static guint32 scroll_event_time = 0;
static gdouble scroll_multiply = 1;
static guint scroll_keyval = 0;
-G_DEFINE_TYPE(SPEventContext, sp_event_context, G_TYPE_OBJECT);
-
-/**
- * Callback to set up the SPEventContext vtable.
- */
-static void sp_event_context_class_init(SPEventContextClass *klass) {
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
-
- object_class->dispose = sp_event_context_dispose;
-
-// klass->setup = sp_event_context_private_setup;
-// klass->root_handler = sp_event_context_private_root_handler;
-// klass->item_handler = sp_event_context_private_item_handler;
+void SPEventContext::set(Inkscape::Preferences::Entry* val) {
}
-CEventContext::CEventContext(SPEventContext* eventcontext) {
- this->speventcontext = eventcontext;
+void SPEventContext::activate() {
}
-CEventContext::~CEventContext() {
+void SPEventContext::deactivate() {
}
-void CEventContext::set(Inkscape::Preferences::Entry* val) {
-}
-
-void CEventContext::activate() {
-}
-
-void CEventContext::deactivate() {
-}
-
-void CEventContext::finish() {
+void SPEventContext::finish() {
}
SPEventContext::SPEventContext() {
SPEventContext* event_context = this;
- event_context->ceventcontext = 0;
- //event_context->ceventcontext = new CEventContext(event_context);
- new (&types) std::set<TypeInfo>();
- types.insert(typeid(SPEventContext));
-
event_context->hot_y = 0;
event_context->xp = 0;
event_context->cursor_shape = 0;
@@ -141,13 +112,6 @@ SPEventContext::SPEventContext() {
event_context->tool_url = NULL;
}
-/**
- * Clears all SPEventContext object members.
- */
-static void sp_event_context_init(SPEventContext *event_context) {
- new (event_context) SPEventContext();
-}
-
SPEventContext::~SPEventContext() {
SPEventContext *ec;
@@ -181,41 +145,6 @@ SPEventContext::~SPEventContext() {
//G_OBJECT_CLASS(sp_event_context_parent_class)->dispose(object);
}
-/**
- * Callback to free and null member variables of SPEventContext object.
- */
-static void sp_event_context_dispose(GObject *object) {
- SPEventContext *ec;
-
- ec = SP_EVENT_CONTEXT(object);
-
- if (ec->_message_context) {
- delete ec->_message_context;
- }
-
- if (ec->cursor != NULL) {
-#if GTK_CHECK_VERSION(3,0,0)
- g_object_unref(ec->cursor);
-#else
- gdk_cursor_unref(ec->cursor);
-#endif
- ec->cursor = NULL;
- }
-
- if (ec->desktop) {
- ec->desktop = NULL;
- }
-
- if (ec->pref_observer) {
- delete ec->pref_observer;
- }
-
- if (ec->_delayed_snap_event) {
- delete ec->_delayed_snap_event;
- }
-
- G_OBJECT_CLASS(sp_event_context_parent_class)->dispose(object);
-}
/**
* Set the cursor to a standard GDK cursor
@@ -306,8 +235,8 @@ void sp_event_context_update_cursor(SPEventContext *ec) {
// ec->ceventcontext->setup();
//}
-void CEventContext::setup() {
- sp_event_context_update_cursor(this->speventcontext);
+void SPEventContext::setup() {
+ sp_event_context_update_cursor(this);
}
/**
@@ -434,8 +363,8 @@ static gdouble accelerate_scroll(GdkEvent *event, gdouble acceleration,
// return event_context->ceventcontext->root_handler(event);
//}
-gint CEventContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPEventContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
static Geom::Point button_w;
static unsigned int panning = 0;
@@ -896,8 +825,8 @@ gint CEventContext::root_handler(GdkEvent* event) {
// return ec->ceventcontext->item_handler(item, event);
//}
-gint CEventContext::item_handler(SPItem* item, GdkEvent* event) {
- SPEventContext* ec = this->speventcontext;
+gint SPEventContext::item_handler(SPItem* item, GdkEvent* event) {
+ SPEventContext* ec = this;
int ret = FALSE;
@@ -975,7 +904,7 @@ void sp_event_context_finish(SPEventContext *ec) {
// if ((SP_EVENT_CONTEXT_CLASS(G_OBJECT_GET_CLASS(ec)))->finish)
// (SP_EVENT_CONTEXT_CLASS(G_OBJECT_GET_CLASS(ec)))->finish(ec);
- ec->ceventcontext->finish();
+ ec->finish();
}
//-------------------------------member functions
@@ -1040,7 +969,7 @@ void sp_event_context_read(SPEventContext *ec, gchar const *key) {
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
Inkscape::Preferences::Entry val = prefs->getEntry(ec->pref_observer->observed_path + '/' + key);
- ec->ceventcontext->set(&val);
+ ec->set(&val);
}
/**
@@ -1057,7 +986,7 @@ void sp_event_context_activate(SPEventContext *ec) {
// if ((SP_EVENT_CONTEXT_CLASS(G_OBJECT_GET_CLASS(ec)))->activate)
// (SP_EVENT_CONTEXT_CLASS(G_OBJECT_GET_CLASS(ec)))->activate(ec);
- ec->ceventcontext->activate();
+ ec->activate();
}
/**
@@ -1069,7 +998,7 @@ void sp_event_context_deactivate(SPEventContext *ec) {
// if ((SP_EVENT_CONTEXT_CLASS(G_OBJECT_GET_CLASS(ec)))->deactivate)
// (SP_EVENT_CONTEXT_CLASS(G_OBJECT_GET_CLASS(ec)))->deactivate(ec);
- ec->ceventcontext->deactivate();
+ ec->deactivate();
}
/**
@@ -1111,7 +1040,7 @@ gint sp_event_context_virtual_root_handler(SPEventContext * event_context, GdkEv
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)
//ret = (SP_EVENT_CONTEXT_CLASS(G_OBJECT_GET_CLASS(event_context)))->root_handler(event_context, event);
- ret = event_context->ceventcontext->root_handler(event);
+ ret = event_context->root_handler(event);
set_event_location(event_context->desktop, event);
}
@@ -1152,7 +1081,7 @@ gint sp_event_context_virtual_item_handler(SPEventContext * event_context, SPIte
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)
//ret = (SP_EVENT_CONTEXT_CLASS(G_OBJECT_GET_CLASS(event_context)))->item_handler(event_context, item, event);
- ret = event_context->ceventcontext->item_handler(item, event);
+ ret = event_context->item_handler(item, event);
if (!ret) {
ret = sp_event_context_virtual_root_handler(event_context, event);
diff --git a/src/event-context.h b/src/event-context.h
index a4494a5cf..155620c16 100644
--- a/src/event-context.h
+++ b/src/event-context.h
@@ -33,15 +33,8 @@ namespace Inkscape {
}
}
-#define SP_TYPE_EVENT_CONTEXT (sp_event_context_get_type())
-//#define SP_EVENT_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_EVENT_CONTEXT, SPEventContext))
-#define SP_EVENT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_EVENT_CONTEXT, SPEventContextClass))
-//#define SP_IS_EVENT_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), SP_TYPE_EVENT_CONTEXT))
#define SP_EVENT_CONTEXT(obj) ((SPEventContext*)obj)
-#define SP_IS_EVENT_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPEventContext)))
-
-
-GType sp_event_context_get_type();
+#define SP_IS_EVENT_CONTEXT(obj) (dynamic_cast<const SPEventContext*>((const SPEventContext*)obj))
gboolean sp_event_context_snap_watchdog_callback(gpointer data);
void sp_event_context_discard_delayed_snap_event(SPEventContext *ec);
@@ -93,10 +86,6 @@ private:
void sp_event_context_snap_delay_handler(SPEventContext *ec, gpointer const dse_item, gpointer const dse_item2, GdkEventMotion *event, DelayedSnapEvent::DelayedSnapEventOrigin origin);
-class CEventContext;
-#include <set>
-#include "type-info.h"
-
/**
* Base class for Event processors.
*
@@ -110,7 +99,7 @@ class CEventContext;
* plus few abstract base classes. Writing a new tool involves
* subclassing SPEventContext.
*/
-class SPEventContext { //: public GObject {
+class SPEventContext {
public:
void enableSelectionCue (bool enable=true);
void enableGrDrag (bool enable=true);
@@ -118,8 +107,6 @@ public:
SPEventContext();
virtual ~SPEventContext();
- CEventContext* ceventcontext;
- std::set<TypeInfo> types;
/// Desktop eventcontext stack
//SPEventContext *next;
@@ -156,25 +143,6 @@ public:
bool _dse_callback_in_process;
char const * tool_url; ///< the (preferences) url for the tool (if a subclass corresponding to a tool is used)
-};
-
-/**
- * The SPEvent vtable.
- */
-struct SPEventContextClass : public GObjectClass {
-// void (* setup)(SPEventContext *ec);
-// void (* finish)(SPEventContext *ec);
-// void (* set)(SPEventContext *ec, Inkscape::Preferences::Entry *val);
-// void (* activate)(SPEventContext *ec);
-// void (* deactivate)(SPEventContext *ec);
-// gint (* root_handler)(SPEventContext *ec, GdkEvent *event);
-// gint (* item_handler)(SPEventContext *ec, SPItem *item, GdkEvent *event);
-};
-
-class CEventContext {
-public:
- CEventContext(SPEventContext* eventcontext);
- virtual ~CEventContext();
virtual void setup();
virtual void finish();
@@ -185,8 +153,6 @@ public:
virtual gint item_handler(SPItem* item, GdkEvent* event);
virtual const std::string& getPrefsPath() = 0;
-protected:
- SPEventContext* speventcontext;
};
#define SP_EVENT_CONTEXT_DESKTOP(e) (SP_EVENT_CONTEXT(e)->desktop)
@@ -245,7 +211,7 @@ public:
// (SP_EVENT_CONTEXT_CLASS(G_OBJECT_GET_CLASS(_ec)))->set(_ec,
// const_cast<Inkscape::Preferences::Entry*> (&val));
// }
- _ec->ceventcontext->set(const_cast<Inkscape::Preferences::Entry*>(&val));
+ _ec->set(const_cast<Inkscape::Preferences::Entry*>(&val));
}
private:
SPEventContext * const _ec;
diff --git a/src/flood-context.cpp b/src/flood-context.cpp
index 333be207e..14cf58501 100644
--- a/src/flood-context.cpp
+++ b/src/flood-context.cpp
@@ -75,13 +75,6 @@ using Inkscape::Display::ExtractARGB32;
using Inkscape::Display::ExtractRGB32;
using Inkscape::Display::AssembleARGB32;
-static void sp_flood_context_dispose(GObject *object);
-
-static void sp_flood_context_setup(SPEventContext *ec);
-
-static gint sp_flood_context_root_handler(SPEventContext *event_context, GdkEvent *event);
-static gint sp_flood_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event);
-
static void sp_flood_finish(SPFloodContext *rc);
#include "sp-factory.h"
@@ -94,38 +87,15 @@ namespace {
bool paintbucketContextRegistered = ToolFactory::instance().registerObject("/tools/paintbucket", createPaintbucketContext);
}
-const std::string& CFloodContext::getPrefsPath() {
+const std::string& SPFloodContext::getPrefsPath() {
return SPFloodContext::prefsPath;
}
const std::string SPFloodContext::prefsPath = "/tools/paintbucket";
-G_DEFINE_TYPE(SPFloodContext, sp_flood_context, SP_TYPE_EVENT_CONTEXT);
-
-static void sp_flood_context_class_init(SPFloodContextClass *klass)
-{
- GObjectClass *object_class = (GObjectClass *) klass;
- SPEventContextClass *event_context_class = (SPEventContextClass *) klass;
-
- object_class->dispose = sp_flood_context_dispose;
-
-// event_context_class->setup = sp_flood_context_setup;
-// event_context_class->root_handler = sp_flood_context_root_handler;
-// event_context_class->item_handler = sp_flood_context_item_handler;
-}
-
-CFloodContext::CFloodContext(SPFloodContext* floodcontext) : CEventContext(floodcontext) {
- this->spfloodcontext = floodcontext;
-}
-
SPFloodContext::SPFloodContext() : SPEventContext() {
SPFloodContext* flood_context = this;
- flood_context->cfloodcontext = new CFloodContext(flood_context);
- delete flood_context->ceventcontext;
- flood_context->ceventcontext = flood_context->cfloodcontext;
- types.insert(typeid(SPFloodContext));
-
flood_context->_message_context = 0;
SPEventContext *event_context = SP_EVENT_CONTEXT(flood_context);
@@ -141,21 +111,15 @@ SPFloodContext::SPFloodContext() : SPEventContext() {
flood_context->item = NULL;
- new (&flood_context->sel_changed_connection) sigc::connection();
-}
-
-static void sp_flood_context_init(SPFloodContext *flood_context)
-{
- new (flood_context) SPFloodContext();
+ //new (&flood_context->sel_changed_connection) sigc::connection();
}
-static void sp_flood_context_dispose(GObject *object)
-{
- SPFloodContext *rc = SP_FLOOD_CONTEXT(object);
- SPEventContext *ec = SP_EVENT_CONTEXT(object);
+SPFloodContext::~SPFloodContext() {
+ SPFloodContext *rc = SP_FLOOD_CONTEXT(this);
+ SPEventContext *ec = SP_EVENT_CONTEXT(this);
rc->sel_changed_connection.disconnect();
- rc->sel_changed_connection.~connection();
+ //rc->sel_changed_connection.~connection();
delete ec->shape_editor;
ec->shape_editor = NULL;
@@ -169,7 +133,7 @@ static void sp_flood_context_dispose(GObject *object)
delete rc->_message_context;
}
- G_OBJECT_CLASS(sp_flood_context_parent_class)->dispose(object);
+ //G_OBJECT_CLASS(sp_flood_context_parent_class)->dispose(object);
}
/**
@@ -186,20 +150,15 @@ static void sp_flood_context_selection_changed(Inkscape::Selection *selection, g
ec->shape_editor->set_item(item, SH_KNOTHOLDER);
}
-static void sp_flood_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
-}
-
-void CFloodContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void SPFloodContext::setup() {
+ SPEventContext* ec = this;
SPFloodContext *rc = SP_FLOOD_CONTEXT(ec);
// if (((SPEventContextClass *) sp_flood_context_parent_class)->setup) {
// ((SPEventContextClass *) sp_flood_context_parent_class)->setup(ec);
// }
- CEventContext::setup();
+ SPEventContext::setup();
ec->shape_editor = new ShapeEditor(ec->desktop);
@@ -1159,13 +1118,8 @@ static void sp_flood_do_flood_fill(SPEventContext *event_context, GdkEvent *even
DocumentUndo::done(document, SP_VERB_CONTEXT_PAINTBUCKET, _("Fill bounded area"));
}
-static gint sp_flood_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event)
-{
- return event_context->ceventcontext->item_handler(item, event);
-}
-
-gint CFloodContext::item_handler(SPItem* item, GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPFloodContext::item_handler(SPItem* item, GdkEvent* event) {
+ SPEventContext* event_context = this;
gint ret = FALSE;
@@ -1193,18 +1147,13 @@ gint CFloodContext::item_handler(SPItem* item, GdkEvent* event) {
// ret = ((SPEventContextClass *) sp_flood_context_parent_class)->item_handler(event_context, item, event);
// }
// CPPIFY: ret is overwritten...
- ret = CEventContext::item_handler(item, event);
+ ret = SPEventContext::item_handler(item, event);
return ret;
}
-static gint sp_flood_context_root_handler(SPEventContext *event_context, GdkEvent *event)
-{
- return event_context->ceventcontext->root_handler(event);
-}
-
-gint CFloodContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPFloodContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
static bool dragging;
@@ -1308,13 +1257,12 @@ gint CFloodContext::root_handler(GdkEvent* event) {
// if (((SPEventContextClass *) sp_flood_context_parent_class)->root_handler) {
// ret = ((SPEventContextClass *) sp_flood_context_parent_class)->root_handler(event_context, event);
// }
- ret = CEventContext::root_handler(event);
+ ret = SPEventContext::root_handler(event);
}
return ret;
}
-
static void sp_flood_finish(SPFloodContext *rc)
{
rc->_message_context->clear();
diff --git a/src/flood-context.h b/src/flood-context.h
index b2f82ff60..f218bdfa6 100644
--- a/src/flood-context.h
+++ b/src/flood-context.h
@@ -18,13 +18,8 @@
#include "helper/unit-menu.h"
#include "helper/units.h"
-#define SP_TYPE_FLOOD_CONTEXT (sp_flood_context_get_type ())
-//#define SP_FLOOD_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_FLOOD_CONTEXT, SPFloodContext))
-#define SP_FLOOD_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_FLOOD_CONTEXT, SPFloodContextClass))
-//#define SP_IS_FLOOD_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_FLOOD_CONTEXT))
-#define SP_IS_FLOOD_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_FLOOD_CONTEXT))
#define SP_FLOOD_CONTEXT(obj) ((SPFloodContext*)obj)
-#define SP_IS_FLOOD_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPFloodContext)))
+#define SP_IS_FLOOD_CONTEXT(obj) (dynamic_cast<const SPFloodContext*>((const SPEventContext*)obj))
#define FLOOD_COLOR_CHANNEL_R 1
@@ -32,12 +27,10 @@
#define FLOOD_COLOR_CHANNEL_B 4
#define FLOOD_COLOR_CHANNEL_A 8
-class CFloodContext;
-
class SPFloodContext : public SPEventContext {
public:
SPFloodContext();
- CFloodContext* cfloodcontext;
+ virtual ~SPFloodContext();
SPItem *item;
@@ -46,29 +39,14 @@ public:
Inkscape::MessageContext *_message_context;
static const std::string prefsPath;
-};
-
-struct SPFloodContextClass {
- SPEventContextClass parent_class;
-};
-
-class CFloodContext : public CEventContext {
-public:
- CFloodContext(SPFloodContext* floodcontext);
virtual void setup();
virtual gint root_handler(GdkEvent* event);
virtual gint item_handler(SPItem* item, GdkEvent* event);
virtual const std::string& getPrefsPath();
-private:
- SPFloodContext* spfloodcontext;
};
-/* Standard Gtk function */
-
-GType sp_flood_context_get_type (void);
-
GList* flood_channels_dropdown_items_list (void);
GList* flood_autogap_dropdown_items_list (void);
void flood_channels_set_channels( gint channels );
diff --git a/src/gradient-context.cpp b/src/gradient-context.cpp
index be35de29b..a5fe888c1 100644
--- a/src/gradient-context.cpp
+++ b/src/gradient-context.cpp
@@ -51,12 +51,6 @@
using Inkscape::DocumentUndo;
-static void sp_gradient_context_dispose(GObject *object);
-
-static void sp_gradient_context_setup(SPEventContext *ec);
-
-static gint sp_gradient_context_root_handler(SPEventContext *event_context, GdkEvent *event);
-
static void sp_gradient_drag(SPGradientContext &rc, Geom::Point const pt, guint state, guint32 etime);
@@ -70,37 +64,16 @@ namespace {
bool gradientContextRegistered = ToolFactory::instance().registerObject("/tools/gradient", createGradientContext);
}
-const std::string& CGradientContext::getPrefsPath() {
+const std::string& SPGradientContext::getPrefsPath() {
return SPGradientContext::prefsPath;
}
const std::string SPGradientContext::prefsPath = "/tools/gradient";
-G_DEFINE_TYPE(SPGradientContext, sp_gradient_context, SP_TYPE_EVENT_CONTEXT);
-
-static void sp_gradient_context_class_init(SPGradientContextClass *klass)
-{
- GObjectClass *object_class = (GObjectClass *) klass;
- SPEventContextClass *event_context_class = (SPEventContextClass *) klass;
-
- object_class->dispose = sp_gradient_context_dispose;
-
-// event_context_class->setup = sp_gradient_context_setup;
-// event_context_class->root_handler = sp_gradient_context_root_handler;
-}
-
-CGradientContext::CGradientContext(SPGradientContext* gradientcontext) : CEventContext(gradientcontext) {
- this->spgradientcontext = gradientcontext;
-}
SPGradientContext::SPGradientContext() : SPEventContext() {
SPGradientContext* gr_context = this;
- gr_context->cgradientcontext = new CGradientContext(gr_context);
- delete gr_context->ceventcontext;
- gr_context->ceventcontext = gr_context->cgradientcontext;
- types.insert(typeid(SPGradientContext));
-
gr_context->node_added = false;
gr_context->subselcon = 0;
gr_context->_message_context = 0;
@@ -119,15 +92,9 @@ SPGradientContext::SPGradientContext() : SPEventContext() {
event_context->item_to_select = NULL;
}
-static void sp_gradient_context_init(SPGradientContext *gr_context)
-{
- new (gr_context) SPGradientContext();
-}
-
-static void sp_gradient_context_dispose(GObject *object)
-{
- SPGradientContext *rc = SP_GRADIENT_CONTEXT(object);
- SPEventContext *ec = SP_EVENT_CONTEXT(object);
+SPGradientContext::~SPGradientContext() {
+ SPGradientContext *rc = SP_GRADIENT_CONTEXT(this);
+ SPEventContext *ec = SP_EVENT_CONTEXT(this);
ec->enableGrDrag(false);
@@ -140,7 +107,7 @@ static void sp_gradient_context_dispose(GObject *object)
rc->subselcon->disconnect();
delete rc->subselcon;
- G_OBJECT_CLASS(sp_gradient_context_parent_class)->dispose(object);
+ //G_OBJECT_CLASS(sp_gradient_context_parent_class)->dispose(object);
}
const gchar *gr_handle_descr [] = {
@@ -212,21 +179,15 @@ gradient_subselection_changed (gpointer, gpointer data)
gradient_selection_changed (NULL, data);
}
-
-static void sp_gradient_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
-}
-
-void CGradientContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void SPGradientContext::setup() {
+ SPEventContext* ec = this;
SPGradientContext *rc = SP_GRADIENT_CONTEXT(ec);
// if (((SPEventContextClass *) sp_gradient_context_parent_class)->setup) {
// ((SPEventContextClass *) sp_gradient_context_parent_class)->setup(ec);
// }
- CEventContext::setup();
+ SPEventContext::setup();
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
if (prefs->getBool("/tools/gradient/selcue", true)) {
@@ -527,15 +488,8 @@ sp_gradient_context_add_stop_near_point (SPGradientContext *rc, SPItem *item, G
ec->get_drag()->selectByStop(newstop);
}
-
-static gint
-sp_gradient_context_root_handler(SPEventContext *event_context, GdkEvent *event)
-{
- return event_context->ceventcontext->root_handler(event);
-}
-
-gint CGradientContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPGradientContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
static bool dragging;
@@ -908,7 +862,7 @@ gint CGradientContext::root_handler(GdkEvent* event) {
// if (((SPEventContextClass *) sp_gradient_context_parent_class)->root_handler) {
// ret = ((SPEventContextClass *) sp_gradient_context_parent_class)->root_handler(event_context, event);
// }
- ret = CEventContext::root_handler(event);
+ ret = SPEventContext::root_handler(event);
}
return ret;
diff --git a/src/gradient-context.h b/src/gradient-context.h
index b53f2da20..798647bf3 100644
--- a/src/gradient-context.h
+++ b/src/gradient-context.h
@@ -19,20 +19,13 @@
#include <sigc++/sigc++.h>
#include "event-context.h"
-#define SP_TYPE_GRADIENT_CONTEXT (sp_gradient_context_get_type())
-//#define SP_GRADIENT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_GRADIENT_CONTEXT, SPGradientContext))
-#define SP_GRADIENT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_GRADIENT_CONTEXT, SPGradientContextClass))
-//#define SP_IS_GRADIENT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_GRADIENT_CONTEXT))
-#define SP_IS_GRADIENT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_GRADIENT_CONTEXT))
#define SP_GRADIENT_CONTEXT(obj) ((SPGradientContext*)obj)
-#define SP_IS_GRADIENT_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPGradientContext)))
-
-class CGradientContext;
+#define SP_IS_GRADIENT_CONTEXT(obj) (dynamic_cast<const SPGradientContext*>((const SPEventContext*)obj))
class SPGradientContext : public SPEventContext {
public:
SPGradientContext();
- CGradientContext* cgradientcontext;
+ virtual ~SPGradientContext();
Geom::Point origin;
@@ -48,27 +41,13 @@ public:
sigc::connection *subselcon;
static const std::string prefsPath;
-};
-
-struct SPGradientContextClass {
- SPEventContextClass parent_class;
-};
-
-class CGradientContext : public CEventContext {
-public:
- CGradientContext(SPGradientContext* gradientcontext);
virtual void setup();
virtual gint root_handler(GdkEvent* event);
virtual const std::string& getPrefsPath();
-private:
- SPGradientContext* spgradientcontext;
};
-/* Standard Gtk function */
-GType sp_gradient_context_get_type();
-
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);
diff --git a/src/lpe-tool-context.cpp b/src/lpe-tool-context.cpp
index 4ad20c878..82190f5a0 100644
--- a/src/lpe-tool-context.cpp
+++ b/src/lpe-tool-context.cpp
@@ -41,13 +41,6 @@
#include "lpe-tool-context.h"
-static void sp_lpetool_context_dispose(GObject *object);
-
-static void sp_lpetool_context_setup(SPEventContext *ec);
-static void sp_lpetool_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *);
-static gint sp_lpetool_context_item_handler(SPEventContext *ec, SPItem *item, GdkEvent *event);
-static gint sp_lpetool_context_root_handler(SPEventContext *ec, GdkEvent *event);
-
void sp_lpetool_context_selection_changed(Inkscape::Selection *selection, gpointer data);
const int num_subtools = 8;
@@ -75,42 +68,15 @@ namespace {
bool lpetoolContextRegistered = ToolFactory::instance().registerObject("/tools/lpetool", createLPEToolContext);
}
-const std::string& CLPEToolContext::getPrefsPath() {
+const std::string& SPLPEToolContext::getPrefsPath() {
return SPLPEToolContext::prefsPath;
}
const std::string SPLPEToolContext::prefsPath = "/tools/lpetool";
-G_DEFINE_TYPE(SPLPEToolContext, sp_lpetool_context, SP_TYPE_PEN_CONTEXT);
-
-static void
-sp_lpetool_context_class_init(SPLPEToolContextClass *klass)
-{
- GObjectClass *object_class = (GObjectClass *) klass;
- SPEventContextClass *event_context_class = (SPEventContextClass *) klass;
-
- object_class->dispose = sp_lpetool_context_dispose;
-
-// event_context_class->setup = sp_lpetool_context_setup;
-// event_context_class->set = sp_lpetool_context_set;
-// event_context_class->root_handler = sp_lpetool_context_root_handler;
-// event_context_class->item_handler = sp_lpetool_context_item_handler;
-}
-
-CLPEToolContext::CLPEToolContext(SPLPEToolContext* lpetoolcontext) : CPenContext(lpetoolcontext) {
- this->splpetoolcontext = lpetoolcontext;
-}
-
SPLPEToolContext::SPLPEToolContext() : SPPenContext() {
SPLPEToolContext* lc = this;
- lc->clpetoolcontext = new CLPEToolContext(lc);
- delete lc->cpencontext;
- lc->cpencontext = lc->clpetoolcontext;
- lc->cdrawcontext = lc->clpetoolcontext;
- lc->ceventcontext = lc->clpetoolcontext;
- types.insert(typeid(SPLPEToolContext));
-
lc->mode = Inkscape::LivePathEffect::BEND_PATH;
lc->shape_editor = 0;
lc->_lpetool_message_context = 0;
@@ -122,19 +88,11 @@ SPLPEToolContext::SPLPEToolContext() : SPPenContext() {
lc->canvas_bbox = NULL;
lc->measuring_items = new std::map<SPPath *, SPCanvasItem*>;
- new (&lc->sel_changed_connection) sigc::connection();
-}
-
-static void
-sp_lpetool_context_init(SPLPEToolContext *lc)
-{
- new (lc) SPLPEToolContext();
+ //new (&lc->sel_changed_connection) sigc::connection();
}
-static void
-sp_lpetool_context_dispose(GObject *object)
-{
- SPLPEToolContext *lc = SP_LPETOOL_CONTEXT(object);
+SPLPEToolContext::~SPLPEToolContext() {
+ SPLPEToolContext *lc = SP_LPETOOL_CONTEXT(this);
delete lc->shape_editor;
if (lc->canvas_bbox) {
@@ -147,29 +105,23 @@ sp_lpetool_context_dispose(GObject *object)
lc->measuring_items = NULL;
lc->sel_changed_connection.disconnect();
- lc->sel_changed_connection.~connection();
+ //lc->sel_changed_connection.~connection();
if (lc->_lpetool_message_context) {
delete lc->_lpetool_message_context;
}
- G_OBJECT_CLASS(sp_lpetool_context_parent_class)->dispose(object);
-}
-
-static void
-sp_lpetool_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
+ //G_OBJECT_CLASS(sp_lpetool_context_parent_class)->dispose(object);
}
-void CLPEToolContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void SPLPEToolContext::setup() {
+ SPEventContext* ec = this;
SPLPEToolContext *lc = SP_LPETOOL_CONTEXT(ec);
// if (((SPEventContextClass *) sp_lpetool_context_parent_class)->setup)
// ((SPEventContextClass *) sp_lpetool_context_parent_class)->setup(ec);
- CPenContext::setup();
+ SPPenContext::setup();
Inkscape::Selection *selection = sp_desktop_selection (ec->desktop);
SPItem *item = selection->singleItem();
@@ -214,14 +166,8 @@ void sp_lpetool_context_selection_changed(Inkscape::Selection *selection, gpoint
lc->shape_editor->set_item(item, SH_KNOTHOLDER);
}
-static void
-sp_lpetool_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *val)
-{
- ec->ceventcontext->set(val);
-}
-
-void CLPEToolContext::set(Inkscape::Preferences::Entry* val) {
- SPEventContext* ec = this->speventcontext;
+void SPLPEToolContext::set(Inkscape::Preferences::Entry* val) {
+ SPEventContext* ec = this;
if (val->getEntryName() == "mode") {
Inkscape::Preferences::get()->setString("/tools/geometric/mode", "drag");
@@ -236,14 +182,8 @@ void CLPEToolContext::set(Inkscape::Preferences::Entry* val) {
*/
}
-static gint
-sp_lpetool_context_item_handler(SPEventContext *ec, SPItem *item, GdkEvent *event)
-{
- return ec->ceventcontext->item_handler(item, event);
-}
-
-gint CLPEToolContext::item_handler(SPItem* item, GdkEvent* event) {
- SPEventContext* ec = this->spdrawcontext;
+gint SPLPEToolContext::item_handler(SPItem* item, GdkEvent* event) {
+ SPEventContext* ec = this;
gint ret = FALSE;
@@ -268,20 +208,14 @@ gint CLPEToolContext::item_handler(SPItem* item, GdkEvent* event) {
if (!ret) {
// if (((SPEventContextClass *) sp_lpetool_context_parent_class)->item_handler)
// ret = ((SPEventContextClass *) sp_lpetool_context_parent_class)->item_handler(ec, item, event);
- ret = CPenContext::item_handler(item, event);
+ ret = SPPenContext::item_handler(item, event);
}
return ret;
}
-gint
-sp_lpetool_context_root_handler(SPEventContext *event_context, GdkEvent *event)
-{
- return event_context->ceventcontext->root_handler(event);
-}
-
-gint CLPEToolContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPLPEToolContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
SPLPEToolContext *lc = SP_LPETOOL_CONTEXT(event_context);
SPDesktop *desktop = event_context->desktop;
@@ -292,7 +226,7 @@ gint CLPEToolContext::root_handler(GdkEvent* event) {
if (sp_pen_context_has_waiting_LPE(lc)) {
// quit when we are waiting for a LPE to be applied
//ret = ((SPEventContextClass *) sp_lpetool_context_parent_class)->root_handler(event_context, event);
- ret = event_context->ceventcontext->root_handler(event);
+ ret = event_context->root_handler(event);
return ret;
}
@@ -325,7 +259,7 @@ gint CLPEToolContext::root_handler(GdkEvent* event) {
// 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 = event_context->ceventcontext->root_handler(event);
+ ret = event_context->root_handler(event);
}
break;
@@ -364,7 +298,7 @@ gint CLPEToolContext::root_handler(GdkEvent* event) {
// if (((SPEventContextClass *) sp_lpetool_context_parent_class)->root_handler) {
// ret = ((SPEventContextClass *) sp_lpetool_context_parent_class)->root_handler(event_context, event);
// }
- ret = CPenContext::root_handler(event);
+ ret = SPPenContext::root_handler(event);
}
return ret;
diff --git a/src/lpe-tool-context.h b/src/lpe-tool-context.h
index bf6e6fa01..c7c50c28e 100644
--- a/src/lpe-tool-context.h
+++ b/src/lpe-tool-context.h
@@ -18,13 +18,8 @@
#include "pen-context.h"
#include "helper/units.h"
-#define SP_TYPE_LPETOOL_CONTEXT (sp_lpetool_context_get_type())
-//#define SP_LPETOOL_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_LPETOOL_CONTEXT, SPLPEToolContext))
-#define SP_LPETOOL_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SP_TYPE_LPETOOL_CONTEXT, SPLPEToolContextClass))
-//#define SP_IS_LPETOOL_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), SP_TYPE_LPETOOL_CONTEXT))
-#define SP_IS_LPETOOL_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE((k), SP_TYPE_LPETOOL_CONTEXT))
#define SP_LPETOOL_CONTEXT(obj) ((SPLPEToolContext*)obj)
-#define SP_IS_LPETOOL_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPLPEToolContext)))
+#define SP_IS_LPETOOL_CONTEXT(obj) (dynamic_cast<const SPLPEToolContext*>((const SPEventContext*)obj))
/* This is the list of subtools from which the toolbar of the LPETool is built automatically */
extern const int num_subtools;
@@ -47,12 +42,10 @@ class Selection;
class ShapeEditor;
-class CLPEToolContext;
-
class SPLPEToolContext : public SPPenContext {
public:
SPLPEToolContext();
- CLPEToolContext* clpetoolcontext;
+ virtual ~SPLPEToolContext();
ShapeEditor* shape_editor;
SPCanvasItem *canvas_bbox;
@@ -66,13 +59,6 @@ public:
sigc::connection sel_modified_connection;
static const std::string prefsPath;
-};
-
-struct SPLPEToolContextClass : public SPEventContextClass{};
-
-class CLPEToolContext : public CPenContext {
-public:
- CLPEToolContext(SPLPEToolContext* lpetoolcontext);
virtual void setup();
virtual void set(Inkscape::Preferences::Entry* val);
@@ -80,8 +66,6 @@ public:
virtual gint item_handler(SPItem* item, GdkEvent* event);
virtual const std::string& getPrefsPath();
-private:
- SPLPEToolContext* splpetoolcontext;
};
int lpetool_mode_to_index(Inkscape::LivePathEffect::EffectType const type);
@@ -95,8 +79,6 @@ void lpetool_delete_measuring_items(SPLPEToolContext *lc);
void lpetool_update_measuring_items(SPLPEToolContext *lc);
void lpetool_show_measuring_info(SPLPEToolContext *lc, bool show = true);
-GType sp_lpetool_context_get_type(void);
-
#endif // SP_LPETOOL_CONTEXT_H_SEEN
/*
diff --git a/src/measure-context.cpp b/src/measure-context.cpp
index 8012efc8b..1b4d4afe3 100644
--- a/src/measure-context.cpp
+++ b/src/measure-context.cpp
@@ -47,12 +47,6 @@
using Inkscape::ControlManager;
using Inkscape::CTLINE_SECONDARY;
-static void sp_measure_context_setup(SPEventContext *ec);
-static void sp_measure_context_finish(SPEventContext *ec);
-
-static gint sp_measure_context_root_handler(SPEventContext *event_context, GdkEvent *event);
-static gint sp_measure_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event);
-
static gint xp = 0; // where drag started
static gint yp = 0;
static gint tolerance = 0;
@@ -75,14 +69,12 @@ namespace {
bool measureContextRegistered = ToolFactory::instance().registerObject("/tools/measure", createMeasureContext);
}
-const std::string& CMeasureContext::getPrefsPath() {
+const std::string& SPMeasureContext::getPrefsPath() {
return SPMeasureContext::prefsPath;
}
const std::string SPMeasureContext::prefsPath = "/tools/measure";
-G_DEFINE_TYPE(SPMeasureContext, sp_measure_context, SP_TYPE_EVENT_CONTEXT);
-
namespace
{
@@ -248,29 +240,10 @@ void createAngleDisplayCurve(SPDesktop *desktop, Geom::Point const &center, Geom
} // namespace
-static void sp_measure_context_class_init(SPMeasureContextClass *klass)
-{
- SPEventContextClass *event_context_class = reinterpret_cast<SPEventContextClass *>(klass);
-
-// event_context_class->setup = sp_measure_context_setup;
-// event_context_class->finish = sp_measure_context_finish;
-//
-// event_context_class->root_handler = sp_measure_context_root_handler;
-// event_context_class->item_handler = sp_measure_context_item_handler;
-}
-
-CMeasureContext::CMeasureContext(SPMeasureContext* measurecontext) : CEventContext(measurecontext) {
- this->spmeasurecontext = measurecontext;
-}
SPMeasureContext::SPMeasureContext() : SPEventContext() {
SPMeasureContext* measure_context = this;
- measure_context->cmeasurecontext = new CMeasureContext(measure_context);
- delete measure_context->ceventcontext;
- measure_context->ceventcontext = measure_context->cmeasurecontext;
- types.insert(typeid(SPMeasureContext));
-
measure_context->grabbed = 0;
SPEventContext *event_context = SP_EVENT_CONTEXT(measure_context);
@@ -280,18 +253,11 @@ SPMeasureContext::SPMeasureContext() : SPEventContext() {
event_context->hot_y = 4;
}
-static void sp_measure_context_init(SPMeasureContext *measure_context)
-{
- new (measure_context) SPMeasureContext();
-}
-
-static void sp_measure_context_finish(SPEventContext *ec)
-{
- ec->ceventcontext->finish();
+SPMeasureContext::~SPMeasureContext() {
}
-void CMeasureContext::finish() {
- SPEventContext* ec = this->speventcontext;
+void SPMeasureContext::finish() {
+ SPEventContext* ec = this;
SPMeasureContext *mc = SP_MEASURE_CONTEXT(ec);
@@ -303,34 +269,24 @@ void CMeasureContext::finish() {
}
}
-static void sp_measure_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
-}
-
-void CMeasureContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void SPMeasureContext::setup() {
+ SPEventContext* ec = this;
// if (SP_EVENT_CONTEXT_CLASS(sp_measure_context_parent_class)->setup) {
// SP_EVENT_CONTEXT_CLASS(sp_measure_context_parent_class)->setup(ec);
// }
- CEventContext::setup();
+ SPEventContext::setup();
}
-static gint sp_measure_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event)
-{
- return event_context->ceventcontext->item_handler(item, event);
-}
-
-gint CMeasureContext::item_handler(SPItem* item, GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPMeasureContext::item_handler(SPItem* item, GdkEvent* event) {
+ SPEventContext* event_context = this;
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 = CEventContext::item_handler(item, event);
+ ret = SPEventContext::item_handler(item, event);
return ret;
}
@@ -370,13 +326,8 @@ static void calculate_intersections(SPDesktop * /*desktop*/, SPItem* item, Geom:
}
}
-static gint sp_measure_context_root_handler(SPEventContext *event_context, GdkEvent *event)
-{
- return event_context->ceventcontext->root_handler(event);
-}
-
-gint CMeasureContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPMeasureContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
SPDesktop *desktop = event_context->desktop;
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
@@ -827,7 +778,7 @@ gint CMeasureContext::root_handler(GdkEvent* event) {
// if (SP_EVENT_CONTEXT_CLASS(sp_measure_context_parent_class)->root_handler) {
// ret = SP_EVENT_CONTEXT_CLASS(sp_measure_context_parent_class)->root_handler(event_context, event);
// }
- ret = CEventContext::root_handler(event);
+ ret = SPEventContext::root_handler(event);
}
return ret;
diff --git a/src/measure-context.h b/src/measure-context.h
index 218c42177..67f35025c 100644
--- a/src/measure-context.h
+++ b/src/measure-context.h
@@ -14,33 +14,18 @@
#include "event-context.h"
-#define SP_TYPE_MEASURE_CONTEXT (sp_measure_context_get_type())
-//#define SP_MEASURE_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_MEASURE_CONTEXT, SPMeasureContext))
-//#define SP_IS_MEASURE_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_MEASURE_CONTEXT))
#define SP_MEASURE_CONTEXT(obj) ((SPMeasureContext*)obj)
-#define SP_IS_MEASURE_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPMeasureContext)))
-
-
-class CMeasureContext;
+#define SP_IS_MEASURE_CONTEXT(obj) (dynamic_cast<const SPMeasureContext*>((const SPEventContext*)obj))
class SPMeasureContext : public SPEventContext {
public:
SPMeasureContext();
- CMeasureContext* cmeasurecontext;
+ virtual ~SPMeasureContext();
//SPEventContext event_context;
SPCanvasItem *grabbed;
static const std::string prefsPath;
-};
-
-struct SPMeasureContextClass {
- SPEventContextClass parent_class;
-};
-
-class CMeasureContext : public CEventContext {
-public:
- CMeasureContext(SPMeasureContext* measurecontext);
virtual void setup();
virtual void finish();
@@ -48,10 +33,6 @@ public:
virtual gint item_handler(SPItem* item, GdkEvent* event);
virtual const std::string& getPrefsPath();
-private:
- SPMeasureContext* spmeasurecontext;
};
-GType sp_measure_context_get_type(void);
-
#endif // SEEN_SP_MEASURING_CONTEXT_H
diff --git a/src/mesh-context.cpp b/src/mesh-context.cpp
index ac26a6d23..73e477a35 100644
--- a/src/mesh-context.cpp
+++ b/src/mesh-context.cpp
@@ -53,12 +53,6 @@
using Inkscape::DocumentUndo;
-static void sp_mesh_context_dispose(GObject *object);
-
-static void sp_mesh_context_setup(SPEventContext *ec);
-
-static gint sp_mesh_context_root_handler(SPEventContext *event_context, GdkEvent *event);
-
static void sp_mesh_drag(SPMeshContext &rc, Geom::Point const pt, guint state, guint32 etime);
@@ -72,37 +66,15 @@ namespace {
bool meshContextRegistered = ToolFactory::instance().registerObject("/tools/mesh", createMeshContext);
}
-const std::string& CMeshContext::getPrefsPath() {
+const std::string& SPMeshContext::getPrefsPath() {
return SPMeshContext::prefsPath;
}
const std::string SPMeshContext::prefsPath = "/tools/mesh";
-G_DEFINE_TYPE(SPMeshContext, sp_mesh_context, SP_TYPE_EVENT_CONTEXT);
-
-static void sp_mesh_context_class_init(SPMeshContextClass *klass)
-{
- GObjectClass *object_class = (GObjectClass *) klass;
- SPEventContextClass *event_context_class = (SPEventContextClass *) klass;
-
- object_class->dispose = sp_mesh_context_dispose;
-
-// event_context_class->setup = sp_mesh_context_setup;
-// event_context_class->root_handler = sp_mesh_context_root_handler;
-}
-
-CMeshContext::CMeshContext(SPMeshContext* meshcontext) : CEventContext(meshcontext) {
- this->spmeshcontext = meshcontext;
-}
-
SPMeshContext::SPMeshContext() : SPEventContext() {
SPMeshContext* gr_context = this;
- gr_context->cmeshcontext = new CMeshContext(gr_context);
- delete gr_context->ceventcontext;
- gr_context->ceventcontext = gr_context->cmeshcontext;
- types.insert(typeid(SPMeshContext));
-
gr_context->selcon = 0;
gr_context->_message_context = 0;
gr_context->node_added = false;
@@ -121,15 +93,9 @@ SPMeshContext::SPMeshContext() : SPEventContext() {
event_context->item_to_select = NULL;
}
-static void sp_mesh_context_init(SPMeshContext *gr_context)
-{
- new (gr_context) SPMeshContext();
-}
-
-static void sp_mesh_context_dispose(GObject *object)
-{
- SPMeshContext *rc = SP_MESH_CONTEXT(object);
- SPEventContext *ec = SP_EVENT_CONTEXT(object);
+SPMeshContext::~SPMeshContext() {
+ SPMeshContext *rc = SP_MESH_CONTEXT(this);
+ SPEventContext *ec = SP_EVENT_CONTEXT(this);
ec->enableGrDrag(false);
@@ -142,7 +108,7 @@ static void sp_mesh_context_dispose(GObject *object)
rc->subselcon->disconnect();
delete rc->subselcon;
- G_OBJECT_CLASS(sp_mesh_context_parent_class)->dispose(object);
+ //G_OBJECT_CLASS(sp_mesh_context_parent_class)->dispose(object);
}
const gchar *ms_handle_descr [] = {
@@ -278,21 +244,15 @@ mesh_subselection_changed (gpointer, gpointer data)
mesh_selection_changed (NULL, data);
}
-
-static void sp_mesh_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
-}
-
-void CMeshContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void SPMeshContext::setup() {
+ SPEventContext* ec = this;
SPMeshContext *rc = SP_MESH_CONTEXT(ec);
// if (((SPEventContextClass *) sp_mesh_context_parent_class)->setup) {
// ((SPEventContextClass *) sp_mesh_context_parent_class)->setup(ec);
// }
- CEventContext::setup();
+ SPEventContext::setup();
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
if (prefs->getBool("/tools/mesh/selcue", true)) {
@@ -496,14 +456,8 @@ sp_mesh_context_corner_operation (SPMeshContext *rc, MeshCornerOperation operati
/**
Handles all keyboard and mouse input for meshs.
*/
-static gint
-sp_mesh_context_root_handler(SPEventContext *event_context, GdkEvent *event)
-{
- return event_context->ceventcontext->root_handler(event);
-}
-
-gint CMeshContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPMeshContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
// static int count = 0;
// std::cout << "sp_mesh_context_root_handler: " << count++ << std::endl;
@@ -977,7 +931,7 @@ gint CMeshContext::root_handler(GdkEvent* event) {
// if (((SPEventContextClass *) sp_mesh_context_parent_class)->root_handler) {
// ret = ((SPEventContextClass *) sp_mesh_context_parent_class)->root_handler(event_context, event);
// }
- ret = CEventContext::root_handler(event);
+ ret = SPEventContext::root_handler(event);
}
return ret;
diff --git a/src/mesh-context.h b/src/mesh-context.h
index c20fdee6a..055c85dbe 100644
--- a/src/mesh-context.h
+++ b/src/mesh-context.h
@@ -21,20 +21,13 @@
#include <sigc++/sigc++.h>
#include "event-context.h"
-#define SP_TYPE_MESH_CONTEXT (sp_mesh_context_get_type())
-//#define SP_MESH_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), SP_TYPE_MESH_CONTEXT, SPMeshContext))
-#define SP_MESH_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), SP_TYPE_MESH_CONTEXT, SPMeshContextClass))
-//#define SP_IS_MESH_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), SP_TYPE_MESH_CONTEXT))
-#define SP_IS_MESH_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), SP_TYPE_MESH_CONTEXT))
#define SP_MESH_CONTEXT(obj) ((SPMeshContext*)obj)
-#define SP_IS_MESH_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPMeshContext)))
-
-class CMeshContext;
+#define SP_IS_MESH_CONTEXT(obj) (dynamic_cast<const SPMeshContext*>((const SPEventContext*)obj))
class SPMeshContext : public SPEventContext {
public:
SPMeshContext();
- CMeshContext* cmeshcontext;
+ virtual ~SPMeshContext();
Geom::Point origin;
@@ -50,28 +43,13 @@ public:
sigc::connection *subselcon;
static const std::string prefsPath;
-};
-
-struct SPMeshContextClass {
- SPEventContextClass parent_class;
-};
-
-class CMeshContext : public CEventContext {
-public:
- CMeshContext(SPMeshContext* meshcontext);
virtual void setup();
virtual gint root_handler(GdkEvent* event);
virtual const std::string& getPrefsPath();
-
-private:
- SPMeshContext* spmeshcontext;
};
-// Standard Gtk function
-GType sp_mesh_context_get_type();
-
void sp_mesh_context_select_next(SPEventContext *event_context);
void sp_mesh_context_select_prev(SPEventContext *event_context);
diff --git a/src/pen-context.cpp b/src/pen-context.cpp
index 7e85b46af..caaac32db 100644
--- a/src/pen-context.cpp
+++ b/src/pen-context.cpp
@@ -47,14 +47,6 @@
using Inkscape::ControlManager;
-static void sp_pen_context_dispose(GObject *object);
-
-static void sp_pen_context_setup(SPEventContext *ec);
-static void sp_pen_context_finish(SPEventContext *ec);
-static void sp_pen_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *val);
-static gint sp_pen_context_root_handler(SPEventContext *ec, GdkEvent *event);
-static gint sp_pen_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event);
-
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);
@@ -91,47 +83,15 @@ namespace {
bool penContextRegistered = ToolFactory::instance().registerObject("/tools/freehand/pen", createPenContext);
}
-const std::string& CPenContext::getPrefsPath() {
+const std::string& SPPenContext::getPrefsPath() {
return SPPenContext::prefsPath;
}
const std::string SPPenContext::prefsPath = "/tools/freehand/pen";
-G_DEFINE_TYPE(SPPenContext, sp_pen_context, SP_TYPE_DRAW_CONTEXT);
-
-/**
- * Initialize the SPPenContext vtable.
- */
-static void sp_pen_context_class_init(SPPenContextClass *klass)
-{
- GObjectClass *object_class;
- SPEventContextClass *event_context_class;
-
- object_class = (GObjectClass *) klass;
- event_context_class = (SPEventContextClass *) klass;
-
- object_class->dispose = sp_pen_context_dispose;
-
-// event_context_class->setup = sp_pen_context_setup;
-// event_context_class->finish = sp_pen_context_finish;
-// event_context_class->set = sp_pen_context_set;
-// event_context_class->root_handler = sp_pen_context_root_handler;
-// event_context_class->item_handler = sp_pen_context_item_handler;
-}
-
-CPenContext::CPenContext(SPPenContext* pencontext) : CDrawContext(pencontext) {
- this->sppencontext = pencontext;
-}
-
SPPenContext::SPPenContext() : SPDrawContext() {
SPPenContext* pc = this;
- pc->cpencontext = new CPenContext(pc);
- delete pc->cdrawcontext;
- pc->cdrawcontext = pc->cpencontext;
- pc->ceventcontext = pc->cpencontext;
- types.insert(typeid(SPPenContext));
-
pc->polylines_only = false;
pc->polylines_paraxial = false;
pc->expecting_clicks_for_LPE = 0;
@@ -158,20 +118,8 @@ SPPenContext::SPPenContext() : SPDrawContext() {
pc->waiting_item = NULL;
}
-/**
- * Callback to initialize SPPenContext object.
- */
-static void sp_pen_context_init(SPPenContext *pc)
-{
- new (pc) SPPenContext();
-}
-
-/**
- * Callback to destroy the SPPenContext object's members and itself.
- */
-static void sp_pen_context_dispose(GObject *object)
-{
- SPPenContext *pc = SP_PEN_CONTEXT(object);
+SPPenContext::~SPPenContext() {
+ SPPenContext *pc = SP_PEN_CONTEXT(this);
if (pc->c0) {
sp_canvas_item_destroy(pc->c0);
@@ -190,7 +138,7 @@ static void sp_pen_context_dispose(GObject *object)
pc->cl1 = NULL;
}
- G_OBJECT_CLASS(sp_pen_context_parent_class)->dispose(object);
+ //G_OBJECT_CLASS(sp_pen_context_parent_class)->dispose(object);
if (pc->expecting_clicks_for_LPE > 0) {
// we received too few clicks to sanely set the parameter path so we remove the LPE from the item
@@ -208,20 +156,15 @@ void sp_pen_context_set_polyline_mode(SPPenContext *const pc) {
/**
* Callback to initialize SPPenContext object.
*/
-static void sp_pen_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
-}
-
-void CPenContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void SPPenContext::setup() {
+ SPEventContext* ec = this;
SPPenContext *pc = SP_PEN_CONTEXT(ec);
// if (((SPEventContextClass *) sp_pen_context_parent_class)->setup) {
// ((SPEventContextClass *) sp_pen_context_parent_class)->setup(ec);
// }
- CDrawContext::setup();
+ SPDrawContext::setup();
ControlManager &mgr = ControlManager::getManager();
@@ -271,13 +214,8 @@ static void pen_cancel (SPPenContext *const pc)
/**
* Finalization callback.
*/
-static void sp_pen_context_finish(SPEventContext *ec)
-{
- ec->ceventcontext->finish();
-}
-
-void CPenContext::finish() {
- SPEventContext* ec = this->speventcontext;
+void SPPenContext::finish() {
+ SPEventContext* ec = this;
SPPenContext *pc = SP_PEN_CONTEXT(ec);
@@ -290,19 +228,14 @@ void CPenContext::finish() {
// if (((SPEventContextClass *) sp_pen_context_parent_class)->finish) {
// ((SPEventContextClass *) sp_pen_context_parent_class)->finish(ec);
// }
- CDrawContext::finish();
+ SPDrawContext::finish();
}
/**
* Callback that sets key to value in pen context.
*/
-static void sp_pen_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *val)
-{
- ec->ceventcontext->set(val);
-}
-
-void CPenContext::set(Inkscape::Preferences::Entry* val) {
- SPEventContext* ec = this->speventcontext;
+void SPPenContext::set(Inkscape::Preferences::Entry* val) {
+ SPEventContext* ec = this;
SPPenContext *pc = SP_PEN_CONTEXT(ec);
Glib::ustring name = val->getEntryName();
@@ -358,13 +291,8 @@ static void spdc_endpoint_snap_handle(SPPenContext const *const pc, Geom::Point
}
}
-static gint sp_pen_context_item_handler(SPEventContext *ec, SPItem *item, GdkEvent *event)
-{
- return ec->ceventcontext->item_handler(item, event);
-}
-
-gint CPenContext::item_handler(SPItem* item, GdkEvent* event) {
- SPEventContext* ec = this->speventcontext;
+gint SPPenContext::item_handler(SPItem* item, GdkEvent* event) {
+ SPEventContext* ec = this;
SPPenContext *const pc = SP_PEN_CONTEXT(ec);
@@ -384,7 +312,7 @@ gint CPenContext::item_handler(SPItem* item, GdkEvent* event) {
if (!ret) {
// if (((SPEventContextClass *) sp_pen_context_parent_class)->item_handler)
// ret = ((SPEventContextClass *) sp_pen_context_parent_class)->item_handler(ec, item, event);
- ret = CDrawContext::item_handler(item, event);
+ ret = SPDrawContext::item_handler(item, event);
}
return ret;
@@ -393,13 +321,8 @@ gint CPenContext::item_handler(SPItem* item, GdkEvent* event) {
/**
* Callback to handle all pen events.
*/
-static gint sp_pen_context_root_handler(SPEventContext *ec, GdkEvent *event)
-{
- return ec->ceventcontext->root_handler(event);
-}
-
-gint CPenContext::root_handler(GdkEvent* event) {
- SPEventContext* ec = this->speventcontext;
+gint SPPenContext::root_handler(GdkEvent* event) {
+ SPEventContext* ec = this;
SPPenContext *const pc = SP_PEN_CONTEXT(ec);
@@ -436,7 +359,7 @@ gint CPenContext::root_handler(GdkEvent* event) {
// if (parent_root_handler) {
// ret = parent_root_handler(ec, event);
// }
- ret = CDrawContext::root_handler(event);
+ ret = SPDrawContext::root_handler(event);
}
return ret;
diff --git a/src/pen-context.h b/src/pen-context.h
index 0a2e41af6..6ae31eab0 100644
--- a/src/pen-context.h
+++ b/src/pen-context.h
@@ -8,13 +8,8 @@
#include "draw-context.h"
#include "live_effects/effect.h"
-#define SP_TYPE_PEN_CONTEXT (sp_pen_context_get_type())
-//#define SP_PEN_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_PEN_CONTEXT, SPPenContext))
-#define SP_PEN_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SP_TYPE_PEN_CONTEXT, SPPenContextClass))
-//#define SP_IS_PEN_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), SP_TYPE_PEN_CONTEXT))
-#define SP_IS_PEN_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE((k), SP_TYPE_PEN_CONTEXT))
#define SP_PEN_CONTEXT(obj) ((SPPenContext*)obj)
-#define SP_IS_PEN_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPPenContext)))
+#define SP_IS_PEN_CONTEXT(obj) (dynamic_cast<const SPPenContext*>((const SPEventContext*)obj))
enum {
SP_PEN_CONTEXT_POINT,
@@ -30,15 +25,13 @@ enum {
struct SPCtrlLine;
-class CPenContext;
-
/**
* SPPenContext: a context for pen tool events.
*/
class SPPenContext : public SPDrawContext {
public:
SPPenContext();
- CPenContext* cpencontext;
+ virtual ~SPPenContext();
Geom::Point p[5];
@@ -66,14 +59,6 @@ public:
unsigned int events_disabled : 1;
static const std::string prefsPath;
-};
-
-/// The SPPenContext vtable (empty).
-struct SPPenContextClass : public SPEventContextClass { };
-
-class CPenContext : public CDrawContext {
-public:
- CPenContext(SPPenContext* pencontext);
virtual void setup();
virtual void finish();
@@ -82,13 +67,8 @@ public:
virtual gint item_handler(SPItem* item, GdkEvent* event);
virtual const std::string& getPrefsPath();
-
-private:
- SPPenContext* sppencontext;
};
-GType sp_pen_context_get_type();
-
inline bool sp_pen_context_has_waiting_LPE(SPPenContext *pc) {
// note: waiting_LPE_type is defined in SPDrawContext
return (pc->waiting_LPE != NULL ||
diff --git a/src/pencil-context.cpp b/src/pencil-context.cpp
index 3c2269bd2..e13e6985c 100644
--- a/src/pencil-context.cpp
+++ b/src/pencil-context.cpp
@@ -45,10 +45,6 @@
#include "display/curve.h"
#include "livarot/Path.h"
-static void sp_pencil_context_setup(SPEventContext *ec);
-static void sp_pencil_context_dispose(GObject *object);
-
-static gint sp_pencil_context_root_handler(SPEventContext *event_context, GdkEvent *event);
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);
@@ -78,45 +74,15 @@ namespace {
bool pencilContextRegistered = ToolFactory::instance().registerObject("/tools/freehand/pencil", createPencilContext);
}
-const std::string& CPencilContext::getPrefsPath() {
+const std::string& SPPencilContext::getPrefsPath() {
return SPPencilContext::prefsPath;
}
const std::string SPPencilContext::prefsPath = "/tools/freehand/pencil";
-G_DEFINE_TYPE(SPPencilContext, sp_pencil_context, SP_TYPE_DRAW_CONTEXT);
-
-/**
- * Initialize SPPencilContext vtable.
- */
-static void
-sp_pencil_context_class_init(SPPencilContextClass *klass)
-{
- GObjectClass *object_class;
- SPEventContextClass *event_context_class;
-
- object_class = (GObjectClass *) klass;
- event_context_class = (SPEventContextClass *) klass;
-
- object_class->dispose = sp_pencil_context_dispose;
-
-// event_context_class->setup = sp_pencil_context_setup;
-// event_context_class->root_handler = sp_pencil_context_root_handler;
-}
-
-CPencilContext::CPencilContext(SPPencilContext* pencilcontext) : CDrawContext(pencilcontext) {
- this->sppencilcontext = pencilcontext;
-}
-
SPPencilContext::SPPencilContext() : SPDrawContext() {
SPPencilContext* pc = this;
- pc->cpencilcontext = new CPencilContext(pc);
- delete pc->cdrawcontext;
- pc->cdrawcontext = pc->cpencilcontext;
- pc->ceventcontext = pc->cpencilcontext;
- types.insert(typeid(SPPencilContext));
-
pc->is_drawing = false;
SPEventContext *event_context = SP_EVENT_CONTEXT(pc);
@@ -134,26 +100,8 @@ SPPencilContext::SPPencilContext() : SPDrawContext() {
pc->sketch_n = 0;
}
-/**
- * Callback to initialize SPPencilContext object.
- */
-static void
-sp_pencil_context_init(SPPencilContext *pc)
-{
- new (pc) SPPencilContext();
-}
-
-/**
- * Callback to setup SPPencilContext object.
- */
-static void
-sp_pencil_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
-}
-
-void CPencilContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void SPPencilContext::setup() {
+ SPEventContext* ec = this;
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
if (prefs->getBool("/tools/freehand/pencil/selcue")) {
@@ -163,7 +111,7 @@ void CPencilContext::setup() {
// if (((SPEventContextClass *) sp_pencil_context_parent_class)->setup) {
// ((SPEventContextClass *) sp_pencil_context_parent_class)->setup(ec);
// }
- CDrawContext::setup();
+ SPDrawContext::setup();
SPPencilContext *const pc = SP_PENCIL_CONTEXT(ec);
pc->is_drawing = false;
@@ -171,10 +119,7 @@ void CPencilContext::setup() {
pc->anchor_statusbar = false;
}
-static void
-sp_pencil_context_dispose(GObject *object)
-{
- G_OBJECT_CLASS(sp_pencil_context_parent_class)->dispose(object);
+SPPencilContext::~SPPencilContext() {
}
/** Snaps new node relative to the previous node. */
@@ -198,14 +143,8 @@ spdc_endpoint_snap(SPPencilContext const *pc, Geom::Point &p, guint const state)
/**
* Callback for handling all pencil context events.
*/
-gint
-sp_pencil_context_root_handler(SPEventContext *const ec, GdkEvent *event)
-{
- return ec->ceventcontext->root_handler(event);
-}
-
-gint CPencilContext::root_handler(GdkEvent* event) {
- SPEventContext* ec = this->speventcontext;
+gint SPPencilContext::root_handler(GdkEvent* event) {
+ SPEventContext* ec = this;
SPPencilContext *const pc = SP_PENCIL_CONTEXT(ec);
@@ -242,7 +181,7 @@ gint CPencilContext::root_handler(GdkEvent* event) {
// if (parent_root_handler) {
// ret = parent_root_handler(ec, event);
// }
- ret = CDrawContext::root_handler(event);
+ ret = SPDrawContext::root_handler(event);
}
return ret;
diff --git a/src/pencil-context.h b/src/pencil-context.h
index b088a1b11..198242f76 100644
--- a/src/pencil-context.h
+++ b/src/pencil-context.h
@@ -7,14 +7,8 @@
#include "draw-context.h"
-
-#define SP_TYPE_PENCIL_CONTEXT (sp_pencil_context_get_type())
-//#define SP_PENCIL_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_PENCIL_CONTEXT, SPPencilContext))
-#define SP_PENCIL_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SP_TYPE_PENCIL_CONTEXT, SPPencilContextClass))
-//#define SP_IS_PENCIL_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), SP_TYPE_PENCIL_CONTEXT))
-#define SP_IS_PENCIL_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE((k), SP_TYPE_PENCIL_CONTEXT))
#define SP_PENCIL_CONTEXT(obj) ((SPPencilContext*)obj)
-#define SP_IS_PENCIL_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPPencilContext)))
+#define SP_IS_PENCIL_CONTEXT(obj) (dynamic_cast<const SPPencilContext*>((const SPEventContext*)obj))
enum PencilState {
SP_PENCIL_CONTEXT_IDLE,
@@ -23,15 +17,13 @@ enum PencilState {
SP_PENCIL_CONTEXT_SKETCH
};
-class CPencilContext;
-
/**
* SPPencilContext: a context for pencil tool events
*/
class SPPencilContext : public SPDrawContext {
public:
SPPencilContext();
- CPencilContext* cpencilcontext;
+ virtual ~SPPencilContext();
Geom::Point p[16];
gint npoints;
@@ -46,27 +38,13 @@ public:
unsigned sketch_n; // number of sketches done
static const std::string prefsPath;
-};
-
-/// The SPPencilContext vtable (empty).
-struct SPPencilContextClass : public SPEventContextClass { };
-
-class CPencilContext : public CDrawContext {
-public:
- CPencilContext(SPPencilContext* pencilcontext);
virtual void setup();
virtual gint root_handler(GdkEvent* event);
virtual const std::string& getPrefsPath();
-
-private:
- SPPencilContext* sppencilcontext;
};
-GType sp_pencil_context_get_type();
-
-
#endif /* !SEEN_PENCIL_CONTEXT_H */
/*
diff --git a/src/rect-context.cpp b/src/rect-context.cpp
index 2a1dfcd55..382048a3d 100644
--- a/src/rect-context.cpp
+++ b/src/rect-context.cpp
@@ -57,21 +57,12 @@ namespace {
bool rectContextRegistered = ToolFactory::instance().registerObject("/tools/shapes/rect", createRectContext);
}
-const std::string& CRectContext::getPrefsPath() {
+const std::string& SPRectContext::getPrefsPath() {
return SPRectContext::prefsPath;
}
//static const double goldenratio = 1.61803398874989484820; // golden ratio
-static void sp_rect_context_dispose(GObject *object);
-
-static void sp_rect_context_setup(SPEventContext *ec);
-static void sp_rect_context_finish(SPEventContext *ec);
-static void sp_rect_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *val);
-
-static gint sp_rect_context_root_handler(SPEventContext *event_context, GdkEvent *event);
-static gint sp_rect_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event);
-
static void sp_rect_drag(SPRectContext &rc, Geom::Point const pt, guint state);
static void sp_rect_finish(SPRectContext *rc);
static void sp_rect_cancel(SPRectContext *rc);
@@ -79,36 +70,11 @@ static void sp_rect_cancel(SPRectContext *rc);
const std::string SPRectContext::prefsPath = "/tools/shapes/rect";
-G_DEFINE_TYPE(SPRectContext, sp_rect_context, SP_TYPE_EVENT_CONTEXT);
-
-static void sp_rect_context_class_init(SPRectContextClass *klass)
-{
- GObjectClass *object_class = (GObjectClass *) klass;
- SPEventContextClass *event_context_class = (SPEventContextClass *) klass;
-
- object_class->dispose = sp_rect_context_dispose;
-
-// event_context_class->setup = sp_rect_context_setup;
-// event_context_class->finish = sp_rect_context_finish;
-// event_context_class->set = sp_rect_context_set;
-// event_context_class->root_handler = sp_rect_context_root_handler;
-// event_context_class->item_handler = sp_rect_context_item_handler;
-}
-
-CRectContext::CRectContext(SPRectContext* rectcontext) : CEventContext(rectcontext) {
- this->sprectcontext = rectcontext;
-}
-
SPRectContext::SPRectContext() : SPEventContext() {
SPRectContext* rect_context = this;
SPEventContext *event_context = SP_EVENT_CONTEXT(rect_context);
- rect_context->crectcontext = new CRectContext(rect_context);
- delete rect_context->ceventcontext;
- rect_context->ceventcontext = rect_context->crectcontext;
- types.insert(typeid(SPRectContext));
-
rect_context->_message_context = 0;
event_context->cursor_shape = cursor_rect_xpm;
@@ -126,21 +92,11 @@ SPRectContext::SPRectContext() : SPEventContext() {
rect_context->rx = 0.0;
rect_context->ry = 0.0;
- new (&rect_context->sel_changed_connection) sigc::connection();
-}
-
-static void sp_rect_context_init(SPRectContext *rect_context)
-{
- new (rect_context) SPRectContext();
+ //new (&rect_context->sel_changed_connection) sigc::connection();
}
-static void sp_rect_context_finish(SPEventContext *ec)
-{
- ec->ceventcontext->finish();
-}
-
-void CRectContext::finish() {
- SPEventContext* ec = this->speventcontext;
+void SPRectContext::finish() {
+ SPEventContext* ec = this;
SPRectContext *rc = SP_RECT_CONTEXT(ec);
SPDesktop *desktop = ec->desktop;
@@ -152,10 +108,9 @@ void CRectContext::finish() {
// if (((SPEventContextClass *) sp_rect_context_parent_class)->finish) {
// ((SPEventContextClass *) sp_rect_context_parent_class)->finish(ec);
// }
- CEventContext::finish();
+ SPEventContext::finish();
}
-
SPRectContext::~SPRectContext() {
SPRectContext *rc = SP_RECT_CONTEXT(this);
SPEventContext *ec = SP_EVENT_CONTEXT(this);
@@ -163,7 +118,7 @@ SPRectContext::~SPRectContext() {
ec->enableGrDrag(false);
rc->sel_changed_connection.disconnect();
- rc->sel_changed_connection.~connection();
+ //rc->sel_changed_connection.~connection();
delete ec->shape_editor;
ec->shape_editor = NULL;
@@ -180,31 +135,6 @@ SPRectContext::~SPRectContext() {
//G_OBJECT_CLASS(sp_rect_context_parent_class)->dispose(object);
}
-static void sp_rect_context_dispose(GObject *object)
-{
- SPRectContext *rc = SP_RECT_CONTEXT(object);
- SPEventContext *ec = SP_EVENT_CONTEXT(object);
-
- ec->enableGrDrag(false);
-
- rc->sel_changed_connection.disconnect();
- rc->sel_changed_connection.~connection();
-
- delete ec->shape_editor;
- ec->shape_editor = NULL;
-
- /* fixme: This is necessary because we do not grab */
- if (rc->item) {
- sp_rect_finish(rc);
- }
-
- if (rc->_message_context) {
- delete rc->_message_context;
- }
-
- G_OBJECT_CLASS(sp_rect_context_parent_class)->dispose(object);
-}
-
/**
* Callback that processes the "changed" signal on the selection;
* destroys old and creates new knotholder.
@@ -219,20 +149,15 @@ static void sp_rect_context_selection_changed(Inkscape::Selection *selection, gp
ec->shape_editor->set_item(item, SH_KNOTHOLDER);
}
-static void sp_rect_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
-}
-
-void CRectContext::setup() {
- SPRectContext* ec = this->sprectcontext;
+void SPRectContext::setup() {
+ SPRectContext* ec = this;
SPRectContext *rc = SP_RECT_CONTEXT(ec);
// if (((SPEventContextClass *) sp_rect_context_parent_class)->setup) {
// ((SPEventContextClass *) sp_rect_context_parent_class)->setup(ec);
// }
- CEventContext::setup();
+ SPEventContext::setup();
ec->shape_editor = new ShapeEditor(ec->desktop);
@@ -261,13 +186,8 @@ void CRectContext::setup() {
rc->_message_context = new Inkscape::MessageContext((ec->desktop)->messageStack());
}
-static void sp_rect_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *val)
-{
- ec->ceventcontext->set(val);
-}
-
-void CRectContext::set(Inkscape::Preferences::Entry* val) {
- SPEventContext* ec = this->speventcontext;
+void SPRectContext::set(Inkscape::Preferences::Entry* val) {
+ SPEventContext* ec = this;
SPRectContext *rc = SP_RECT_CONTEXT(ec);
@@ -281,13 +201,8 @@ void CRectContext::set(Inkscape::Preferences::Entry* val) {
}
}
-static gint sp_rect_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event)
-{
- return event_context->ceventcontext->item_handler(item, event);
-}
-
-gint CRectContext::item_handler(SPItem* item, GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPRectContext::item_handler(SPItem* item, GdkEvent* event) {
+ SPEventContext* event_context = this;
SPDesktop *desktop = event_context->desktop;
@@ -309,18 +224,13 @@ gint CRectContext::item_handler(SPItem* item, GdkEvent* event) {
// ret = ((SPEventContextClass *) sp_rect_context_parent_class)->item_handler(event_context, item, event);
// }
// CPPIFY: ret is always overwritten...
- ret = CEventContext::item_handler(item, event);
+ ret = SPEventContext::item_handler(item, event);
return ret;
}
-static gint sp_rect_context_root_handler(SPEventContext *event_context, GdkEvent *event)
-{
- return event_context->ceventcontext->root_handler(event);
-}
-
-gint CRectContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPRectContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
static bool dragging;
@@ -529,7 +439,7 @@ gint CRectContext::root_handler(GdkEvent* event) {
// if (((SPEventContextClass *) sp_rect_context_parent_class)->root_handler) {
// ret = ((SPEventContextClass *) sp_rect_context_parent_class)->root_handler(event_context, event);
// }
- ret = CEventContext::root_handler(event);
+ ret = SPEventContext::root_handler(event);
}
return ret;
diff --git a/src/rect-context.h b/src/rect-context.h
index 627e0b942..87d4a5899 100644
--- a/src/rect-context.h
+++ b/src/rect-context.h
@@ -19,21 +19,13 @@
#include <2geom/point.h>
#include "event-context.h"
-#define SP_TYPE_RECT_CONTEXT (sp_rect_context_get_type ())
-//#define SP_RECT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_RECT_CONTEXT, SPRectContext))
-#define SP_RECT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_RECT_CONTEXT, SPRectContextClass))
-//#define SP_IS_RECT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_RECT_CONTEXT))
-#define SP_IS_RECT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_RECT_CONTEXT))
#define SP_RECT_CONTEXT(obj) ((SPRectContext*)obj)
-#define SP_IS_RECT_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPRectContext)))
-
-class CRectContext;
+#define SP_IS_RECT_CONTEXT(obj) (dynamic_cast<const SPRectContext*>((const SPEventContext*)obj))
class SPRectContext : public SPEventContext {
public:
SPRectContext();
virtual ~SPRectContext();
- CRectContext* crectcontext;
SPItem *item;
Geom::Point center;
@@ -46,15 +38,6 @@ public:
Inkscape::MessageContext *_message_context;
static const std::string prefsPath;
-};
-
-struct SPRectContextClass {
- SPEventContextClass parent_class;
-};
-
-class CRectContext : public CEventContext {
-public:
- CRectContext(SPRectContext* rectcontext);
virtual void setup();
virtual void finish();
@@ -63,13 +46,6 @@ public:
virtual gint item_handler(SPItem* item, GdkEvent* event);
virtual const std::string& getPrefsPath();
-protected:
- SPRectContext* sprectcontext;
};
-
-/* Standard Gtk function */
-
-GType sp_rect_context_get_type (void);
-
#endif
diff --git a/src/select-context.cpp b/src/select-context.cpp
index 085ac1532..0a0d411b8 100644
--- a/src/select-context.cpp
+++ b/src/select-context.cpp
@@ -51,13 +51,6 @@
using Inkscape::DocumentUndo;
-static void sp_select_context_dispose(GObject *object);
-
-static void sp_select_context_setup(SPEventContext *ec);
-static void sp_select_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *val);
-static gint sp_select_context_root_handler(SPEventContext *event_context, GdkEvent *event);
-static gint sp_select_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event);
-
static GdkCursor *CursorSelectMouseover = NULL;
static GdkCursor *CursorSelectDragging = NULL;
GdkPixbuf *handles[13];
@@ -80,40 +73,15 @@ namespace {
bool selectContextRegistered = ToolFactory::instance().registerObject("/tools/select", createSelectContext);
}
-const std::string& CSelectContext::getPrefsPath() {
+const std::string& SPSelectContext::getPrefsPath() {
return SPSelectContext::prefsPath;
}
const std::string SPSelectContext::prefsPath = "/tools/select";
-G_DEFINE_TYPE(SPSelectContext, sp_select_context, SP_TYPE_EVENT_CONTEXT);
-
-static void
-sp_select_context_class_init(SPSelectContextClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
- SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
-
- object_class->dispose = sp_select_context_dispose;
-
-// event_context_class->setup = sp_select_context_setup;
-// event_context_class->set = sp_select_context_set;
-// event_context_class->root_handler = sp_select_context_root_handler;
-// event_context_class->item_handler = sp_select_context_item_handler;
-}
-
-CSelectContext::CSelectContext(SPSelectContext* selectcontext) : CEventContext(selectcontext) {
- this->spselectcontext = selectcontext;
-}
-
SPSelectContext::SPSelectContext() : SPEventContext() {
SPSelectContext* sc = this;
- sc->cselectcontext = new CSelectContext(sc);
- delete sc->ceventcontext;
- sc->ceventcontext = sc->cselectcontext;
- types.insert(typeid(SPSelectContext));
-
sc->grabbed = 0;
sc->item = 0;
@@ -149,12 +117,6 @@ SPSelectContext::SPSelectContext() : SPEventContext() {
handles[12] = gdk_pixbuf_new_from_xpm_data((gchar const **)handle_center_xpm);
}
-static void
-sp_select_context_init(SPSelectContext *sc)
-{
- new (sc) SPSelectContext();
-}
-
SPSelectContext::~SPSelectContext() {
SPSelectContext *sc = SP_SELECT_CONTEXT(this);
SPEventContext * ec = SP_EVENT_CONTEXT (this);
@@ -191,59 +153,15 @@ SPSelectContext::~SPSelectContext() {
//G_OBJECT_CLASS(sp_select_context_parent_class)->dispose(object);
}
-static void
-sp_select_context_dispose(GObject *object)
-{
- SPSelectContext *sc = SP_SELECT_CONTEXT(object);
- SPEventContext * ec = SP_EVENT_CONTEXT (object);
-
- ec->enableGrDrag(false);
-
- if (sc->grabbed) {
- sp_canvas_item_ungrab(sc->grabbed, GDK_CURRENT_TIME);
- sc->grabbed = NULL;
- }
-
- delete sc->_seltrans;
- sc->_seltrans = NULL;
- delete sc->_describer;
- sc->_describer = NULL;
-
- if (CursorSelectDragging) {
-#if GTK_CHECK_VERSION(3,0,0)
- g_object_unref(CursorSelectDragging);
-#else
- gdk_cursor_unref (CursorSelectDragging);
-#endif
- CursorSelectDragging = NULL;
- }
- if (CursorSelectMouseover) {
-#if GTK_CHECK_VERSION(3,0,0)
- g_object_unref(CursorSelectMouseover);
-#else
- gdk_cursor_unref (CursorSelectMouseover);
-#endif
- CursorSelectMouseover = NULL;
- }
-
- G_OBJECT_CLASS(sp_select_context_parent_class)->dispose(object);
-}
-
-static void
-sp_select_context_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
-}
-
-void CSelectContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void SPSelectContext::setup() {
+ SPEventContext* ec = this;
SPSelectContext *select_context = SP_SELECT_CONTEXT(ec);
// if ((SP_EVENT_CONTEXT_CLASS(sp_select_context_parent_class))->setup) {
// (SP_EVENT_CONTEXT_CLASS(sp_select_context_parent_class))->setup(ec);
// }
- CEventContext::setup();
+ SPEventContext::setup();
SPDesktop *desktop = ec->desktop;
@@ -265,14 +183,8 @@ void CSelectContext::setup() {
}
}
-static void
-sp_select_context_set(SPEventContext *ec, Inkscape::Preferences::Entry *val)
-{
- ec->ceventcontext->set(val);
-}
-
-void CSelectContext::set(Inkscape::Preferences::Entry* val) {
- SPEventContext* ec = this->speventcontext;
+void SPSelectContext::set(Inkscape::Preferences::Entry* val) {
+ SPEventContext* ec = this;
SPSelectContext *sc = SP_SELECT_CONTEXT(ec);
Glib::ustring path = val->getEntryName();
@@ -373,14 +285,8 @@ sp_select_context_up_one_layer(SPDesktop *desktop)
}
}
-static gint
-sp_select_context_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event)
-{
- return event_context->ceventcontext->item_handler(item, event);
-}
-
-gint CSelectContext::item_handler(SPItem* item, GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPSelectContext::item_handler(SPItem* item, GdkEvent* event) {
+ SPEventContext* event_context = this;
gint ret = FALSE;
@@ -499,7 +405,7 @@ gint CSelectContext::item_handler(SPItem* item, GdkEvent* event) {
if (!ret) {
// if ((SP_EVENT_CONTEXT_CLASS(sp_select_context_parent_class))->item_handler)
// ret = (SP_EVENT_CONTEXT_CLASS(sp_select_context_parent_class))->item_handler(event_context, item, event);
- ret = CEventContext::item_handler(item, event);
+ ret = SPEventContext::item_handler(item, event);
}
return ret;
@@ -544,14 +450,8 @@ sp_select_context_cycle_through_items(SPSelectContext *sc, Inkscape::Selection *
selection->set(item);
}
-static gint
-sp_select_context_root_handler(SPEventContext *event_context, GdkEvent *event)
-{
- return event_context->ceventcontext->root_handler(event);
-}
-
-gint CSelectContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPSelectContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
SPItem *item = NULL;
SPItem *item_at_point = NULL, *group_at_point = NULL, *item_in_group = NULL;
@@ -1224,7 +1124,7 @@ gint CSelectContext::root_handler(GdkEvent* event) {
if (!ret) {
// if ((SP_EVENT_CONTEXT_CLASS(sp_select_context_parent_class))->root_handler)
// ret = (SP_EVENT_CONTEXT_CLASS(sp_select_context_parent_class))->root_handler(event_context, event);
- ret = CEventContext::root_handler(event);
+ ret = SPEventContext::root_handler(event);
}
return ret;
diff --git a/src/select-context.h b/src/select-context.h
index 6c31cbd18..0efd0839c 100644
--- a/src/select-context.h
+++ b/src/select-context.h
@@ -15,13 +15,8 @@
#include "event-context.h"
#include <gtk/gtk.h>
-#define SP_TYPE_SELECT_CONTEXT (sp_select_context_get_type ())
-//#define SP_SELECT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_SELECT_CONTEXT, SPSelectContext))
-#define SP_SELECT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_SELECT_CONTEXT, SPSelectContextClass))
-//#define SP_IS_SELECT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_SELECT_CONTEXT))
-#define SP_IS_SELECT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_SELECT_CONTEXT))
#define SP_SELECT_CONTEXT(obj) ((SPSelectContext*)obj)
-#define SP_IS_SELECT_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPSelectContext)))
+#define SP_IS_SELECT_CONTEXT(obj) (dynamic_cast<const SPSelectContext*>((const SPEventContext*)obj))
struct SPCanvasItem;
@@ -31,13 +26,10 @@ namespace Inkscape {
class SelectionDescriber;
}
-class CSelectContext;
-
class SPSelectContext : public SPEventContext {
public:
SPSelectContext();
virtual ~SPSelectContext();
- CSelectContext* cselectcontext;
guint dragging : 1;
guint moved : 1;
@@ -57,15 +49,6 @@ public:
Inkscape::SelectionDescriber *_describer;
static const std::string prefsPath;
-};
-
-struct SPSelectContextClass {
- SPEventContextClass parent_class;
-};
-
-class CSelectContext : public CEventContext {
-public:
- CSelectContext(SPSelectContext* selectcontext);
virtual void setup();
virtual void set(Inkscape::Preferences::Entry* val);
@@ -73,12 +56,6 @@ public:
virtual gint item_handler(SPItem* item, GdkEvent* event);
virtual const std::string& getPrefsPath();
-private:
- SPSelectContext* spselectcontext;
};
-/* Standard Gtk function */
-
-GType sp_select_context_get_type (void);
-
#endif
diff --git a/src/spiral-context.cpp b/src/spiral-context.cpp
index c8faa5e9e..a191eba49 100644
--- a/src/spiral-context.cpp
+++ b/src/spiral-context.cpp
@@ -60,24 +60,15 @@ namespace {
bool spiralContextRegistered = ToolFactory::instance().registerObject("/tools/shapes/spiral", createSpiralContext);
}
-const std::string& CSpiralContext::getPrefsPath() {
+const std::string& SPSpiralContext::getPrefsPath() {
return SPSpiralContext::prefsPath;
}
const std::string SPSpiralContext::prefsPath = "/tools/shapes/spiral";
-CSpiralContext::CSpiralContext(SPSpiralContext* spiralcontext) : CEventContext(spiralcontext) {
- this->spspiralcontext = spiralcontext;
-}
-
SPSpiralContext::SPSpiralContext() : SPEventContext() {
SPSpiralContext* spiral_context = this;
- spiral_context->cspiralcontext = new CSpiralContext(spiral_context);
- delete spiral_context->ceventcontext;
- spiral_context->ceventcontext = spiral_context->cspiralcontext;
- types.insert(typeid(SPSpiralContext));
-
spiral_context->_message_context = 0;
SPEventContext *event_context = SP_EVENT_CONTEXT(spiral_context);
@@ -97,11 +88,11 @@ SPSpiralContext::SPSpiralContext() : SPEventContext() {
spiral_context->exp = 1.0;
spiral_context->t0 = 0.0;
- new (&spiral_context->sel_changed_connection) sigc::connection();
+ //new (&spiral_context->sel_changed_connection) sigc::connection();
}
-void CSpiralContext::finish() {
- SPEventContext* ec = this->speventcontext;
+void SPSpiralContext::finish() {
+ SPEventContext* ec = this;
SPSpiralContext *sc = SP_SPIRAL_CONTEXT(ec);
SPDesktop *desktop = ec->desktop;
@@ -113,7 +104,7 @@ void CSpiralContext::finish() {
// if ((SP_EVENT_CONTEXT_CLASS(sp_spiral_context_parent_class))->finish) {
// (SP_EVENT_CONTEXT_CLASS(sp_spiral_context_parent_class))->finish(ec);
// }
- CEventContext::finish();
+ SPEventContext::finish();
}
SPSpiralContext::~SPSpiralContext() {
@@ -123,7 +114,7 @@ SPSpiralContext::~SPSpiralContext() {
ec->enableGrDrag(false);
sc->sel_changed_connection.disconnect();
- sc->sel_changed_connection.~connection();
+ //sc->sel_changed_connection.~connection();
delete ec->shape_editor;
ec->shape_editor = NULL;
@@ -152,14 +143,14 @@ static void sp_spiral_context_selection_changed(Inkscape::Selection *selection,
ec->shape_editor->set_item(item, SH_KNOTHOLDER);
}
-void CSpiralContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void SPSpiralContext::setup() {
+ SPEventContext* ec = this;
SPSpiralContext *sc = SP_SPIRAL_CONTEXT(ec);
// if ((SP_EVENT_CONTEXT_CLASS(sp_spiral_context_parent_class))->setup)
// (SP_EVENT_CONTEXT_CLASS(sp_spiral_context_parent_class))->setup(ec);
- CEventContext::setup();
+ SPEventContext::setup();
sp_event_context_read(ec, "expansion");
sp_event_context_read(ec, "revolution");
@@ -187,8 +178,8 @@ void CSpiralContext::setup() {
sc->_message_context = new Inkscape::MessageContext((ec->desktop)->messageStack());
}
-void CSpiralContext::set(Inkscape::Preferences::Entry* val) {
- SPEventContext* ec = this->speventcontext;
+void SPSpiralContext::set(Inkscape::Preferences::Entry* val) {
+ SPEventContext* ec = this;
SPSpiralContext *sc = SP_SPIRAL_CONTEXT(ec);
Glib::ustring name = val->getEntryName();
@@ -202,8 +193,8 @@ void CSpiralContext::set(Inkscape::Preferences::Entry* val) {
}
}
-gint CSpiralContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPSpiralContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
static gboolean dragging;
@@ -381,7 +372,7 @@ gint CSpiralContext::root_handler(GdkEvent* event) {
if (!ret) {
// if ((SP_EVENT_CONTEXT_CLASS(sp_spiral_context_parent_class))->root_handler)
// ret = (SP_EVENT_CONTEXT_CLASS(sp_spiral_context_parent_class))->root_handler(event_context, event);
- ret = CEventContext::root_handler(event);
+ ret = SPEventContext::root_handler(event);
}
return ret;
diff --git a/src/spiral-context.h b/src/spiral-context.h
index a4d4e3ac4..c7cc0b1b1 100644
--- a/src/spiral-context.h
+++ b/src/spiral-context.h
@@ -21,22 +21,13 @@
#include <2geom/point.h>
#include "event-context.h"
-//#define SP_TYPE_SPIRAL_CONTEXT (sp_spiral_context_get_type ())
-//#define SP_SPIRAL_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_SPIRAL_CONTEXT, SPSpiralContext))
-//#define SP_SPIRAL_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_SPIRAL_CONTEXT, SPSpiralContextClass))
-//#define SP_IS_SPIRAL_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_SPIRAL_CONTEXT))
-//#define SP_IS_SPIRAL_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_SPIRAL_CONTEXT))
#define SP_SPIRAL_CONTEXT(obj) ((SPSpiralContext*)obj)
-//#define SP_IS_SPIRAL_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPSpiralContext)))
#define SP_IS_SPIRAL_CONTEXT(obj) (dynamic_cast<const SPSpiralContext*>((const SPEventContext*)obj))
-class CSpiralContext;
-
class SPSpiralContext : public SPEventContext {
public:
SPSpiralContext();
virtual ~SPSpiralContext();
- CSpiralContext* cspiralcontext;
SPItem * item;
Geom::Point center;
@@ -49,15 +40,6 @@ public:
Inkscape::MessageContext *_message_context;
static const std::string prefsPath;
-};
-
-struct SPSpiralContextClass {
- SPEventContextClass parent_class;
-};
-
-class CSpiralContext : public CEventContext {
-public:
- CSpiralContext(SPSpiralContext* spiralcontext);
virtual void setup();
virtual void finish();
@@ -65,12 +47,6 @@ public:
virtual gint root_handler(GdkEvent* event);
virtual const std::string& getPrefsPath();
-private:
- SPSpiralContext* spspiralcontext;
};
-/* Standard Gtk function */
-
-GType sp_spiral_context_get_type (void);
-
#endif
diff --git a/src/spray-context.cpp b/src/spray-context.cpp
index bb9f05530..95017810d 100644
--- a/src/spray-context.cpp
+++ b/src/spray-context.cpp
@@ -78,8 +78,6 @@ using namespace std;
#define DDC_RED_RGBA 0xff0000ff
#define DYNA_MIN_WIDTH 1.0e-6
-static void sp_spray_context_dispose(GObject *object);
-
#include "sp-factory.h"
namespace {
@@ -90,14 +88,12 @@ namespace {
bool sprayContextRegistered = ToolFactory::instance().registerObject("/tools/spray", createSprayContext);
}
-const std::string& CSprayContext::getPrefsPath() {
+const std::string& SPSprayContext::getPrefsPath() {
return SPSprayContext::prefsPath;
}
const std::string SPSprayContext::prefsPath = "/tools/spray";
-G_DEFINE_TYPE(SPSprayContext, sp_spray_context, SP_TYPE_EVENT_CONTEXT);
-
/**
* This function returns pseudo-random numbers from a normal distribution
* @param mu : mean
@@ -109,18 +105,6 @@ inline double NormalDistribution(double mu, double sigma)
return mu + sigma * sqrt( -2.0 * log(g_random_double_range(0, 1)) ) * cos( 2.0*M_PI*g_random_double_range(0, 1) );
}
-static void sp_spray_context_class_init(SPSprayContextClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
- SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
-
- object_class->dispose = sp_spray_context_dispose;
-
-// event_context_class->setup = sp_spray_context_setup;
-// event_context_class->set = sp_spray_context_set;
-// event_context_class->root_handler = sp_spray_context_root_handler;
-}
-
/* Method to rotate items */
static void sp_spray_rotate_rel(Geom::Point c, SPDesktop */*desktop*/, SPItem *item, Geom::Rotate const &rotation)
{
@@ -145,18 +129,9 @@ static void sp_spray_scale_rel(Geom::Point c, SPDesktop */*desktop*/, SPItem *it
item->doWriteTransform(item->getRepr(), item->transform);
}
-CSprayContext::CSprayContext(SPSprayContext* spraycontext) : CEventContext(spraycontext) {
- this->spspraycontext = spraycontext;
-}
-
SPSprayContext::SPSprayContext() : SPEventContext() {
SPSprayContext* tc = this;
- tc->cspraycontext = new CSprayContext(tc);
- delete tc->ceventcontext;
- tc->ceventcontext = tc->cspraycontext;
- types.insert(typeid(SPSprayContext));
-
tc->usetilt = 0;
tc->_message_context = 0;
tc->dilate_area = 0;
@@ -189,23 +164,17 @@ SPSprayContext::SPSprayContext() : SPEventContext() {
tc->is_dilating = false;
tc->has_dilated = false;
- new (&tc->style_set_connection) sigc::connection();
+ //new (&tc->style_set_connection) sigc::connection();
}
-static void sp_spray_context_init(SPSprayContext *tc)
-{
- new (tc) SPSprayContext();
-}
-
-static void sp_spray_context_dispose(GObject *object)
-{
- SPSprayContext *tc = SP_SPRAY_CONTEXT(object);
- SPEventContext *ec = SP_EVENT_CONTEXT(object);
+SPSprayContext::~SPSprayContext() {
+ SPSprayContext *tc = SP_SPRAY_CONTEXT(this);
+ SPEventContext *ec = SP_EVENT_CONTEXT(this);
ec->enableGrDrag(false);
tc->style_set_connection.disconnect();
- tc->style_set_connection.~connection();
+ //tc->style_set_connection.~connection();
if (tc->dilate_area) {
sp_canvas_item_destroy(tc->dilate_area);
@@ -216,7 +185,7 @@ static void sp_spray_context_dispose(GObject *object)
delete tc->_message_context;
}
- G_OBJECT_CLASS(sp_spray_context_parent_class)->dispose(object);
+ //G_OBJECT_CLASS(sp_spray_context_parent_class)->dispose(object);
}
static bool is_transform_modes(gint mode)
@@ -259,15 +228,15 @@ static void sp_spray_update_cursor(SPSprayContext *tc, bool /*with_shift*/)
g_free(sel_message);
}
-void CSprayContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void SPSprayContext::setup() {
+ SPEventContext* ec = this;
SPSprayContext *tc = SP_SPRAY_CONTEXT(ec);
// if ((SP_EVENT_CONTEXT_CLASS(sp_spray_context_parent_class))->setup) {
// (SP_EVENT_CONTEXT_CLASS(sp_spray_context_parent_class))->setup(ec);
// }
- CEventContext::setup();
+ SPEventContext::setup();
{
/* TODO: have a look at sp_dyna_draw_context_setup where the same is done.. generalize? at least make it an arcto! */
@@ -313,8 +282,8 @@ void CSprayContext::setup() {
}
}
-void CSprayContext::set(Inkscape::Preferences::Entry* val) {
- SPEventContext* ec = this->speventcontext;
+void SPSprayContext::set(Inkscape::Preferences::Entry* val) {
+ SPEventContext* ec = this;
SPSprayContext *tc = SP_SPRAY_CONTEXT(ec);
Glib::ustring path = val->getEntryName();
@@ -649,8 +618,8 @@ static void sp_spray_switch_mode(SPSprayContext *tc, gint mode, bool with_shift)
sp_spray_update_cursor(tc, with_shift);
}
-gint CSprayContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPSprayContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
SPSprayContext *tc = SP_SPRAY_CONTEXT(event_context);
SPDesktop *desktop = event_context->desktop;
@@ -932,7 +901,7 @@ gint CSprayContext::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 = CEventContext::root_handler(event);
+ ret = SPEventContext::root_handler(event);
}
return ret;
diff --git a/src/spray-context.h b/src/spray-context.h
index 8883aa533..7ededcd0b 100644
--- a/src/spray-context.h
+++ b/src/spray-context.h
@@ -21,13 +21,8 @@
#include <2geom/point.h>
#include "event-context.h"
-#define SP_TYPE_SPRAY_CONTEXT (sp_spray_context_get_type())
-//#define SP_SPRAY_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_SPRAY_CONTEXT, SPSprayContext))
-#define SP_SPRAY_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SP_TYPE_SPRAY_CONTEXT, SPSprayContextClass))
-//#define SP_IS_SPRAY_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), SP_TYPE_SPRAY_CONTEXT))
-#define SP_IS_SPRAY_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE((k), SP_TYPE_SPRAY_CONTEXT))
#define SP_SPRAY_CONTEXT(obj) ((SPSprayContext*)obj)
-#define SP_IS_SPRAY_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPSprayContext)))
+#define SP_IS_SPRAY_CONTEXT(obj) (dynamic_cast<const SPSprayContext*>((const SPEventContext*)obj))
namespace Inkscape {
namespace UI {
@@ -51,13 +46,10 @@ enum {
SPRAY_OPTION,
};
-class CSprayContext;
-
-class SPSprayContext : public SPEventContext
-{
+class SPSprayContext : public SPEventContext {
public:
SPSprayContext();
- CSprayContext* cspraycontext;
+ virtual ~SPSprayContext();
//SPEventContext event_context;
//Inkscape::UI::Dialog::Dialog *dialog_option;//Attribut de type SprayOptionClass, localisé dans scr/ui/dialog
@@ -97,29 +89,14 @@ public:
sigc::connection style_set_connection;
static const std::string prefsPath;
-};
-
-struct SPSprayContextClass
-{
- SPEventContextClass parent_class;
-};
-
-class CSprayContext : public CEventContext {
-public:
- CSprayContext(SPSprayContext* spraycontext);
virtual void setup();
virtual void set(Inkscape::Preferences::Entry* val);
virtual gint root_handler(GdkEvent* event);
virtual const std::string& getPrefsPath();
-private:
- SPSprayContext* spspraycontext;
};
-GType sp_spray_context_get_type(void);
-
-
#endif
/*
diff --git a/src/star-context.cpp b/src/star-context.cpp
index 2e1402cbb..28eaca309 100644
--- a/src/star-context.cpp
+++ b/src/star-context.cpp
@@ -50,8 +50,6 @@
using Inkscape::DocumentUndo;
-static void sp_star_context_dispose (GObject *object);
-
static void sp_star_drag (SPStarContext * sc, Geom::Point p, guint state);
static void sp_star_finish (SPStarContext * sc);
static void sp_star_cancel(SPStarContext * sc);
@@ -66,40 +64,15 @@ namespace {
bool starContextRegistered = ToolFactory::instance().registerObject("/tools/shapes/star", createStarContext);
}
-const std::string& CStarContext::getPrefsPath() {
+const std::string& SPStarContext::getPrefsPath() {
return SPStarContext::prefsPath;
}
const std::string SPStarContext::prefsPath = "/tools/shapes/star";
-G_DEFINE_TYPE(SPStarContext, sp_star_context, SP_TYPE_EVENT_CONTEXT);
-
-static void
-sp_star_context_class_init (SPStarContextClass * klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
- SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
-
- object_class->dispose = sp_star_context_dispose;
-
-// event_context_class->setup = sp_star_context_setup;
-// event_context_class->finish = sp_star_context_finish;
-// event_context_class->set = sp_star_context_set;
-// event_context_class->root_handler = sp_star_context_root_handler;
-}
-
-CStarContext::CStarContext(SPStarContext* starcontext) : CEventContext(starcontext) {
- this->spstarcontext = starcontext;
-}
-
SPStarContext::SPStarContext() : SPEventContext() {
SPStarContext* star_context = this;
- star_context->cstarcontext = new CStarContext(star_context);
- delete star_context->ceventcontext;
- star_context->ceventcontext = star_context->cstarcontext;
- types.insert(typeid(SPStarContext));
-
star_context->randomized = 0;
star_context->_message_context = 0;
star_context->rounded = 0;
@@ -122,17 +95,11 @@ SPStarContext::SPStarContext() : SPEventContext() {
star_context->proportion = 0.5;
star_context->isflatsided = false;
- new (&star_context->sel_changed_connection) sigc::connection();
+ //new (&star_context->sel_changed_connection) sigc::connection();
}
-static void
-sp_star_context_init (SPStarContext * star_context)
-{
- new (star_context) SPStarContext();
-}
-
-void CStarContext::finish() {
- SPEventContext* ec = this->speventcontext;
+void SPStarContext::finish() {
+ SPEventContext* ec = this;
SPStarContext *sc = SP_STAR_CONTEXT(ec);
SPDesktop *desktop = ec->desktop;
@@ -144,20 +111,17 @@ void CStarContext::finish() {
// if ((SP_EVENT_CONTEXT_CLASS(sp_star_context_parent_class))->finish) {
// (SP_EVENT_CONTEXT_CLASS(sp_star_context_parent_class))->finish(ec);
// }
- CEventContext::finish();
+ SPEventContext::finish();
}
-
-static void
-sp_star_context_dispose (GObject *object)
-{
- SPEventContext *ec = SP_EVENT_CONTEXT (object);
- SPStarContext *sc = SP_STAR_CONTEXT (object);
+SPStarContext::~SPStarContext() {
+ SPEventContext *ec = SP_EVENT_CONTEXT (this);
+ SPStarContext *sc = SP_STAR_CONTEXT (this);
ec->enableGrDrag(false);
sc->sel_changed_connection.disconnect();
- sc->sel_changed_connection.~connection();
+ //sc->sel_changed_connection.~connection();
delete ec->shape_editor;
ec->shape_editor = NULL;
@@ -169,7 +133,7 @@ sp_star_context_dispose (GObject *object)
delete sc->_message_context;
}
- G_OBJECT_CLASS (sp_star_context_parent_class)->dispose (object);
+ //G_OBJECT_CLASS (sp_star_context_parent_class)->dispose (object);
}
/**
@@ -190,14 +154,14 @@ static void sp_star_context_selection_changed (Inkscape::Selection * selection,
ec->shape_editor->set_item(item, SH_KNOTHOLDER);
}
-void CStarContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void SPStarContext::setup() {
+ SPEventContext* ec = this;
SPStarContext *sc = SP_STAR_CONTEXT (ec);
// if ((SP_EVENT_CONTEXT_CLASS(sp_star_context_parent_class))->setup)
// (SP_EVENT_CONTEXT_CLASS(sp_star_context_parent_class))->setup (ec);
- CEventContext::setup();
+ SPEventContext::setup();
sp_event_context_read (ec, "magnitude");
sp_event_context_read (ec, "proportion");
@@ -228,8 +192,8 @@ void CStarContext::setup() {
sc->_message_context = new Inkscape::MessageContext((ec->desktop)->messageStack());
}
-void CStarContext::set(Inkscape::Preferences::Entry* val) {
- SPEventContext* ec = this->speventcontext;
+void SPStarContext::set(Inkscape::Preferences::Entry* val) {
+ SPEventContext* ec = this;
SPStarContext *sc = SP_STAR_CONTEXT (ec);
Glib::ustring path = val->getEntryName();
@@ -247,8 +211,8 @@ void CStarContext::set(Inkscape::Preferences::Entry* val) {
}
}
-gint CStarContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPStarContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
static gboolean dragging;
@@ -425,7 +389,7 @@ gint CStarContext::root_handler(GdkEvent* event) {
if (!ret) {
// if ((SP_EVENT_CONTEXT_CLASS(sp_star_context_parent_class))->root_handler)
// ret = (SP_EVENT_CONTEXT_CLASS(sp_star_context_parent_class))->root_handler (event_context, event);
- ret = CEventContext::root_handler(event);
+ ret = SPEventContext::root_handler(event);
}
return ret;
diff --git a/src/star-context.h b/src/star-context.h
index 989c74c5d..8c6054d24 100644
--- a/src/star-context.h
+++ b/src/star-context.h
@@ -19,20 +19,13 @@
#include <2geom/point.h>
#include "event-context.h"
-#define SP_TYPE_STAR_CONTEXT (sp_star_context_get_type ())
-//#define SP_STAR_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_STAR_CONTEXT, SPStarContext))
-#define SP_STAR_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_STAR_CONTEXT, SPStarContextClass))
-//#define SP_IS_STAR_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_STAR_CONTEXT))
-#define SP_IS_STAR_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_STAR_CONTEXT))
#define SP_STAR_CONTEXT(obj) ((SPStarContext*)obj)
-#define SP_IS_STAR_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPStarContext)))
-
-class CStarContext;
+#define SP_IS_STAR_CONTEXT(obj) (dynamic_cast<const SPStarContext*>((const SPEventContext*)obj))
class SPStarContext : public SPEventContext {
public:
SPStarContext();
- CStarContext* cstarcontext;
+ virtual ~SPStarContext();
SPItem *item;
Geom::Point center;
@@ -53,15 +46,6 @@ public:
Inkscape::MessageContext *_message_context;
static const std::string prefsPath;
-};
-
-struct SPStarContextClass {
- SPEventContextClass parent_class;
-};
-
-class CStarContext : public CEventContext {
-public:
- CStarContext(SPStarContext* starcontext);
virtual void setup();
virtual void finish();
@@ -69,11 +53,6 @@ public:
virtual gint root_handler(GdkEvent* event);
virtual const std::string& getPrefsPath();
-
-private:
- SPStarContext* spstarcontext;
};
-GType sp_star_context_get_type (void);
-
#endif
diff --git a/src/text-context.cpp b/src/text-context.cpp
index 5fd2960e1..180bb320a 100644
--- a/src/text-context.cpp
+++ b/src/text-context.cpp
@@ -57,8 +57,6 @@
using Inkscape::ControlManager;
using Inkscape::DocumentUndo;
-static void sp_text_context_dispose(GObject *obj);
-
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);
@@ -85,39 +83,16 @@ namespace {
bool textContextRegistered = ToolFactory::instance().registerObject("/tools/text", createTextContext);
}
-const std::string& CTextContext::getPrefsPath() {
+const std::string& SPTextContext::getPrefsPath() {
return SPTextContext::prefsPath;
}
const std::string SPTextContext::prefsPath = "/tools/text";
-G_DEFINE_TYPE(SPTextContext, sp_text_context, SP_TYPE_EVENT_CONTEXT);
-
-static void sp_text_context_class_init(SPTextContextClass *klass)
-{
- GObjectClass *object_class=G_OBJECT_CLASS(klass);
- SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
-
- object_class->dispose = sp_text_context_dispose;
-
-// event_context_class->setup = sp_text_context_setup;
-// event_context_class->finish = sp_text_context_finish;
-// event_context_class->root_handler = sp_text_context_root_handler;
-// event_context_class->item_handler = sp_text_context_item_handler;
-}
-
-CTextContext::CTextContext(SPTextContext* textcontext) : CEventContext(textcontext) {
- this->sptextcontext = textcontext;
-}
SPTextContext::SPTextContext() : SPEventContext() {
SPTextContext* tc = this;
- tc->ctextcontext = new CTextContext(tc);
- delete tc->ceventcontext;
- tc->ceventcontext = tc->ctextcontext;
- types.insert(typeid(SPTextContext));
-
tc->preedit_string = 0;
tc->unipos = 0;
@@ -136,9 +111,9 @@ SPTextContext::SPTextContext() : SPEventContext() {
tc->text = NULL;
tc->pdoc = Geom::Point(0, 0);
- new (&tc->text_sel_start) Inkscape::Text::Layout::iterator();
- new (&tc->text_sel_end) Inkscape::Text::Layout::iterator();
- new (&tc->text_selection_quads) std::vector<SPCanvasItem*>();
+ //new (&tc->text_sel_start) Inkscape::Text::Layout::iterator();
+ //new (&tc->text_sel_end) Inkscape::Text::Layout::iterator();
+ //new (&tc->text_selection_quads) std::vector<SPCanvasItem*>();
tc->unimode = false;
@@ -154,35 +129,29 @@ SPTextContext::SPTextContext() : SPEventContext() {
tc->dragging = 0;
tc->creating = 0;
- new (&tc->sel_changed_connection) sigc::connection();
- new (&tc->sel_modified_connection) sigc::connection();
- new (&tc->style_set_connection) sigc::connection();
- new (&tc->style_query_connection) sigc::connection();
+ //new (&tc->sel_changed_connection) sigc::connection();
+ //new (&tc->sel_modified_connection) sigc::connection();
+ //new (&tc->style_set_connection) sigc::connection();
+ //new (&tc->style_query_connection) sigc::connection();
}
-static void sp_text_context_init(SPTextContext *tc)
-{
- new (tc) SPTextContext();
-}
-
-static void sp_text_context_dispose(GObject *obj)
-{
- SPTextContext *tc = SP_TEXT_CONTEXT(obj);
+SPTextContext::~SPTextContext() {
+ SPTextContext *tc = SP_TEXT_CONTEXT(this);
SPEventContext *ec = SP_EVENT_CONTEXT(tc);
- tc->style_query_connection.~connection();
- tc->style_set_connection.~connection();
- tc->sel_changed_connection.~connection();
- tc->sel_modified_connection.~connection();
+// tc->style_query_connection.~connection();
+// tc->style_set_connection.~connection();
+// tc->sel_changed_connection.~connection();
+// tc->sel_modified_connection.~connection();
delete ec->shape_editor;
ec->shape_editor = NULL;
- tc->text_sel_end.~iterator();
- tc->text_sel_start.~iterator();
- tc->text_selection_quads.~vector();
- if (G_OBJECT_CLASS(sp_text_context_parent_class)->dispose) {
- G_OBJECT_CLASS(sp_text_context_parent_class)->dispose(obj);
- }
+// tc->text_sel_end.~iterator();
+// tc->text_sel_start.~iterator();
+// tc->text_selection_quads.~vector();
+// //if (G_OBJECT_CLASS(sp_text_context_parent_class)->dispose) {
+ // G_OBJECT_CLASS(sp_text_context_parent_class)->dispose(obj);
+ //}
if (tc->grabbed) {
sp_canvas_item_ungrab(tc->grabbed, GDK_CURRENT_TIME);
tc->grabbed = NULL;
@@ -191,8 +160,8 @@ static void sp_text_context_dispose(GObject *obj)
Inkscape::Rubberband::get(ec->desktop)->stop();
}
-void CTextContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void SPTextContext::setup() {
+ SPEventContext* ec = this;
SPTextContext *tc = SP_TEXT_CONTEXT(ec);
SPDesktop *desktop = ec->desktop;
@@ -246,7 +215,7 @@ void CTextContext::setup() {
// if ((SP_EVENT_CONTEXT_CLASS(sp_text_context_parent_class))->setup)
// (SP_EVENT_CONTEXT_CLASS(sp_text_context_parent_class))->setup(ec);
- CEventContext::setup();
+ SPEventContext::setup();
ec->shape_editor = new ShapeEditor(ec->desktop);
@@ -279,8 +248,8 @@ void CTextContext::setup() {
}
}
-void CTextContext::finish() {
- SPEventContext* ec = this->speventcontext;
+void SPTextContext::finish() {
+ SPEventContext* ec = this;
SPTextContext *tc = SP_TEXT_CONTEXT(ec);
@@ -330,8 +299,8 @@ void CTextContext::finish() {
tc->text_selection_quads.clear();
}
-gint CTextContext::item_handler(SPItem* item, GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPTextContext::item_handler(SPItem* item, GdkEvent* event) {
+ SPEventContext* event_context = this;
SPTextContext *tc = SP_TEXT_CONTEXT(event_context);
SPDesktop *desktop = event_context->desktop;
@@ -467,7 +436,7 @@ gint CTextContext::item_handler(SPItem* item, GdkEvent* event) {
if (!ret) {
// if ((SP_EVENT_CONTEXT_CLASS(sp_text_context_parent_class))->item_handler)
// ret = (SP_EVENT_CONTEXT_CLASS(sp_text_context_parent_class))->item_handler(event_context, item, event);
- ret = CEventContext::item_handler(item, event);
+ ret = SPEventContext::item_handler(item, event);
}
return ret;
@@ -588,8 +557,8 @@ static void show_curr_uni_char(SPTextContext *const tc)
}
}
-gint CTextContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPTextContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
SPTextContext *const tc = SP_TEXT_CONTEXT(event_context);
@@ -1341,7 +1310,7 @@ gint CTextContext::root_handler(GdkEvent* event) {
// } else {
// return FALSE; // return "I did nothing" value so that global shortcuts can be activated
// }
- return CEventContext::root_handler(event);
+ return SPEventContext::root_handler(event);
}
diff --git a/src/text-context.h b/src/text-context.h
index 548835dd7..adcd92991 100644
--- a/src/text-context.h
+++ b/src/text-context.h
@@ -23,22 +23,15 @@
#include <2geom/point.h>
#include "libnrtype/Layout-TNG.h"
-#define SP_TYPE_TEXT_CONTEXT (sp_text_context_get_type ())
-//#define SP_TEXT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_TEXT_CONTEXT, SPTextContext))
-#define SP_TEXT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SP_TYPE_TEXT_CONTEXT, SPTextContextClass))
-//#define SP_IS_TEXT_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_TEXT_CONTEXT))
-#define SP_IS_TEXT_CONTEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SP_TYPE_TEXT_CONTEXT))
#define SP_TEXT_CONTEXT(obj) ((SPTextContext*)obj)
-#define SP_IS_TEXT_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPTextContext)))
+#define SP_IS_TEXT_CONTEXT(obj) (dynamic_cast<const SPTextContext*>((const SPEventContext*)obj))
struct SPCtrlLine;
-class CTextContext;
-
class SPTextContext : public SPEventContext {
public:
SPTextContext();
- CTextContext* ctextcontext;
+ virtual ~SPTextContext();
sigc::connection sel_changed_connection;
sigc::connection sel_modified_connection;
@@ -80,15 +73,6 @@ public:
gchar* preedit_string;
static const std::string prefsPath;
-};
-
-struct SPTextContextClass {
- SPEventContextClass parent_class;
-};
-
-class CTextContext : public CEventContext {
-public:
- CTextContext(SPTextContext* textcontext);
virtual void setup();
virtual void finish();
@@ -96,13 +80,8 @@ public:
virtual gint item_handler(SPItem* item, GdkEvent* event);
virtual const std::string& getPrefsPath();
-private:
- SPTextContext* sptextcontext;
};
-/* Standard Gtk function */
-GType sp_text_context_get_type (void);
-
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);
diff --git a/src/tweak-context.cpp b/src/tweak-context.cpp
index a287a0831..5790c79b9 100644
--- a/src/tweak-context.cpp
+++ b/src/tweak-context.cpp
@@ -81,9 +81,6 @@ using Inkscape::DocumentUndo;
#define DYNA_MIN_WIDTH 1.0e-6
-static void sp_tweak_context_dispose(GObject *object);
-
-
#include "sp-factory.h"
namespace {
@@ -94,39 +91,15 @@ namespace {
bool tweakContextRegistered = ToolFactory::instance().registerObject("/tools/tweak", createTweakContext);
}
-const std::string& CTweakContext::getPrefsPath() {
+const std::string& SPTweakContext::getPrefsPath() {
return SPTweakContext::prefsPath;
}
const std::string SPTweakContext::prefsPath = "/tools/tweak";
-G_DEFINE_TYPE(SPTweakContext, sp_tweak_context, SP_TYPE_EVENT_CONTEXT);
-
-static void
-sp_tweak_context_class_init(SPTweakContextClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS(klass);
- SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
-
- object_class->dispose = sp_tweak_context_dispose;
-
-// event_context_class->setup = sp_tweak_context_setup;
-// event_context_class->set = sp_tweak_context_set;
-// event_context_class->root_handler = sp_tweak_context_root_handler;
-}
-
-CTweakContext::CTweakContext(SPTweakContext* tweakcontext) : CEventContext(tweakcontext) {
- this->sptweakcontext = tweakcontext;
-}
-
SPTweakContext::SPTweakContext() : SPEventContext() {
SPTweakContext* tc = this;
- tc->ctweakcontext = new CTweakContext(tc);
- delete tc->ceventcontext;
- tc->ceventcontext = tc->ctweakcontext;
- types.insert(typeid(SPTweakContext));
-
tc->_message_context = 0;
tc->mode = 0;
tc->dilate_area = 0;
@@ -156,25 +129,17 @@ SPTweakContext::SPTweakContext() : SPEventContext() {
tc->do_l = true;
tc->do_o = false;
- new (&tc->style_set_connection) sigc::connection();
+ //new (&tc->style_set_connection) sigc::connection();
}
-static void
-sp_tweak_context_init(SPTweakContext *tc)
-{
- new (tc) SPTweakContext();
-}
-
-static void
-sp_tweak_context_dispose(GObject *object)
-{
- SPTweakContext *tc = SP_TWEAK_CONTEXT(object);
- SPEventContext *ec = SP_EVENT_CONTEXT(object);
+SPTweakContext::~SPTweakContext() {
+ SPTweakContext *tc = SP_TWEAK_CONTEXT(this);
+ SPEventContext *ec = SP_EVENT_CONTEXT(this);
ec->enableGrDrag(false);
tc->style_set_connection.disconnect();
- tc->style_set_connection.~connection();
+ //tc->style_set_connection.~connection();
if (tc->dilate_area) {
sp_canvas_item_destroy(tc->dilate_area);
@@ -185,7 +150,7 @@ sp_tweak_context_dispose(GObject *object)
delete tc->_message_context;
}
- G_OBJECT_CLASS(sp_tweak_context_parent_class)->dispose(object);
+ //G_OBJECT_CLASS(sp_tweak_context_parent_class)->dispose(object);
}
static bool is_transform_mode (gint mode)
@@ -297,15 +262,15 @@ sp_tweak_context_style_set(SPCSSAttr const *css, SPTweakContext *tc)
return false;
}
-void CTweakContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void SPTweakContext::setup() {
+ SPEventContext* ec = this;
SPTweakContext *tc = SP_TWEAK_CONTEXT(ec);
// if ((SP_EVENT_CONTEXT_CLASS(sp_tweak_context_parent_class))->setup) {
// (SP_EVENT_CONTEXT_CLASS(sp_tweak_context_parent_class))->setup(ec);
// }
- CEventContext::setup();
+ SPEventContext::setup();
{
/* TODO: have a look at sp_dyna_draw_context_setup where the same is done.. generalize? at least make it an arcto! */
@@ -351,8 +316,8 @@ void CTweakContext::setup() {
}
}
-void CTweakContext::set(Inkscape::Preferences::Entry* val) {
- SPEventContext* ec = this->speventcontext;
+void SPTweakContext::set(Inkscape::Preferences::Entry* val) {
+ SPEventContext* ec = this;
SPTweakContext *tc = SP_TWEAK_CONTEXT(ec);
Glib::ustring path = val->getEntryName();
@@ -1186,8 +1151,8 @@ sp_tweak_switch_mode_temporarily (SPTweakContext *tc, gint mode, bool with_shift
sp_tweak_update_cursor (tc, with_shift);
}
-gint CTweakContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPTweakContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
SPTweakContext *tc = SP_TWEAK_CONTEXT(event_context);
SPDesktop *desktop = event_context->desktop;
@@ -1550,7 +1515,7 @@ gint CTweakContext::root_handler(GdkEvent* event) {
// if ((SP_EVENT_CONTEXT_CLASS(sp_tweak_context_parent_class))->root_handler) {
// ret = (SP_EVENT_CONTEXT_CLASS(sp_tweak_context_parent_class))->root_handler(event_context, event);
// }
- ret = CEventContext::root_handler(event);
+ ret = SPEventContext::root_handler(event);
}
return ret;
diff --git a/src/tweak-context.h b/src/tweak-context.h
index 2b012ab74..f4461dd93 100644
--- a/src/tweak-context.h
+++ b/src/tweak-context.h
@@ -15,13 +15,8 @@
#include "event-context.h"
#include <2geom/point.h>
-#define SP_TYPE_TWEAK_CONTEXT (sp_tweak_context_get_type())
-//#define SP_TWEAK_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_TWEAK_CONTEXT, SPTweakContext))
-#define SP_TWEAK_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SP_TYPE_TWEAK_CONTEXT, SPTweakContextClass))
-//#define SP_IS_TWEAK_CONTEXT(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), SP_TYPE_TWEAK_CONTEXT))
-#define SP_IS_TWEAK_CONTEXT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE((k), SP_TYPE_TWEAK_CONTEXT))
#define SP_TWEAK_CONTEXT(obj) ((SPTweakContext*)obj)
-#define SP_IS_TWEAK_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPTweakContext)))
+#define SP_IS_TWEAK_CONTEXT(obj) (dynamic_cast<const SPTweakContext*>((const SPEventContext*)obj))
#define SAMPLING_SIZE 8 /* fixme: ?? */
@@ -45,13 +40,10 @@ enum {
TWEAK_MODE_BLUR
};
-class CTweakContext;
-
-class SPTweakContext : public SPEventContext
-{
+class SPTweakContext : public SPEventContext {
public:
SPTweakContext();
- CTweakContext* ctweakcontext;
+ virtual ~SPTweakContext();
//SPEventContext event_context;
@@ -86,28 +78,14 @@ public:
sigc::connection style_set_connection;
static const std::string prefsPath;
-};
-
-struct SPTweakContextClass
-{
- SPEventContextClass parent_class;
-};
-
-class CTweakContext : public CEventContext {
-public:
- CTweakContext(SPTweakContext* tweakcontext);
virtual void setup();
virtual void set(Inkscape::Preferences::Entry* val);
virtual gint root_handler(GdkEvent* event);
virtual const std::string& getPrefsPath();
-private:
- SPTweakContext* sptweakcontext;
};
-GType sp_tweak_context_get_type(void);
-
#endif
/*
diff --git a/src/ui/tool/node-tool.cpp b/src/ui/tool/node-tool.cpp
index a3449d0ce..e72b7c5ba 100644
--- a/src/ui/tool/node-tool.cpp
+++ b/src/ui/tool/node-tool.cpp
@@ -107,12 +107,6 @@ using Inkscape::ControlManager;
//namespace {
SPCanvasGroup *create_control_group(SPDesktop *d);
-void ink_node_tool_dispose(GObject *object);
-
-void ink_node_tool_setup(SPEventContext *ec);
-gint ink_node_tool_root_handler(SPEventContext *event_context, GdkEvent *event);
-gint ink_node_tool_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event);
-void ink_node_tool_set(SPEventContext *ec, Inkscape::Preferences::Entry *value);
void ink_node_tool_update_tip(InkNodeTool *nt, GdkEvent *event);
void ink_node_tool_selection_changed(InkNodeTool *nt, Inkscape::Selection *sel);
@@ -135,40 +129,15 @@ namespace {
bool nodesContextRegistered = ToolFactory::instance().registerObject("/tools/nodes", createNodesContext);
}
-const std::string& CInkNodeTool::getPrefsPath() {
+const std::string& InkNodeTool::getPrefsPath() {
return InkNodeTool::prefsPath;
}
const std::string InkNodeTool::prefsPath = "/tools/nodes";
-G_DEFINE_TYPE(InkNodeTool, ink_node_tool, SP_TYPE_EVENT_CONTEXT);
-
-static void
-ink_node_tool_class_init(InkNodeToolClass *klass)
-{
- GObjectClass *object_class = (GObjectClass *) klass;
- SPEventContextClass *event_context_class = (SPEventContextClass *) klass;
-
- object_class->dispose = ink_node_tool_dispose;
-
-// event_context_class->setup = ink_node_tool_setup;
-// event_context_class->set = ink_node_tool_set;
-// event_context_class->root_handler = ink_node_tool_root_handler;
-// event_context_class->item_handler = ink_node_tool_item_handler;
-}
-
-CInkNodeTool::CInkNodeTool(InkNodeTool* inknodetool) : CEventContext(inknodetool) {
- this->inknodetool = inknodetool;
-}
-
InkNodeTool::InkNodeTool() : SPEventContext() {
InkNodeTool* nt = this;
- nt->cinknodetool = new CInkNodeTool(nt);
- delete nt->ceventcontext;
- nt->ceventcontext = nt->cinknodetool;
- types.insert(typeid(InkNodeTool));
-
nt->show_handles = 0;
nt->single_node_transform_handles = 0;
nt->show_transform_handles = 0;
@@ -209,12 +178,6 @@ InkNodeTool::InkNodeTool() : SPEventContext() {
//nt->_shape_editors = 0;
}
-static void
-ink_node_tool_init(InkNodeTool *nt)
-{
- new (nt) InkNodeTool();
-}
-
//namespace {
SPCanvasGroup *create_control_group(SPDesktop *d)
@@ -272,59 +235,14 @@ InkNodeTool::~InkNodeTool() {
//G_OBJECT_CLASS(ink_node_tool_parent_class)->dispose(object);
}
-void ink_node_tool_dispose(GObject *object)
-{
- InkNodeTool *nt = INK_NODE_TOOL(object);
-
- nt->enableGrDrag(false);
-
- if (nt->flash_tempitem) {
- nt->desktop->remove_temporary_canvasitem(nt->flash_tempitem);
- }
-
- nt->_selection_changed_connection.disconnect();
- nt->_selection_modified_connection.disconnect();
- nt->_mouseover_changed_connection.disconnect();
- nt->_sizeUpdatedConn.disconnect();
- nt->_multipath.~MultiPathPtr();
- nt->_selected_nodes.~CSelPtr();
- nt->_selector.~SelectorPtr();
- nt->_shape_editors.~ShapeEditors();
-
- Inkscape::UI::PathSharedData &data = *nt->_path_data;
- destroy_group(data.node_data.node_group);
- destroy_group(data.node_data.handle_group);
- destroy_group(data.node_data.handle_line_group);
- destroy_group(data.outline_group);
- destroy_group(data.dragpoint_group);
- destroy_group(nt->_transform_handle_group);
-
- nt->_path_data.~PathSharedDataPtr();
- nt->_selection_changed_connection.~connection();
- nt->_selection_modified_connection.~connection();
- nt->_mouseover_changed_connection.~connection();
- nt->_sizeUpdatedConn.~connection();
-
- if (nt->_node_message_context) {
- delete nt->_node_message_context;
- }
-
- G_OBJECT_CLASS(ink_node_tool_parent_class)->dispose(object);
-}
-
-void ink_node_tool_setup(SPEventContext *ec)
-{
- ec->ceventcontext->setup();
-}
-
-void CInkNodeTool::setup() {
- SPEventContext* ec = this->speventcontext;
+void InkNodeTool::setup() {
+ SPEventContext* ec = this;
InkNodeTool *nt = INK_NODE_TOOL(ec);
// if (SP_EVENT_CONTEXT_CLASS(ink_node_tool_parent_class)->setup)
// SP_EVENT_CONTEXT_CLASS(ink_node_tool_parent_class)->setup(ec);
- CEventContext::setup();
+ SPEventContext::setup();
nt->_node_message_context = new Inkscape::MessageContext((ec->desktop)->messageStack());
@@ -432,13 +350,8 @@ void CInkNodeTool::setup() {
nt->desktop->emitToolSubselectionChanged(NULL); // sets the coord entry fields to inactive
}
-void ink_node_tool_set(SPEventContext *ec, Inkscape::Preferences::Entry *value)
-{
- ec->ceventcontext->set(value);
-}
-
-void CInkNodeTool::set(Inkscape::Preferences::Entry* value) {
- SPEventContext* ec = this->speventcontext;
+void InkNodeTool::set(Inkscape::Preferences::Entry* value) {
+ SPEventContext* ec = this;
InkNodeTool *nt = INK_NODE_TOOL(ec);
Glib::ustring entry_name = value->getEntryName();
@@ -475,7 +388,7 @@ void CInkNodeTool::set(Inkscape::Preferences::Entry* value) {
} else {
// if (SP_EVENT_CONTEXT_CLASS(ink_node_tool_parent_class)->set)
// SP_EVENT_CONTEXT_CLASS(ink_node_tool_parent_class)->set(ec, value);
- CEventContext::set(value);
+ SPEventContext::set(value);
}
}
@@ -561,13 +474,8 @@ void ink_node_tool_selection_changed(InkNodeTool *nt, Inkscape::Selection *sel)
nt->desktop->updateNow();
}
-gint ink_node_tool_root_handler(SPEventContext *event_context, GdkEvent *event)
-{
- return event_context->ceventcontext->root_handler(event);
-}
-
-gint CInkNodeTool::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint InkNodeTool::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
/* things to handle here:
* 1. selection of items
@@ -664,7 +572,7 @@ gint CInkNodeTool::root_handler(GdkEvent* event) {
// if (SP_EVENT_CONTEXT_CLASS(ink_node_tool_parent_class)->root_handler)
// return SP_EVENT_CONTEXT_CLASS(ink_node_tool_parent_class)->root_handler(event_context, event);
- CEventContext::root_handler(event);
+ SPEventContext::root_handler(event);
return FALSE;
}
@@ -727,17 +635,12 @@ void ink_node_tool_update_tip(InkNodeTool *nt, GdkEvent *event)
}
}
-gint ink_node_tool_item_handler(SPEventContext *event_context, SPItem *item, GdkEvent *event)
-{
- return event_context->ceventcontext->item_handler(item, event);
-}
-
-gint CInkNodeTool::item_handler(SPItem* item, GdkEvent* event) {
+gint InkNodeTool::item_handler(SPItem* item, GdkEvent* event) {
// if (SP_EVENT_CONTEXT_CLASS(ink_node_tool_parent_class)->item_handler)
// return SP_EVENT_CONTEXT_CLASS(ink_node_tool_parent_class)->item_handler(event_context, item, event);
- CEventContext::item_handler(item, event);
+ SPEventContext::item_handler(item, event);
return FALSE;
}
diff --git a/src/ui/tool/node-tool.h b/src/ui/tool/node-tool.h
index 43c1f3cdf..fb2b41663 100644
--- a/src/ui/tool/node-tool.h
+++ b/src/ui/tool/node-tool.h
@@ -16,13 +16,8 @@
#include <glib.h>
#include "event-context.h"
-#define INK_TYPE_NODE_TOOL (ink_node_tool_get_type ())
-//#define INK_NODE_TOOL(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), INK_TYPE_NODE_TOOL, InkNodeTool))
-#define INK_NODE_TOOL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), INK_TYPE_NODE_TOOL, InkNodeToolClass))
-//#define INK_IS_NODE_TOOL(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), INK_TYPE_NODE_TOOL))
-#define INK_IS_NODE_TOOL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), INK_TYPE_NODE_TOOL))
#define INK_NODE_TOOL(obj) ((InkNodeTool*)obj)
-#define INK_IS_NODE_TOOL(obj) (((SPEventContext*)obj)->types.count(typeid(InkNodeTool)))
+#define INK_IS_NODE_TOOL(obj) (dynamic_cast<const InkNodeTool*>((const SPEventContext*)obj))
namespace Inkscape {
@@ -50,16 +45,13 @@ typedef Inkscape::UI::PathSharedData* PathSharedDataPtr;
typedef boost::ptr_map<SPItem*, ShapeEditor> ShapeEditors;
-class CInkNodeTool;
-class InkNodeTool : public SPEventContext
-{
+class InkNodeTool : public SPEventContext {
public:
InkNodeTool();
virtual ~InkNodeTool();
- CInkNodeTool* cinknodetool;
- sigc::connection _selection_changed_connection;
+ sigc::connection _selection_changed_connection;
sigc::connection _mouseover_changed_connection;
sigc::connection _selection_modified_connection;
sigc::connection _sizeUpdatedConn;
@@ -86,15 +78,6 @@ public:
unsigned edit_masks : 1;
static const std::string prefsPath;
-};
-
-struct InkNodeToolClass {
- SPEventContextClass parent_class;
-};
-
-class CInkNodeTool : public CEventContext {
-public:
- CInkNodeTool(InkNodeTool* inknodetool);
virtual void setup();
virtual void set(Inkscape::Preferences::Entry* val);
@@ -102,12 +85,8 @@ public:
virtual gint item_handler(SPItem* item, GdkEvent* event);
virtual const std::string& getPrefsPath();
-private:
- InkNodeTool* inknodetool;
};
-GType ink_node_tool_get_type (void);
-
#endif
/*
diff --git a/src/ui/tool/transform-handle-set.cpp b/src/ui/tool/transform-handle-set.cpp
index 479a29d1f..348420994 100644
--- a/src/ui/tool/transform-handle-set.cpp
+++ b/src/ui/tool/transform-handle-set.cpp
@@ -294,7 +294,7 @@ protected:
private:
static Glib::RefPtr<Gdk::Pixbuf> _corner_to_pixbuf(unsigned c) {
- sp_select_context_get_type();
+ //sp_select_context_get_type();
switch (c % 2) {
case 0:
return Glib::wrap(handles[1], true);
@@ -377,7 +377,7 @@ protected:
}
private:
static Glib::RefPtr<Gdk::Pixbuf> _side_to_pixbuf(unsigned c) {
- sp_select_context_get_type();
+ //sp_select_context_get_type();
switch (c % 2) {
case 0: return Glib::wrap(handles[3], true);
default: return Glib::wrap(handles[2], true);
@@ -457,7 +457,7 @@ protected:
private:
static Glib::RefPtr<Gdk::Pixbuf> _corner_to_pixbuf(unsigned c) {
- sp_select_context_get_type();
+ //sp_select_context_get_type();
switch (c % 4) {
case 0: return Glib::wrap(handles[10], true);
case 1: return Glib::wrap(handles[8], true);
@@ -604,7 +604,7 @@ protected:
private:
static Glib::RefPtr<Gdk::Pixbuf> _side_to_pixbuf(unsigned s) {
- sp_select_context_get_type();
+ //sp_select_context_get_type();
switch (s % 4) {
case 0: return Glib::wrap(handles[9], true);
case 1: return Glib::wrap(handles[7], true);
@@ -659,7 +659,7 @@ protected:
private:
static Glib::RefPtr<Gdk::Pixbuf> _get_pixbuf() {
- sp_select_context_get_type();
+ //sp_select_context_get_type();
return Glib::wrap(handles[12], true);
}
diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp
index 6ef5a276e..17ff4834f 100644
--- a/src/widgets/toolbox.cpp
+++ b/src/widgets/toolbox.cpp
@@ -1313,7 +1313,7 @@ void setup_tool_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
void update_tool_toolbox( SPDesktop *desktop, SPEventContext *eventcontext, GtkWidget * /*toolbox*/ )
{
gchar const *const tname = ( eventcontext
- ? eventcontext->ceventcontext->getPrefsPath().c_str() //g_type_name(G_OBJECT_TYPE(eventcontext))
+ ? eventcontext->getPrefsPath().c_str() //g_type_name(G_OBJECT_TYPE(eventcontext))
: NULL );
Glib::RefPtr<Gtk::ActionGroup> mainActions = create_or_fetch_actions( desktop );
@@ -1435,7 +1435,7 @@ void setup_aux_toolbox(GtkWidget *toolbox, SPDesktop *desktop)
void update_aux_toolbox(SPDesktop * /*desktop*/, SPEventContext *eventcontext, GtkWidget *toolbox)
{
gchar const *tname = ( eventcontext
- ? eventcontext->ceventcontext->getPrefsPath().c_str() //g_type_name(G_OBJECT_TYPE(eventcontext))
+ ? eventcontext->getPrefsPath().c_str() //g_type_name(G_OBJECT_TYPE(eventcontext))
: NULL );
for (int i = 0 ; aux_toolboxes[i].type_name ; i++ ) {
GtkWidget *sub_toolbox = GTK_WIDGET(g_object_get_data(G_OBJECT(toolbox), aux_toolboxes[i].data_name));
diff --git a/src/zoom-context.cpp b/src/zoom-context.cpp
index 8e5f4753d..7a1ae5382 100644
--- a/src/zoom-context.cpp
+++ b/src/zoom-context.cpp
@@ -41,37 +41,15 @@ namespace {
bool zoomContextRegistered = ToolFactory::instance().registerObject("/tools/zoom", createZoomContext);
}
-const std::string& CZoomContext::getPrefsPath() {
+const std::string& SPZoomContext::getPrefsPath() {
return SPZoomContext::prefsPath;
}
const std::string SPZoomContext::prefsPath = "/tools/zoom";
-G_DEFINE_TYPE(SPZoomContext, sp_zoom_context, SP_TYPE_EVENT_CONTEXT);
-
-static void sp_zoom_context_class_init(SPZoomContextClass *klass)
-{
- SPEventContextClass *event_context_class = SP_EVENT_CONTEXT_CLASS(klass);
-
-// event_context_class->setup = sp_zoom_context_setup;
-// event_context_class->finish = sp_zoom_context_finish;
-//
-// event_context_class->root_handler = sp_zoom_context_root_handler;
-// event_context_class->item_handler = sp_zoom_context_item_handler;
-}
-
-CZoomContext::CZoomContext(SPZoomContext* zoomcontext) : CEventContext(zoomcontext) {
- this->spzoomcontext = zoomcontext;
-}
-
SPZoomContext::SPZoomContext() : SPEventContext() {
SPZoomContext* zoom_context = this;
- zoom_context->czoomcontext = new CZoomContext(zoom_context);
- delete zoom_context->ceventcontext;
- zoom_context->ceventcontext = zoom_context->czoomcontext;
- types.insert(typeid(SPZoomContext));
-
zoom_context->grabbed = 0;
SPEventContext *event_context = SP_EVENT_CONTEXT(zoom_context);
@@ -81,13 +59,11 @@ SPZoomContext::SPZoomContext() : SPEventContext() {
event_context->hot_y = 6;
}
-static void sp_zoom_context_init (SPZoomContext *zoom_context)
-{
- new (zoom_context) SPZoomContext();
+SPZoomContext::~SPZoomContext() {
}
-void CZoomContext::finish() {
- SPEventContext* ec = this->speventcontext;
+void SPZoomContext::finish() {
+ SPEventContext* ec = this;
SPZoomContext *zc = SP_ZOOM_CONTEXT(ec);
@@ -99,8 +75,8 @@ void CZoomContext::finish() {
}
}
-void CZoomContext::setup() {
- SPEventContext* ec = this->speventcontext;
+void SPZoomContext::setup() {
+ SPEventContext* ec = this;
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
if (prefs->getBool("/tools/zoom/selcue")) {
@@ -113,24 +89,24 @@ void CZoomContext::setup() {
// if ((SP_EVENT_CONTEXT_CLASS(sp_zoom_context_parent_class))->setup) {
// (SP_EVENT_CONTEXT_CLASS(sp_zoom_context_parent_class))->setup(ec);
// }
- CEventContext::setup();
+ SPEventContext::setup();
}
-gint CZoomContext::item_handler(SPItem* item, GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPZoomContext::item_handler(SPItem* item, GdkEvent* event) {
+ SPEventContext* event_context = this;
gint ret = FALSE;
// if ((SP_EVENT_CONTEXT_CLASS(sp_zoom_context_parent_class))->item_handler) {
// ret = (SP_EVENT_CONTEXT_CLASS(sp_zoom_context_parent_class))->item_handler (event_context, item, event);
// }
- ret = CEventContext::item_handler(item, event);
+ ret = SPEventContext::item_handler(item, event);
return ret;
}
-gint CZoomContext::root_handler(GdkEvent* event) {
- SPEventContext* event_context = this->speventcontext;
+gint SPZoomContext::root_handler(GdkEvent* event) {
+ SPEventContext* event_context = this;
SPDesktop *desktop = event_context->desktop;
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
@@ -274,7 +250,7 @@ gint CZoomContext::root_handler(GdkEvent* event) {
// if ((SP_EVENT_CONTEXT_CLASS(sp_zoom_context_parent_class))->root_handler) {
// ret = (SP_EVENT_CONTEXT_CLASS(sp_zoom_context_parent_class))->root_handler(event_context, event);
// }
- ret = CEventContext::root_handler(event);
+ ret = SPEventContext::root_handler(event);
}
return ret;
diff --git a/src/zoom-context.h b/src/zoom-context.h
index 36842649b..402ce0995 100644
--- a/src/zoom-context.h
+++ b/src/zoom-context.h
@@ -15,32 +15,18 @@
#include "event-context.h"
-#define SP_TYPE_ZOOM_CONTEXT (sp_zoom_context_get_type ())
-//#define SP_ZOOM_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_ZOOM_CONTEXT, SPZoomContext))
-//#define SP_IS_ZOOM_CONTEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_ZOOM_CONTEXT))
#define SP_ZOOM_CONTEXT(obj) ((SPZoomContext*)obj)
-#define SP_IS_ZOOM_CONTEXT(obj) (((SPEventContext*)obj)->types.count(typeid(SPZoomContext)))
-
-class CZoomContext;
+#define SP_IS_ZOOM_CONTEXT(obj) (dynamic_cast<const SPZoomContext*>((const SPEventContext*)obj))
class SPZoomContext : public SPEventContext {
public:
SPZoomContext();
- CZoomContext* czoomcontext;
+ virtual ~SPZoomContext();
//SPEventContext event_context;
SPCanvasItem *grabbed;
static const std::string prefsPath;
-};
-
-struct SPZoomContextClass {
- SPEventContextClass parent_class;
-};
-
-class CZoomContext : public CEventContext {
-public:
- CZoomContext(SPZoomContext* zoomcontext);
virtual void setup();
virtual void finish();
@@ -48,10 +34,6 @@ public:
virtual gint item_handler(SPItem* item, GdkEvent* event);
virtual const std::string& getPrefsPath();
-private:
- SPZoomContext* spzoomcontext;
};
-GType sp_zoom_context_get_type (void);
-
#endif