aboutsummaryrefslogtreecommitdiffstats
path: root/src/gui/MachinaGUI.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/MachinaGUI.cpp')
-rw-r--r--src/gui/MachinaGUI.cpp26
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()) {