cleanup a couple of audio file format names as reported by libsndfile
[ardour.git] / gtk2_ardour / ardour_ui.cc
index 4f57dec90516910d382265328717c06cb6c4ade5..2d4e94883494a1bf291d578e1b5bb2bbd489e667 100644 (file)
@@ -25,6 +25,7 @@
 #include <time.h>
 #include <cerrno>
 #include <fstream>
+#include <stdlib.h>
 
 #include <iostream>
 
@@ -569,7 +570,7 @@ ARDOUR_UI::update_autosave ()
 {
         ENSURE_GUI_THREAD (mem_fun (*this, &ARDOUR_UI::update_autosave));
         
-        if (session->dirty()) {
+        if (session && session->dirty()) {
                 if (_autosave_connection.connected()) {
                         _autosave_connection.disconnect();
                 }
@@ -1160,6 +1161,7 @@ ARDOUR_UI::check_audioengine ()
                        MessageDialog msg (_("Ardour is not connected to JACK\n"
                                             "You cannot open or close sessions in this condition"));
                        pop_back_splash ();
+                       msg.set_position (WIN_POS_CENTER);
                        msg.run ();
                        return false;
                }
@@ -1182,7 +1184,7 @@ ARDOUR_UI::open_session ()
 
                /* ardour sessions are folders */
 
-               open_session_selector = new Gtk::FileChooserDialog (_("open session"), FILE_CHOOSER_ACTION_OPEN);
+               open_session_selector = new Gtk::FileChooserDialog (_("Open Session"), FILE_CHOOSER_ACTION_OPEN);
                open_session_selector->add_button (Gtk::Stock::CANCEL, Gtk::RESPONSE_CANCEL);
                open_session_selector->add_button (Gtk::Stock::OPEN, Gtk::RESPONSE_ACCEPT);
                open_session_selector->set_default_response(Gtk::RESPONSE_ACCEPT);
@@ -1848,6 +1850,7 @@ ARDOUR_UI::snapshot_session ()
 
        prompter.set_name ("Prompter");
        prompter.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
+       prompter.set_title (_("Take Snapshot"));
        prompter.set_prompt (_("Name of New Snapshot"));
        prompter.set_initial_text (timebuf);
 
@@ -1953,7 +1956,6 @@ ARDOUR_UI::transport_rec_enable_blink (bool onoff)
 
 void
 ARDOUR_UI::save_template ()
-
 {
        ArdourPrompter prompter (true);
        string name;
@@ -1963,6 +1965,7 @@ ARDOUR_UI::save_template ()
        }
 
        prompter.set_name (X_("Prompter"));
+       prompter.set_title (_("Save Mix Template"));
        prompter.set_prompt (_("Name for mix template:"));
        prompter.set_initial_text(session->name() + _("-template"));
        prompter.add_button (Gtk::Stock::SAVE, Gtk::RESPONSE_ACCEPT);
@@ -1984,6 +1987,9 @@ ARDOUR_UI::save_template ()
 void
 ARDOUR_UI::fontconfig_dialog ()
 {
+#if 0
+  /* this issue seems to have gone away with changes to font handling in GTK/Quartz
+   */
 #ifdef GTKOSX
        /* X11 users will always have fontconfig info around, but new GTK-OSX users 
           may not and it can take a while to build it. Warn them.
@@ -2007,6 +2013,7 @@ ARDOUR_UI::fontconfig_dialog ()
                msg.run ();
        }
 #endif
+#endif
 }
 
 void
@@ -2090,6 +2097,7 @@ ARDOUR_UI::ask_about_loading_existing_session (const Glib::ustring& session_path
        
        
        msg.set_name (X_("CleanupDialog"));
+       msg.set_title (_("Cleanup Unused Sources"));
        msg.set_wmclass (X_("existing_session"), "Ardour");
        msg.set_position (Gtk::WIN_POS_MOUSE);
        pop_back_splash ();
@@ -2314,7 +2322,8 @@ ARDOUR_UI::get_session_parameters (bool backend_audio_is_running, bool should_be
                        flush_pending ();
 
                        new_session_dialog->set_existing_session (false);
-                       new_session_dialog->set_current_page (2);
+                       new_session_dialog->set_current_page (0); // new engine page
+                       new_session_dialog->engine_control.unset_interface_chosen ();
 
                        response = Gtk::RESPONSE_NONE;
                        goto try_again;
@@ -2325,7 +2334,7 @@ ARDOUR_UI::get_session_parameters (bool backend_audio_is_running, bool should_be
                if (response == Gtk::RESPONSE_OK) {
 
                        session_name = new_session_dialog->session_name();
-                       
+
                        if (session_name.empty()) {
                                response = Gtk::RESPONSE_NONE;
                                goto try_again;
@@ -2343,8 +2352,9 @@ ARDOUR_UI::get_session_parameters (bool backend_audio_is_running, bool should_be
                                session_name = Glib::path_get_basename (session_name);
                                
                        } else {
-                               
+
                                session_path = new_session_dialog->session_folder();
+
                        }
 
                        template_name = Glib::ustring();                        
@@ -2389,6 +2399,8 @@ ARDOUR_UI::get_session_parameters (bool backend_audio_is_running, bool should_be
 
                                if (Glib::file_test (session_path, Glib::FileTest (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR))) {
 
+                                       new_session_dialog->hide ();
+
                                        if (ask_about_loading_existing_session (session_path)) {
                                                goto loadit;
                                        } else {
@@ -2478,16 +2490,6 @@ ARDOUR_UI::load_session (const Glib::ustring& path, const Glib::ustring& snap_na
                goto out;
        }
 
-       /* if it already exists, we must have write access */
-
-       if (Glib::file_test (path.c_str(), Glib::FILE_TEST_EXISTS) && ::access (path.c_str(), W_OK)) {
-               MessageDialog msg (*editor, _("You do not have write access to this session.\n"
-                                             "This prevents the session from being loaded."));
-               pop_back_splash ();
-               msg.run ();
-               goto out;
-       }
-
        loading_message (_("Please wait while Ardour loads your session"));
 
        try {
@@ -2522,6 +2524,12 @@ ARDOUR_UI::load_session (const Glib::ustring& path, const Glib::ustring& snap_na
                goto out;
        }
 
+       /* this exception is also special */
+
+       catch (Session::SRMismatchRejected& err) {
+               goto out; /* just go back and reload something else, etc. */
+       }
+
        catch (...) {
 
                MessageDialog msg (string_compose(_("Session \"%1 (snapshot %2)\" did not load successfully"), path, snap_name),
@@ -2640,6 +2648,8 @@ ARDOUR_UI::show_about ()
                about->signal_response().connect(mem_fun (*this, &ARDOUR_UI::about_signal_response) );
        }
 
+       about->set_transient_for(*editor);
+
        about->show_all ();
 }
 
@@ -3114,14 +3124,17 @@ ARDOUR_UI::write_buffer_stats ()
        std::ofstream fout;
        struct tm tm;
        char buf[64];
-       char* path;
+       char path[PATH_MAX+1];  int fd;
+
+       strcpy (path, "ardourBufferingXXXXXX");
 
-       if ((path = tempnam (0, "ardourBuffering")) == 0) {
+       if ((fd = mkstemp (path )) < 0) {
                cerr << X_("cannot find temporary name for ardour buffer stats") << endl;
                return;
        }
-
+       
        fout.open (path);
+       close (fd);
 
        if (!fout) {
                cerr << string_compose (X_("cannot open file %1 for ardour buffer stats"), path) << endl;