diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2015-04-22 14:11:00 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-04-22 16:09:08 -0400 |
commit | e47a22a118b4b3a167f3248e3bb34b3dc40224d3 (patch) | |
tree | c2de8ca1be1864e7e0013ceae8d5cfc9f5c861a2 | |
parent | b38ab89d92a5f963c90da885409da541ad081a65 (diff) |
make save-as dialog be persistent, to retain settings across save-as
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 26 | ||||
-rw-r--r-- | gtk2_ardour/ardour_ui.h | 4 | ||||
-rw-r--r-- | gtk2_ardour/save_as_dialog.cc | 7 | ||||
-rw-r--r-- | gtk2_ardour/save_as_dialog.h | 4 |
4 files changed, 31 insertions, 10 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index a1bd464631..e5a0a94460 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -240,7 +240,7 @@ ARDOUR_UI::ARDOUR_UI (int *argcp, char **argvp[], const char* localedir) , big_clock_window (X_("big-clock"), _("Big Clock"), boost::bind (&ARDOUR_UI::create_big_clock_window, this)) , audio_port_matrix (X_("audio-connection-manager"), _("Audio Connections"), boost::bind (&ARDOUR_UI::create_global_port_matrix, this, ARDOUR::DataType::AUDIO)) , midi_port_matrix (X_("midi-connection-manager"), _("MIDI Connections"), boost::bind (&ARDOUR_UI::create_global_port_matrix, this, ARDOUR::DataType::MIDI)) - + , save_as_dialog (0) , _status_bar_visibility (X_("status-bar")) , _feedback_exists (false) , _log_not_acknowledged (LogLevelNone) @@ -2403,9 +2403,17 @@ ARDOUR_UI::save_session_as () return; } - SaveAsDialog sad; + if (!save_as_dialog) { + save_as_dialog = new SaveAsDialog; + } else { + save_as_dialog->clear_name (); + } + + int response = save_as_dialog->run (); - switch (sad.run()) { + save_as_dialog->hide (); + + switch (response) { case Gtk::RESPONSE_OK: break; default: @@ -2421,13 +2429,13 @@ ARDOUR_UI::save_session_as () label.show (); progress_bar.show (); - Session::SaveAs sa; + Session::SaveAs sa; - sa.new_parent_folder = sad.new_parent_folder (); - sa.new_name = sad.new_name (); - sa.switch_to = sad.switch_to(); - sa.copy_media = sad.copy_media(); - sa.copy_external = sad.copy_external(); + sa.new_parent_folder = save_as_dialog->new_parent_folder (); + sa.new_name = save_as_dialog->new_name (); + sa.switch_to = save_as_dialog->switch_to(); + sa.copy_media = save_as_dialog->copy_media(); + sa.copy_external = save_as_dialog->copy_external(); /* this signal will be emitted from within this, the calling thread, * after every file is copied. It provides information on percentage diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h index 2bbd0f6b79..23764842eb 100644 --- a/gtk2_ardour/ardour_ui.h +++ b/gtk2_ardour/ardour_ui.h @@ -102,6 +102,7 @@ class Mixer_UI; class PublicEditor; class RCOptionEditor; class RouteParams_UI; +class SaveAsDialog; class SessionDialog; class SessionOptionEditor; class ShuttleControl; @@ -617,6 +618,9 @@ class ARDOUR_UI : public Gtkmm2ext::UI, public ARDOUR::SessionHandlePtr guint32 last_key_press_time; void snapshot_session (bool switch_to_it); + + SaveAsDialog* save_as_dialog; + bool save_as_progress_update (float fraction, int64_t cnt, int64_t total, Gtk::Label* label, Gtk::ProgressBar* bar); void save_session_as (); void rename_session (); diff --git a/gtk2_ardour/save_as_dialog.cc b/gtk2_ardour/save_as_dialog.cc index 504d479e72..ca2c1f90fa 100644 --- a/gtk2_ardour/save_as_dialog.cc +++ b/gtk2_ardour/save_as_dialog.cc @@ -111,3 +111,10 @@ SaveAsDialog::copy_external () const { return copy_external_button.get_active (); } + +void +SaveAsDialog::clear_name () +{ + new_name_entry.set_text (""); + set_response_sensitive (RESPONSE_OK, false); +} diff --git a/gtk2_ardour/save_as_dialog.h b/gtk2_ardour/save_as_dialog.h index 140eb9fa7b..5ba522b318 100644 --- a/gtk2_ardour/save_as_dialog.h +++ b/gtk2_ardour/save_as_dialog.h @@ -37,7 +37,9 @@ public: bool switch_to () const; bool copy_media () const; bool copy_external () const; - + + void clear_name (); + private: Gtk::CheckButton switch_to_button; Gtk::CheckButton copy_media_button; |