diff options
| author | Markus Engel <markus.engel@tum.de> | 2013-04-20 21:19:46 +0000 |
|---|---|---|
| committer | Markus Engel <markus.engel@tum.de> | 2013-04-20 21:19:46 +0000 |
| commit | 65ba6ad9a82f8f47974eb10665478fd783692bb5 (patch) | |
| tree | 21ecad9197b19c636e7950503ea8f2a9a5366194 /src | |
| parent | Further changes to EventContexts; they work without GObject (diff) | |
| download | inkscape-65ba6ad9a82f8f47974eb10665478fd783692bb5.tar.gz inkscape-65ba6ad9a82f8f47974eb10665478fd783692bb5.zip | |
Merging of EventContext classes complete.
(bzr r11608.1.98)
Diffstat (limited to 'src')
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 ¢er, 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 |
