aboutsummaryrefslogtreecommitdiffstats
path: root/src/gui/MachinaGUI.cpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2007-02-25 04:11:07 +0000
committerDavid Robillard <d@drobilla.net>2007-02-25 04:11:07 +0000
commit9d657891ea68ab979bb8c1877bfea656db0bdb1e (patch)
tree7fb3f9b9c825adfca34b25c8068a71d2c8940ed2 /src/gui/MachinaGUI.cpp
parent2f3580a8d7b743811e1bc78487e56210d564e4aa (diff)
downloadmachina-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.cpp19
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;