diff options
author | David Robillard <d@drobilla.net> | 2007-03-12 01:33:51 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-03-12 01:33:51 +0000 |
commit | ee76743c774f64759daef42d416d3fb7bbc4a473 (patch) | |
tree | 0b82b468d0433c3d5c1c68d28d3a2f78e32ce104 /src/gui | |
parent | 04c6f60d1f1fb94f6a9dca81439026db22ebb88e (diff) | |
download | machina-ee76743c774f64759daef42d416d3fb7bbc4a473.tar.gz machina-ee76743c774f64759daef42d416d3fb7bbc4a473.tar.bz2 machina-ee76743c774f64759daef42d416d3fb7bbc4a473.zip |
Flowcanvas resizing, auto-arrange resizes if necessary.
Per-track SMF reading (raul and machina)
git-svn-id: http://svn.drobilla.net/lad/machina@354 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/MachinaGUI.cpp | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/src/gui/MachinaGUI.cpp b/src/gui/MachinaGUI.cpp index 1266147..8f8e607 100644 --- a/src/gui/MachinaGUI.cpp +++ b/src/gui/MachinaGUI.cpp @@ -445,15 +445,33 @@ MachinaGUI::menu_import_midi() dialog.add_button(Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL); dialog.add_button(Gtk::Stock::OPEN, Gtk::RESPONSE_OK); + Gtk::HBox* extra_widget = Gtk::manage(new Gtk::HBox()); + Gtk::SpinButton* track_sb = Gtk::manage(new Gtk::SpinButton()); + track_sb->set_increments(1, 10); + track_sb->set_range(1, 256); + extra_widget->pack_start(*Gtk::manage(new Gtk::Label("")), true, true); + extra_widget->pack_start(*Gtk::manage(new Gtk::Label("Track: ")), false, false); + extra_widget->pack_start(*track_sb, false, false); + dialog.set_extra_widget(*extra_widget); + extra_widget->show_all(); + const int result = dialog.run(); if (result == Gtk::RESPONSE_OK) { SharedPtr<Machina::SMFDriver> file_driver(new Machina::SMFDriver()); - SharedPtr<Machina::Machine> machine = file_driver->learn(dialog.get_uri()); - machine->activate(); - machine->reset(); - _engine->driver()->set_machine(machine); - _canvas->build(machine); + SharedPtr<Machina::Machine> machine = file_driver->learn(dialog.get_uri(), + track_sb->get_value_as_int()); + + if (machine) { + machine->activate(); + machine->reset(); + _engine->driver()->set_machine(machine); + _canvas->build(machine); + } else { + Gtk::MessageDialog msg_dialog(*_main_window, "Error loading MIDI file", + false, Gtk::MESSAGE_ERROR, Gtk::BUTTONS_OK, true); + msg_dialog.run(); + } } } |