diff options
author | David Robillard <d@drobilla.net> | 2011-12-08 02:13:47 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2011-12-08 02:13:47 +0000 |
commit | 7e11058ba3b1b8339441c9559d36a938f1ecfdc0 (patch) | |
tree | 3d4e815fda7d994ba5093da47875c761bc7dba77 /src/Canvas.cpp | |
parent | 3cd19961949ebcd69172e184f004427cfb59d5bf (diff) | |
download | ganv-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.cpp | 49 |
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", |