sizer->Add (_search, 0, wxBOTTOM, DCPOMATIC_SIZER_GAP);
auto targets = new wxBoxSizer (wxHORIZONTAL);
- _targets = new TreeListCtrl (this);
+ _targets = new wxTreeListCtrl (this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTL_MULTIPLE | wxTL_3STATE | wxTL_NO_HEADER);
_targets->AppendColumn (wxT("foo"));
_targets->SetSortColumn (0);
+ _targets->SetItemComparator (&_comparator);
targets->Add (_targets, 1, wxEXPAND | wxRIGHT, DCPOMATIC_SIZER_GAP);
}
-
-wxIMPLEMENT_DYNAMIC_CLASS (TreeListCtrl, wxTreeListCtrl);
-
-
-int
-TreeListCtrl::OnCompareItems (wxTreeListItem const& a, wxTreeListItem const& b)
-{
- return strcoll (wx_to_std(GetItemText(a)).c_str(), wx_to_std(GetItemText(b)).c_str());
-}
-
-
class Cinema;
-/** Shim around wxTreeListCtrl so we can use strcoll() to compare things */
-class TreeListCtrl : public wxTreeListCtrl
-{
-public:
- wxDECLARE_DYNAMIC_CLASS (TreeListCtrl);
-
- TreeListCtrl () {}
-
- TreeListCtrl (wxWindow* parent)
- : wxTreeListCtrl (parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTL_MULTIPLE | wxTL_3STATE | wxTL_NO_HEADER)
- {}
-
- virtual ~TreeListCtrl () {}
-
-private:
- int OnCompareItems (wxTreeListItem const& a, wxTreeListItem const& b);
-};
-
-
class ScreensPanel : public wxPanel
{
public:
boost::optional<std::pair<wxTreeListItem, std::shared_ptr<Cinema>>> cinema_for_operation () const;
wxSearchCtrl* _search;
- TreeListCtrl* _targets;
+ wxTreeListCtrl* _targets;
wxButton* _add_cinema;
wxButton* _edit_cinema;
wxButton* _remove_cinema;
ScreenMap _selected_screens;
bool _ignore_selection_change;
+
+ class Comparator : public wxTreeListItemComparator
+ {
+ public:
+ int Compare (wxTreeListCtrl* tree_list, unsigned, wxTreeListItem a, wxTreeListItem b) override
+ {
+ return strcoll(wx_to_std(tree_list->GetItemText(a)).c_str(), wx_to_std(tree_list->GetItemText(b)).c_str());
+ }
+ };
+
+ Comparator _comparator;
};