summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/audio_time_axis.cc13
-rw-r--r--gtk2_ardour/automation_controller.cc6
-rw-r--r--gtk2_ardour/midi_time_axis.cc24
-rw-r--r--gtk2_ardour/route_time_axis.cc23
4 files changed, 44 insertions, 22 deletions
diff --git a/gtk2_ardour/audio_time_axis.cc b/gtk2_ardour/audio_time_axis.cc
index d032aaca9f..6e80c0b636 100644
--- a/gtk2_ardour/audio_time_axis.cc
+++ b/gtk2_ardour/audio_time_axis.cc
@@ -336,13 +336,20 @@ AudioTimeAxisView::update_pans ()
/* Man I hate that damn stereo->stereo panner */
uint32_t i = 0;
for (p = _route->panner().begin(); p != _route->panner().end(); ++p) {
+ boost::shared_ptr<AutomationControl> pan_control = (*p)->pan_control();
+
+ if (pan_control->list()->param_id().type() == NullAutomation) {
+ error << "Pan control has NULL automation type!" << endmsg;
+ continue;
+ }
+
boost::shared_ptr<AutomationTimeAxisView> pan_track(new AutomationTimeAxisView (_session,
- _route, _route/*FIXME*/, (*p)->pan_control(),
+ _route, _route/*FIXME*/, pan_control,
editor,
*this,
parent_canvas,
- _route->describe_parameter((*p)->pan_control()->list()->param_id()),
- ParamID(PanAutomation, i).to_string()/* FIXME: correct state name? */));
+ _route->describe_parameter(pan_control->list()->param_id()),
+ pan_control->list()->param_id().to_string()/* FIXME: correct state name? */));
add_automation_child(ParamID(PanAutomation, i), pan_track);
++i;
}
diff --git a/gtk2_ardour/automation_controller.cc b/gtk2_ardour/automation_controller.cc
index a95d469d7f..3cb4cc5a1e 100644
--- a/gtk2_ardour/automation_controller.cc
+++ b/gtk2_ardour/automation_controller.cc
@@ -75,7 +75,11 @@ void
AutomationController::update_label(char* label, int label_len)
{
if (label && label_len)
- snprintf(label, label_len, "%.3f", _controllable->get_value());
+ // Hack to display CC rounded to int
+ if (_controllable->list()->param_id().type() == MidiCCAutomation)
+ snprintf(label, label_len, "%d", (int)_controllable->get_value());
+ else
+ snprintf(label, label_len, "%.3f", _controllable->get_value());
}
void
diff --git a/gtk2_ardour/midi_time_axis.cc b/gtk2_ardour/midi_time_axis.cc
index 541a49d350..09bda6a2d7 100644
--- a/gtk2_ardour/midi_time_axis.cc
+++ b/gtk2_ardour/midi_time_axis.cc
@@ -166,13 +166,20 @@ MidiTimeAxisView::build_automation_action_menu ()
void
MidiTimeAxisView::add_controller_track()
{
- AddMidiCCTrackDialog dialog;
- dialog.set_transient_for(editor);
- int response = dialog.run();
- if (response == Gtk::RESPONSE_ACCEPT) {
- ParamID param = dialog.parameter();
- create_automation_child(param);
+ int response;
+ ParamID param;
+
+ {
+ AddMidiCCTrackDialog dialog;
+ dialog.set_transient_for(editor);
+ response = dialog.run();
+
+ if (response == Gtk::RESPONSE_ACCEPT)
+ param = dialog.parameter();
}
+
+ if (response == Gtk::RESPONSE_ACCEPT)
+ create_automation_child(param);
}
void
@@ -182,11 +189,11 @@ MidiTimeAxisView::create_automation_child (ParamID param)
/* FIXME: this all probably leaks */
- boost::shared_ptr<AutomationControl> c =_route->control(param);
+ boost::shared_ptr<AutomationControl> c = _route->control(param);
if (!c) {
boost::shared_ptr<AutomationList> al(new ARDOUR::AutomationList(param, 0, 127, 64));
- c = boost::shared_ptr<AutomationControl>(new AutomationControl(_session, al));
+ c = boost::shared_ptr<AutomationControl>(new MidiTrack::MidiControl(midi_track(), al));
_route->add_control(c);
}
@@ -197,6 +204,7 @@ MidiTimeAxisView::create_automation_child (ParamID param)
parent_canvas,
_route->describe_parameter(param),
c->list()->param_id().to_string() /* FIXME: correct state name? */));
+
add_automation_child(param, track);
} else {
diff --git a/gtk2_ardour/route_time_axis.cc b/gtk2_ardour/route_time_axis.cc
index 3f37b73f12..e4c285f7ac 100644
--- a/gtk2_ardour/route_time_axis.cc
+++ b/gtk2_ardour/route_time_axis.cc
@@ -434,6 +434,9 @@ RouteTimeAxisView::build_automation_action_menu ()
automation_items.push_back (MenuElem (_("Hide all automation"),
mem_fun(*this, &RouteTimeAxisView::hide_all_automation)));
+ if (subplugin_menu.get_parent())
+ subplugin_menu.detach();
+
automation_items.push_back (MenuElem (_("Plugins"), subplugin_menu));
map<ARDOUR::ParamID, RouteAutomationNode*>::iterator i;
@@ -441,18 +444,16 @@ RouteTimeAxisView::build_automation_action_menu ()
automation_items.push_back (SeparatorElem());
- if ( ! i->second->menu_item) {
- automation_items.push_back(CheckMenuElem (_route->describe_parameter(i->second->param),
- bind (mem_fun(*this, &RouteTimeAxisView::toggle_automation_track), i->second->param)));
+ if (i->second->menu_item)
+ delete i->second->menu_item;
- i->second->menu_item = static_cast<Gtk::CheckMenuItem*>(&automation_items.back());
+ automation_items.push_back(CheckMenuElem (_route->describe_parameter(i->second->param),
+ bind (mem_fun(*this, &RouteTimeAxisView::toggle_automation_track), i->second->param)));
- } else {
- automation_items.push_back (*i->second->menu_item);
- }
-
- //i->second->menu_item->set_active(show_automation(i->second->param));
- i->second->menu_item->set_active(false);
+ i->second->menu_item = static_cast<Gtk::CheckMenuItem*>(&automation_items.back());
+
+ i->second->menu_item->set_active(show_automation(i->second->param));
+ //i->second->menu_item->set_active(false);
}
}
@@ -1796,6 +1797,8 @@ RouteTimeAxisView::add_automation_child(ParamID param, boost::shared_ptr<Automat
_show_automation.insert(param);
_route->gui_changed ("track_height", (void *) 0); /* EMIT_SIGNAL */
}
+
+ build_display_menu();
}