diff options
Diffstat (limited to 'src/gui/MachinaGUI.cpp')
-rw-r--r-- | src/gui/MachinaGUI.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/gui/MachinaGUI.cpp b/src/gui/MachinaGUI.cpp index 1b2b1f5..1d4d272 100644 --- a/src/gui/MachinaGUI.cpp +++ b/src/gui/MachinaGUI.cpp @@ -71,13 +71,13 @@ MachinaGUI::MachinaGUI(SPtr<machina::Engine> engine) xml->get_widget("help_about_menuitem", _menu_help_about); xml->get_widget("help_help_menuitem", _menu_help_help); xml->get_widget("canvas_scrolledwindow", _canvas_scrolledwindow); - xml->get_widget("step_record_checkbutton", _step_record_checkbutton); xml->get_widget("bpm_spinbutton", _bpm_spinbutton); xml->get_widget("quantize_checkbutton", _quantize_checkbutton); xml->get_widget("quantize_spinbutton", _quantize_spinbutton); - xml->get_widget("record_but", _record_button); xml->get_widget("stop_but", _stop_button); xml->get_widget("play_but", _play_button); + xml->get_widget("record_but", _record_button); + xml->get_widget("step_record_but", _step_record_button); xml->get_widget("zoom_normal_but", _zoom_normal_button); xml->get_widget("zoom_full_but", _zoom_full_button); xml->get_widget("chain_but", _chain_button); @@ -101,12 +101,14 @@ MachinaGUI::MachinaGUI(SPtr<machina::Engine> engine) _canvas_scrolledwindow->property_hadjustment().get_value()->set_step_increment(10); _canvas_scrolledwindow->property_vadjustment().get_value()->set_step_increment(10); - _record_button->signal_toggled().connect( - sigc::mem_fun(this, &MachinaGUI::record_toggled)); _stop_button->signal_toggled().connect( sigc::mem_fun(this, &MachinaGUI::stop_toggled)); _play_button->signal_toggled().connect( sigc::mem_fun(this, &MachinaGUI::play_toggled)); + _record_button->signal_toggled().connect( + sigc::mem_fun(this, &MachinaGUI::record_toggled)); + _step_record_button->signal_toggled().connect( + sigc::mem_fun(this, &MachinaGUI::step_record_toggled)); _zoom_normal_button->signal_clicked().connect(sigc::bind( sigc::mem_fun(this, &MachinaGUI::zoom), 1.0)); @@ -179,7 +181,6 @@ MachinaGUI::MachinaGUI(SPtr<machina::Engine> engine) _main_window->present(); - _step_record_checkbutton->show(); _quantize_checkbutton->set_active(false); update_toolbar(); @@ -371,6 +372,7 @@ MachinaGUI::update_toolbar() { const Driver::PlayState state = _engine->driver()->play_state(); _record_button->set_active(state == Driver::PlayState::RECORDING); + _step_record_button->set_active(state == Driver::PlayState::STEP_RECORDING); _play_button->set_active(state == Driver::PlayState::PLAYING); _quantize_spinbutton->set_sensitive(_quantize_checkbutton->get_active()); } @@ -666,7 +668,8 @@ MachinaGUI::stop_toggled() if (_stop_button->get_active()) { const Driver::PlayState old_state = _engine->driver()->play_state(); _engine->driver()->set_play_state(Driver::PlayState::STOPPED); - if (old_state == Driver::PlayState::RECORDING) { + if (old_state == Driver::PlayState::RECORDING || + old_state == Driver::PlayState::STEP_RECORDING) { rebuild_canvas(); } } @@ -678,7 +681,8 @@ MachinaGUI::play_toggled() if (_play_button->get_active()) { const Driver::PlayState old_state = _engine->driver()->play_state(); _engine->driver()->set_play_state(Driver::PlayState::PLAYING); - if (old_state == Driver::PlayState::RECORDING) { + if (old_state == Driver::PlayState::RECORDING || + old_state == Driver::PlayState::STEP_RECORDING) { rebuild_canvas(); } } @@ -693,6 +697,14 @@ MachinaGUI::record_toggled() } void +MachinaGUI::step_record_toggled() +{ + if (_step_record_button->get_active()) { + _engine->driver()->set_play_state(Driver::PlayState::STEP_RECORDING); + } +} + +void MachinaGUI::chain_toggled() { if (_chain_button->get_active()) { |