diff options
author | David Robillard <d@drobilla.net> | 2007-02-21 02:30:09 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-02-21 02:30:09 +0000 |
commit | 1429e4b2279566384ec09bfe3bfe7d7e0f0f79eb (patch) | |
tree | 9f0fb4eed56bacf52e738cd13029ec2683ee56e2 /src/gui/MachinaGUI.cpp | |
parent | a865ddb5043c4dc094b8f64d2cae60e0df16b8ac (diff) | |
download | machina-1429e4b2279566384ec09bfe3bfe7d7e0f0f79eb.tar.gz machina-1429e4b2279566384ec09bfe3bfe7d7e0f0f79eb.tar.bz2 machina-1429e4b2279566384ec09bfe3bfe7d7e0f0f79eb.zip |
Tempo based time in Machina (and related utilities added to Raul).
git-svn-id: http://svn.drobilla.net/lad/machina@324 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/gui/MachinaGUI.cpp')
-rw-r--r-- | src/gui/MachinaGUI.cpp | 81 |
1 files changed, 70 insertions, 11 deletions
diff --git a/src/gui/MachinaGUI.cpp b/src/gui/MachinaGUI.cpp index 546bf7d..9fa0dbb 100644 --- a/src/gui/MachinaGUI.cpp +++ b/src/gui/MachinaGUI.cpp @@ -68,12 +68,12 @@ gtkmm_set_width_for_given_text (Gtk::Widget &w, const gchar *text, -MachinaGUI::MachinaGUI(SharedPtr<Machina::Machine> machine) +MachinaGUI::MachinaGUI(SharedPtr<Machina::Engine> engine) : _pane_closed(false), _update_pane_position(true), _user_pane_position(0), _refresh(false), - _machine(machine), + _engine(engine), _maid(new Raul::Maid(32)) { /*_settings_filename = getenv("HOME"); @@ -109,10 +109,12 @@ MachinaGUI::MachinaGUI(SharedPtr<Machina::Machine> machine) xml->get_widget("machina_win", _main_window); xml->get_widget("about_win", _about_window); xml->get_widget("help_dialog", _help_dialog); + xml->get_widget("toolbar", _toolbar); xml->get_widget("open_menuitem", _menu_file_open); xml->get_widget("save_menuitem", _menu_file_save); xml->get_widget("save_as_menuitem", _menu_file_save_as); xml->get_widget("quit_menuitem", _menu_file_quit); + xml->get_widget("view_toolbar_menuitem", _menu_view_toolbar); xml->get_widget("view_refresh_menuitem", _menu_view_refresh); xml->get_widget("view_messages_menuitem", _menu_view_messages); xml->get_widget("help_about_menuitem", _menu_help_about); @@ -121,6 +123,11 @@ MachinaGUI::MachinaGUI(SharedPtr<Machina::Machine> machine) xml->get_widget("status_text", _status_text); xml->get_widget("main_paned", _main_paned); xml->get_widget("messages_expander", _messages_expander); + xml->get_widget("slave_radiobutton", _slave_radiobutton); + xml->get_widget("bpm_radiobutton", _bpm_radiobutton); + xml->get_widget("bpm_spinbutton", _bpm_spinbutton); + xml->get_widget("quantize_checkbutton", _quantize_checkbutton); + xml->get_widget("quantize_spinbutton", _quantize_spinbutton); xml->get_widget("zoom_full_but", _zoom_full_button); xml->get_widget("zoom_normal_but", _zoom_normal_button); @@ -136,14 +143,32 @@ MachinaGUI::MachinaGUI(SharedPtr<Machina::Machine> machine) _zoom_full_button->signal_clicked().connect(sigc::mem_fun(_canvas.get(), &MachinaCanvas::zoom_full)); - _menu_file_open->signal_activate().connect( sigc::mem_fun(this, &MachinaGUI::menu_file_open)); - _menu_file_save->signal_activate().connect( sigc::mem_fun(this, &MachinaGUI::menu_file_save)); - _menu_file_save_as->signal_activate().connect( sigc::mem_fun(this, &MachinaGUI::menu_file_save_as)); - _menu_file_quit->signal_activate().connect( sigc::mem_fun(this, &MachinaGUI::menu_file_quit)); - _menu_view_refresh->signal_activate().connect( sigc::mem_fun(this, &MachinaGUI::menu_view_refresh)); - _menu_view_messages->signal_toggled().connect( sigc::mem_fun(this, &MachinaGUI::show_messages_toggled)); - _menu_help_about->signal_activate().connect( sigc::mem_fun(this, &MachinaGUI::menu_help_about)); - _menu_help_help->signal_activate().connect( sigc::mem_fun(this, &MachinaGUI::menu_help_help)); + _menu_file_open->signal_activate().connect( + sigc::mem_fun(this, &MachinaGUI::menu_file_open)); + _menu_file_save->signal_activate().connect( + sigc::mem_fun(this, &MachinaGUI::menu_file_save)); + _menu_file_save_as->signal_activate().connect( + sigc::mem_fun(this, &MachinaGUI::menu_file_save_as)); + _menu_file_quit->signal_activate().connect( + sigc::mem_fun(this, &MachinaGUI::menu_file_quit)); + _menu_view_refresh->signal_activate().connect( + sigc::mem_fun(this, &MachinaGUI::menu_view_refresh)); + _menu_view_toolbar->signal_toggled().connect( + sigc::mem_fun(this, &MachinaGUI::show_toolbar_toggled)); + _menu_view_messages->signal_toggled().connect( + sigc::mem_fun(this, &MachinaGUI::show_messages_toggled)); + _menu_help_about->signal_activate().connect( + sigc::mem_fun(this, &MachinaGUI::menu_help_about)); + _menu_help_help->signal_activate().connect( + sigc::mem_fun(this, &MachinaGUI::menu_help_help)); + _slave_radiobutton->signal_toggled().connect( + sigc::mem_fun(this, &MachinaGUI::tempo_changed)); + _bpm_radiobutton->signal_toggled().connect( + sigc::mem_fun(this, &MachinaGUI::tempo_changed)); + _bpm_spinbutton->signal_changed().connect( + sigc::mem_fun(this, &MachinaGUI::tempo_changed)); + _quantize_checkbutton->signal_toggled().connect( + sigc::mem_fun(this, &MachinaGUI::quantize_changed)); connect_widgets(); @@ -167,6 +192,8 @@ MachinaGUI::MachinaGUI(SharedPtr<Machina::Machine> machine) _update_pane_position = true; _pane_closed = true; + _bpm_radiobutton->set_active(true); + // Idle callback to drive the maid (collect garbage) Glib::signal_timeout().connect( sigc::bind_return( @@ -216,6 +243,28 @@ MachinaGUI::idle_callback() void +MachinaGUI::update_toolbar() +{ + _bpm_spinbutton->set_sensitive(_bpm_radiobutton->get_active()); + _quantize_spinbutton->set_sensitive(_quantize_checkbutton->get_active()); +} + + +void +MachinaGUI::quantize_changed() +{ + _engine->set_quantization(1.0/(double)_quantize_spinbutton->get_value_as_int()); +} + + +void +MachinaGUI::tempo_changed() +{ + _engine->set_bpm(_bpm_spinbutton->get_value_as_int()); +} + + +void MachinaGUI::zoom(double z) { _canvas->set_zoom(z); @@ -308,7 +357,7 @@ MachinaGUI::menu_file_save() Raul::RDFWriter writer; writer.start_to_filename("test.machina.ttl"); - _machine->write_state(writer); + machine()->write_state(writer); writer.finish();} @@ -379,6 +428,16 @@ MachinaGUI::show_messages_toggled() void +MachinaGUI::show_toolbar_toggled() +{ + if (_menu_view_toolbar->get_active()) + _toolbar->show(); + else + _toolbar->hide(); +} + + +void MachinaGUI::menu_view_refresh() { assert(_canvas); |