X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=gtk2_ardour%2Fsession_dialog.cc;h=e11031669336f3d4cfe55b0e3da03853d4844122;hb=af2ee3c8564c7d60cadb130b8c7ad1f4cddd2216;hp=71df823ee06a4c8664fe7ff301906c0a3e339ac7;hpb=17881b3221311bbf90afa951d2f29194e1f0ad35;p=ardour.git diff --git a/gtk2_ardour/session_dialog.cc b/gtk2_ardour/session_dialog.cc index 71df823ee0..e110316693 100644 --- a/gtk2_ardour/session_dialog.cc +++ b/gtk2_ardour/session_dialog.cc @@ -734,7 +734,7 @@ SessionDialog::redisplay_recent_sessions () float sr; SampleFormat sf; - std::string created_version; + std::string program_version; std::string state_file_basename; @@ -758,7 +758,7 @@ SessionDialog::redisplay_recent_sessions () row[recent_session_columns.fullpath] = s; row[recent_session_columns.time_modified] = gsb.st_mtime; - if (Session::get_info_from_path (s, sr, sf, created_version) == 0) { + if (Session::get_info_from_path (s, sr, sf, program_version) == 0) { row[recent_session_columns.sample_rate] = rate_as_string (sr); switch (sf) { case FormatFloat: @@ -776,10 +776,10 @@ SessionDialog::redisplay_recent_sessions () row[recent_session_columns.disk_format] = "--"; } - if (created_version.empty()) { + if (program_version.empty()) { row[recent_session_columns.tip] = Gtkmm2ext::markup_escape_text (dirname); } else { - row[recent_session_columns.tip] = Gtkmm2ext::markup_escape_text (dirname + "\n" + created_version); + row[recent_session_columns.tip] = Gtkmm2ext::markup_escape_text (dirname + "\n" + string_compose (_("Last modified with: %1"), program_version)); } ++session_snapshot_count; @@ -793,6 +793,7 @@ SessionDialog::redisplay_recent_sessions () int64_t most_recent = 0; // add the children + int kidcount = 0; for (std::vector::iterator i2 = state_file_names.begin(); i2 != state_file_names.end(); ++i2) { s = Glib::build_filename (dirname, *i2 + statefile_suffix); @@ -800,11 +801,7 @@ SessionDialog::redisplay_recent_sessions () child_row[recent_session_columns.visible_name] = *i2; child_row[recent_session_columns.fullpath] = s; - if (created_version.empty()) { - child_row[recent_session_columns.tip] = Gtkmm2ext::markup_escape_text (dirname); - } else { - child_row[recent_session_columns.tip] = Gtkmm2ext::markup_escape_text (dirname + "\n" + created_version); - } + child_row[recent_session_columns.tip] = Gtkmm2ext::markup_escape_text (dirname); g_stat (s.c_str(), &gsb); child_row[recent_session_columns.time_modified] = gsb.st_mtime; @@ -814,28 +811,38 @@ SessionDialog::redisplay_recent_sessions () if (gsb.st_mtime > most_recent) { most_recent = gsb.st_mtime; } + + if (++kidcount < 5) { + // parse "modified with" for the first 5 snapshots + if (Session::get_info_from_path (s, sr, sf, program_version) == 0) { #if 0 - if (Session::get_info_from_path (s, sr, sf, created_version) == 0) { - 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"); - break; - case FormatInt24: - child_row[recent_session_columns.disk_format] = _("24-bit"); - break; - case FormatInt16: - child_row[recent_session_columns.disk_format] = _("16-bit"); - break; + 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"); + break; + case FormatInt24: + child_row[recent_session_columns.disk_format] = _("24-bit"); + break; + case FormatInt16: + child_row[recent_session_columns.disk_format] = _("16-bit"); + break; + } +#else + child_row[recent_session_columns.sample_rate] = ""; + child_row[recent_session_columns.disk_format] = ""; +#endif + } else { + child_row[recent_session_columns.sample_rate] = "??"; + child_row[recent_session_columns.disk_format] = "--"; + } + if (!program_version.empty()) { + child_row[recent_session_columns.tip] = Gtkmm2ext::markup_escape_text (string_compose (_("Last modified with: %1"), program_version)); } } else { - child_row[recent_session_columns.sample_rate] = "??"; - child_row[recent_session_columns.disk_format] = "--"; + child_row[recent_session_columns.sample_rate] = ""; + child_row[recent_session_columns.disk_format] = ""; } -#else - child_row[recent_session_columns.sample_rate] = ""; - child_row[recent_session_columns.disk_format] = ""; -#endif ++session_snapshot_count; } @@ -1237,11 +1244,16 @@ SessionDialog::recent_context_mennu (GdkEventButton *ev) return; } + Gtk::TreeModel::Path tpath = recent_session_model->get_path(iter); + const bool is_child = tpath.up () && tpath.up (); + Gtk::Menu* m = manage (new Menu); MenuList& items = m->items (); - items.push_back (MenuElem (s)); - items.push_back (SeparatorElem()); - items.push_back (MenuElem (_("Remove from recent"), sigc::mem_fun (*this, &SessionDialog::recent_remove_selected))); + items.push_back (MenuElem (s, sigc::bind (sigc::hide_return (sigc::ptr_fun (&PBD::open_folder)), s))); + if (!is_child) { + items.push_back (SeparatorElem()); + items.push_back (MenuElem (_("Remove session from recent list"), sigc::mem_fun (*this, &SessionDialog::recent_remove_selected))); + } m->popup (ev->button, ev->time); }