ardour
save_as_dialog.cc
Go to the documentation of this file.
1 /*
2  Copyright (C) 2015 Paul Davis
3 
4  This program is free software; you can redistribute it and/or modify
5  it under the terms of the GNU General Public License as published by
6  the Free Software Foundation; either version 2 of the License, or
7  (at your option) any later version.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program; if not, write to the Free Software
16  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
17 
18 */
19 
20 #include <gtkmm/stock.h>
21 
22 #include "ardour/session.h"
23 
24 #include "save_as_dialog.h"
25 
26 #include "i18n.h"
27 
28 using namespace std;
29 using namespace Gtk;
30 using namespace ARDOUR;
31 
33  : ArdourDialog (_("Save As"))
34  , switch_to_button (_("Switch to newly-saved version"))
35  , copy_media_button (_("Copy media to new session"))
36  , copy_external_button (_("Copy external media into new session"))
37  , no_include_media_button (_("Newly-saved session should be empty"))
38 {
39  VBox* vbox = get_vbox();
40 
41  vbox->set_spacing (6);
42 
43  HBox* hbox;
44  Label* label;
45 
46  hbox = manage (new HBox);
47  hbox->set_spacing (6);
48  label = manage (new Label (_("Save as session name")));
49  hbox->pack_start (*label, false, false);
50  hbox->pack_start (new_name_entry, true, true);
51  vbox->pack_start (*hbox, false, false);
52 
53  hbox = manage (new HBox);
54  hbox->set_spacing (6);
55  label = manage (new Label (_("Parent directory/folder")));
56  hbox->pack_start (*label, false, false);
57  hbox->pack_start (new_parent_folder_selector, true, true);
58  vbox->pack_start (*hbox, false, false);
59 
60  vbox->pack_start (switch_to_button, false, false);
61 
62  VBox* sub_vbox = manage (new VBox);
63  HBox* sub_hbox = manage (new HBox);
64  HBox* empty = manage (new HBox);
65 
66  sub_vbox->pack_start (copy_media_button, false, false);
67  sub_vbox->pack_start (copy_external_button, false, false);
68 
69  /* indent the two media-related buttons by some amount */
70  sub_hbox->set_spacing (24);
71  sub_hbox->pack_start (*empty, false, false);
72  sub_hbox->pack_start (*sub_vbox, false, false);
73 
74  vbox->pack_start (no_include_media_button, false, false);
75  vbox->pack_start (*sub_hbox, false, false);
76 
77  switch_to_button.set_active (true);
78  copy_media_button.set_active (true);
79 
80  vbox->show_all ();
81 
82  add_button (Stock::CANCEL, RESPONSE_CANCEL);
83  add_button (Stock::OK, RESPONSE_OK);
84 
85  no_include_media_button.signal_toggled ().connect (sigc::mem_fun (*this, &SaveAsDialog::no_include_toggled));
86 
87  new_parent_folder_selector.set_action (FILE_CHOOSER_ACTION_SELECT_FOLDER);
88  new_parent_folder_selector.set_current_folder (Glib::get_home_dir());
89  new_name_entry.signal_changed().connect (sigc::mem_fun (*this, &SaveAsDialog::name_entry_changed));
90  set_response_sensitive (RESPONSE_OK, false);
91 }
92 
93 void
95 {
96  if (no_include_media_button.get_active()) {
97  copy_media_button.set_sensitive (false);
98  copy_external_button.set_sensitive (false);
99  } else {
100  copy_media_button.set_sensitive (true);
101  copy_external_button.set_sensitive (true);
102  }
103 }
104 
105 void
107 {
108  if (!new_name_entry.get_text().empty()) {
109  set_response_sensitive (RESPONSE_OK);
110  }
111 }
112 
113 string
115 {
116  return new_parent_folder_selector.get_filename ();
117 }
118 
119 string
121 {
122  return new_name_entry.get_text ();
123 }
124 
125 bool
127 {
128  return switch_to_button.get_active ();
129 }
130 
131 bool
133 {
134  return copy_media_button.get_active ();
135 }
136 
137 bool
139 {
140  return copy_external_button.get_active ();
141 }
142 
143 void
145 {
146  new_name_entry.set_text ("");
147  set_response_sensitive (RESPONSE_OK, false);
148 }
149 
150 bool
152 {
153  return !no_include_media_button.get_active ();
154 }
void no_include_toggled()
bool include_media() const
Definition: ardour_ui.h:130
Gtk::CheckButton copy_external_button
Definition: Beats.hpp:239
Gtk::CheckButton no_include_media_button
void name_entry_changed()
#define _(Text)
Definition: i18n.h:11
Gtk::FileChooserButton new_parent_folder_selector
Definition: amp.h:29
bool switch_to() const
Gtk::CheckButton switch_to_button
Gtk::CheckButton copy_media_button
bool copy_external() const
std::string new_parent_folder() const
bool copy_media() const
Gtk::Entry new_name_entry
std::string new_name() const