GUI support to archive session
authorRobin Gareus <robin@gareus.org>
Tue, 20 Sep 2016 17:46:49 +0000 (19:46 +0200)
committerRobin Gareus <robin@gareus.org>
Tue, 20 Sep 2016 17:52:56 +0000 (19:52 +0200)
gtk2_ardour/ardour.menus.in
gtk2_ardour/ardour_ui.cc
gtk2_ardour/ardour_ui.h
gtk2_ardour/ardour_ui_ed.cc
gtk2_ardour/wscript

index f0c8dfe1f719695cadf65a734b063593e056737e..5ab87c1e5112ce5f9b593866e105c3f2eddb4729 100644 (file)
@@ -8,6 +8,7 @@
       <separator/>
       <menuitem action='Save'/>
       <menuitem action='SaveAs'/>
+      <menuitem action='Archive'/>
 #ifndef WINDOWS /* can't move open files. */
       <menuitem action='Rename'/>
       <menuitem action='SnapshotStay'/>
index 7a5956925418dd715368e585296ac06b2c8cd5bf..46325d3ab619105ede19fc7e4e39e388e00261a3 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"
@@ -2698,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)) {
+               MessageDialog msg (_("Session Archiving failed."));
+               msg.run ();
+       }
+}
+
 void
 ARDOUR_UI::quick_snapshot_session (bool switch_to_it)
 {
index ea97c313a71ed200fc9b2f332aa0ecbcda3a1f90..0222012c9a17d55b63030d4905151289ec3cb455 100644 (file)
@@ -684,6 +684,7 @@ private:
 
        bool save_as_progress_update (float fraction, int64_t cnt, int64_t total, Gtk::Label* label, Gtk::ProgressBar* bar);
        void save_session_as ();
+       void archive_session ();
        void rename_session ();
 
        int         create_mixer ();
index b8f7468f8774107a842c803be8f2dc889e624a80..c50beef9cd70d378e18f56872f258f90766f27db 100644 (file)
@@ -208,6 +208,9 @@ ARDOUR_UI::install_actions ()
        act = global_actions.register_action (main_actions, X_("SaveAs"), _("Save As..."), sigc::mem_fun(*this, &ARDOUR_UI::save_session_as));
        ActionManager::session_sensitive_actions.push_back (act);
 
+       act = global_actions.register_action (main_actions, X_("Archive"), _("Archive..."), sigc::mem_fun(*this, &ARDOUR_UI::archive_session));
+       ActionManager::session_sensitive_actions.push_back (act);
+
        act = global_actions.register_action (main_actions, X_("Rename"), _("Rename..."), sigc::mem_fun(*this, &ARDOUR_UI::rename_session));
        ActionManager::session_sensitive_actions.push_back (act);
        ActionManager::write_sensitive_actions.push_back (act);
index 3e6df3709d72196d4c7f4b6d3d96cf8489615f1d..5d175edcb52c4474ba211aae49acd02a18beaea2 100644 (file)
@@ -226,6 +226,7 @@ gtk2_ardour_sources = [
         'selection.cc',
         'selection_memento.cc',
         'send_ui.cc',
+        'session_archive_dialog.cc',
         'session_dialog.cc',
         'session_import_dialog.cc',
         'session_metadata_dialog.cc',