From 2e5df4c0d30fea03f0f3b176a449e17da5fc25f9 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 14 Oct 2016 14:57:41 -0400 Subject: Simplify port model code --- ingen/client/PortModel.hpp | 15 --------------- src/client/ClientStore.cpp | 17 ++--------------- src/client/PortModel.cpp | 1 - src/gui/GraphCanvas.cpp | 46 ++++++++++++++++++++++++++-------------------- src/gui/Port.cpp | 10 ---------- src/gui/Port.hpp | 1 - 6 files changed, 28 insertions(+), 62 deletions(-) diff --git a/ingen/client/PortModel.hpp b/ingen/client/PortModel.hpp index 0d921fb1..f03e5bc1 100644 --- a/ingen/client/PortModel.hpp +++ b/ingen/client/PortModel.hpp @@ -46,7 +46,6 @@ public: inline uint32_t index() const { return _index; } inline const Atom& value() const { return get_property(_uris.ingen_value); } - inline bool connected() const { return (_connections > 0); } inline bool is_input() const { return (_direction == Direction::INPUT); } inline bool is_output() const { return (_direction == Direction::OUTPUT); } @@ -70,8 +69,6 @@ public: INGEN_SIGNAL(value_changed, void, const Atom&); INGEN_SIGNAL(voice_changed, void, uint32_t, const Atom&); INGEN_SIGNAL(activity, void, const Atom&); - INGEN_SIGNAL(connection, void, SPtr); - INGEN_SIGNAL(disconnection, void, SPtr); private: friend class ClientStore; @@ -83,27 +80,15 @@ private: : ObjectModel(uris, path) , _index(index) , _direction(dir) - , _connections(0) {} void add_child(SPtr c) { throw; } bool remove_child(SPtr c) { throw; } - void connected_to(SPtr p) { - ++_connections; - _signal_connection.emit(p); - } - - void disconnected_from(SPtr p) { - --_connections; - _signal_disconnection.emit(p); - } - void set(SPtr model); uint32_t _index; Direction _direction; - size_t _connections; }; } // namespace Client diff --git a/src/client/ClientStore.cpp b/src/client/ClientStore.cpp index e99f9c73..d69992fe 100644 --- a/src/client/ClientStore.cpp +++ b/src/client/ClientStore.cpp @@ -435,10 +435,6 @@ ClientStore::attempt_connection(const Raul::Path& tail_path, if (tail && head) { SPtr graph = connection_graph(tail_path, head_path); SPtr arc(new ArcModel(tail, head)); - - tail->connected_to(head); - head->connected_to(tail); - graph->add_arc(arc); return true; } else { @@ -459,15 +455,8 @@ void ClientStore::disconnect(const Raul::Path& src_path, const Raul::Path& dst_path) { - SPtr tail = dynamic_ptr_cast(_object(src_path)); - SPtr head = dynamic_ptr_cast(_object(dst_path)); - - if (tail) - tail->disconnected_from(head); - - if (head) - head->disconnected_from(tail); - + SPtr tail = dynamic_ptr_cast(_object(src_path)); + SPtr head = dynamic_ptr_cast(_object(dst_path)); SPtr graph = connection_graph(src_path, dst_path); if (graph) graph->remove_arc(tail.get(), head.get()); @@ -493,8 +482,6 @@ ClientStore::disconnect_all(const Raul::Path& parent_graph, || arc->head()->parent() == object || arc->tail()->path() == path || arc->head()->path() == path) { - arc->tail()->disconnected_from(arc->head()); - arc->head()->disconnected_from(arc->tail()); graph->remove_arc(arc->tail().get(), arc->head().get()); } } diff --git a/src/client/PortModel.cpp b/src/client/PortModel.cpp index 9b534ae1..7e5456dd 100644 --- a/src/client/PortModel.cpp +++ b/src/client/PortModel.cpp @@ -70,7 +70,6 @@ PortModel::set(SPtr model) if (port) { _index = port->_index; _direction = port->_direction; - _connections = port->_connections; _signal_value_changed.emit(get_property(_uris.ingen_value)); } } diff --git a/src/gui/GraphCanvas.cpp b/src/gui/GraphCanvas.cpp index 7053b495..565f607e 100644 --- a/src/gui/GraphCanvas.cpp +++ b/src/gui/GraphCanvas.cpp @@ -405,6 +405,7 @@ GraphCanvas::get_port_view(SPtr port) return NULL; } +/** Called when a connection is added to the model. */ void GraphCanvas::connection(SPtr arc) { @@ -419,44 +420,49 @@ GraphCanvas::connection(SPtr arc) } } +/** Called when a connection is removed from the model. */ void GraphCanvas::disconnection(SPtr arc) { - Ganv::Port* const src = get_port_view(arc->tail()); - Ganv::Port* const dst = get_port_view(arc->head()); + Ganv::Port* const tail = get_port_view(arc->tail()); + Ganv::Port* const head = get_port_view(arc->head()); - if (src && dst) { - remove_edge_between(src, dst); + if (tail && head) { + remove_edge_between(tail, head); + if (arc->head()->is_a(_app.uris().lv2_AudioPort)) { + GUI::Port* const h = dynamic_cast(head); + if (h) { + h->activity(_app.forge().make(0.0f)); // Reset peaks + } + } } else { _app.log().error(fmt("Unable to find ports to disconnect %1% => %2%\n") % arc->tail_path() % arc->head_path()); } } +/** Called when the user connects ports on the canvas. */ void -GraphCanvas::connect(Ganv::Node* tail, - Ganv::Node* head) +GraphCanvas::connect(Ganv::Node* tail, Ganv::Node* head) { - const Ingen::GUI::Port* const src - = dynamic_cast(tail); + const GUI::Port* const t = dynamic_cast(tail); + const GUI::Port* const h = dynamic_cast(head); - const Ingen::GUI::Port* const dst - = dynamic_cast(head); - - if (!src || !dst) - return; - - _app.interface()->connect(src->model()->path(), dst->model()->path()); + if (t && h) { + _app.interface()->connect(t->model()->path(), h->model()->path()); + } } +/** Called when the user disconnects ports on the canvas. */ void -GraphCanvas::disconnect(Ganv::Node* tail, - Ganv::Node* head) +GraphCanvas::disconnect(Ganv::Node* tail, Ganv::Node* head) { - const Ingen::GUI::Port* const t = dynamic_cast(tail); - const Ingen::GUI::Port* const h = dynamic_cast(head); + const GUI::Port* const t = dynamic_cast(tail); + const GUI::Port* const h = dynamic_cast(head); - _app.interface()->disconnect(t->model()->path(), h->model()->path()); + if (t && h) { + _app.interface()->disconnect(t->model()->path(), h->model()->path()); + } } void diff --git a/src/gui/Port.cpp b/src/gui/Port.cpp index 9a20a8b8..c1947fea 100644 --- a/src/gui/Port.cpp +++ b/src/gui/Port.cpp @@ -81,8 +81,6 @@ Port::Port(App& app, sigc::mem_fun(this, &Port::property_removed)); pm->signal_activity().connect( sigc::mem_fun(this, &Port::activity)); - pm->signal_disconnection().connect( - sigc::mem_fun(this, &Port::disconnected_from)); pm->signal_moved().connect( sigc::mem_fun(this, &Port::moved)); @@ -371,14 +369,6 @@ Port::activity(const Atom& value) } } -void -Port::disconnected_from(SPtr port) -{ - if (!model()->connected() && model()->is_a(_app.uris().lv2_AudioPort)) { - set_fill_color(peak_color(0.0f)); - } -} - GraphBox* Port::get_graph_box() const { diff --git a/src/gui/Port.hpp b/src/gui/Port.hpp index a9549160..5f683412 100644 --- a/src/gui/Port.hpp +++ b/src/gui/Port.hpp @@ -62,7 +62,6 @@ public: void value_changed(const Atom& value); void activity(const Atom& value); - void disconnected_from(SPtr port); bool on_selected(gboolean b); -- cgit v1.2.1