add support for reverb & chorus in a-fluidsynth
[ardour.git] / gtk2_ardour / session_dialog.cc
index 017d5b94824a3e5e75703b2fb2347128e4cfbc0f..225b02df84ba3d42eab0748bacff1f232778db26 100644 (file)
@@ -31,6 +31,7 @@
 
 #include <gtkmm/filechooser.h>
 
+#include "pbd/basename.h"
 #include "pbd/failed_constructor.h"
 #include "pbd/file_utils.h"
 #include "pbd/replace_all.h"
@@ -53,7 +54,7 @@
 #include "session_dialog.h"
 #include "opts.h"
 #include "engine_dialog.h"
-#include "i18n.h"
+#include "pbd/i18n.h"
 #include "tooltips.h"
 #include "ui_config.h"
 #include "utils.h"
@@ -250,6 +251,10 @@ SessionDialog::session_name (bool& should_be_new)
 
        if (iter) {
                should_be_new = false;
+               string s = (*iter)[recent_session_columns.fullpath];
+               if (Glib::file_test (s, Glib::FILE_TEST_IS_REGULAR)) {
+                       return PBD::basename_nosuffix (s);
+               }
                return (*iter)[recent_session_columns.visible_name];
        }
 
@@ -343,7 +348,10 @@ SessionDialog::setup_initial_choice_box ()
 
        string image_path;
 
-       if (find_file (ardour_data_search_path(), "small-splash.png", image_path)) {
+       Searchpath rc (ARDOUR::ardour_data_search_path());
+       rc.add_subdirectory_to_paths ("resources");
+
+       if (find_file (rc, PROGRAM_NAME "-small-splash.png", image_path)) {
                Gtk::Image* image;
                if ((image = manage (new Gtk::Image (image_path))) != 0) {
                        hbox->pack_start (*image, false, false);
@@ -707,14 +715,27 @@ SessionDialog::redisplay_recent_sessions ()
 
                float sr;
                SampleFormat sf;
-               std::string state_file_basename = state_file_names.front();
+
+               std::string state_file_basename;
+
+               if (state_file_names.size() > 1) {
+                       state_file_basename = Session::get_snapshot_from_instant (dirname);
+                       std::string s = Glib::build_filename (dirname, state_file_basename + statefile_suffix);
+                       if (!Glib::file_test (s, Glib::FILE_TEST_IS_REGULAR)) {
+                               state_file_basename = "";
+                       }
+               }
+
+               if (state_file_basename.empty()) {
+                       state_file_basename = state_file_names.front();
+               }
 
                std::string s = Glib::build_filename (dirname, state_file_basename + statefile_suffix);
 
                GStatBuf gsb;
                g_stat (s.c_str(), &gsb);
 
-               row[recent_session_columns.fullpath] = dirname; /* just the dir, but this works too */
+               row[recent_session_columns.fullpath] = s;
                row[recent_session_columns.tip] = Gtkmm2ext::markup_escape_text (dirname);
                row[recent_session_columns.time_modified] = gsb.st_mtime;
 
@@ -722,13 +743,13 @@ SessionDialog::redisplay_recent_sessions ()
                        row[recent_session_columns.sample_rate] = rate_as_string (sr);
                        switch (sf) {
                        case FormatFloat:
-                               row[recent_session_columns.disk_format] = _("32 bit float");
+                               row[recent_session_columns.disk_format] = _("32-bit float");
                                break;
                        case FormatInt24:
-                               row[recent_session_columns.disk_format] = _("24 bit");
+                               row[recent_session_columns.disk_format] = _("24-bit");
                                break;
                        case FormatInt16:
-                               row[recent_session_columns.disk_format] = _("16 bit");
+                               row[recent_session_columns.disk_format] = _("16-bit");
                                break;
                        }
                } else {
@@ -769,13 +790,13 @@ SessionDialog::redisplay_recent_sessions ()
                                        child_row[recent_session_columns.sample_rate] = rate_as_string (sr);
                                        switch (sf) {
                                        case FormatFloat:
-                                               child_row[recent_session_columns.disk_format] = _("32 bit float");
+                                               child_row[recent_session_columns.disk_format] = _("32-bit float");
                                                break;
                                        case FormatInt24:
-                                               child_row[recent_session_columns.disk_format] = _("24 bit");
+                                               child_row[recent_session_columns.disk_format] = _("24-bit");
                                                break;
                                        case FormatInt16:
-                                               child_row[recent_session_columns.disk_format] = _("16 bit");
+                                               child_row[recent_session_columns.disk_format] = _("16-bit");
                                                break;
                                        }
                                } else {