summaryrefslogtreecommitdiffstats
path: root/src/gui/GraphBox.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/GraphBox.cpp')
-rw-r--r--src/gui/GraphBox.cpp46
1 files changed, 41 insertions, 5 deletions
diff --git a/src/gui/GraphBox.cpp b/src/gui/GraphBox.cpp
index ad9aea56..99debec3 100644
--- a/src/gui/GraphBox.cpp
+++ b/src/gui/GraphBox.cpp
@@ -88,7 +88,8 @@ GraphBox::GraphBox(BaseObjectType* cobject,
xml->get_widget("graph_view_engine_window_menuitem", _menu_view_engine_window);
xml->get_widget("graph_properties_menuitem", _menu_view_graph_properties);
xml->get_widget("graph_fullscreen_menuitem", _menu_fullscreen);
- xml->get_widget("graph_animate_canvas_menuitem", _menu_animate_canvas);
+ xml->get_widget("graph_animate_signals_menuitem", _menu_animate_signals);
+ xml->get_widget("graph_sprung_layout_menuitem", _menu_sprung_layout);
xml->get_widget("graph_human_names_menuitem", _menu_human_names);
xml->get_widget("graph_show_port_names_menuitem", _menu_show_port_names);
xml->get_widget("graph_zoom_in_menuitem", _menu_zoom_in);
@@ -126,8 +127,10 @@ GraphBox::GraphBox(BaseObjectType* cobject,
sigc::mem_fun(this, &GraphBox::event_quit));
_menu_fullscreen->signal_activate().connect(
sigc::mem_fun(this, &GraphBox::event_fullscreen_toggled));
- _menu_animate_canvas->signal_activate().connect(
- sigc::mem_fun(this, &GraphBox::event_animate_canvas_toggled));
+ _menu_animate_signals->signal_activate().connect(
+ sigc::mem_fun(this, &GraphBox::event_animate_signals_toggled));
+ _menu_sprung_layout->signal_activate().connect(
+ sigc::mem_fun(this, &GraphBox::event_sprung_layout_toggled));
_menu_human_names->signal_activate().connect(
sigc::mem_fun(this, &GraphBox::event_human_names_toggled));
_menu_show_doc_pane->signal_activate().connect(
@@ -246,6 +249,16 @@ GraphBox::set_graph(SPtr<const GraphModel> graph,
assert(_view);
+ graph->signal_property().connect(
+ sigc::mem_fun(this, &GraphBox::property_changed));
+
+ if (ganv_canvas_supports_sprung_layout(_view->canvas()->gobj())) {
+ _menu_sprung_layout->set_active(true);
+ } else {
+ _menu_sprung_layout->set_active(false);
+ _menu_sprung_layout->set_sensitive(false);
+ }
+
// Add view to our alignment
if (_view->get_parent())
_view->get_parent()->remove(*_view.get());
@@ -316,6 +329,16 @@ GraphBox::graph_port_removed(SPtr<const PortModel> port)
}
void
+GraphBox::property_changed(const Raul::URI& predicate, const Atom& value)
+{
+ if (predicate == _app->uris().ingen_sprungLayout) {
+ if (value.type() == _app->uris().forge.Bool) {
+ _menu_sprung_layout->set_active(value.get<int32_t>());
+ }
+ }
+}
+
+void
GraphBox::set_documentation(const std::string& doc, bool html)
{
_doc_scrolledwindow->remove();
@@ -702,12 +725,25 @@ GraphBox::event_status_bar_toggled()
}
void
-GraphBox::event_animate_canvas_toggled()
+GraphBox::event_animate_signals_toggled()
{
_app->interface()->set_property(
Raul::URI("ingen:/clients/this"),
_app->uris().ingen_broadcast,
- _app->forge().make((bool)_menu_animate_canvas->get_active()));
+ _app->forge().make((bool)_menu_animate_signals->get_active()));
+}
+
+void
+GraphBox::event_sprung_layout_toggled()
+{
+ const bool sprung = _menu_sprung_layout->get_active();
+
+ ganv_canvas_set_sprung_layout(_view->canvas()->gobj(), sprung);
+
+ Resource::Properties properties;
+ properties.insert(make_pair(_app->uris().ingen_sprungLayout,
+ _app->forge().make(sprung)));
+ _app->interface()->put(_graph->uri(), properties);
}
void