23 #include <sigc++/bind.h>
88 , _mixer_owned (in_mixer)
89 , processor_box (sess,
boost::bind (&
MixerStrip::plugin_selector, this), mx.selection(), this, in_mixer)
92 , button_size_group (
Gtk::SizeGroup::create (
Gtk::SIZE_GROUP_HORIZONTAL))
93 , rec_mon_table (2, 2)
94 , solo_iso_table (1, 2)
95 , mute_solo_table (1, 2)
96 , bottom_button_table (1, 3)
97 , meter_point_button (
_(
"pre"))
98 , midi_input_enable_button (0)
99 , _comment_button (
_(
"Comments"))
101 , _visibility (
X_(
"mixer-element-visibility"))
118 , _mixer_owned (in_mixer)
119 , processor_box (sess,
boost::bind (&
MixerStrip::plugin_selector, this), mx.selection(), this, in_mixer)
122 , button_size_group (
Gtk::SizeGroup::create (
Gtk::SIZE_GROUP_HORIZONTAL))
123 , rec_mon_table (2, 2)
124 , solo_iso_table (1, 2)
125 , mute_solo_table (1, 2)
126 , bottom_button_table (1, 3)
127 , meter_point_button (
_(
"pre"))
128 , midi_input_enable_button (0)
129 , _comment_button (
_(
"Comments"))
131 , _visibility (
X_(
"mixer-element-visibility"))
152 string t =
_(
"Click to toggle the width of this mixer strip.");
154 t +=
string_compose (
_(
"\n%1-%2-click to toggle the width of all strips."), Keyboard::primary_modifier_name(), Keyboard::tertiary_modifier_name ());
196 solo_safe_led->add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK);
198 UI::instance()->set_tip (
solo_safe_led,
_(
"Lock Solo Status"),
"");
262 #define PX_SCALE(px) std::max((float)px, rintf((float)px * ARDOUR_UI::ui_scale))
360 set_name (
"MidiTrackStripBase");
362 set_name (
"AudioTrackStripBase");
365 add_events (Gdk::BUTTON_RELEASE_MASK|
366 Gdk::ENTER_NOTIFY_MASK|
367 Gdk::LEAVE_NOTIFY_MASK|
369 Gdk::KEY_RELEASE_MASK);
371 set_flags (get_flags() | Gtk::CAN_FOCUS);
373 AudioEngine::instance()->PortConnectedOrDisconnected.connect (
424 if ( !(ev->detail == GDK_NOTIFY_INFERIOR) ) {
494 if (
route()->is_master()) {
513 HScrollbar scrollbar;
514 Gtk::Requisition requisition(scrollbar.size_request ());
515 int scrollbar_height = requisition.height;
517 spacer = manage (
new EventBox);
518 spacer->set_size_request (-1, scrollbar_height+2);
643 add_events (Gdk::BUTTON_RELEASE_MASK);
647 if (!
route()->is_master() && !
route()->is_monitor()) {
731 int width = rintf (max (110.
f * scale,
gpm.
get_gm_width() + 10.f * scale)) + 1;
733 set_size_request (width, -1);
758 int width = rintf (max (60.
f * scale,
gpm.
get_gm_width() + 10.f * scale)) + 1;
760 set_size_request (width, -1);
790 return a->
name().compare (b->
name()) < 0;
797 switch (ev->button) {
809 using namespace Menu_Helpers;
811 MessageDialog msg (
_(
"Not connected to audio engine - no I/O changes are possible"));
817 switch (ev->button) {
830 citems.push_back (SeparatorElem());
831 uint32_t
const n_with_separator = citems.size ();
839 for (ARDOUR::BundleList::iterator i = b->begin(); i != b->end(); ++i) {
840 if (boost::dynamic_pointer_cast<UserBundle> (*i)) {
845 for (ARDOUR::BundleList::iterator i = b->begin(); i != b->end(); ++i) {
846 if (boost::dynamic_pointer_cast<UserBundle> (*i) == 0) {
854 for (ARDOUR::RouteList::const_iterator i = copy.begin(); i != copy.end(); ++i) {
858 if (citems.size() == n_with_separator) {
863 citems.push_back (SeparatorElem());
874 citems.push_back (SeparatorElem());
890 switch (ev->button) {
907 using namespace Menu_Helpers;
914 MessageDialog msg (
_(
"Not connected to audio engine - no I/O changes are possible"));
922 switch (ev->button) {
931 citems.push_back (SeparatorElem());
932 uint32_t
const n_with_separator = citems.size ();
942 for (ARDOUR::BundleList::iterator i = b->begin(); i != b->end(); ++i) {
943 if (boost::dynamic_pointer_cast<UserBundle> (*i)) {
948 for (ARDOUR::BundleList::iterator i = b->begin(); i != b->end(); ++i) {
949 if (boost::dynamic_pointer_cast<UserBundle> (*i) == 0) {
957 for (ARDOUR::RouteList::const_iterator i = copy.begin(); i != copy.end(); ++i) {
961 if (citems.size() == n_with_separator) {
966 citems.push_back (SeparatorElem());
976 citems.push_back (SeparatorElem());
998 if (std::find (current.begin(), current.end(), c) == current.end()) {
999 _route->
input()->connect_ports_to_bundle (c,
true,
this);
1001 _route->
input()->disconnect_ports_from_bundle (c,
this);
1014 if (std::find (current.begin(), current.end(), c) == current.end()) {
1015 _route->
output()->connect_ports_to_bundle (c,
true,
this);
1017 _route->
output()->disconnect_ports_from_bundle (c,
this);
1024 using namespace Menu_Helpers;
1043 std::string n = b->
name ();
1052 using namespace Menu_Helpers;
1071 std::string n = b->
name ();
1177 vector<string> port_connections;
1179 uint32_t total_connection_count = 0;
1180 uint32_t io_connection_count = 0;
1181 uint32_t ardour_connection_count = 0;
1182 uint32_t system_connection_count = 0;
1183 uint32_t other_connection_count = 0;
1185 ostringstream label;
1187 bool have_label =
false;
1188 bool each_io_has_one_connection =
true;
1190 string connection_name;
1191 string ardour_track_name;
1192 string other_connection_type;
1193 string system_ports;
1196 ostringstream tooltip;
1197 char * tooltip_cstr;
1201 if ( boost::dynamic_pointer_cast<MidiTrack>(route) != 0 )
1202 dt = DataType::MIDI;
1206 tooltip <<
string_compose (
_(
"<b>INPUT</b> to %1"), Glib::Markup::escape_text(route->
name()));
1209 tooltip <<
string_compose (
_(
"<b>OUTPUT</b> from %1"), Glib::Markup::escape_text(route->
name()));
1213 for (io_index = 0; io_index < io_count; ++io_index) {
1215 port = route->
input()->nth (io_index);
1217 port = route->
output()->nth (io_index);
1221 if (port->
type() != dt)
1224 port_connections.clear ();
1226 io_connection_count = 0;
1228 if (!port_connections.empty()) {
1229 for (vector<string>::iterator i = port_connections.begin(); i != port_connections.end(); ++i) {
1231 string& connection_name (*i);
1233 if (connection_name.find(
"system:") == 0) {
1234 pn = AudioEngine::instance()->get_pretty_name_by_name (connection_name);
1237 if (io_connection_count == 0) {
1238 tooltip << endl << Glib::Markup::escape_text(port->
name().substr(port->
name().find(
"/") + 1))
1240 << Glib::Markup::escape_text( pn.empty() ? connection_name : pn );
1243 << Glib::Markup::escape_text( pn.empty() ? connection_name : pn );
1246 if (connection_name.find(
"ardour:") == 0) {
1247 if (ardour_track_name.empty()) {
1249 string::size_type slash = connection_name.find(
"/");
1250 if (slash != string::npos) {
1251 ardour_track_name = connection_name.substr(0, slash + 1);
1255 if (connection_name.find(ardour_track_name) == 0) {
1256 ++ardour_connection_count;
1258 }
else if (!pn.empty()) {
1259 if (system_ports.empty()) {
1262 system_ports +=
"/" + pn;
1264 if (connection_name.find(
"system:") == 0) {
1265 ++system_connection_count;
1267 }
else if (connection_name.find(
"system:midi_") == 0) {
1270 system_port =
"M " + connection_name.substr(20);
1273 system_port =
"M " + connection_name.substr(21);
1276 if (system_ports.empty()) {
1277 system_ports += system_port;
1279 system_ports +=
"/" + system_port;
1282 ++system_connection_count;
1284 }
else if (connection_name.find(
"system:") == 0) {
1287 system_port = connection_name.substr(15);
1290 system_port = connection_name.substr(16);
1293 if (system_ports.empty()) {
1294 system_ports += system_port;
1296 system_ports +=
"/" + system_port;
1299 ++system_connection_count;
1301 if (other_connection_type.empty()) {
1303 other_connection_type = connection_name.substr(0, connection_name.find(
":") + 1);
1306 if (connection_name.find(other_connection_type) == 0) {
1307 ++other_connection_count;
1311 ++total_connection_count;
1312 ++io_connection_count;
1316 if (io_connection_count != 1) {
1317 each_io_has_one_connection =
false;
1321 if (total_connection_count == 0) {
1322 tooltip << endl <<
_(
"Disconnected");
1325 tooltip_cstr =
new char[tooltip.str().size() + 1];
1326 strcpy(tooltip_cstr, tooltip.str().c_str());
1334 if (each_io_has_one_connection) {
1335 if (total_connection_count == ardour_connection_count) {
1338 string::size_type slash = ardour_track_name.find(
"/");
1339 if (slash != string::npos) {
1340 label << ardour_track_name.substr(7, slash - 7);
1344 else if (total_connection_count == system_connection_count) {
1346 label << system_ports;
1349 else if (total_connection_count == other_connection_count) {
1352 label << other_connection_type.substr(0, other_connection_type.size() - 1);
1358 if (total_connection_count == 0) {
1363 label <<
"*" << total_connection_count <<
"*";
1472 using namespace Menu_Helpers;
1474 if (ev->button == 1) {
1488 r.push_back (
route ());
1534 using namespace Menu_Helpers;
1548 items.push_back (SeparatorElem());
1556 items.push_back (SeparatorElem());
1557 items.push_back (CheckMenuElem (
_(
"Active")));
1558 Gtk::CheckMenuItem* i =
dynamic_cast<Gtk::CheckMenuItem *
> (&items.back());
1563 items.push_back (SeparatorElem());
1567 items.push_back (SeparatorElem());
1573 items.push_back (SeparatorElem());
1577 items.push_back (SeparatorElem());
1589 selection.
set (rtav);
1600 if (ev->button == 3) {
1616 if (ev->button == 1) {
1630 if ( ev->button == 3 ) {
1693 if (track_number == 0) {
1724 if (ev->button != 1) {
1783 case AudioTrack::Frozen:
1827 set_name (
"MidiTrackStripBase");
1829 set_name (
"MidiTrackStripBaseInactive");
1834 set_name (
"AudioTrackStripBase");
1836 set_name (
"AudioTrackStripBaseInactive");
1841 set_name (
"AudioBusStripBase");
1843 set_name (
"AudioBusStripBaseInactive");
1894 return S_(
"Meter|In");
1898 return S_(
"Meter|Pr");
1902 return S_(
"Meter|Po");
1906 return S_(
"Meter|O");
1911 return S_(
"Meter|C");
2021 if (boost::dynamic_pointer_cast<InternalSend>(send)) {
2066 if (!
Config->get_solo_control_is_listen_control()) {
2069 switch (
Config->get_listen_position()) {
2092 if (!
Config->get_solo_control_is_listen_control()) {
2095 switch (
Config->get_listen_position()) {
2147 rl->push_back (
route());
2150 Keyboard::modifier_state_contains (ev->state,
Keyboard::ModifierMask (Keyboard::PrimaryModifier|Keyboard::SecondaryModifier)));
2180 else if (p ==
"track-name-number") {
2190 boost::optional<bool>
2194 return boost::optional<bool> (
false);
2197 return boost::optional<bool> ();
2272 if (ev->button == 3) {
2285 Gtk::Menu* m = manage (
new Menu);
2286 MenuList& items = m->items ();
2288 RadioMenuItem::Group group;
2298 m->popup (ev->button, ev->time);
2303 RadioMenuItem::Group tgroup;
2304 items.push_back (SeparatorElem());
2322 else if (boost::dynamic_pointer_cast<AudioTrack>(
_route) == 0
2327 else if (boost::dynamic_pointer_cast<MidiTrack>(
_route)) {
2337 items.push_back (SeparatorElem());
2338 items.push_back (MenuElem (
string_compose(
_(
"Change all in Group to %1"), cmn),
2340 items.push_back (MenuElem (
string_compose(
_(
"Change all to %1"), cmn),
2342 items.push_back (MenuElem (
string_compose(
_(
"Change same track-type to %1"), cmn),
2345 m->popup (ev->button, ev->time);
2351 RadioMenuItem::Group& group,
string const &
name,
MeterPoint point)
2353 using namespace Menu_Helpers;
2356 RadioMenuItem* i =
dynamic_cast<RadioMenuItem *
> (&items.back ());
2369 RadioMenuItem::Group& group,
string const &
name,
MeterType type)
2371 using namespace Menu_Helpers;
2374 RadioMenuItem* i =
dynamic_cast<RadioMenuItem *
> (&items.back ());
void set_route_active(bool, bool)
bool transport_rolling() const
bool level_meter_button_press(GdkEventButton *)
virtual DataType type() const =0
PluginSelector * plugin_selector()
void open_comment_editor()
bool _suspend_menu_callbacks
void hide_redirect_editors()
void select_all_processors()
Gtkmm2ext::FocusEntry peak_display
std::string to_string(T t, std::ios_base &(*f)(std::ios_base &))
const ARDOUR::ChanCount meter_channels() const
void set_tooltip_prefix(std::string pfx)
void set_state(XMLNode const &)
std::string short_astyle_string(ARDOUR::AutoStyle)
void update_output_display()
virtual void set_panner(boost::shared_ptr< ARDOUR::PannerShell >, boost::shared_ptr< ARDOUR::Panner >)
std::string short_astyle_string(ARDOUR::AutoStyle)
void pan_automation_style_changed()
ArdourButton gain_automation_state_button
void update_mute_display()
boost::shared_ptr< ARDOUR::MidiTrack > midi_track() const
Gtk::Table bottom_button_table
Gtk::Menu * route_ops_menu
void open_remote_control_id_dialog()
std::string longest_label
PluginSelector * plugin_selector()
PBD::Signal0< void > DropReferences
ArdourButton * show_sends_button
void set_available_panners(std::map< std::string, std::string >)
void bundle_input_chosen(boost::shared_ptr< ARDOUR::Bundle >)
void show_send(boost::shared_ptr< ARDOUR::Send >)
gint output_press(GdkEventButton *)
MeterPoint meter_point() const
PBD::Signal1< void, const PropertyChange & > PropertyChanged
boost::shared_ptr< Send > internal_send_for(boost::shared_ptr< const Route > target) const
bool is_midi_track() const
Gtk::Table mute_solo_table
PBD::Signal0< void > automation_style_changed
boost::shared_ptr< Amp > amp() const
ArdourButton gain_automation_style_button
std::string gui_property(const std::string &property_name) const
bool processor_operation(ProcessorOperation)
void update_io_button(boost::shared_ptr< ARDOUR::Route > route, Width width, bool input_button)
void hide_strip(MixerStrip *)
Gtk::HBox _invert_button_box
void name_button_resized(Gtk::Allocation &)
bool is_audio_track() const
uint32_t pans_required() const
ArdourButton _comment_button
PBD::ScopedConnection _level_meter_connection
ArdourButton input_button
void midi_input_status_changed()
ArdourButton number_label
PBD::Signal0< void > FreezeChange
bool actively_recording() const
bool has_audio_outputs() const
std::string astate_string(ARDOUR::AutoState)
void edit_input_configuration()
shared_ptr< T > dynamic_pointer_cast(shared_ptr< U > const &r)
static ARDOUR_UI * instance()
LIBARDOUR_API PBD::PropertyDescriptor< std::string > name
Gtk::ToggleButton pan_automation_state_button
Gtk::Table solo_iso_table
PBD::Signal0< void > meter_change
virtual void bus_send_display_changed(boost::shared_ptr< ARDOUR::Route >)
void set_fader_name(const char *name)
void revert_to_default_display()
boost::shared_ptr< Pannable > pannable() const
Lists of selected things.
PBD::Signal1< void, void * > comment_changed
bool ports_are_outputs() const
void set_exclusive_input_active(boost::shared_ptr< RouteList > rt, bool onoff, bool flip_others=false)
boost::shared_ptr< AutomationControl > gain_control() const
PBD::Signal0< void > io_changed
bool mixer_strip_leave_event(GdkEventCrossing *)
gboolean number_button_button_press(GdkEventButton *)
Gtkmm2ext::FocusEntry gain_display
void set(std::list< Selectable * > const &)
virtual void set_route(boost::shared_ptr< ARDOUR::Route >)
std::string astyle_string(ARDOUR::AutoStyle)
LIBARDOUR_API PBD::PropertyDescriptor< bool > gain
sigc::signal< void > WidthChanged
IOSelectorWindow * input_selector
boost::shared_ptr< Panner > panner() const
void bundle_output_chosen(boost::shared_ptr< ARDOUR::Bundle >)
SessionConfiguration config
boost::shared_ptr< PeakMeter > shared_peak_meter() const
void route_color_changed()
void popup_level_meter_menu(GdkEventButton *)
void set_route(boost::shared_ptr< ARDOUR::Route >)
RouteGroupMenu * group_menu
std::string astate_string(ARDOUR::AutoState)
void set_invert_sensitive(bool)
virtual void remove_tracks()=0
LIBPBD_API int replace_all(std::string &str, const std::string &target, const std::string &replacement)
#define ENSURE_GUI_THREAD(obj, method,...)
void parameter_changed(std::string)
bool width_button_pressed(GdkEventButton *)
ArdourButton width_button
AutoStyle automation_style() const
gint meter_press(GdkEventButton *)
gint input_press(GdkEventButton *)
boost::optional< bool > override_solo_visibility() const
void set_current_delivery(boost::shared_ptr< ARDOUR::Delivery >)
void setup_comment_button()
void property_changed(const PBD::PropertyChange &)
void deselect_all_processors()
const std::string meter_type_string(ARDOUR::MeterType)
void show_passthru_color()
PBD::Signal1< void, AutoState > automation_state_changed
ArdourButton * rec_enable_button
int64_t track_number() const
void set_route(boost::shared_ptr< ARDOUR::Route >)
boost::shared_ptr< ARDOUR::Route > _route
void set_meter_point(ARDOUR::MeterPoint)
PBD::ScopedConnection send_gone_connection
void diskstream_changed()
void set_metering(bool yn)
virtual bool record_enabled() const
virtual uint32_t pan_outs() const
bool denormal_protection() const
uint32_t gdk_color_to_rgba(Gdk::Color const &)
ArdourButton * solo_button
void hide_processor_editor(boost::weak_ptr< ARDOUR::Processor > processor)
ArdourButton meter_point_button
gint meter_release(GdkEventButton *)
PBD::Signal0< void > route_group_changed
PBD::Signal0< void > InputActiveChanged
LIBARDOUR_API RCConfiguration * Config
#define string_2_enum(str, e)
void comment_changed(void *src)
std::string astyle_string(ARDOUR::AutoStyle)
std::vector< boost::shared_ptr< Bundle > > BundleList
void add_level_meter_item_point(Gtk::Menu_Helpers::MenuList &, Gtk::RadioMenuItem::Group &, std::string const &, ARDOUR::MeterPoint)
bool input_active_button_release(GdkEventButton *)
void set_controllable(boost::shared_ptr< PBD::Controllable > c)
boost::shared_ptr< PeakMeter > meter() const
boost::shared_ptr< ARDOUR::Panner > _panner
MixerStrip(Mixer_UI &, ARDOUR::Session *, boost::shared_ptr< ARDOUR::Route >, bool in_mixer=true)
void set_meter_type(ARDOUR::MeterType)
void set_meter_point(MeterPoint, bool force=false)
ArdourButton * monitor_input_button
AutoState automation_state() const
boost::shared_ptr< Delivery > main_outs() const
void toggle_comment_editor()
bool ports_are_inputs() const
virtual void set_controls(boost::shared_ptr< ARDOUR::Route > route, boost::shared_ptr< ARDOUR::PeakMeter > meter, boost::shared_ptr< ARDOUR::Amp > amp)
const PBD::ID & id() const
boost::shared_ptr< BundleList > bundles()
ChanCount n_outputs() const
boost::shared_ptr< ARDOUR::Delivery > _current_delivery
ChanCount nchannels() const
void route_group_changed()
void input_button_resized(Gtk::Allocation &)
void foreach_processor(boost::function< void(boost::weak_ptr< Processor >)> method)
ArdourButton output_button
LIBARDOUR_API PBD::PropertyDescriptor< bool > mute
Glib::RefPtr< Gtk::SizeGroup > button_size_group
boost::shared_ptr< RouteList > get_routes() const
sigc::signal< void, int, ARDOUR::RouteGroup *, ARDOUR::MeterType > SetMeterTypeMulti
void set_strip_width(Width, bool save=false)
void maybe_add_bundle_to_input_menu(boost::shared_ptr< ARDOUR::Bundle >, ARDOUR::BundleList const &)
void pan_automation_state_changed()
void add_input_port(ARDOUR::DataType)
std::string state_id() const
VisibilityGroup _visibility
void output_button_resized(Gtk::Allocation &)
boost::shared_ptr< PannerShell > panner_shell() const
PBD::ScopedConnectionList _config_connection
ChanCount n_inputs() const
virtual RouteTimeAxisView * get_route_view_by_route_id(const PBD::ID &id) const =0
PBD::Signal0< void > Running
void set_type(ARDOUR::MeterType)
PBD::Signal1< void, std::string > ParameterChanged
LIBARDOUR_API PBD::PropertyDescriptor< bool > active
void update_diskstream_display()
void build_route_ops_menu()
LIBARDOUR_API RuntimeProfile * Profile
PBD::Signal1< bool, GdkEventButton * > LevelMeterButtonPress
void set_tip(Gtk::Widget &w, const gchar *tip)
gint input_release(GdkEventButton *)
bool solo_isolate_button_release(GdkEventButton *)
ProcessorBox processor_box
void call_slot(EventLoop::InvalidationRecord *, const boost::function< void()> &)
void add_output_port(ARDOUR::DataType)
Gtk::HBox input_button_box
PBD::ScopedConnection panstate_connection
bool selected(TimeAxisView *)
Gtk::MenuItem * rename_menu_item
void port_connected_or_disconnected(boost::weak_ptr< ARDOUR::Port >, boost::weak_ptr< ARDOUR::Port >)
static PublicEditor & instance()
PBD::ScopedConnection panstyle_connection
bool operator()(boost::shared_ptr< Route > a, boost::shared_ptr< Route > b)
bool select_route_group(GdkEventButton *)
void add_level_meter_item_type(Gtk::Menu_Helpers::MenuList &, Gtk::RadioMenuItem::Group &, std::string const &, ARDOUR::MeterType)
void toggle_denormal_protection()
class LIBPBD_API PropertyList
gboolean name_button_button_press(GdkEventButton *)
gboolean name_button_button_release(GdkEventButton *)
void setup_meters(int len=0)
LIBARDOUR_API PBD::PropertyDescriptor< bool > solo
void reset_peak_display()
std::string short_astate_string(ARDOUR::AutoState)
virtual void property_changed(const PBD::PropertyChange &)
boost::shared_ptr< Amp > amp() const
void set_width_enum(Width, void *owner)
void update_panner_choices()
int get_connections(std::vector< std::string > &) const
ArdourButton * mute_button
RouteGroup * route_group() const
static UIConfiguration * config()
void add(Gtk::Widget *, std::string const &, std::string const &, bool visible=false, boost::function< boost::optional< bool >()>=0)
MeterType meter_type() const
PBD::Signal1< void, boost::weak_ptr< ARDOUR::Delivery > > DeliveryChanged
bool mixer_strip_enter_event(GdkEventCrossing *)
std::list< boost::weak_ptr< Route > > WeakRouteList
bool input_active() const
string short_version(string orig, string::size_type target_length)
boost::shared_ptr< IO > input() const
void set_selected(bool yn)
Gtk::Button pan_automation_style_button
void maybe_add_bundle_to_output_menu(boost::shared_ptr< ARDOUR::Bundle >, ARDOUR::BundleList const &)
void edit_output_configuration()
sigc::signal< void, std::string > ParameterChanged
static MixerStrip * _entered_mixer_strip
FreezeState freeze_state() const
bool contains(PropertyDescriptor< T > p) const
void set_gui_property(const std::string &property_name, const T &value)
Gtk::TextView * comment_area
boost::shared_ptr< IO > output() const
PBD::Signal0< void > Stopped
void update_input_display()
void list_route_operations()
std::string meter_point_string(ARDOUR::MeterPoint)
bool solo_safe_button_release(GdkEventButton *)
boost::shared_ptr< ARDOUR::AudioTrack > audio_track() const
void route_active_changed()
ArdourButton * midi_input_enable_button
void set_stuff_from_route()
virtual void set_selected(bool yn)
void set_width(Width, int len=0)
#define MISSING_INVALIDATOR
gint output_release(GdkEventButton *)
ArdourButton * solo_isolated_led
std::list< boost::shared_ptr< Route > > RouteList
boost::shared_ptr< PannerShell > panner_shell() const
std::string short_astate_string(ARDOUR::AutoState)
static PBD::Signal1< void, MixerStrip * > CatchDeletion
boost::shared_ptr< Panner > panner() const
PBD::ScopedConnectionList route_connections
bool add(PropertyBase *prop)
ARDOUR::Session * _session
boost::shared_ptr< ARDOUR::Route > route() const
ArdourButton group_button
std::list< boost::shared_ptr< ARDOUR::Bundle > > output_menu_bundles
ArdourButton * solo_safe_led
bool has_same_ports(boost::shared_ptr< Bundle >) const
Gtk::CheckMenuItem * denormal_menu_item
sigc::signal< void > Hiding
std::string string_compose(const std::string &fmt, const T1 &o1)
std::list< boost::shared_ptr< ARDOUR::Bundle > > input_menu_bundles
void set_send_drawing_mode(bool)
void update_solo_display()
ArdourButton * monitor_disk_button
Gtk::Window * get_processor_ui(boost::shared_ptr< ARDOUR::Processor >) const
std::string get_state_name() const
virtual void bus_send_display_changed(boost::shared_ptr< ARDOUR::Route >)
bool input_active_button_press(GdkEventButton *)