add IOProcessors pretty name support
authorRobin Gareus <robin@gareus.org>
Sun, 17 Apr 2016 19:50:13 +0000 (21:50 +0200)
committerRobin Gareus <robin@gareus.org>
Sun, 17 Apr 2016 19:50:13 +0000 (21:50 +0200)
libs/ardour/ardour/io.h
libs/ardour/io.cc

index e32c05c9d3deb6e5f5b958c182b47476a01a1937..5511f64dd683b3becf62f58ac146134ab12135f4 100644 (file)
@@ -88,6 +88,8 @@ class LIBARDOUR_API IO : public SessionObject, public Latent
        void set_active(bool yn) { _active = yn; }
 
        bool set_name (const std::string& str);
+       void set_pretty_name (const std::string& str);
+       std::string pretty_name () const { return _pretty_name_prefix; }
 
        virtual void silence (framecnt_t);
        void increment_port_buffer_offset (pframes_t offset);
@@ -248,6 +250,8 @@ class LIBARDOUR_API IO : public SessionObject, public Latent
        void setup_bundle ();
        std::string bundle_channel_name (uint32_t, uint32_t, DataType) const;
 
+       void apply_pretty_name ();
+       std::string _pretty_name_prefix;
        BufferSet _buffers;
        void disconnect_check (boost::shared_ptr<ARDOUR::Port>, boost::shared_ptr<ARDOUR::Port>);
 };
index 79ee78d8a57e6a5b552baa01ce4ba55d3ce13b10..3bbe34f825b97a31861ae90c5e0e05a9f8e54553 100644 (file)
@@ -368,6 +368,7 @@ IO::add_port (string destination, void* src, DataType type)
                }
        }
 
+       apply_pretty_name ();
        setup_bundle ();
        _session.set_dirty ();
 
@@ -535,6 +536,10 @@ IO::state (bool /*full_state*/)
        node->add_property ("direction", enum_2_string (_direction));
        node->add_property ("default-type", _default_type.to_string());
 
+       if (!_pretty_name_prefix.empty ()) {
+               node->add_property("pretty-name", _pretty_name_prefix);
+       }
+
        for (std::vector<UserBundleInfo*>::iterator i = _bundles_connected.begin(); i != _bundles_connected.end(); ++i) {
                XMLNode* n = new XMLNode ("Bundle");
                n->add_property ("name", (*i)->bundle->name ());
@@ -619,6 +624,11 @@ IO::set_state (const XMLNode& node, int version)
                return -1;
        }
 
+       // after create_ports, updates names
+       if ((prop = node.property ("pretty-name")) != 0) {
+               set_pretty_name (prop->value());
+       }
+
        if (connecting_legal) {
 
                if (make_connections (node, version, false)) {
@@ -1220,6 +1230,31 @@ IO::set_name (const string& requested_name)
        return r;
 }
 
+void
+IO::set_pretty_name (const std::string& str)
+{
+       if (_pretty_name_prefix == str) {
+               return;
+       }
+       _pretty_name_prefix = str;
+       apply_pretty_name ();
+}
+
+void
+IO::apply_pretty_name ()
+{
+       uint32_t pn = 1;
+       if (_pretty_name_prefix.empty ()) {
+               return;
+       }
+       for (PortSet::iterator i = _ports.begin (); i != _ports.end(); ++i, ++pn) {
+               (*i)->set_pretty_name (string_compose (("%1/%2 %3"),
+                                       _pretty_name_prefix,
+                                       _direction == Output ? _("Out") : _("In"),
+                                       pn));
+       }
+}
+
 framecnt_t
 IO::latency () const
 {