From aa11564fef8ed9330d42081288e8f310072c67d6 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 7 Dec 2007 17:27:06 +0000 Subject: Fix loading selector nodes. Choosing evolution target MIDI from GUI. git-svn-id: http://svn.drobilla.net/lad/machina@963 a436a847-0d15-0410-975c-d299462d15a1 --- src/gui/MachinaGUI.cpp | 40 +++++++++++++++++++++++++++++++++++++++- src/gui/MachinaGUI.hpp | 3 +++ src/gui/machina.glade | 48 ++++++++++++++++++++++++++++++++++-------------- 3 files changed, 76 insertions(+), 15 deletions(-) (limited to 'src/gui') diff --git a/src/gui/MachinaGUI.cpp b/src/gui/MachinaGUI.cpp index 0e872fd..4fdc6fa 100644 --- a/src/gui/MachinaGUI.cpp +++ b/src/gui/MachinaGUI.cpp @@ -78,6 +78,7 @@ MachinaGUI::MachinaGUI(SharedPtr engine) xml->get_widget("zoom_normal_but", _zoom_normal_button); xml->get_widget("zoom_full_but", _zoom_full_button); xml->get_widget("arrange_but", _arrange_button); + xml->get_widget("load_target_but", _load_target_button); xml->get_widget("evolve_but", _evolve_button); xml->get_widget("mutate_but", _mutate_button); xml->get_widget("compress_but", _compress_button); @@ -174,6 +175,7 @@ MachinaGUI::MachinaGUI(SharedPtr engine) Glib::signal_timeout().connect(sigc::mem_fun(this, &MachinaGUI::idle_callback), 100); #ifdef HAVE_EUGENE + _load_target_button->signal_clicked().connect(sigc::mem_fun(this, &MachinaGUI::load_target_clicked)); _evolve_button->signal_clicked().connect(sigc::mem_fun(this, &MachinaGUI::evolve_toggled)); Glib::signal_timeout().connect(sigc::mem_fun(this, &MachinaGUI::evolve_callback), 1000); #else @@ -251,11 +253,32 @@ MachinaGUI::arrange() } +void +MachinaGUI::load_target_clicked() +{ + Gtk::FileChooserDialog dialog(*_main_window, + "Load MIDI file for evolution", Gtk::FILE_CHOOSER_ACTION_OPEN); + dialog.set_local_only(false); + dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); + dialog.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_OK); + + Gtk::FileFilter filt; + filt.add_pattern("*.mid"); + filt.set_name("MIDI Files"); + dialog.set_filter(filt); + + const int result = dialog.run(); + + if (result == Gtk::RESPONSE_OK) + _target_filename = dialog.get_filename(); +} + + void MachinaGUI::evolve_toggled() { if (_evolve_button->get_active()) { - _evolver = SharedPtr(new Evolver("target.mid", _engine->machine())); + _evolver = SharedPtr(new Evolver(_target_filename, _engine->machine())); _evolve = true; stop_clicked(); _engine->driver()->set_machine(SharedPtr()); @@ -384,6 +407,11 @@ MachinaGUI::menu_file_open() dialog.set_local_only(false); dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); dialog.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_OK); + + Gtk::FileFilter filt; + filt.add_pattern("*.machina.ttl"); + filt.set_name("Machina Machines (Turtle/RDF)"); + dialog.set_filter(filt); const int result = dialog.run(); @@ -477,6 +505,11 @@ MachinaGUI::menu_import_midi() dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); dialog.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_OK); + Gtk::FileFilter filt; + filt.add_pattern("*.mid"); + filt.set_name("MIDI Files"); + dialog.set_filter(filt); + Gtk::HBox* extra_widget = Gtk::manage(new Gtk::HBox()); Gtk::SpinButton* length_sb = Gtk::manage(new Gtk::SpinButton()); length_sb->set_increments(1, 10); @@ -520,6 +553,11 @@ MachinaGUI::menu_export_midi() Gtk::FILE_CHOOSER_ACTION_SAVE); dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); dialog.add_button(Gtk::Stock::SAVE, Gtk::RESPONSE_OK); + + Gtk::FileFilter filt; + filt.add_pattern("*.mid"); + filt.set_name("MIDI Files"); + dialog.set_filter(filt); const int result = dialog.run(); diff --git a/src/gui/MachinaGUI.hpp b/src/gui/MachinaGUI.hpp index 3b6c340..26cfad4 100644 --- a/src/gui/MachinaGUI.hpp +++ b/src/gui/MachinaGUI.hpp @@ -63,6 +63,7 @@ protected: void menu_help_about(); void menu_help_help(); void arrange(); + void load_target_clicked(); void evolve_toggled(); void random_mutation(SharedPtr machine); void mutate(SharedPtr machine, unsigned mutation); @@ -83,6 +84,7 @@ protected: bool _evolve; string _save_uri; + string _target_filename; boost::shared_ptr _canvas; boost::shared_ptr _engine; @@ -121,6 +123,7 @@ protected: Gtk::ToolButton* _zoom_normal_button; Gtk::ToolButton* _zoom_full_button; Gtk::ToolButton* _arrange_button; + Gtk::ToolButton* _load_target_button; Gtk::ToggleToolButton* _evolve_button; Gtk::ToolButton* _mutate_button; Gtk::ToolButton* _compress_button; diff --git a/src/gui/machina.glade b/src/gui/machina.glade index e91553d..f991a08 100644 --- a/src/gui/machina.glade +++ b/src/gui/machina.glade @@ -403,6 +403,26 @@ False GTK_ICON_SIZE_SMALL_TOOLBAR True + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + + + False + + + + + True + GDK_POINTER_MOTION_MASK | GDK_POINTER_MOTION_HINT_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK + Load MIDI file as evolutionary goal + gtk-open + + + False + + True @@ -704,58 +724,58 @@ Selector nodes are shown in green. 4 8 - + True True - 60 0 127 1 10 10 + True + 1 0 999999 1 10 10 1 + 2 True 1 2 + 1 + 2 - + True 0 - Note: + Duration: + 1 + 2 GTK_FILL - + True 0 - Duration: + Note: - 1 - 2 GTK_FILL - + True True - True - 1 0 999999 1 10 10 + 60 0 127 1 10 10 1 - 2 True 1 2 - 1 - 2 -- cgit v1.2.1