X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Feditable_list.h;h=28e54a44c1aa54baa092231b640941792bf078a1;hb=ac371da34b3bdf2988b2936dec7dc095bf624c86;hp=3f2ea0ca2fe0afad40f7a1e2b5512e6c817282ac;hpb=8963f0007af1a312017b9627c18b82ec2a577591;p=dcpomatic.git diff --git a/src/wx/editable_list.h b/src/wx/editable_list.h index 3f2ea0ca2..28e54a44c 100644 --- a/src/wx/editable_list.h +++ b/src/wx/editable_list.h @@ -18,15 +18,21 @@ */ + #ifndef DCPOMATIC_EDITABLE_LIST_H #define DCPOMATIC_EDITABLE_LIST_H -#include "wx_util.h" + #include "dcpomatic_button.h" -#include +#include "wx_util.h" +#include +LIBDCP_DISABLE_WARNINGS #include +#include +LIBDCP_ENABLE_WARNINGS #include + class EditableListColumn { public: @@ -90,9 +96,9 @@ public: /* With the GTK3 backend wxListCtrls are hard to pick out from the background of the * window, so put a border in to help. */ - wxPanel* border = new wxPanel (this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxBORDER_THEME); + auto border = new wxPanel (this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL | wxBORDER_THEME); _list = new wxListCtrl (border, wxID_ANY, wxDefaultPosition, wxSize(total_width, 100), style); - wxBoxSizer* border_sizer = new wxBoxSizer (wxHORIZONTAL); + auto border_sizer = new wxBoxSizer (wxHORIZONTAL); border_sizer->Add (_list, 1, wxALL | wxEXPAND, 2); border->SetSizer (border_sizer); #else @@ -149,9 +155,9 @@ public: { _list->DeleteAllItems (); - std::vector current = _get (); - for (typename std::vector::iterator i = current.begin (); i != current.end(); ++i) { - add_to_control (*i); + auto current = _get (); + for (auto const& i: current) { + add_to_control (i); } } @@ -159,10 +165,10 @@ public: { int item = _list->GetNextItem (-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED); if (item == -1) { - return boost::optional (); + return {}; } - std::vector all = _get (); + auto all = _get (); DCPOMATIC_ASSERT (item >= 0 && item < int (all.size ())); return all[item]; } @@ -204,10 +210,11 @@ private: S* dialog = new S (this); if (dialog->ShowModal() == wxID_OK) { - boost::optional const v = dialog->get (); + auto const v = dialog->get (); + static_assert(std::is_same::type, boost::optional>::value, "get() must return boost::optional"); if (v) { add_to_control (v.get ()); - std::vector all = _get (); + auto all = _get (); all.push_back (v.get ()); _set (all); } @@ -229,7 +236,8 @@ private: S* dialog = new S (this); dialog->set (all[item]); if (dialog->ShowModal() == wxID_OK) { - boost::optional const v = dialog->get (); + auto const v = dialog->get (); + static_assert(std::is_same::type, boost::optional>::value, "get() must return boost::optional"); if (!v) { return; } @@ -253,7 +261,7 @@ private: } _list->DeleteItem (i); - std::vector all = _get (); + auto all = _get (); all.erase (all.begin() + i); _set (all);