#include "ardour/audio_track.h"
#include "ardour/midi_track.h"
-#include "ardour/route_sorters.h"
#include "meterbridge.h"
#include "route_sorter.h"
#include "actions.h"
#include "gui_thread.h"
-#include "global_signals.h"
#include "meter_patterns.h"
#include "timers.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
using namespace ARDOUR;
using namespace ARDOUR_UI_UTILS;
signal_delete_event().connect (sigc::mem_fun (*this, &Meterbridge::hide_window));
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), gui_context());
MeterStrip::CatchDeletion.connect (*this, invalidator (*this), boost::bind (&Meterbridge::remove_strip, this, _1), gui_context());
MeterStrip::MetricChanged.connect (*this, invalidator (*this), boost::bind(&Meterbridge::resync_order, this), gui_context());
MeterStrip::ConfigurationChanged.connect (*this, invalidator (*this), boost::bind(&Meterbridge::queue_resize, this), gui_context());
viewport->set_border_width(0);
UI::instance()->theme_changed.connect (sigc::mem_fun(*this, &Meterbridge::on_theme_changed));
- ColorsChanged.connect (sigc::mem_fun (*this, &Meterbridge::on_theme_changed));
- DPIReset.connect (sigc::mem_fun (*this, &Meterbridge::on_theme_changed));
+ UIConfiguration::instance().ColorsChanged.connect (sigc::mem_fun (*this, &Meterbridge::on_theme_changed));
+ UIConfiguration::instance().DPIReset.connect (sigc::mem_fun (*this, &Meterbridge::on_theme_changed));
}
Meterbridge::~Meterbridge ()
if (gtk_window_propagate_key_event (GTK_WINDOW(gobj()), ev)) {
return true;
}
- return forward_key_press (ev);
+ return relay_key_press (ev, this);
}
bool
metrics_right.set_metric_mode(mm_right, mt_right);
}
+struct PresentationInfoRouteSorter
+{
+ bool operator() (boost::shared_ptr<Route> a, boost::shared_ptr<Route> b) {
+ if (a->is_master() || a->is_monitor()) {
+ /* "a" is a special route (master, monitor, etc), and comes
+ * last in the mixer ordering
+ */
+ return false;
+ } else if (b->is_master() || b->is_monitor()) {
+ /* everything comes before b */
+ return true;
+ }
+ return a->presentation_info().order() < b->presentation_info().order();
+ }
+};
+
void
Meterbridge::set_session (Session* s)
{
_show_master = _session->config.get_show_master_on_meterbridge();
_show_midi = _session->config.get_show_midi_on_meterbridge();
- ARDOUR::SignalOrderRouteSorter sorter;
boost::shared_ptr<RouteList> routes = _session->get_routes();
- RouteList copy(*routes);
- copy.sort(sorter);
- add_strips(copy);
+ RouteList copy (*routes);
+ copy.sort (PresentationInfoRouteSorter());
+ add_strips (copy);
_session->RouteAdded.connect (_session_connections, invalidator (*this), boost::bind (&Meterbridge::add_strips, this, _1), gui_context());
_session->DirtyChanged.connect (_session_connections, invalidator (*this), boost::bind (&Meterbridge::update_title, this), gui_context());
int
Meterbridge::set_state (const XMLNode& node)
{
- const XMLProperty* prop;
+ XMLProperty const * prop;
XMLNode* geometry;
m_width = default_width;
if ((geometry = find_named_node (node, "geometry")) != 0) {
- XMLProperty* prop;
+ XMLProperty const * prop;
if ((prop = geometry->property("x_size")) == 0) {
prop = geometry->property ("x-size");