From 1733f5bceffd4765f6edad4514d8d2c89223305c Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Tue, 20 Sep 2016 20:07:56 +0200 Subject: add missing files --- gtk2_ardour/session_archive_dialog.cc | 122 ++++++++++++++++++++++++++++++++++ gtk2_ardour/session_archive_dialog.h | 53 +++++++++++++++ 2 files changed, 175 insertions(+) create mode 100644 gtk2_ardour/session_archive_dialog.cc create mode 100644 gtk2_ardour/session_archive_dialog.h (limited to 'gtk2_ardour') diff --git a/gtk2_ardour/session_archive_dialog.cc b/gtk2_ardour/session_archive_dialog.cc new file mode 100644 index 0000000000..84e5c12e9b --- /dev/null +++ b/gtk2_ardour/session_archive_dialog.cc @@ -0,0 +1,122 @@ +/* + Copyright (C) 2015 Paul Davis + Copyright (C) 2016 Robin Gareus + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#include + +#include "ardour/session.h" + +#include "session_archive_dialog.h" + +#include "pbd/i18n.h" + +using namespace std; +using namespace Gtk; +using namespace ARDOUR; + +SessionArchiveDialog::SessionArchiveDialog () + : ArdourDialog (_("Zip/Archive Session")) + , ProgressReporter () +{ + VBox* vbox = get_vbox(); + + vbox->set_spacing (6); + + HBox* hbox; + Label* label; + + zip_ext.append_text (".tar.xz"); + zip_ext.set_active_text (".tar.xz"); + + hbox = manage (new HBox); + hbox->set_spacing (6); + label = manage (new Label (_("Archive Name"))); + hbox->pack_start (*label, false, false); + hbox->pack_start (name_entry, true, true); + hbox->pack_start (zip_ext, false, false); + vbox->pack_start (*hbox, false, false); + + hbox = manage (new HBox); + hbox->set_spacing (6); + label = manage (new Label (_("Target directory/folder"))); + hbox->pack_start (*label, false, false); + hbox->pack_start (target_folder_selector, true, true); + vbox->pack_start (*hbox, false, false); + + vbox->pack_start (progress_bar, true, true, 12); + progress_bar.set_text (_("Archiving")); + + vbox->show_all (); + progress_bar.hide (); + + add_button (Stock::CANCEL, RESPONSE_CANCEL); + add_button (Stock::OK, RESPONSE_OK); + + target_folder_selector.set_action (FILE_CHOOSER_ACTION_SELECT_FOLDER); + target_folder_selector.set_current_folder (Config->get_default_session_parent_dir ()); + name_entry.signal_changed().connect (sigc::mem_fun (*this, &SessionArchiveDialog::name_entry_changed)); + target_folder_selector.signal_current_folder_changed().connect (sigc::mem_fun (*this, &SessionArchiveDialog::name_entry_changed)); + target_folder_selector.signal_selection_changed().connect (sigc::mem_fun (*this, &SessionArchiveDialog::name_entry_changed)); + set_response_sensitive (RESPONSE_OK, false); +} + + +void +SessionArchiveDialog::name_entry_changed () +{ + if (name_entry.get_text().empty()) { + set_response_sensitive (RESPONSE_OK, false); + return; + } + + std::string dir = Glib::build_filename (target_folder(), name_entry.get_text()); + + if (Glib::file_test (dir, Glib::FILE_TEST_EXISTS)) { + set_response_sensitive (RESPONSE_OK, false); + return; + } + + set_response_sensitive (RESPONSE_OK); +} + +string +SessionArchiveDialog::target_folder () const +{ + return target_folder_selector.get_filename (); +} + +string +SessionArchiveDialog::name () const +{ + return name_entry.get_text (); +} + +void +SessionArchiveDialog::set_name (std::string name) +{ + name_entry.set_text (name); + name_entry_changed (); +} + +void +SessionArchiveDialog::update_progress_gui (float p) +{ + progress_bar.show (); + progress_bar.set_fraction (p); +} diff --git a/gtk2_ardour/session_archive_dialog.h b/gtk2_ardour/session_archive_dialog.h new file mode 100644 index 0000000000..ea5c6c64b7 --- /dev/null +++ b/gtk2_ardour/session_archive_dialog.h @@ -0,0 +1,53 @@ +/* + Copyright (C) 2015 Paul Davis + Copyright (C) 2016 Robin Gareus + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +*/ + +#ifndef _gtkardour_session_archive_dialog_h_ +#define _gtkardour_session_archive_dialog_h_ + +#include +#include +#include +#include +#include + +#include "ardour_dialog.h" +#include "progress_reporter.h" + +class SessionArchiveDialog : public ArdourDialog, public ProgressReporter +{ +public: + SessionArchiveDialog (); + + std::string target_folder () const; + std::string name () const; + void set_name (std::string); + + +private: + Gtk::FileChooserButton target_folder_selector; + Gtk::Entry name_entry; + Gtk::ComboBoxText zip_ext; + Gtk::ProgressBar progress_bar; + + void name_entry_changed (); + void update_progress_gui (float); +}; + +#endif /* __ardour_gtk_tempo_dialog_h__ */ -- cgit v1.2.3