aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2011-12-03 21:45:57 +0000
committerDavid Robillard <d@drobilla.net>2011-12-03 21:45:57 +0000
commitff0f1dbcafd1f86bdaba76d65b26a44cf47c6711 (patch)
treeb1bc8becb2e3491273499d8658e03bd28d3d04cd
parent24c8dbca89b1139658e4c2fadb8c4dd90d43040e (diff)
downloadmachina-ff0f1dbcafd1f86bdaba76d65b26a44cf47c6711.tar.gz
machina-ff0f1dbcafd1f86bdaba76d65b26a44cf47c6711.tar.bz2
machina-ff0f1dbcafd1f86bdaba76d65b26a44cf47c6711.zip
Don't expose canvas data structures.
git-svn-id: http://svn.drobilla.net/lad/trunk/machina@3775 a436a847-0d15-0410-975c-d299462d15a1
-rw-r--r--src/gui/MachinaCanvas.cpp4
-rw-r--r--src/gui/MachinaCanvas.hpp2
-rw-r--r--src/gui/MachinaGUI.cpp66
-rw-r--r--src/gui/NodeView.cpp4
4 files changed, 44 insertions, 32 deletions
diff --git a/src/gui/MachinaCanvas.cpp b/src/gui/MachinaCanvas.cpp
index 36b39d8..6d3c2ec 100644
--- a/src/gui/MachinaCanvas.cpp
+++ b/src/gui/MachinaCanvas.cpp
@@ -82,7 +82,7 @@ MachinaCanvas::node_clicked(WeakPtr<NodeView> item, GdkEventButton* event)
}
bool
-MachinaCanvas::canvas_event(GdkEvent* event)
+MachinaCanvas::on_event(GdkEvent* event)
{
if (event->type == GDK_BUTTON_RELEASE
&& event->button.button == 3
@@ -92,7 +92,7 @@ MachinaCanvas::canvas_event(GdkEvent* event)
return true;
} else {
- return Canvas::canvas_event(event);
+ return Canvas::on_event(event);
}
}
diff --git a/src/gui/MachinaCanvas.hpp b/src/gui/MachinaCanvas.hpp
index 8eba8d2..e4b19b1 100644
--- a/src/gui/MachinaCanvas.hpp
+++ b/src/gui/MachinaCanvas.hpp
@@ -44,7 +44,7 @@ public:
MachinaGUI* app() { return _app; }
protected:
- bool canvas_event(GdkEvent* event);
+ bool on_event(GdkEvent* event);
bool node_clicked(WeakPtr<NodeView> item, GdkEventButton* ev);
diff --git a/src/gui/MachinaGUI.cpp b/src/gui/MachinaGUI.cpp
index 87c7807..7992111 100644
--- a/src/gui/MachinaGUI.cpp
+++ b/src/gui/MachinaGUI.cpp
@@ -224,24 +224,25 @@ MachinaGUI::idle_callback()
return true;
}
+static void
+erase_node(FlowCanvasNode* node, void* data)
+{
+ Machina::Controller* controller = (Machina::Controller*)data;
+ NodeView* const view = dynamic_cast<NodeView*>(
+ Glib::wrap(FLOW_CANVAS_NODE(node)));
+ if (view) {
+ controller->erase(view->node()->id());
+ //_engine->machine()->remove_node(view->node());
+ //_canvas->remove_item(view);
+ }
+}
+
bool
MachinaGUI::scrolled_window_event(GdkEvent* event)
{
if (event->type == GDK_KEY_PRESS) {
if (event->key.keyval == GDK_Delete) {
-
- Canvas::Items selection = _canvas->selected_items();
- _canvas->clear_selection();
-
- for (Canvas::Items::iterator i = selection.begin(); i != selection.end(); ++i) {
- NodeView* const view = dynamic_cast<NodeView*>(*i);
- if (view) {
- _controller->erase(view->node()->id());
- //_engine->machine()->remove_node(view->node());
- //_canvas->remove_item(view);
- }
- }
-
+ _canvas->for_each_selected_node(erase_node, _controller.get());
return true;
}
}
@@ -593,27 +594,38 @@ MachinaGUI::show_toolbar_toggled()
_toolbar->hide();
}
-void
-MachinaGUI::show_labels_toggled()
+static void
+show_node_label(FlowCanvasNode* node, void* data)
{
- const bool show = _menu_view_labels->get_active();
-
- for (Canvas::Items::const_iterator i = _canvas->items().begin();
- i != _canvas->items().end(); ++i) {
- NodeView* const nv = dynamic_cast<NodeView*>(*i);
- if (nv)
- nv->show_label(show);
+ bool show = *(bool*)data;
+ FlowCanvas::Node* nodemm = Glib::wrap(node);
+ NodeView* const nv = dynamic_cast<NodeView*>(nodemm);
+ if (nv) {
+ nv->show_label(show);
}
+}
- for (Canvas::Edges::const_iterator c = _canvas->edges().begin();
- c != _canvas->edges().end(); ++c) {
- EdgeView* const ev = dynamic_cast<EdgeView*>(*c);
- if (ev)
- ev->show_label(show);
+static void
+show_edge_label(FlowCanvasEdge* edge, void* data)
+{
+ bool show = *(bool*)data;
+ FlowCanvas::Edge* edgemm = Glib::wrap(edge);
+ EdgeView* const ev = dynamic_cast<EdgeView*>(edgemm);
+ if (ev) {
+ ev->show_label(show);
}
}
void
+MachinaGUI::show_labels_toggled()
+{
+ bool show = _menu_view_labels->get_active();
+
+ _canvas->for_each_node(show_node_label, &show);
+ _canvas->for_each_edge(show_edge_label, &show);
+}
+
+void
MachinaGUI::menu_help_about()
{
_about_window->set_transient_for(*_main_window);
diff --git a/src/gui/NodeView.cpp b/src/gui/NodeView.cpp
index 5aadde1..71852ab 100644
--- a/src/gui/NodeView.cpp
+++ b/src/gui/NodeView.cpp
@@ -102,13 +102,13 @@ NodeView::show_label(bool show)
if (_enter_action) {
Raul::Atom note_number = _enter_action->get(URIs::instance().machina_note_number);
if (note_number.is_valid()) {
- set_name(midi_note_name(note_number.get_int32()));
+ set_label(midi_note_name(note_number.get_int32()).c_str());
return;
}
}
}
- set_name("");
+ set_label("");
}
void