#include <gtkmm2ext/gtk_ui.h>
#include <gtkmm2ext/selector.h>
-#include <gtkmm2ext/stop_signal.h>
#include <gtkmm2ext/bindable_button.h>
#include <gtkmm2ext/utils.h>
#include "ardour/audioplaylist.h"
#include "ardour/event_type_map.h"
#include "ardour/location.h"
+#include "ardour/pannable.h"
#include "ardour/panner.h"
#include "ardour/playlist.h"
#include "ardour/processor.h"
if (_route->panner()) {
_route->panner()->Changed.connect (*this, invalidator (*this),
- boost::bind (&AudioTimeAxisView::ensure_pan_views, this, false), gui_context());
+ boost::bind (&AudioTimeAxisView::ensure_pan_views, this, false), gui_context());
}
/* map current state of the route */
{
if (param.type() == GainAutomation) {
- boost::shared_ptr<AutomationControl> c = _route->gain_control();
- if (!c) {
- error << "Route has no gain automation, unable to add automation track view." << endmsg;
- return;
- }
-
- gain_track.reset (new AutomationTimeAxisView (_session,
- _route, _route->amp(), c,
- _editor,
- *this,
- false,
- parent_canvas,
- _route->amp()->describe_parameter(param)));
+ create_gain_automation_child (param, show);
- add_automation_child(Evoral::Parameter(GainAutomation), gain_track, show);
-
- } else if (param.type() == PanAutomation) {
+ } else if (param.type() == PanWidthAutomation ||
+ param.type() == PanElevationAutomation ||
+ param.type() == PanAzimuthAutomation) {
ensure_xml_node ();
ensure_pan_views (show);
+ } else if (param.type() == PluginAutomation) {
+
+ /* handled elsewhere */
+
} else {
error << "AudioTimeAxisView: unknown automation child " << EventTypeMap::instance().to_symbol(param) << endmsg;
}
return;
}
- const set<Evoral::Parameter>& params = _route->panner()->what_can_be_automated();
+ set<Evoral::Parameter> params = _route->panner()->what_can_be_automated();
set<Evoral::Parameter>::iterator p;
for (p = params.begin(); p != params.end(); ++p) {
- boost::shared_ptr<ARDOUR::AutomationControl> pan_control
- = boost::dynamic_pointer_cast<ARDOUR::AutomationControl>(
- _route->panner()->control(*p));
+ boost::shared_ptr<ARDOUR::AutomationControl> pan_control = _route->pannable()->automation_control(*p);
if (pan_control->parameter().type() == NullAutomation) {
error << "Pan control has NULL automation type!" << endmsg;
boost::shared_ptr<AutomationTimeAxisView> t (
new AutomationTimeAxisView (_session,
- _route, _route->panner(), pan_control,
+ _route,
+ _route->pannable(),
+ pan_control,
_editor,
*this,
false,
gain_automation_item = dynamic_cast<CheckMenuItem*> (&automation_items.back ());
gain_automation_item->set_active (gain_track->marked_for_display ());
- _parameter_menu_map[Evoral::Parameter(GainAutomation)] = gain_automation_item;
+ _main_automation_menu_map[Evoral::Parameter(GainAutomation)] = gain_automation_item;
automation_items.push_back (CheckMenuElem (_("Pan"), sigc::mem_fun (*this, &AudioTimeAxisView::update_pan_track_visibility)));
pan_automation_item = dynamic_cast<CheckMenuItem*> (&automation_items.back ());
pan_automation_item->set_active (pan_tracks.front()->marked_for_display ());
- set<Evoral::Parameter> const & params = _route->panner()->what_can_be_automated ();
+ set<Evoral::Parameter> const & params = _route->pannable()->what_can_be_automated ();
for (set<Evoral::Parameter>::iterator p = params.begin(); p != params.end(); ++p) {
- _parameter_menu_map[*p] = pan_automation_item;
+ _main_automation_menu_map[*p] = pan_automation_item;
}
}