diff options
Diffstat (limited to 'src/gui/MachinaGUI.cpp')
-rw-r--r-- | src/gui/MachinaGUI.cpp | 75 |
1 files changed, 42 insertions, 33 deletions
diff --git a/src/gui/MachinaGUI.cpp b/src/gui/MachinaGUI.cpp index 6e3b188..f162ebd 100644 --- a/src/gui/MachinaGUI.cpp +++ b/src/gui/MachinaGUI.cpp @@ -38,9 +38,10 @@ #include "machina/Evolver.hpp" #endif -using namespace Machina; +namespace Machina { +namespace GUI { -MachinaGUI::MachinaGUI(SharedPtr<Machina::Engine> engine) +MachinaGUI::MachinaGUI(SPtr<Machina::Engine> engine) : _refresh(false) , _evolve(false) , _unit(TimeUnit::BEATS, 19200) @@ -49,8 +50,7 @@ MachinaGUI::MachinaGUI(SharedPtr<Machina::Engine> engine) , _controller(new Machina::Controller(_engine, *_client_model.get())) , _maid(new Raul::Maid()) { - _canvas = boost::shared_ptr<MachinaCanvas>( - new MachinaCanvas(this, 1600*2, 1200*2)); + _canvas = SPtr<MachinaCanvas>(new MachinaCanvas(this, 1600*2, 1200*2)); Glib::RefPtr<Gtk::Builder> xml = WidgetFactory::create(); @@ -146,23 +146,30 @@ MachinaGUI::MachinaGUI(SharedPtr<Machina::Engine> engine) _quantize_spinbutton->signal_changed().connect( sigc::mem_fun(this, &MachinaGUI::quantize_changed)); - _mutate_button->signal_clicked().connect(sigc::bind( - sigc::mem_fun(this, &MachinaGUI::random_mutation), - SharedPtr<Machine>())); - _compress_button->signal_clicked().connect(sigc::hide_return(sigc::bind( - sigc::mem_fun(this, &MachinaGUI::mutate), SharedPtr<Machine>(), 0))); - _add_node_button->signal_clicked().connect(sigc::bind( - sigc::mem_fun(this, &MachinaGUI::mutate), SharedPtr<Machine>(), 1)); - _remove_node_button->signal_clicked().connect(sigc::bind( - sigc::mem_fun(this, &MachinaGUI::mutate), SharedPtr<Machine>(), 2)); - _adjust_node_button->signal_clicked().connect(sigc::bind( - sigc::mem_fun(this, &MachinaGUI::mutate), SharedPtr<Machine>(), 3)); - _add_edge_button->signal_clicked().connect(sigc::bind( - sigc::mem_fun(this, &MachinaGUI::mutate), SharedPtr<Machine>(), 4)); - _remove_edge_button->signal_clicked().connect(sigc::bind( - sigc::mem_fun(this, &MachinaGUI::mutate), SharedPtr<Machine>(), 5)); - _adjust_edge_button->signal_clicked().connect(sigc::bind( - sigc::mem_fun(this, &MachinaGUI::mutate), SharedPtr<Machine>(), 6)); + _mutate_button->signal_clicked().connect( + sigc::bind(sigc::mem_fun(this, &MachinaGUI::random_mutation), + SPtr<Machine>())); + _compress_button->signal_clicked().connect( + sigc::hide_return(sigc::bind(sigc::mem_fun(this, &MachinaGUI::mutate), + SPtr<Machine>(), 0))); + _add_node_button->signal_clicked().connect( + sigc::bind(sigc::mem_fun(this, &MachinaGUI::mutate), + SPtr<Machine>(), 1)); + _remove_node_button->signal_clicked().connect( + sigc::bind(sigc::mem_fun(this, &MachinaGUI::mutate), + SPtr<Machine>(), 2)); + _adjust_node_button->signal_clicked().connect( + sigc::bind(sigc::mem_fun(this, &MachinaGUI::mutate), + SPtr<Machine>(), 3)); + _add_edge_button->signal_clicked().connect( + sigc::bind(sigc::mem_fun(this, &MachinaGUI::mutate), + SPtr<Machine>(), 4)); + _remove_edge_button->signal_clicked().connect( + sigc::bind(sigc::mem_fun(this, &MachinaGUI::mutate), + SPtr<Machine>(), 5)); + _adjust_edge_button->signal_clicked().connect( + sigc::bind(sigc::mem_fun(this, &MachinaGUI::mutate), + SPtr<Machine>(), 6)); connect_widgets(); @@ -177,9 +184,8 @@ MachinaGUI::MachinaGUI(SharedPtr<Machina::Engine> engine) // Idle callback to drive the maid (collect garbage) Glib::signal_timeout().connect( - sigc::bind_return( - sigc::mem_fun(_maid.get(), &Raul::Maid::cleanup), - true), + sigc::bind_return(sigc::mem_fun(_maid.get(), &Raul::Maid::cleanup), + true), 1000); // Idle callback to update node states @@ -289,16 +295,16 @@ void MachinaGUI::evolve_toggled() { if (_evolve_button->get_active()) { - _evolver = SharedPtr<Evolver>( + _evolver = SPtr<Evolver>( new Evolver(_unit, _target_filename, _engine->machine())); _evolve = true; stop_clicked(); - _engine->driver()->set_machine(SharedPtr<Machine>()); + _engine->driver()->set_machine(SPtr<Machine>()); _evolver->start(); } else { _evolver->stop(); _evolve = false; - SharedPtr<Machine> new_machine = SharedPtr<Machine>( + SPtr<Machine> new_machine = SPtr<Machine>( new Machine(*_evolver->best())); _engine->driver()->set_machine(new_machine); _canvas->build(new_machine, _menu_view_labels->get_active()); @@ -309,7 +315,7 @@ MachinaGUI::evolve_toggled() #endif void -MachinaGUI::random_mutation(SharedPtr<Machine> machine) +MachinaGUI::random_mutation(SPtr<Machine> machine) { if (!machine) machine = _engine->machine(); @@ -318,7 +324,7 @@ MachinaGUI::random_mutation(SharedPtr<Machine> machine) } void -MachinaGUI::mutate(SharedPtr<Machine> machine, unsigned mutation) +MachinaGUI::mutate(SPtr<Machine> machine, unsigned mutation) { #if 0 if (!machine) @@ -423,7 +429,7 @@ MachinaGUI::menu_file_open() const int result = dialog.run(); if (result == Gtk::RESPONSE_OK) { - SharedPtr<Machina::Machine> new_machine = _engine->load_machine(dialog.get_uri()); + SPtr<Machina::Machine> new_machine = _engine->load_machine(dialog.get_uri()); if (new_machine) { _canvas->destroy(); _controller->announce(new_machine); @@ -530,7 +536,7 @@ MachinaGUI::menu_import_midi() const double length_dbl = length_sb->get_value_as_int(); const Raul::TimeStamp length(_unit, length_dbl); - SharedPtr<Machina::Machine> machine = _engine->load_machine_midi( + SPtr<Machina::Machine> machine = _engine->load_machine_midi( dialog.get_filename(), 0.0, length); if (machine) { @@ -689,13 +695,16 @@ MachinaGUI::play_toggled() } void -MachinaGUI::on_new_object(SharedPtr<Client::ClientObject> object) +MachinaGUI::on_new_object(SPtr<Client::ClientObject> object) { _canvas->on_new_object(object); } void -MachinaGUI::on_erase_object(SharedPtr<Client::ClientObject> object) +MachinaGUI::on_erase_object(SPtr<Client::ClientObject> object) { _canvas->on_erase_object(object); } + +} // namespace Machina +} // namespace GUI |