From 5232e0f2aff7cec5b5842aa414c71d8119e70e9f Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 20 Sep 2016 19:46:49 +0200 Subject: [PATCH] GUI support to archive session --- gtk2_ardour/ardour.menus.in | 1 + gtk2_ardour/ardour_ui.cc | 27 +++++++++++++++++++++++++++ gtk2_ardour/ardour_ui.h | 1 + gtk2_ardour/ardour_ui_ed.cc | 3 +++ gtk2_ardour/wscript | 1 + 5 files changed, 33 insertions(+) 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 @@ + #ifndef WINDOWS /* can't move open files. */ 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" @@ -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) { 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',