diff options
author | David Robillard <d@drobilla.net> | 2007-02-25 04:11:07 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-02-25 04:11:07 +0000 |
commit | 9d657891ea68ab979bb8c1877bfea656db0bdb1e (patch) | |
tree | 7fb3f9b9c825adfca34b25c8068a71d2c8940ed2 /src/gui/MachinaGUI.cpp | |
parent | 2f3580a8d7b743811e1bc78487e56210d564e4aa (diff) | |
download | machina-9d657891ea68ab979bb8c1877bfea656db0bdb1e.tar.gz machina-9d657891ea68ab979bb8c1877bfea656db0bdb1e.tar.bz2 machina-9d657891ea68ab979bb8c1877bfea656db0bdb1e.zip |
More serialization work (loading, saving works from GUI).
git-svn-id: http://svn.drobilla.net/lad/machina@338 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'src/gui/MachinaGUI.cpp')
-rw-r--r-- | src/gui/MachinaGUI.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/gui/MachinaGUI.cpp b/src/gui/MachinaGUI.cpp index 77dcbc5..3dd0c96 100644 --- a/src/gui/MachinaGUI.cpp +++ b/src/gui/MachinaGUI.cpp @@ -351,8 +351,21 @@ MachinaGUI::menu_file_quit() void MachinaGUI::menu_file_open() { - cerr << "open\n"; + Gtk::FileChooserDialog dialog(*_main_window, "Open Machine", 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); + const int result = dialog.run(); + + if (result == Gtk::RESPONSE_OK) { + SharedPtr<Machina::Machine> new_machine = _engine->load_machine(dialog.get_uri()); + _canvas->destroy(); + _canvas->build(new_machine); + _save_filename = dialog.get_filename(); + } } @@ -387,8 +400,8 @@ MachinaGUI::menu_file_save_as() if (result == Gtk::RESPONSE_OK) { string filename = dialog.get_filename(); - if (filename.length() < 12 || filename.substr(filename.length()-12) != ".machina.ttl") - filename += ".machina.ttl"; + if (filename.length() < 8 || filename.substr(filename.length()-8) != ".machina") + filename += ".machina"; bool confirm = false; std::fstream fin; |