13
0

meterbridge shift|ctrl reset [group] peaks

This commit is contained in:
Robin Gareus 2013-07-05 03:05:19 +02:00
parent 94fbfb9658
commit f4557194ab
4 changed files with 42 additions and 6 deletions

View File

@ -30,6 +30,7 @@
#include "ardour/midi_track.h"
#include <gtkmm2ext/gtk_ui.h>
#include <gtkmm2ext/keyboard.h>
#include <gtkmm2ext/utils.h>
#include <gtkmm2ext/rgb_macros.h>
@ -52,6 +53,9 @@ using namespace Gtkmm2ext;
using namespace std;
PBD::Signal1<void,MeterStrip*> MeterStrip::CatchDeletion;
PBD::Signal0<void> MeterStrip::ResetAllPeakDisplays;
PBD::Signal1<void,RouteGroup*> MeterStrip::ResetGroupPeakDisplays;
MeterStrip::MetricPatterns MeterStrip::metric_patterns;
MeterStrip::TickPatterns MeterStrip::ticks_patterns;
@ -814,6 +818,14 @@ MeterStrip::reset_peak_display ()
bool
MeterStrip::peak_button_release (GdkEventButton* ev)
{
reset_peak_display ();
if (ev->button == 1 && Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier|Keyboard::TertiaryModifier)) {
ResetAllPeakDisplays ();
} else if (ev->button == 1 && Keyboard::modifier_state_equals (ev->state, Keyboard::PrimaryModifier)) {
if (_route) {
ResetGroupPeakDisplays (_route->route_group());
}
} else {
reset_peak_display ();
}
return true;
}

View File

@ -35,6 +35,7 @@
namespace ARDOUR {
class Route;
class RouteGroup;
class Session;
}
namespace Gtk {
@ -53,6 +54,11 @@ class MeterStrip : public Gtk::VBox, public RouteUI
boost::shared_ptr<ARDOUR::Route> route() { return _route; }
static PBD::Signal1<void,MeterStrip*> CatchDeletion;
static PBD::Signal0<void> ResetAllPeakDisplays;
static PBD::Signal1<void,ARDOUR::RouteGroup*> ResetGroupPeakDisplays;
void reset_peak_display ();
void reset_group_peak_display (ARDOUR::RouteGroup*);
protected:
boost::shared_ptr<ARDOUR::Route> _route;
@ -78,8 +84,6 @@ class MeterStrip : public Gtk::VBox, public RouteUI
void on_size_allocate (Gtk::Allocation&);
void on_size_request (Gtk::Requisition*);
bool peak_button_release (GdkEventButton*);
/* route UI */
void update_rec_display ();
std::string state_id() const;
@ -105,14 +109,13 @@ class MeterStrip : public Gtk::VBox, public RouteUI
LevelMeter *level_meter;
void meter_changed ();
void reset_peak_display ();
void reset_group_peak_display (ARDOUR::RouteGroup*);
PBD::ScopedConnection _config_connection;
void strip_property_changed (const PBD::PropertyChange&);
void meter_configuration_changed (ARDOUR::ChanCount);
static int max_pattern_metric_size; // == FastMeter::max_pattern_metric_size
bool peak_button_release (GdkEventButton*);
};
#endif /* __ardour_mixer_strip__ */

View File

@ -145,6 +145,8 @@ Meterbridge::Meterbridge ()
signal_configure_event().connect (sigc::mem_fun (*ARDOUR_UI::instance(), &ARDOUR_UI::configure_handler));
Route::SyncOrderKeys.connect (*this, invalidator (*this), boost::bind (&Meterbridge::sync_order_keys, this, _1), gui_context());
MeterStrip::CatchDeletion.connect (*this, invalidator (*this), boost::bind (&Meterbridge::remove_strip, this, _1), gui_context());
MeterStrip::ResetAllPeakDisplays.connect_same_thread (*this, boost::bind(&Meterbridge::reset_all_peaks, this));
MeterStrip::ResetGroupPeakDisplays.connect_same_thread (*this, boost::bind (&Meterbridge::reset_group_peaks, this, _1));
global_hpacker.set_spacing(0);
scroller.add (global_hpacker);
@ -439,6 +441,22 @@ Meterbridge::remove_strip (MeterStrip* strip)
}
}
void
Meterbridge::reset_all_peaks ()
{
for (list<MeterStrip *>::iterator i = strips.begin(); i != strips.end(); ++i) {
(*i)->reset_peak_display ();
}
}
void
Meterbridge::reset_group_peaks (RouteGroup* rg)
{
for (list<MeterStrip *>::iterator i = strips.begin(); i != strips.end(); ++i) {
(*i)->reset_group_peak_display (rg);
}
}
void
Meterbridge::sync_order_keys (RouteSortOrderKey src)
{

View File

@ -74,6 +74,9 @@ class Meterbridge :
void add_strips (ARDOUR::RouteList&);
void remove_strip (MeterStrip *);
void reset_all_peaks ();
void reset_group_peaks (ARDOUR::RouteGroup*);
void session_going_away ();
void sync_order_keys (ARDOUR::RouteSortOrderKey src);