diff options
| author | Markus Engel <markus.engel@tum.de> | 2013-04-20 19:16:13 +0000 |
|---|---|---|
| committer | Markus Engel <markus.engel@tum.de> | 2013-04-20 19:16:13 +0000 |
| commit | 1227ca0189590b281116fcc808bdd8c674b2196c (patch) | |
| tree | 9ce1978824c1baaba62865364c7e45aee7b42cd9 /src/event-context.h | |
| parent | Replaced casting macros for EventContext tree; added contructors. (diff) | |
| download | inkscape-1227ca0189590b281116fcc808bdd8c674b2196c.tar.gz inkscape-1227ca0189590b281116fcc808bdd8c674b2196c.zip | |
Further changes to EventContexts; they work without GObject
(bzr r11608.1.97)
Diffstat (limited to 'src/event-context.h')
| -rw-r--r-- | src/event-context.h | 28 |
1 files changed, 25 insertions, 3 deletions
diff --git a/src/event-context.h b/src/event-context.h index 9f55fd8de..a4494a5cf 100644 --- a/src/event-context.h +++ b/src/event-context.h @@ -33,7 +33,6 @@ 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)) @@ -111,13 +110,14 @@ class CEventContext; * plus few abstract base classes. Writing a new tool involves * subclassing SPEventContext. */ -class SPEventContext : public GObject { +class SPEventContext { //: public GObject { public: void enableSelectionCue (bool enable=true); void enableGrDrag (bool enable=true); bool deleteSelectedDrag(bool just_one); SPEventContext(); + virtual ~SPEventContext(); CEventContext* ceventcontext; std::set<TypeInfo> types; @@ -194,7 +194,7 @@ protected: #define SP_EVENT_CONTEXT_STATIC 0 -SPEventContext *sp_event_context_new(GType type, SPDesktop *desktop, gchar const *pref_path, unsigned key); +//SPEventContext *sp_event_context_new(GType type, SPDesktop *desktop, gchar const *pref_path, unsigned key); void sp_event_context_finish(SPEventContext *ec); void sp_event_context_read(SPEventContext *ec, gchar const *key); void sp_event_context_activate(SPEventContext *ec); @@ -231,6 +231,28 @@ void ec_shape_event_attr_changed(Inkscape::XML::Node *shape_repr, void event_context_print_event_info(GdkEvent *event, bool print_return = true); + +/** + * An observer that relays pref changes to the derived classes. + */ +class ToolPrefObserver: public Inkscape::Preferences::Observer { +public: + ToolPrefObserver(Glib::ustring const &path, SPEventContext *ec) : + Inkscape::Preferences::Observer(path), _ec(ec) { + } + virtual void notify(Inkscape::Preferences::Entry const &val) { +// if ((SP_EVENT_CONTEXT_CLASS(G_OBJECT_GET_CLASS(_ec)))->set) { +// (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)); + } +private: + SPEventContext * const _ec; +}; + + + #endif // SEEN_SP_EVENT_CONTEXT_H |
