X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Fwx%2Feditable_list.h;h=be79f67e66597dd2e437ab16c51b55c50017dd1a;hb=79af506328e80ad84cbe0dddaf2e1a21d4df1fe8;hp=5772f6391e7cc94dc9d898799ecdab2ab4f66edf;hpb=af014eeb1c79bcc70a0261bcb8ea07d2304f01bc;p=dcpomatic.git diff --git a/src/wx/editable_list.h b/src/wx/editable_list.h index 5772f6391..be79f67e6 100644 --- a/src/wx/editable_list.h +++ b/src/wx/editable_list.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2012 Carl Hetherington + Copyright (C) 2012-2015 Carl Hetherington This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -43,7 +43,7 @@ public: wxFlexGridSizer* table = new wxFlexGridSizer (2, DCPOMATIC_SIZER_X_GAP, DCPOMATIC_SIZER_Y_GAP); table->AddGrowableCol (0, 1); - s->Add (table, 1, wxALL | wxEXPAND, 8); + s->Add (table, 1, wxEXPAND); _list = new wxListCtrl (this, wxID_ANY, wxDefaultPosition, wxSize (columns.size() * 200, height), wxLC_REPORT | wxLC_SINGLE_SEL); @@ -70,11 +70,6 @@ public: table->Add (s, 0); } - std::vector current = _get (); - for (typename std::vector::iterator i = current.begin (); i != current.end(); ++i) { - add_to_control (*i); - } - _add->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&EditableList::add_clicked, this)); _copy->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&EditableList::copy_clicked, this)); _edit->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&EditableList::edit_clicked, this)); @@ -87,7 +82,17 @@ public: } -private: + void refresh () + { + _list->DeleteAllItems (); + + std::vector current = _get (); + for (typename std::vector::iterator i = current.begin (); i != current.end(); ++i) { + add_to_control (*i); + } + } + +private: void add_to_control (T item) { @@ -116,11 +121,11 @@ private: dialog->ShowModal (); add_to_control (dialog->get ()); - + std::vector all = _get (); all.push_back (dialog->get ()); _set (all); - + dialog->Destroy (); } @@ -132,11 +137,11 @@ private: } std::vector all = _get (); - assert (item >= 0 && item < int (all.size ())); + DCPOMATIC_ASSERT (item >= 0 && item < int (all.size ())); T copy (all[item]); add_to_control (copy); - + all.push_back (copy); _set (all); } @@ -149,14 +154,14 @@ private: } std::vector all = _get (); - assert (item >= 0 && item < int (all.size ())); + DCPOMATIC_ASSERT (item >= 0 && item < int (all.size ())); S* dialog = new S (this); dialog->set (all[item]); dialog->ShowModal (); all[item] = dialog->get (); dialog->Destroy (); - + for (int i = 0; i < _columns; ++i) { _list->SetItem (item, i, std_to_wx (_column (all[item], i))); } @@ -170,7 +175,7 @@ private: if (i == -1) { return; } - + _list->DeleteItem (i); std::vector all = _get (); all.erase (all.begin() + i);