diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc index 1a370dab90..2967f55313 100644 --- a/gtk2_ardour/editor.cc +++ b/gtk2_ardour/editor.cc @@ -1306,6 +1306,10 @@ Editor::update_title () } } +namespace { + const size_t mixer_bridge_strip_max_name_size = 9; + const size_t meter_bridge_strip_max_name_size = 6; +} void Editor::set_session (Session *t) { @@ -1328,9 +1332,11 @@ Editor::set_session (Session *t) _routes->set_session (_session); _locations->set_session (_session); _compact_meter_bridge.set_session (_session); - _mixer_bridge_view.set_session (_session); + _mixer_bridge_view.set_max_name_size(mixer_bridge_strip_max_name_size); + _mixer_bridge_view.set_session (_session); + _meter_bridge_view.set_max_name_size(meter_bridge_strip_max_name_size); _meter_bridge_view.set_session (_session); - + if (rhythm_ferret) { rhythm_ferret->set_session (_session); } diff --git a/gtk2_ardour/mixer_bridge_view.cc b/gtk2_ardour/mixer_bridge_view.cc index c37e1fb96f..4dfc3282f6 100644 --- a/gtk2_ardour/mixer_bridge_view.cc +++ b/gtk2_ardour/mixer_bridge_view.cc @@ -184,7 +184,7 @@ MixerBridgeView::add_strips (RouteList& routes) continue; } - MixerStrip* strip = strip = new MixerStrip (*ARDOUR_UI::instance()->the_mixer(), _session, route, _mixer_strip_script_name); + MixerStrip* strip = strip = new MixerStrip (*ARDOUR_UI::instance()->the_mixer(), _session, route, _mixer_strip_script_name, _max_name_size); strip->signal_button_release_event().connect (sigc::bind (sigc::mem_fun(*this, &MixerBridgeView::strip_button_release_event), strip)); _strips [route] = strip; strip->show(); diff --git a/gtk2_ardour/mixer_bridge_view.h b/gtk2_ardour/mixer_bridge_view.h index 637138705c..effbd43e6b 100644 --- a/gtk2_ardour/mixer_bridge_view.h +++ b/gtk2_ardour/mixer_bridge_view.h @@ -47,9 +47,10 @@ class MixerBridgeView : public MixerActor { public: - MixerBridgeView (const std::string& mixer_bridge_script_name, const std::string& mixer_strip_script_name); + MixerBridgeView (const std::string& mixer_bridge_script_name, const std::string& mixer_strip_script_name = 0); ~MixerBridgeView(); void set_session (ARDOUR::Session *); + void set_max_name_size(size_t size) {_max_name_size = size;} void track_editor_selection (); protected: @@ -81,6 +82,8 @@ class MixerBridgeView : std::map , MixerStrip*> _strips; mutable Glib::Threads::Mutex _resync_mutex; + + size_t _max_name_size; }; #endif //__ardour_mixer_bridge_view_h__ diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 9ae906e887..46a8bd940a 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -125,9 +125,30 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session* sess, const std::string& layout_s } } -MixerStrip::MixerStrip (Mixer_UI& mx, Session* sess, boost::shared_ptr rt, const std::string& layout_script_file) +string cut_string(const string& route_name, size_t max_name_size) +{ + if ( max_name_size == 0 ) + return route_name; + + string cutted_route_name; + + if ( route_name.size()<=max_name_size ) + { + cutted_route_name = route_name; + } + else + { + cutted_route_name.assign(route_name, 0, max_name_size-3); + cutted_route_name += "..."; + } + + return cutted_route_name; +} + +MixerStrip::MixerStrip (Mixer_UI& mx, Session* sess, boost::shared_ptr rt, const std::string& layout_script_file, size_t max_name_size) : AxisView(sess) , RouteUI (sess, layout_script_file) + , _max_name_size(max_name_size) , _mixer(mx) , _mixer_owned (xml_property(*xml_tree()->root(), "selfdestruct", true)) , processor_box (sess, boost::bind (&MixerStrip::plugin_selector, this), mx.selection(), this, xml_property(*xml_tree()->root(), "selfdestruct", true)) @@ -150,7 +171,7 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session* sess, boost::shared_ptr rt { init (); set_route (rt); - name_button.set_text (_route->name()); + name_button.set_text ( cut_string(_route->name(), _max_name_size) ); } void @@ -1229,7 +1250,7 @@ MixerStrip::property_changed (const PropertyChange& what_changed) void MixerStrip::name_changed () { - name_button.set_text (_route->name()); + name_button.set_text ( cut_string(_route->name(), _max_name_size) ); ARDOUR_UI::instance()->set_tip (name_button, _route->name()); } diff --git a/gtk2_ardour/mixer_strip.h b/gtk2_ardour/mixer_strip.h index 417a89f36d..81780bcc44 100644 --- a/gtk2_ardour/mixer_strip.h +++ b/gtk2_ardour/mixer_strip.h @@ -78,7 +78,7 @@ class ArdourWindow; class MixerStrip : public RouteUI { public: - MixerStrip (Mixer_UI&, ARDOUR::Session*, boost::shared_ptr, const std::string& layout_script_file); + MixerStrip (Mixer_UI&, ARDOUR::Session*, boost::shared_ptr, const std::string& layout_script_file, size_t max_name_size = 0); MixerStrip (Mixer_UI&, ARDOUR::Session*, const std::string& layout_script_file); ~MixerStrip (); @@ -144,6 +144,8 @@ class MixerStrip : public RouteUI bool _embedded; bool _packed; bool _mixer_owned; + + size_t _max_name_size; Gtk::EventBox& panners_home; ProcessorBox processor_box;