summaryrefslogtreecommitdiffstats
path: root/src/Canvas.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-12-08 02:13:47 +0000
committerDavid Robillard <d@drobilla.net>2011-12-08 02:13:47 +0000
commit7e11058ba3b1b8339441c9559d36a938f1ecfdc0 (patch)
tree3d4e815fda7d994ba5093da47875c761bc7dba77 /src/Canvas.cpp
parent3cd19961949ebcd69172e184f004427cfb59d5bf (diff)
downloadganv-7e11058ba3b1b8339441c9559d36a938f1ecfdc0.tar.gz
ganv-7e11058ba3b1b8339441c9559d36a938f1ecfdc0.tar.bz2
ganv-7e11058ba3b1b8339441c9559d36a938f1ecfdc0.zip
Make canvas direction a property.
git-svn-id: http://svn.drobilla.net/lad/trunk/ganv@3835 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/Canvas.cpp')
-rw-r--r--src/Canvas.cpp49
1 files changed, 23 insertions, 26 deletions
diff --git a/src/Canvas.cpp b/src/Canvas.cpp
index 704714a..ca2b08a 100644
--- a/src/Canvas.cpp
+++ b/src/Canvas.cpp
@@ -54,6 +54,8 @@
static guint signal_connect;
static guint signal_disconnect;
+static GEnumValue dir_values[3];
+
using std::cerr;
using std::endl;
using std::list;
@@ -142,7 +144,6 @@ struct GanvCanvasImpl {
, _zoom(1.0)
, _font_size(0.0)
, _drag_state(NOT_DRAGGING)
- , _direction(Ganv::Canvas::HORIZONTAL)
{
_wrapper_key = g_quark_from_string("ganvmm");
_move_cursor = gdk_cursor_new(GDK_FLEUR);
@@ -256,8 +257,6 @@ struct GanvCanvasImpl {
GQuark _wrapper_key;
GdkCursor* _move_cursor;
-
- Ganv::Canvas::FlowDirection _direction;
};
static GanvEdge
@@ -465,7 +464,7 @@ GanvCanvasImpl::layout_dot(bool use_length_hints, const std::string& filename)
nodes.gvc = gvc;
nodes.G = G;
- if (_direction == Ganv::Canvas::HORIZONTAL) {
+ if (_gcanvas->direction == GANV_DIRECTION_RIGHT) {
agraphattr(G, (char*)"rankdir", (char*)"LR");
} else {
agraphattr(G, (char*)"rankdir", (char*)"TD");
@@ -1485,27 +1484,6 @@ Canvas::get_zoom()
}
void
-Canvas::set_direction(FlowDirection d)
-{
- impl()->_direction = d;
- std::cerr << "FIXME: set direction" << std::endl;
-#if 0
- FOREACH_ITEM(impl()->_items, i) {
- Module* mod = dynamic_cast<Module*>(*i);
- if (mod) {
- mod->set_show_port_labels(d == Canvas::HORIZONTAL);
- }
- }
-#endif
-}
-
-Canvas::FlowDirection
-Canvas::direction() const
-{
- return impl()->_direction;
-}
-
-void
Canvas::select_all()
{
clear_selection();
@@ -1770,13 +1748,14 @@ enum {
PROP_0,
PROP_WIDTH,
PROP_HEIGHT,
+ PROP_DIRECTION,
PROP_LOCKED
};
static void
ganv_canvas_init(GanvCanvas* canvas)
{
- canvas->direction = GANV_HORIZONTAL;
+ canvas->direction = GANV_DIRECTION_RIGHT;
canvas->impl = new GanvCanvasImpl(canvas);
canvas->impl->_font_size = ganv_canvas_get_default_font_size(canvas);
}
@@ -1866,6 +1845,24 @@ ganv_canvas_class_init(GanvCanvasClass* klass)
600.0,
(GParamFlags)G_PARAM_READWRITE));
+ GEnumValue down_dir = { GANV_DIRECTION_DOWN, "down", "down" };
+ GEnumValue right_dir = { GANV_DIRECTION_RIGHT, "right", "right" };
+ GEnumValue null_dir = { 0, 0, 0 };
+ dir_values[0] = down_dir;
+ dir_values[1] = right_dir;
+ dir_values[2] = null_dir;
+ GType dir_type = g_enum_register_static("GanvDirection",
+ dir_values);
+
+ g_object_class_install_property(
+ gobject_class, PROP_DIRECTION, g_param_spec_enum(
+ "direction",
+ _("direction"),
+ _("direction of the signal flow on the canvas"),
+ dir_type,
+ GANV_DIRECTION_RIGHT,
+ (GParamFlags)G_PARAM_READWRITE));
+
g_object_class_install_property(
gobject_class, PROP_LOCKED, g_param_spec_boolean(
"locked",