From 0731f12beaa0cfc0de56dc05ca3814143fd394a5 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Tue, 6 Dec 2011 21:01:38 +0000 Subject: FlowCanvas's successor is hereby dubbed Ganv. git-svn-id: http://svn.drobilla.net/lad/trunk/ganv@3820 a436a847-0d15-0410-975c-d299462d15a1 --- ganv/Node.hpp | 81 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 ganv/Node.hpp (limited to 'ganv/Node.hpp') diff --git a/ganv/Node.hpp b/ganv/Node.hpp new file mode 100644 index 0000000..f040e76 --- /dev/null +++ b/ganv/Node.hpp @@ -0,0 +1,81 @@ +/* This file is part of Ganv. + * Copyright 2007-2011 David Robillard + * + * Ganv is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) + * any later version. + * + * Ganv is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * details. + * + * You should have received a copy of the GNU General Public License + * along with Ganv. If not, see . + */ + +#ifndef GANV_NODE_HPP +#define GANV_NODE_HPP + +#include +#include +#include + +#include "ganv/node.h" +#include "ganv/Item.hpp" + +GANV_GLIB_WRAP(Node) + +namespace Ganv { + +class Canvas; +class Node; + +/** An object a Edge can connect to. + */ +class Node : public Item { +public: + Node(Canvas* canvas, GanvNode* gobj) + : Item(GNOME_CANVAS_ITEM(g_object_ref(gobj))) + {} + + ~Node() { + g_object_unref(_gobj); + } + + RW_PROPERTY(const char*, label) + RW_PROPERTY(double, dash_length) + RW_PROPERTY(double, dash_offset) + RW_PROPERTY(double, border_width) + RW_PROPERTY(guint, fill_color) + RW_PROPERTY(guint, border_color) + RW_PROPERTY(gboolean, can_tail) + RW_PROPERTY(gboolean, can_head) + RW_PROPERTY(gboolean, selected) + RW_PROPERTY(gboolean, highlighted) + RW_PROPERTY(gboolean, draggable) + + RW_OBJECT_PROPERTY(Node*, partner); + + METHOD1(ganv_node, tick, double, seconds); + + virtual gboolean is_within(double x1, double y1, + double x2, double y2) const { + return ganv_node_is_within(gobj(), x1, y1, x2, y2); + } + + GanvNode* gobj() { return GANV_NODE(_gobj); } + const GanvNode* gobj() const { return GANV_NODE(_gobj); } + + METHOD2(ganv_node, move, double, dx, double, dy) + METHOD2(ganv_node, move_to, double, x, double, y) + + METHOD0(ganv_node, disconnect); + + sigc::signal signal_moved; +}; + +} // namespace Ganv + +#endif // GANV_NODE_HPP -- cgit v1.2.1