#include "utils.h"
#include "gui_thread.h"
#include "route_group_menu.h"
+#include "meter_patterns.h"
#include "i18n.h"
if (gpm.gain_display.get_parent()) {
gpm.gain_display.get_parent()->remove (gpm.gain_display);
}
+
+ gpm.set_type (rt->meter_type());
middle_button_table.attach (gpm.gain_display,0,1,1,2);
middle_button_table.attach (gpm.peak_display,1,2,1,2);
MixerStrip::setup_comment_editor ()
{
comment_window = new ArdourWindow (""); // title will be reset to show route
- comment_window->set_position (Gtk::WIN_POS_MOUSE);
comment_window->set_skip_taskbar_hint (true);
comment_window->signal_hide().connect (sigc::mem_fun(*this, &MixerStrip::comment_editor_done_editing));
comment_window->set_default_size (400, 200);
if (is_midi_track()) {
if (_route->active()) {
set_name ("MidiTrackStripBase");
- gpm.set_meter_strip_name ("MidiTrackMetrics");
} else {
set_name ("MidiTrackStripBaseInactive");
- gpm.set_meter_strip_name ("MidiTrackMetricsInactive");
}
gpm.set_fader_name ("MidiTrackFader");
} else if (is_audio_track()) {
if (_route->active()) {
set_name ("AudioTrackStripBase");
- gpm.set_meter_strip_name ("AudioTrackMetrics");
} else {
set_name ("AudioTrackStripBaseInactive");
- gpm.set_meter_strip_name ("AudioTrackMetricsInactive");
}
gpm.set_fader_name ("AudioTrackFader");
} else {
if (_route->active()) {
set_name ("AudioBusStripBase");
- gpm.set_meter_strip_name ("AudioBusMetrics");
} else {
set_name ("AudioBusStripBaseInactive");
- gpm.set_meter_strip_name ("AudioBusMetricsInactive");
}
gpm.set_fader_name ("AudioBusFader");
RadioMenuItem::Group group;
- add_level_meter_item (items, group, _("Input"), MeterInput);
- add_level_meter_item (items, group, _("Pre-fader"), MeterPreFader);
- add_level_meter_item (items, group, _("Post-fader"), MeterPostFader);
- add_level_meter_item (items, group, _("Output"), MeterOutput);
- add_level_meter_item (items, group, _("Custom"), MeterCustom);
+ _suspend_menu_callbacks = true;
+ add_level_meter_item_point (items, group, _("Input"), MeterInput);
+ add_level_meter_item_point (items, group, _("Pre-fader"), MeterPreFader);
+ add_level_meter_item_point (items, group, _("Post-fader"), MeterPostFader);
+ add_level_meter_item_point (items, group, _("Output"), MeterOutput);
+ add_level_meter_item_point (items, group, _("Custom"), MeterCustom);
+
+ RadioMenuItem::Group tgroup;
+ items.push_back (SeparatorElem());
+
+ add_level_meter_item_type (items, tgroup, _("Peak"), MeterPeak);
+ add_level_meter_item_type (items, tgroup, _("RMS + Peak"), MeterKrms);
+
+ int _strip_type;
+ if (_route->is_master()) {
+ _strip_type = 4;
+ }
+ else if (boost::dynamic_pointer_cast<AudioTrack>(_route) == 0
+ && boost::dynamic_pointer_cast<MidiTrack>(_route) == 0) {
+ /* non-master bus */
+ _strip_type = 3;
+ }
+ else if (boost::dynamic_pointer_cast<MidiTrack>(_route)) {
+ _strip_type = 2;
+ }
+ else {
+ _strip_type = 1;
+ }
+
+ items.push_back (SeparatorElem());
+ items.push_back (MenuElem (_("Change all in Group to Peak"), sigc::bind (SetMeterTypeMulti, -1, _route->route_group(), MeterPeak)));
+ items.push_back (MenuElem (_("Change all in Group to RMS + Peak"), sigc::bind (SetMeterTypeMulti, -1, _route->route_group(), MeterKrms)));
+ items.push_back (MenuElem (_("Change all to Peak"), sigc::bind (SetMeterTypeMulti, 0, _route->route_group(), MeterPeak)));
+ items.push_back (MenuElem (_("Change all to RMS + Peak"), sigc::bind (SetMeterTypeMulti, 0, _route->route_group(), MeterKrms)));
+ items.push_back (MenuElem (_("Change same track-type to Peak"), sigc::bind (SetMeterTypeMulti, _strip_type, _route->route_group(), MeterPeak)));
+ items.push_back (MenuElem (_("Change same track-type to RMS + Peak"), sigc::bind (SetMeterTypeMulti, _strip_type, _route->route_group(), MeterKrms)));
m->popup (ev->button, ev->time);
+ _suspend_menu_callbacks = false;
}
void
-MixerStrip::add_level_meter_item (Menu_Helpers::MenuList& items, RadioMenuItem::Group& group, string const & name, MeterPoint point)
+MixerStrip::add_level_meter_item_point (Menu_Helpers::MenuList& items,
+ RadioMenuItem::Group& group, string const & name, MeterPoint point)
{
using namespace Menu_Helpers;
void
MixerStrip::set_meter_point (MeterPoint p)
{
+ if (_suspend_menu_callbacks) return;
_route->set_meter_point (p);
}
+
+void
+MixerStrip::add_level_meter_item_type (Menu_Helpers::MenuList& items,
+ RadioMenuItem::Group& group, string const & name, MeterType type)
+{
+ using namespace Menu_Helpers;
+
+ items.push_back (RadioMenuElem (group, name, sigc::bind (sigc::mem_fun (*this, &MixerStrip::set_meter_type), type)));
+ RadioMenuItem* i = dynamic_cast<RadioMenuItem *> (&items.back ());
+ i->set_active (_route->meter_type() == type);
+}
+
+void
+MixerStrip::set_meter_type (MeterType t)
+{
+ if (_suspend_menu_callbacks) return;
+ gpm.set_type (t);
+}