diff options
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/audio_time_axis.cc | 13 | ||||
-rw-r--r-- | gtk2_ardour/automation_controller.cc | 6 | ||||
-rw-r--r-- | gtk2_ardour/midi_time_axis.cc | 24 | ||||
-rw-r--r-- | gtk2_ardour/route_time_axis.cc | 23 |
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(); } |