+
+void
+Editor::snapshot_display_selection_changed ()
+{
+ if (snapshot_display.get_selection()->count_selected_rows() > 0) {
+
+ TreeModel::iterator i = snapshot_display.get_selection()->get_selected();
+
+ cerr << "snapshot selected\n";
+
+ Glib::ustring snap_name = (*i)[snapshot_display_columns.real_name];
+
+ cerr << "name is " << snap_name << endl;
+
+ if (snap_name.length() == 0) {
+ return;
+ }
+
+ if (session->snap_name() == snap_name) {
+ return;
+ }
+
+ ARDOUR_UI::instance()->load_session(session->path(), string (snap_name));
+ }
+}
+
+bool
+Editor::snapshot_display_button_press (GdkEventButton* ev)
+{
+ return false;
+}
+
+void
+Editor::redisplay_snapshots ()
+{
+ if (session == 0) {
+ return;
+ }
+
+ vector<string*>* states;
+
+ if ((states = session->possible_states()) == 0) {
+ return;
+ }
+
+ snapshot_display_model->clear ();
+
+ for (vector<string*>::iterator i = states->begin(); i != states->end(); ++i) {
+ string statename = *(*i);
+ TreeModel::Row row = *(snapshot_display_model->append());
+ row[snapshot_display_columns.visible_name] = statename;
+ row[snapshot_display_columns.real_name] = statename;
+ }
+
+ delete states;
+}
+
+void
+Editor::session_state_saved (string snap_name)
+{
+ ENSURE_GUI_THREAD (bind (mem_fun(*this, &Editor::session_state_saved), snap_name));
+ redisplay_snapshots ();
+}
+