summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-07-01 01:14:14 +0000
committerCarl Hetherington <carl@carlh.net>2010-07-01 01:14:14 +0000
commit92e412661772e6b9c83109b7ee4996f4c040d3f4 (patch)
tree1f1006c61d03b6b68855d812561d931606ff84b3 /libs/ardour
parentaad230da6937358b11976c1db3986575b2e412a0 (diff)
Allow port matrix to show both audio and midi ports at the same time, and use that facility for route IO selectors.
git-svn-id: svn://localhost/ardour2/branches/3.0@7344 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r--libs/ardour/ardour/data_type.h10
-rw-r--r--libs/ardour/ardour/io.h2
-rw-r--r--libs/ardour/io.cc38
3 files changed, 38 insertions, 12 deletions
diff --git a/libs/ardour/ardour/data_type.h b/libs/ardour/ardour/data_type.h
index 36114b29a9..07ba7c60ef 100644
--- a/libs/ardour/ardour/data_type.h
+++ b/libs/ardour/ardour/data_type.h
@@ -23,6 +23,8 @@
#include <string>
#include <jack/jack.h>
+#include "i18n.h"
+
namespace ARDOUR {
@@ -88,6 +90,14 @@ public:
}
}
+ const char* to_i18n_string() const {
+ switch (_symbol) {
+ case AUDIO: return _("audio");
+ case MIDI: return _("MIDI");
+ default: return _("unknown");
+ }
+ }
+
inline operator uint32_t() const { return (uint32_t)_symbol; }
/** DataType iterator, for writing generic loops that iterate over all
diff --git a/libs/ardour/ardour/io.h b/libs/ardour/ardour/io.h
index 72815c17cc..7475dbb203 100644
--- a/libs/ardour/ardour/io.h
+++ b/libs/ardour/ardour/io.h
@@ -218,7 +218,7 @@ class IO : public SessionObject, public Latent
int32_t find_port_hole (const char* base);
void setup_bundle ();
- std::string bundle_channel_name (uint32_t, uint32_t) const;
+ std::string bundle_channel_name (uint32_t, uint32_t, DataType) const;
};
} // namespace ARDOUR
diff --git a/libs/ardour/io.cc b/libs/ardour/io.cc
index 0cc61e1044..338705d633 100644
--- a/libs/ardour/io.cc
+++ b/libs/ardour/io.cc
@@ -1340,10 +1340,17 @@ IO::setup_bundle ()
snprintf(buf, sizeof (buf), _("%s out"), _name.val().c_str());
}
_bundle->set_name (buf);
- uint32_t const ni = _ports.num_ports();
- for (uint32_t i = 0; i < ni; ++i) {
- _bundle->add_channel (bundle_channel_name (i, ni), _ports.port(i)->type());
- _bundle->set_port (i, _session.engine().make_port_name_non_relative (_ports.port(i)->name()));
+
+ int c = 0;
+ for (DataType::iterator i = DataType::begin(); i != DataType::end(); ++i) {
+
+ uint32_t const N = _ports.count().get (*i);
+ for (uint32_t j = 0; j < N; ++j) {
+ _bundle->add_channel (bundle_channel_name (j, N, *i), *i);
+ _bundle->set_port (c, _session.engine().make_port_name_non_relative (_ports.port(*i, j)->name()));
+ ++c;
+ }
+
}
_bundle->resume_signals ();
@@ -1397,18 +1404,27 @@ IO::UserBundleInfo::UserBundleInfo (IO* io, boost::shared_ptr<UserBundle> b)
}
std::string
-IO::bundle_channel_name (uint32_t c, uint32_t n) const
+IO::bundle_channel_name (uint32_t c, uint32_t n, DataType t) const
{
char buf[32];
- switch (n) {
- case 1:
- return _("mono");
- case 2:
- return c == 0 ? _("L") : _("R");
- default:
+ if (t == DataType::AUDIO) {
+
+ switch (n) {
+ case 1:
+ return _("mono");
+ case 2:
+ return c == 0 ? _("L") : _("R");
+ default:
+ snprintf (buf, sizeof(buf), _("%d"), (c + 1));
+ return buf;
+ }
+
+ } else {
+
snprintf (buf, sizeof(buf), _("%d"), (c + 1));
return buf;
+
}
return "";