diff options
author | David Robillard <d@drobilla.net> | 2006-11-19 16:45:16 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2006-11-19 16:45:16 +0000 |
commit | ef6b25432d9c46d71b08c0f7d5f2686df428c4e8 (patch) | |
tree | 9b30d87b6670aadce365c9b112321dd674a0bab4 /gtk2_ardour/ardour_ui.cc | |
parent | af105afe6cde5b0088647cea7d5e4e3314f8478b (diff) |
Merged with trunk R1141
git-svn-id: svn://localhost/ardour2/branches/midi@1142 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/ardour_ui.cc')
-rw-r--r-- | gtk2_ardour/ardour_ui.cc | 87 |
1 files changed, 63 insertions, 24 deletions
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc index cc7b43b6b6..58e60f7627 100644 --- a/gtk2_ardour/ardour_ui.cc +++ b/gtk2_ardour/ardour_ui.cc @@ -542,11 +542,11 @@ ARDOUR_UI::update_buffer_load () } void -ARDOUR_UI::count_recenabled_diskstreams (Route& route) +ARDOUR_UI::count_recenabled_streams (Route& route) { Track* track = dynamic_cast<Track*>(&route); if (track && track->diskstream()->record_enabled()) { - rec_enabled_diskstreams++; + rec_enabled_streams += track->n_inputs().get_total(); } } @@ -568,11 +568,11 @@ ARDOUR_UI::update_disk_space() int secs; nframes_t fr = session->frame_rate(); - rec_enabled_diskstreams = 0; - session->foreach_route (this, &ARDOUR_UI::count_recenabled_diskstreams); + rec_enabled_streams = 0; + session->foreach_route (this, &ARDOUR_UI::count_recenabled_streams); - if (rec_enabled_diskstreams) { - frames /= rec_enabled_diskstreams; + if (rec_enabled_streams) { + frames /= rec_enabled_streams; } hrs = frames / (fr * 3600); @@ -1038,7 +1038,7 @@ ARDOUR_UI::transport_stop () return; } - if (Config->get_auto_loop()) { + if (session->get_play_loop ()) { session->request_play_loop (false); } @@ -1092,7 +1092,7 @@ ARDOUR_UI::transport_roll () rolling = session->transport_rolling (); - if (Config->get_auto_loop()) { + if (session->get_play_loop()) { session->request_play_loop (false); auto_loop_button.set_active (false); roll_button.set_active (true); @@ -1110,7 +1110,7 @@ void ARDOUR_UI::transport_loop() { if (session) { - if (Config->get_auto_loop()) { + if (session->get_play_loop()) { if (session->transport_rolling()) { Location * looploc = session->locations()->auto_loop_location(); if (looploc) { @@ -1269,7 +1269,6 @@ ARDOUR_UI::engine_stopped () ActionManager::set_sensitive (ActionManager::jack_opposite_sensitive_actions, true); } - void ARDOUR_UI::engine_running () { @@ -1471,7 +1470,6 @@ ARDOUR_UI::snapshot_session () prompter.set_name ("Prompter"); prompter.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT); - prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false); prompter.set_prompt (_("Name of New Snapshot")); prompter.set_initial_text (now); @@ -1621,7 +1619,6 @@ ARDOUR_UI::save_template () prompter.set_prompt (_("Name for mix template:")); prompter.set_initial_text(session->name() + _("-template")); prompter.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT); - prompter.set_response_sensitive (Gtk::RESPONSE_ACCEPT, false); switch (prompter.run()) { case RESPONSE_ACCEPT: @@ -1646,18 +1643,25 @@ ARDOUR_UI::new_session (bool startup, std::string predetermined_path) int response = Gtk::RESPONSE_NONE; new_session_dialog->set_modal(true); - new_session_dialog->set_name(predetermined_path); + new_session_dialog->set_name (predetermined_path); new_session_dialog->reset_recent(); new_session_dialog->show(); do { response = new_session_dialog->run (); + + _session_is_new = false; - if(response == Gtk::RESPONSE_CANCEL || response == Gtk::RESPONSE_DELETE_EVENT) { - quit(); + if (response == Gtk::RESPONSE_CANCEL || response == Gtk::RESPONSE_DELETE_EVENT) { + + if (!session) { + quit(); + } + new_session_dialog->hide (); return; } else if (response == Gtk::RESPONSE_NONE) { + /* Clear was pressed */ new_session_dialog->reset(); @@ -1709,8 +1713,6 @@ ARDOUR_UI::new_session (bool startup, std::string predetermined_path) } else { - _session_is_new = true; - if (session_name.empty()) { response = Gtk::RESPONSE_NONE; continue; @@ -1726,14 +1728,43 @@ ARDOUR_UI::new_session (bool startup, std::string predetermined_path) } else { session_path = new_session_dialog->session_folder(); - + } - + //XXX This is needed because session constructor wants a //non-existant path. hopefully this will be fixed at some point. session_path = Glib::build_filename (session_path, session_name); + if (g_file_test (session_path.c_str(), GFileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR))) { + + Glib::ustring str = string_compose (_("This session\n%1\nalready exists. Do you want to open it?"), session_path); + + MessageDialog msg (str, + false, + Gtk::MESSAGE_WARNING, + Gtk::BUTTONS_YES_NO, + true); + + + msg.set_name (X_("CleanupDialog")); + msg.set_wmclass (_("existing_session"), "Ardour"); + msg.set_position (Gtk::WIN_POS_MOUSE); + + switch (msg.run()) { + case RESPONSE_YES: + load_session (session_path, session_name); + goto done; + break; + default: + response = RESPONSE_NONE; + new_session_dialog->reset (); + continue; + } + } + + _session_is_new = true; + std::string template_name = new_session_dialog->session_template_name(); if (new_session_dialog->use_session_template()) { @@ -1793,6 +1824,7 @@ ARDOUR_UI::new_session (bool startup, std::string predetermined_path) } while (response == Gtk::RESPONSE_NONE); + done: show(); new_session_dialog->get_window()->set_cursor(); new_session_dialog->hide(); @@ -1844,6 +1876,9 @@ This prevents the session from being loaded.")); Config->set_current_owner (ConfigVariableBase::Interface); session_loaded = true; + + goto_editor_window (); + return 0; } @@ -1911,10 +1946,6 @@ ARDOUR_UI::show () shown_flag = true; } - - if (about) { - about->present (); - } } void @@ -1922,8 +1953,16 @@ ARDOUR_UI::show_splash () { if (about == 0) { about = new About(); + about->signal_response().connect(mem_fun (*this, &ARDOUR_UI::about_signal_response) ); } about->present(); + flush_pending (); +} + +void +ARDOUR_UI::about_signal_response(int response) +{ + hide_splash(); } void @@ -1947,7 +1986,7 @@ ARDOUR_UI::display_cleanup_results (Session::cleanup_report& rep, const gchar* l _("No audio files were ready for cleanup"), true, Gtk::MESSAGE_INFO, - (Gtk::ButtonsType)(Gtk::BUTTONS_CLOSE) ); + (Gtk::ButtonsType)(Gtk::BUTTONS_OK) ); msgd.set_secondary_text (_("If this seems suprising, \n\ check for any existing snapshots.\n\ These may still include regions that\n\ |