summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/ardour.menus.in1
-rw-r--r--gtk2_ardour/ardour_ui.cc27
-rw-r--r--gtk2_ardour/ardour_ui.h1
-rw-r--r--gtk2_ardour/ardour_ui_ed.cc3
-rw-r--r--gtk2_ardour/wscript1
5 files changed, 33 insertions, 0 deletions
diff --git a/gtk2_ardour/ardour.menus.in b/gtk2_ardour/ardour.menus.in
index f0c8dfe1f7..5ab87c1e51 100644
--- a/gtk2_ardour/ardour.menus.in
+++ b/gtk2_ardour/ardour.menus.in
@@ -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'/>
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 7a59569254..46325d3ab6 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -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"
@@ -2699,6 +2700,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)
{
char timebuf[128];
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index ea97c313a7..0222012c9a 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -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 ();
diff --git a/gtk2_ardour/ardour_ui_ed.cc b/gtk2_ardour/ardour_ui_ed.cc
index b8f7468f87..c50beef9cd 100644
--- a/gtk2_ardour/ardour_ui_ed.cc
+++ b/gtk2_ardour/ardour_ui_ed.cc
@@ -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);
diff --git a/gtk2_ardour/wscript b/gtk2_ardour/wscript
index 3e6df3709d..5d175edcb5 100644
--- a/gtk2_ardour/wscript
+++ b/gtk2_ardour/wscript
@@ -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',