summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2010-08-03 21:50:15 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2010-08-03 21:50:15 +0000
commit6b641cdde4fa01baa1bf03e69131bd2b1a81b67b (patch)
treea6b0a15f5bcc27724c6729b1eeed868ecf0c7b06 /gtk2_ardour
parentb1f5a6a68d0b62a61684b2c011a97de825256a59 (diff)
properly track step edit status in editor & mixer windows
git-svn-id: svn://localhost/ardour2/branches/3.0@7533 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/midi_time_axis.cc20
-rw-r--r--gtk2_ardour/midi_time_axis.h9
-rw-r--r--gtk2_ardour/route_ui.cc54
-rw-r--r--gtk2_ardour/route_ui.h6
-rw-r--r--gtk2_ardour/step_entry.cc2
5 files changed, 54 insertions, 37 deletions
diff --git a/gtk2_ardour/midi_time_axis.cc b/gtk2_ardour/midi_time_axis.cc
index 098b96b5b2..bc36d6fbe8 100644
--- a/gtk2_ardour/midi_time_axis.cc
+++ b/gtk2_ardour/midi_time_axis.cc
@@ -892,20 +892,6 @@ MidiTimeAxisView::route_active_changed ()
}
void
-MidiTimeAxisView::toggle_step_edit ()
-{
- if (_route->record_enabled()) {
- return;
- }
-
- if (midi_track()->step_editing ()) {
- stop_step_editing ();
- } else {
- start_step_editing ();
- }
-}
-
-void
MidiTimeAxisView::start_step_editing ()
{
step_edit_insert_position = _editor.get_preferred_edit_position ();
@@ -923,7 +909,6 @@ MidiTimeAxisView::start_step_editing ()
step_edit_region_view = 0;
}
- midi_track()->set_step_editing (true);
if (step_editor == 0) {
step_editor = new StepEntry (*this);
@@ -937,15 +922,14 @@ MidiTimeAxisView::start_step_editing ()
bool
MidiTimeAxisView::step_editor_hidden (GdkEventAny*)
{
- stop_step_editing ();
+ /* everything else will follow the change in the model */
+ midi_track()->set_step_editing (false);
return true;
}
void
MidiTimeAxisView::stop_step_editing ()
{
- midi_track()->set_step_editing (false);
-
if (step_editor) {
step_editor->hide ();
}
diff --git a/gtk2_ardour/midi_time_axis.h b/gtk2_ardour/midi_time_axis.h
index abe5218be3..12ca3a9bfe 100644
--- a/gtk2_ardour/midi_time_axis.h
+++ b/gtk2_ardour/midi_time_axis.h
@@ -87,9 +87,6 @@ class MidiTimeAxisView : public RouteTimeAxisView
return _midi_patch_settings_changed;
}
- void toggle_step_edit ();
- void start_step_editing ();
- void stop_step_editing ();
void check_step_edit ();
void step_edit_rest ();
int step_add_note (uint8_t channel, uint8_t pitch, uint8_t velocity,
@@ -102,7 +99,11 @@ class MidiTimeAxisView : public RouteTimeAxisView
const MidiMultipleChannelSelector& channel_selector() { return _channel_selector; }
Gtk::CheckMenuItem* automation_child_menu_item (Evoral::Parameter);
-
+
+ protected:
+ void start_step_editing ();
+ void stop_step_editing ();
+
private:
sigc::signal<void, std::string, std::string> _midi_patch_settings_changed;
diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc
index 6e9f5a73d1..1cbdadbe05 100644
--- a/gtk2_ardour/route_ui.cc
+++ b/gtk2_ardour/route_ui.cc
@@ -589,23 +589,32 @@ RouteUI::build_record_menu ()
/* no rec-button context menu for non-MIDI tracks
*/
- if (!is_midi_track()) {
- return;
- }
-
- record_menu = new Menu;
- record_menu->set_name ("ArdourContextMenu");
-
- using namespace Menu_Helpers;
- MenuList& items = record_menu->items();
+ 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);
+ }
- items.push_back (CheckMenuElem (_("Step Edit"), sigc::mem_fun (*this, &RouteUI::toggle_step_edit)));
- step_edit_item = dynamic_cast<CheckMenuItem*> (&items.back());
+ 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
@@ -615,10 +624,24 @@ RouteUI::step_edit_changed (bool 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);
+ }
}
}
@@ -1020,9 +1043,18 @@ RouteUI::update_rec_display ()
}
+ if (step_edit_item) {
+ step_edit_item->set_sensitive (false);
+ }
+
} else {
rec_enable_button->set_visual_state (0);
+
+ if (step_edit_item) {
+ step_edit_item->set_sensitive (true);
+ }
}
+
check_rec_enable_sensitivity ();
}
diff --git a/gtk2_ardour/route_ui.h b/gtk2_ardour/route_ui.h
index 8d819de505..4f7aaddea5 100644
--- a/gtk2_ardour/route_ui.h
+++ b/gtk2_ardour/route_ui.h
@@ -184,9 +184,9 @@ class RouteUI : public virtual AxisView
void build_record_menu ();
Gtk::CheckMenuItem *step_edit_item;
- virtual void toggle_step_edit ();
+ void toggle_step_edit ();
virtual void step_edit_changed (bool);
-
+
virtual void polarity_changed ();
Gtk::CheckMenuItem *denormal_menu_item;
@@ -221,6 +221,8 @@ class RouteUI : public virtual AxisView
void reset ();
void self_delete ();
+ virtual void start_step_editing () {}
+ virtual void stop_step_editing() {}
private:
void check_rec_enable_sensitivity ();
diff --git a/gtk2_ardour/step_entry.cc b/gtk2_ardour/step_entry.cc
index f585cba057..18fa5c7730 100644
--- a/gtk2_ardour/step_entry.cc
+++ b/gtk2_ardour/step_entry.cc
@@ -173,8 +173,6 @@ StepEntry::StepEntry (MidiTimeAxisView& mtv)
upper_box.pack_start (channel_spinner, false, false);
_piano = (PianoKeyboard*) piano_keyboard_new ();
- piano_keyboard_set_keyboard_cue (PIANO_KEYBOARD(_piano), 1);
-
piano = Glib::wrap ((GtkWidget*) _piano);
piano->set_flags (Gtk::CAN_FOCUS);