summaryrefslogtreecommitdiffstats
path: root/ganv/Node.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2013-01-08 18:58:11 +0000
committerDavid Robillard <d@drobilla.net>2013-01-08 18:58:11 +0000
commite4831db229641ee88ad8a2c1e0d82d7d3442e96b (patch)
tree59cd424127442d2881bcd4680bbcaa1271cf0948 /ganv/Node.hpp
parentc0ce35232594b1aa07473f8e61fcee14cf97fbe8 (diff)
downloadganv-e4831db229641ee88ad8a2c1e0d82d7d3442e96b.tar.gz
ganv-e4831db229641ee88ad8a2c1e0d82d7d3442e96b.tar.bz2
ganv-e4831db229641ee88ad8a2c1e0d82d7d3442e96b.zip
Add signals and default handlers for every property in conventional Gtkmm style.
git-svn-id: http://svn.drobilla.net/lad/trunk/ganv@4908 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'ganv/Node.hpp')
-rw-r--r--ganv/Node.hpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/ganv/Node.hpp b/ganv/Node.hpp
index fb1c1be..c9aaa63 100644
--- a/ganv/Node.hpp
+++ b/ganv/Node.hpp
@@ -38,6 +38,8 @@ public:
: Item(GANV_ITEM(g_object_ref(gobj)))
{
g_signal_connect(gobj, "moved", G_CALLBACK(on_moved), this);
+ CONNECT_PROP_SIGNAL(gobj, selected,
+ on_notify<gboolean>, &Node::on_selected)
}
~Node() {
@@ -83,6 +85,13 @@ private:
static void on_moved(GanvNode* node, double x, double y) {
Glib::wrap(node)->_signal_moved.emit(x, y);
}
+
+ template<typename T>
+ static void on_notify(GObject* gobj, GParamSpec* pspec, gpointer signal) {
+ T value;
+ g_object_get(gobj, g_param_spec_get_name(pspec), &value, NULL);
+ ((sigc::signal<bool, T>*)signal)->emit(value);
+ }
};
} // namespace Ganv