X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Feditable_list.h;h=681588215f539a28457caed75a4250218b2b7316;hb=4a7ece0ebcb4cc8515822fdb6c9baec0394c935b;hp=4b203c0e2a4c802a75d5ac9cf580fde5fcbefce6;hpb=3828baf56467224f5d44049bf1e7a7ed11f43a05;p=dcpomatic.git diff --git a/src/wx/editable_list.h b/src/wx/editable_list.h index 4b203c0e2..681588215 100644 --- a/src/wx/editable_list.h +++ b/src/wx/editable_list.h @@ -27,8 +27,6 @@ #include #include -bool always_valid (); - /** @param T type of things being edited. * @param S dialog to edit a thing. */ @@ -41,7 +39,6 @@ public: std::vector columns, boost::function ()> get, boost::function)> set, - boost::function valid, boost::function column, bool can_edit = true, bool title = true @@ -49,17 +46,12 @@ public: : wxPanel (parent) , _get (get) , _set (set) - , _valid (valid) , _columns (columns.size ()) , _column (column) , _edit (0) { - wxBoxSizer* s = new wxBoxSizer (wxVERTICAL); - SetSizer (s); - - _table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); - _table->AddGrowableCol (0, 1); - s->Add (_table, 1, wxEXPAND); + _sizer = new wxBoxSizer (wxHORIZONTAL); + SetSizer (_sizer); long style = wxLC_REPORT | wxLC_SINGLE_SEL; if (title) { @@ -75,7 +67,7 @@ public: _list->InsertColumn (i, ip); } - _table->Add (_list, 1, wxEXPAND | wxALL); + _sizer->Add (_list, 1, wxEXPAND); { wxSizer* s = new wxBoxSizer (wxVERTICAL); @@ -87,7 +79,7 @@ public: } _remove = new wxButton (this, wxID_ANY, _("Remove")); s->Add (_remove, 0, wxTOP | wxBOTTOM, 2); - _table->Add (s, 0); + _sizer->Add (s, 0, wxLEFT, DCPOMATIC_SIZER_X_GAP); } _add->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&EditableList::add_clicked, this)); @@ -128,7 +120,7 @@ public: void layout () { - _table->Layout (); + _sizer->Layout (); } boost::signals2::signal SelectionChanged; @@ -163,11 +155,11 @@ private: S* dialog = new S (this); if (dialog->ShowModal() == wxID_OK) { - T const v = dialog->get (); - if (_valid (v)) { - add_to_control (v); + boost::optional const v = dialog->get (); + if (v) { + add_to_control (v.get ()); std::vector all = _get (); - all.push_back (v); + all.push_back (v.get ()); _set (all); } } @@ -188,12 +180,12 @@ private: S* dialog = new S (this); dialog->set (all[item]); if (dialog->ShowModal() == wxID_OK) { - T const v = dialog->get (); - if (!_valid (v)) { + boost::optional const v = dialog->get (); + if (!v) { return; } - all[item] = v; + all[item] = v.get (); } dialog->Destroy (); @@ -230,7 +222,6 @@ private: boost::function ()> _get; boost::function )> _set; - boost::function _valid; int _columns; boost::function _column; @@ -238,7 +229,7 @@ private: wxButton* _edit; wxButton* _remove; wxListCtrl* _list; - wxFlexGridSizer* _table; + wxBoxSizer* _sizer; }; #endif