22 #include <sigc++/bind.h>
62 #define PX_SCALE(pxmin, dflt) rint(std::max((double)pxmin, (double)dflt * ARDOUR_UI::ui_scale))
78 spacer.set_size_request (-1,0);
102 pack_start (
nfo_vbox,
false,
false);
127 SessionHandlePtr::set_session (sess);
233 spacer.set_size_request(-1,0);
245 mtr_hsep.set_name(
"BlackSeparator");
252 pack_start (
nfo_vbox,
false,
false);
271 if (boost::dynamic_pointer_cast<Track>(
_route)) {
311 else if (boost::dynamic_pointer_cast<AudioTrack>(
_route) == 0
316 else if (boost::dynamic_pointer_cast<MidiTrack>(
_route)) {
341 SessionHandlePtr::set_session (s);
374 if (!
Config->get_solo_control_is_listen_control()) {
377 switch (
Config->get_listen_position()) {
444 if (c.
get (*i) > 0) {
450 if (boost::dynamic_pointer_cast<AudioTrack>(
_route) == 0
451 && boost::dynamic_pointer_cast<MidiTrack>(
_route) == 0
457 else if (type == (1 << DataType::AUDIO)) {
462 else if (type == (1 << DataType::MIDI)) {
485 if (n.substr(0,3) !=
"Bar") {
490 if (n.substr(0,3) ==
"Bar") {
496 if (n.substr(0,3) !=
"Bar") {
501 if (n.substr(0,3) ==
"Bar") {
510 VBox::on_size_request(r);
516 const int wh = a.get_height();
525 nh = ceilf(wh * .12
f);
526 if (nh < 52) nh = 52;
527 if (nh > 148) nh = 148;
551 int prev_height, ignored;
552 bool need_relayout =
false;
554 namebx.get_size_request (ignored, prev_height);
557 if (prev_height != nh + tnh) {
558 need_relayout =
true;
564 if (prev_height != nh + tnh) {
565 need_relayout =
true;
570 name_label.get_size_request(ignored, prev_height);
573 if (prev_height != nlh) {
574 need_relayout =
true;
578 VBox::on_size_allocate(a);
609 _types.push_back (DataType::MIDI);
613 _types.push_back (DataType::AUDIO);
617 _types.push_back (DataType::MIDI);
622 _types.push_back (DataType::AUDIO);
700 if (ev->button == 1 && Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier|Keyboard::TertiaryModifier)) {
702 }
else if (ev->button == 1 && Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
770 if (p ==
"meter-peak") {
773 else if (p ==
"show-rec-on-meterbridge") {
776 else if (p ==
"show-mute-on-meterbridge") {
779 else if (p ==
"show-solo-on-meterbridge") {
782 else if (p ==
"show-name-on-meterbridge") {
785 else if (p ==
"show-monitor-on-meterbridge") {
788 else if (p ==
"meterbridge-label-height") {
791 else if (p ==
"track-name-number") {
805 if (track_number == 0) {
823 if (ev->button == 3) {
838 Gtk::Menu* m = manage (
new Menu);
839 MenuList& items = m->items ();
841 RadioMenuItem::Group group;
859 items.push_back (SeparatorElem());
860 items.push_back (MenuElem (
string_compose(
_(
"Change all in Group to %1"), cmn),
864 items.push_back (MenuElem (
string_compose(
_(
"Change same track-type to %1"), cmn),
867 m->popup (ev->button, ev->time);
875 if (!
_session->
config.get_show_name_on_meterbridge())
return true;
877 if (ev->button == 3) {
890 Gtk::Menu* m = manage (
new Menu);
891 MenuList& items = m->items ();
893 RadioMenuItem::Group group;
902 m->popup (ev->button, ev->time);
909 using namespace Menu_Helpers;
912 RadioMenuItem* i =
dynamic_cast<RadioMenuItem *
> (&items.back ());
919 using namespace Menu_Helpers;
922 RadioMenuItem* i =
dynamic_cast<RadioMenuItem *
> (&items.back ());
LevelMeterHBox * level_meter
std::string to_string(T t, std::ios_base &(*f)(std::ios_base &))
void set_session(ARDOUR::Session *s)
virtual void set_meter(ARDOUR::PeakMeter *meter)
PBD::Signal0< void > DropReferences
Gtk::Alignment meter_align
PBD::Signal1< void, const PropertyChange & > PropertyChanged
static PBD::Signal0< void > ConfigurationChanged
sigc::signal< void > DPIReset
void on_size_request(Gtk::Requisition *)
void clear_meters(bool reset_highlight=true)
shared_ptr< T > dynamic_pointer_cast(shared_ptr< U > const &r)
static ARDOUR_UI * instance()
LIBARDOUR_API PBD::PropertyDescriptor< std::string > name
void set_type(ARDOUR::MeterType)
void set_meter_type(ARDOUR::MeterType mode)
void set_meter_type(MeterType t)
void reset_group_peak_display(ARDOUR::RouteGroup *)
bool level_meter_button_press(GdkEventButton *ev)
void meter_configuration_changed(ARDOUR::ChanCount)
bool name_label_button_release(GdkEventButton *ev)
virtual void set_route(boost::shared_ptr< ARDOUR::Route >)
static PBD::Signal1< void, MeterStrip * > CatchDeletion
void popup_level_meter_menu(GdkEventButton *ev)
Gtk::DrawingArea meter_ticks1_area
SessionConfiguration config
boost::shared_ptr< PeakMeter > shared_peak_meter() const
void on_size_allocate(Gtk::Allocation &)
void meter_type_changed(ARDOUR::MeterType)
MeterStrip(ARDOUR::Session *, boost::shared_ptr< ARDOUR::Route >)
#define ENSURE_GUI_THREAD(obj, method,...)
void strip_property_changed(const PBD::PropertyChange &)
void reset_peak_display()
sigc::signal< void, ARDOUR::Route * > ResetRoutePeakDisplays
PBD::ScopedConnectionList level_meter_connection
void setup_meters(int len=0, int width=3, int thin=2)
void popup_name_label_menu(GdkEventButton *ev)
void reset_route_peak_display(ARDOUR::Route *)
const std::string meter_type_string(ARDOUR::MeterType)
ArdourButton * rec_enable_button
Gtk::DrawingArea meter_metric_area
int64_t track_number() const
uint32_t gdk_color_to_rgba(Gdk::Color const &)
ArdourButton * solo_button
PBD::Signal1< bool, GdkEventButton * > ButtonPress
void blink_rec_display(bool onoff)
Gtk::EventBox mtr_container
LIBARDOUR_API RCConfiguration * Config
static float minus_infinity(void)
ARDOUR::MeterType meter_type()
virtual void blink_rec_display(bool onoff)
void set_metric_mode(int, ARDOUR::MeterType)
ArdourButton * monitor_input_button
#define PX_SCALE(pxmin, dflt)
const PBD::ID & id() const
gint meter_expose_metrics(GdkEventExpose *ev, ARDOUR::MeterType type, std::vector< ARDOUR::DataType > types, Gtk::DrawingArea *mma)
Gtk::Alignment peak_align
static PBD::Signal0< void > MetricChanged
void update_background(ARDOUR::MeterType)
gint meter_ticks2_expose(GdkEventExpose *)
sigc::signal< void, int, ARDOUR::RouteGroup *, ARDOUR::MeterType > SetMeterTypeMulti
void add_label_height_item(Gtk::Menu_Helpers::MenuList &, Gtk::RadioMenuItem::Group &, std::string const &, uint32_t)
std::string state_id() const
PBD::ScopedConnectionList meter_route_connections
sigc::signal< void > ResetAllPeakDisplays
PBD::Signal1< void, std::string > ParameterChanged
void add_level_meter_type_item(Gtk::Menu_Helpers::MenuList &, Gtk::RadioMenuItem::Group &, std::string const &, ARDOUR::MeterType)
void set_tip(Gtk::Widget &w, const gchar *tip)
void route_color_changed()
boost::shared_ptr< ARDOUR::Route > route()
uint32_t get(DataType t) const
boost::shared_ptr< ARDOUR::Route > _route
Gtk::DrawingArea meter_ticks2_area
bool _suspend_menu_callbacks
ArdourButton * mute_button
gint meter_metrics_expose(GdkEventExpose *)
RouteGroup * route_group() const
static UIConfiguration * config()
uint32_t track_number_decimals() const
MeterType meter_type() const
bool peak_button_release(GdkEventButton *)
void set_meter_type_multi(int, ARDOUR::RouteGroup *, ARDOUR::MeterType)
sigc::signal< void > ColorsChanged
sigc::signal< void, ARDOUR::RouteGroup * > ResetGroupPeakDisplays
bool contains(PropertyDescriptor< T > p) const
void parameter_changed(std::string const &p)
std::vector< ARDOUR::DataType > _types
gint meter_ticks1_expose(GdkEventExpose *)
void set_label_height(uint32_t)
ArdourButton peak_display
ARDOUR::Session * _session
ARDOUR::MeterType metric_type
ArdourButton number_label
std::string string_compose(const std::string &fmt, const T1 &o1)
PBD::Signal1< void, ARDOUR::MeterType > MeterTypeChanged
gint meter_expose_ticks(GdkEventExpose *ev, ARDOUR::MeterType type, std::vector< ARDOUR::DataType > types, Gtk::DrawingArea *mta)
ArdourButton * monitor_disk_button
sigc::signal< void > RedrawMetrics