GUI option to Exclude unused sources
[ardour.git] / gtk2_ardour / ardour_ui.cc
index 6c349260f77af6e6e99f5eba757bb4a34ab229fd..fcbb5b45028c770d912b6a6e49171f266a45ad85 100644 (file)
@@ -163,6 +163,7 @@ typedef uint64_t microseconds_t;
 #include "route_params_ui.h"
 #include "save_as_dialog.h"
 #include "script_selector.h"
+#include "session_archive_dialog.h"
 #include "session_dialog.h"
 #include "session_metadata_dialog.h"
 #include "session_option_editor.h"
@@ -1324,7 +1325,9 @@ If you still wish to quit, please use the\n\n\
        */
        save_ardour_state ();
 
-       key_editor->disconnect ();
+       if (key_editor.get (false)) {
+               key_editor->disconnect ();
+       }
 
        close_all_dialogs ();
 
@@ -2696,6 +2699,32 @@ ARDOUR_UI::save_session_as ()
        }
 }
 
+void
+ARDOUR_UI::archive_session ()
+{
+       if (!_session) {
+               return;
+       }
+
+       time_t n;
+       time (&n);
+       Glib::DateTime gdt (Glib::DateTime::create_now_local (n));
+
+       SessionArchiveDialog sad;
+       sad.set_name (_session->name() + gdt.format ("_%F_%H%M%S"));
+       int response = sad.run ();
+
+       if (response != Gtk::RESPONSE_OK) {
+               sad.hide ();
+               return;
+       }
+
+       if (_session->archive_session (sad.target_folder(), sad.name(), sad.encode_option (), sad.only_used_sources (), &sad)) {
+               MessageDialog msg (_("Session Archiving failed."));
+               msg.run ();
+       }
+}
+
 void
 ARDOUR_UI::quick_snapshot_session (bool switch_to_it)
 {