Restore configuration of click IO connections to session options dialog.
git-svn-id: svn://localhost/ardour2/branches/3.0@5107 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
74d319b7ff
commit
d1ee2a06ca
@ -55,7 +55,7 @@ IOSelector::IOSelector (ARDOUR::Session& session, boost::shared_ptr<ARDOUR::IO>
|
|||||||
_ours = 1;
|
_ours = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
_port_group = boost::shared_ptr<PortGroup> (new PortGroup (""));
|
_port_group.reset (new PortGroup (""));
|
||||||
_ports[_ours].add_group (_port_group);
|
_ports[_ours].add_group (_port_group);
|
||||||
|
|
||||||
setup_all_ports ();
|
setup_all_ports ();
|
||||||
|
@ -1,10 +1,142 @@
|
|||||||
#include "ardour/session.h"
|
#include "ardour/session.h"
|
||||||
|
#include "ardour/io.h"
|
||||||
|
#include "ardour/auditioner.h"
|
||||||
|
#include "ardour/audioengine.h"
|
||||||
|
#include "ardour/port.h"
|
||||||
#include "session_option_editor.h"
|
#include "session_option_editor.h"
|
||||||
|
#include "port_matrix.h"
|
||||||
#include "i18n.h"
|
#include "i18n.h"
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
using namespace sigc;
|
using namespace sigc;
|
||||||
using namespace ARDOUR;
|
using namespace ARDOUR;
|
||||||
|
|
||||||
|
class OptionsPortMatrix : public PortMatrix
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
OptionsPortMatrix (ARDOUR::Session& session)
|
||||||
|
: PortMatrix (session, DataType::AUDIO)
|
||||||
|
{
|
||||||
|
_port_group.reset (new PortGroup (""));
|
||||||
|
_ports[OURS].add_group (_port_group);
|
||||||
|
|
||||||
|
setup_all_ports ();
|
||||||
|
}
|
||||||
|
|
||||||
|
void setup_ports (int dim)
|
||||||
|
{
|
||||||
|
cerr << _session.the_auditioner()->outputs().num_ports() << "\n";
|
||||||
|
|
||||||
|
if (dim == OURS) {
|
||||||
|
_port_group->clear ();
|
||||||
|
_port_group->add_bundle (_session.click_io()->bundle_for_outputs());
|
||||||
|
_port_group->add_bundle (_session.the_auditioner()->bundle_for_outputs());
|
||||||
|
} else {
|
||||||
|
_ports[OTHER].gather (_session, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_state (ARDOUR::BundleChannel c[2], bool s)
|
||||||
|
{
|
||||||
|
Bundle::PortList const & our_ports = c[OURS].bundle->channel_ports (c[OURS].channel);
|
||||||
|
Bundle::PortList const & other_ports = c[OTHER].bundle->channel_ports (c[OTHER].channel);
|
||||||
|
|
||||||
|
if (c[OURS].bundle == _session.click_io()->bundle_for_outputs()) {
|
||||||
|
|
||||||
|
for (ARDOUR::Bundle::PortList::const_iterator i = our_ports.begin(); i != our_ports.end(); ++i) {
|
||||||
|
for (ARDOUR::Bundle::PortList::const_iterator j = other_ports.begin(); j != other_ports.end(); ++j) {
|
||||||
|
|
||||||
|
Port* f = _session.engine().get_port_by_name (*i);
|
||||||
|
assert (f);
|
||||||
|
|
||||||
|
if (s) {
|
||||||
|
_session.click_io()->connect_output (f, *j, 0);
|
||||||
|
} else {
|
||||||
|
_session.click_io()->disconnect_output (f, *j, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
PortMatrixNode::State get_state (ARDOUR::BundleChannel c[2]) const
|
||||||
|
{
|
||||||
|
Bundle::PortList const & our_ports = c[OURS].bundle->channel_ports (c[OURS].channel);
|
||||||
|
Bundle::PortList const & other_ports = c[OTHER].bundle->channel_ports (c[OTHER].channel);
|
||||||
|
|
||||||
|
if (c[OURS].bundle == _session.click_io()->bundle_for_outputs()) {
|
||||||
|
|
||||||
|
for (ARDOUR::Bundle::PortList::const_iterator i = our_ports.begin(); i != our_ports.end(); ++i) {
|
||||||
|
for (ARDOUR::Bundle::PortList::const_iterator j = other_ports.begin(); j != other_ports.end(); ++j) {
|
||||||
|
Port* f = _session.engine().get_port_by_name (*i);
|
||||||
|
assert (f);
|
||||||
|
|
||||||
|
if (f->connected_to (*j)) {
|
||||||
|
return PortMatrixNode::ASSOCIATED;
|
||||||
|
} else {
|
||||||
|
return PortMatrixNode::NOT_ASSOCIATED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
/* XXX */
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return PortMatrixNode::NOT_ASSOCIATED;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool list_is_global (int dim) const
|
||||||
|
{
|
||||||
|
return (dim == OTHER);
|
||||||
|
}
|
||||||
|
|
||||||
|
void add_channel (boost::shared_ptr<ARDOUR::Bundle>) {}
|
||||||
|
bool can_remove_channels (int) const {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
void remove_channel (ARDOUR::BundleChannel) {}
|
||||||
|
bool can_rename_channels (int) const {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
/* see PortMatrix: signal flow from 0 to 1 (out to in) */
|
||||||
|
enum {
|
||||||
|
OURS = 0,
|
||||||
|
OTHER = 1,
|
||||||
|
};
|
||||||
|
|
||||||
|
boost::shared_ptr<PortGroup> _port_group;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
class ConnectionOptions : public OptionEditorBox
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ConnectionOptions (ARDOUR::Session* s)
|
||||||
|
: _port_matrix (*s)
|
||||||
|
{
|
||||||
|
_box->pack_start (_port_matrix);
|
||||||
|
}
|
||||||
|
|
||||||
|
void parameter_changed (string const & p)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_state_from_config ()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private:
|
||||||
|
OptionsPortMatrix _port_matrix;
|
||||||
|
};
|
||||||
|
|
||||||
SessionOptionEditor::SessionOptionEditor (Session* s)
|
SessionOptionEditor::SessionOptionEditor (Session* s)
|
||||||
: OptionEditor (&(s->config), _("Session Preferences")),
|
: OptionEditor (&(s->config), _("Session Preferences")),
|
||||||
_session_config (&(s->config))
|
_session_config (&(s->config))
|
||||||
@ -197,4 +329,6 @@ SessionOptionEditor::SessionOptionEditor (Session* s)
|
|||||||
mem_fun (*_session_config, &SessionConfiguration::get_bwf_organization_code),
|
mem_fun (*_session_config, &SessionConfiguration::get_bwf_organization_code),
|
||||||
mem_fun (*_session_config, &SessionConfiguration::set_bwf_organization_code)
|
mem_fun (*_session_config, &SessionConfiguration::set_bwf_organization_code)
|
||||||
));
|
));
|
||||||
|
|
||||||
|
add_option (_("Connections"), new ConnectionOptions (s));
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user