#~ /usr/bin/ruby # Copyright (C) 2006,2007 John Anderson # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. require 'erb' signals = %w{ solo_changed mute_changed record_enable_changed gain_changed name_changed panner_changed } @signal_calls = { 'panner_changed' => 'panner()[0]->Changed' } def connection_call( x ) if @signal_calls.include? x @signal_calls[x] else x end end signals.each do |x| puts < class MackieControlProtocol; namespace ARDOUR { class Route; } namespace Mackie { class Strip; /** This class is intended to easily create and destroy the set of connections from a route to a control surface strip. Instanting it will connect the signals, and destructing it will disconnect the signals. */ class RouteSignal { public: RouteSignal( ARDOUR::Route & route, MackieControlProtocol & mcp, Strip & strip ) : _route( route ), _mcp( mcp ), _strip( strip ) { connect(); } ~RouteSignal() { disconnect(); } private: ARDOUR::Route & _route; MackieControlProtocol & _mcp; Strip & _strip; <% signals.each do |x| -%> sigc::connection _<%= x %>_connection; <% end -%> }; } #endif EOF erb = ERB.new( class_def, 0, ">-" ) erb.run impl_def = < _<%=x%>_connection = _route.<%=connection_call(x)%>.connect( sigc::bind ( mem_fun ( _mcp, &MackieControlProtocol::notify_<%=x%> ), &_route ) ); <% end -%> } void RouteSignal::disconnect() { <% signals.each do |x| -%> _<%= x %>_connection.disconnect(); <% end -%> } EOF erb = ERB.new( impl_def, 0, ">-" ) erb.run