+ boost::optional<T> selection () const
+ {
+ int item = _list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
+ if (item == -1) {
+ return boost::optional<T> ();
+ }
+
+ std::vector<T> all = _get ();
+ DCPOMATIC_ASSERT (item >= 0 && item < int (all.size ()));
+ return all[item];
+ }
+
+ void layout ()
+ {
+ _sizer->Layout ();
+ }
+
+ boost::signals2::signal<void ()> SelectionChanged;
+