diff options
-rw-r--r-- | gtk2_ardour/ardour.menus.in | 1 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 27 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.h | 1 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui_ed.cc | 3 | ||||
-rw-r--r-- | gtk2_ardour/wscript | 1 |
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', |