summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2020-03-24 10:38:24 -0600
committerPaul Davis <paul@linuxaudiosystems.com>2020-03-24 14:10:39 -0600
commit5d4ad01b58531a520805420be4b076aa119f8869 (patch)
treea2f16dc52865b3ee6f49bb4d8aeb0c3c5e8da215 /gtk2_ardour
parent57669893198bd4c7bbf66b3a154fe14726ee62db (diff)
introduce the idea of an "unnamed" session (GUI edition)
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/ardour_ui.h6
-rw-r--r--gtk2_ardour/ardour_ui_session.cc18
-rw-r--r--gtk2_ardour/ardour_ui_startup.cc3
-rw-r--r--gtk2_ardour/startup_fsm.cc2
-rw-r--r--gtk2_ardour/startup_fsm.h2
5 files changed, 18 insertions, 13 deletions
diff --git a/gtk2_ardour/ardour_ui.h b/gtk2_ardour/ardour_ui.h
index 7d55b976af..3daa145ff8 100644
--- a/gtk2_ardour/ardour_ui.h
+++ b/gtk2_ardour/ardour_ui.h
@@ -212,7 +212,7 @@ public:
int load_session (const std::string& path, const std::string& snapshot, std::string mix_template = std::string());
bool session_load_in_progress;
- int build_session (std::string const& path, std::string const& snapshot, std::string const& session_template, ARDOUR::BusProfile const&, bool from_startup_fsm = false);
+ int build_session (std::string const& path, std::string const& snapshot, std::string const& session_template, ARDOUR::BusProfile const&, bool from_startup_fsm, bool unnamed);
bool session_is_new() const { return _session_is_new; }
ARDOUR::Session* the_session() { return _session; }
@@ -445,8 +445,8 @@ private:
void audio_midi_setup_reconfigure_done (int response, std::string path, std::string snapshot, std::string mix_template);
int load_session_stage_two (const std::string& path, const std::string& snapshot, std::string mix_template = std::string());
- void audio_midi_setup_for_new_session_done (int response, std::string path, std::string snapshot, std::string session_template, ARDOUR::BusProfile const&);
- int build_session_stage_two (std::string const& path, std::string const& snapshot, std::string const& session_template, ARDOUR::BusProfile const&);
+ void audio_midi_setup_for_new_session_done (int response, std::string path, std::string snapshot, std::string session_template, ARDOUR::BusProfile const&, bool unnamed);
+ int build_session_stage_two (std::string const& path, std::string const& snapshot, std::string const& session_template, ARDOUR::BusProfile const&, bool unnamed);
sigc::connection _engine_dialog_connection;
void save_session_at_its_request (std::string);
diff --git a/gtk2_ardour/ardour_ui_session.cc b/gtk2_ardour/ardour_ui_session.cc
index 3c7060d1e7..2cd8dc5940 100644
--- a/gtk2_ardour/ardour_ui_session.cc
+++ b/gtk2_ardour/ardour_ui_session.cc
@@ -120,7 +120,7 @@ ARDOUR_UI::build_session_from_dialog (SessionDialog& sd, const std::string& sess
bus_profile.master_out_channels = (uint32_t) sd.master_channel_count();
}
- build_session (session_path, session_name, session_template, bus_profile);
+ build_session (session_path, session_name, session_template, bus_profile, false, !sd.was_new_name_edited());
}
/** This is only ever used once Ardour is already running with a session
@@ -552,7 +552,7 @@ ARDOUR_UI::load_session_stage_two (const std::string& path, const std::string& s
}
int
-ARDOUR_UI::build_session (const std::string& path, const std::string& snap_name, const std::string& session_template, BusProfile const& bus_profile, bool from_startup_fsm)
+ARDOUR_UI::build_session (const std::string& path, const std::string& snap_name, const std::string& session_template, BusProfile const& bus_profile, bool from_startup_fsm, bool unnamed)
{
int x;
@@ -571,11 +571,11 @@ ARDOUR_UI::build_session (const std::string& path, const std::string& snap_name,
* asked for the SR (even if try-autostart-engine is set)
*/
if (from_startup_fsm && AudioEngine::instance()->running ()) {
- return build_session_stage_two (path, snap_name, session_template, bus_profile);
+ return build_session_stage_two (path, snap_name, session_template, bus_profile, unnamed);
}
/* Sample-rate cannot be changed when JACK is running */
if (!ARDOUR::AudioEngine::instance()->setup_required () && AudioEngine::instance()->running ()) {
- return build_session_stage_two (path, snap_name, session_template, bus_profile);
+ return build_session_stage_two (path, snap_name, session_template, bus_profile, unnamed);
}
/* Work-around missing "OK" button:
@@ -591,7 +591,7 @@ ARDOUR_UI::build_session (const std::string& path, const std::string& snap_name,
audio_midi_setup->set_position (WIN_POS_CENTER);
audio_midi_setup->set_modal ();
audio_midi_setup->present ();
- _engine_dialog_connection = audio_midi_setup->signal_response().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::audio_midi_setup_for_new_session_done), path, snap_name, session_template, bus_profile));
+ _engine_dialog_connection = audio_midi_setup->signal_response().connect (sigc::bind (sigc::mem_fun (*this, &ARDOUR_UI::audio_midi_setup_for_new_session_done), path, snap_name, session_template, bus_profile, unnamed));
/* not done yet, but we're avoiding modal dialogs */
return 0;
@@ -599,7 +599,7 @@ ARDOUR_UI::build_session (const std::string& path, const std::string& snap_name,
void
-ARDOUR_UI::audio_midi_setup_for_new_session_done (int response, std::string path, std::string snap_name, std::string template_name, BusProfile const& bus_profile)
+ARDOUR_UI::audio_midi_setup_for_new_session_done (int response, std::string path, std::string snap_name, std::string template_name, BusProfile const& bus_profile, bool unnamed)
{
_engine_dialog_connection.disconnect ();
@@ -617,18 +617,18 @@ ARDOUR_UI::audio_midi_setup_for_new_session_done (int response, std::string path
audio_midi_setup->set_modal (false);
audio_midi_setup->hide();
- build_session_stage_two (path, snap_name, template_name, bus_profile);
+ build_session_stage_two (path, snap_name, template_name, bus_profile, unnamed);
}
int
-ARDOUR_UI::build_session_stage_two (std::string const& path, std::string const& snap_name, std::string const& session_template, BusProfile const& bus_profile)
+ARDOUR_UI::build_session_stage_two (std::string const& path, std::string const& snap_name, std::string const& session_template, BusProfile const& bus_profile, bool unnamed)
{
Session* new_session;
bool meta_session = !session_template.empty() && session_template.substr (0, 11) == "urn:ardour:";
try {
- new_session = new Session (*AudioEngine::instance(), path, snap_name, bus_profile.master_out_channels > 0 ? &bus_profile : NULL, meta_session ? "" : session_template);
+ new_session = new Session (*AudioEngine::instance(), path, snap_name, bus_profile.master_out_channels > 0 ? &bus_profile : NULL, meta_session ? "" : session_template, unnamed);
}
catch (SessionException const& e) {
stringstream ss;
diff --git a/gtk2_ardour/ardour_ui_startup.cc b/gtk2_ardour/ardour_ui_startup.cc
index 6178282a21..080b12fc4f 100644
--- a/gtk2_ardour/ardour_ui_startup.cc
+++ b/gtk2_ardour/ardour_ui_startup.cc
@@ -525,12 +525,13 @@ ARDOUR_UI::load_session_from_startup_fsm ()
const string session_template = startup_fsm->session_template;
const bool session_is_new = startup_fsm->session_is_new;
const BusProfile bus_profile = startup_fsm->bus_profile;
+ const bool session_was_not_named = !startup_fsm->session_name_edited;
std::cerr << " loading from " << session_path << " as " << session_name << " templ " << session_template << " is_new " << session_is_new << " bp " << bus_profile.master_out_channels << std::endl;
if (session_is_new) {
- if (build_session (session_path, session_name, session_template, bus_profile, true)) {
+ if (build_session (session_path, session_name, session_template, bus_profile, true, session_was_not_named)) {
return -1;
}
return 0;
diff --git a/gtk2_ardour/startup_fsm.cc b/gtk2_ardour/startup_fsm.cc
index 6f05fe2f71..40b6814cea 100644
--- a/gtk2_ardour/startup_fsm.cc
+++ b/gtk2_ardour/startup_fsm.cc
@@ -69,6 +69,7 @@ using std::vector;
StartupFSM::StartupFSM (EngineControl& amd)
: session_existing_sample_rate (0)
, session_is_new (false)
+ , session_name_edited (false)
, new_user (NewUserWizard::required())
, new_session_required (ARDOUR_COMMAND_LINE::new_session || (!ARDOUR::Profile->get_mixbus() && new_user))
, _state (new_user ? WaitingForNewUser : WaitingForSessionPath)
@@ -657,6 +658,7 @@ StartupFSM::check_session_parameters (bool must_be_new)
session_name = session_dialog->session_name (requested_new);
session_path = session_dialog->session_folder ();
+ session_name_edited = session_dialog->was_new_name_edited ();
if (must_be_new) {
assert (requested_new);
diff --git a/gtk2_ardour/startup_fsm.h b/gtk2_ardour/startup_fsm.h
index 21ad940d34..3757fc919d 100644
--- a/gtk2_ardour/startup_fsm.h
+++ b/gtk2_ardour/startup_fsm.h
@@ -67,6 +67,8 @@ class StartupFSM : public sigc::trackable
std::string session_template;
int session_existing_sample_rate;
bool session_is_new;
+ bool session_name_edited;
+
ARDOUR::BusProfile bus_profile;
/* It's not a dialog but we provide this to make it behave like a (non-modal)