+void
+RouteUI::build_record_menu ()
+{
+ if (record_menu) {
+ return;
+ }
+
+ /* no rec-button context menu for non-MIDI tracks
+ */
+
+ if (is_midi_track()) {
+ record_menu = new Menu;
+ record_menu->set_name ("ArdourContextMenu");
+
+ using namespace Menu_Helpers;
+ MenuList& items = record_menu->items();
+
+ items.push_back (CheckMenuElem (_("Step Edit"), sigc::mem_fun (*this, &RouteUI::toggle_step_edit)));
+ step_edit_item = dynamic_cast<CheckMenuItem*> (&items.back());
+
+ if (_route->record_enabled()) {
+ step_edit_item->set_sensitive (false);
+ }
+
+ step_edit_item->set_active (midi_track()->step_editing());
+ }
+}
+
+void
+RouteUI::toggle_step_edit ()
+{
+ if (!is_midi_track() || _route->record_enabled()) {
+ return;
+ }
+
+ midi_track()->set_step_editing (step_edit_item->get_active());
+}
+
+void
+RouteUI::step_edit_changed (bool yn)
+{
+ if (yn) {
+ if (rec_enable_button) {
+ rec_enable_button->set_visual_state (3);
+ }
+
+ start_step_editing ();
+
+ if (step_edit_item) {
+ step_edit_item->set_active (true);
+ }
+
+ } else {
+
+ if (rec_enable_button) {
+ rec_enable_button->set_visual_state (0);
+ }
+
+ stop_step_editing ();
+
+ if (step_edit_item) {
+ step_edit_item->set_active (false);
+ }
+ }
+}
+