#include "dcpomatic_button.h"
#include <wx/wx.h>
#include <wx/listctrl.h>
-#include <boost/function.hpp>
#include <vector>
class EditableListColumn
{
public:
- EditableListColumn (std::string name_)
+ EditableListColumn (wxString name_)
: name (name_)
, growable (false)
{}
- EditableListColumn (std::string name_, boost::optional<int> width_, bool growable_)
+ EditableListColumn (wxString name_, boost::optional<int> width_, bool growable_)
: name (name_)
, width (width_)
, growable (growable_)
{}
- std::string name;
+ wxString name;
boost::optional<int> width;
bool growable;
};
EditableList (
wxWindow* parent,
std::vector<EditableListColumn> columns,
- boost::function<std::vector<T> ()> get,
- boost::function<void (std::vector<T>)> set,
- boost::function<std::string (T, int)> column,
+ std::function<std::vector<T> ()> get,
+ std::function<void (std::vector<T>)> set,
+ std::function<std::string (T, int)> column,
bool can_edit = true,
bool title = true
)
SetSizer (_sizer);
long style = wxLC_REPORT | wxLC_SINGLE_SEL;
- if (title) {
+ if (!title) {
style |= wxLC_NO_HEADER;
}
int total_width = 0;
- BOOST_FOREACH (EditableListColumn i, _columns) {
+ for (auto i: _columns) {
total_width += i.width.get_value_or (_default_width);
}
#endif
int j = 0;
- BOOST_FOREACH (EditableListColumn i, _columns) {
+ for (auto i: _columns) {
wxListItem ip;
ip.SetId (j);
- ip.SetText (std_to_wx(i.name));
+ ip.SetText (i.name);
_list->InsertColumn (j, ip);
++j;
}
{
wxSizer* s = new wxBoxSizer (wxVERTICAL);
_add = new Button (this, _("Add..."));
- s->Add (_add, 0, wxTOP | wxBOTTOM, 2);
+ s->Add (_add, 1, wxEXPAND | wxTOP | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
if (can_edit) {
_edit = new Button (this, _("Edit..."));
- s->Add (_edit, 0, wxTOP | wxBOTTOM, 2);
+ s->Add (_edit, 1, wxEXPAND | wxTOP | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
}
_remove = new Button (this, _("Remove"));
- s->Add (_remove, 0, wxTOP | wxBOTTOM, 2);
+ s->Add (_remove, 1, wxEXPAND | wxTOP | wxBOTTOM, DCPOMATIC_BUTTON_STACK_GAP);
_sizer->Add (s, 0, wxLEFT, DCPOMATIC_SIZER_X_GAP);
}
_list->Bind (wxEVT_COMMAND_LIST_ITEM_SELECTED, boost::bind (&EditableList::selection_changed, this));
_list->Bind (wxEVT_COMMAND_LIST_ITEM_DESELECTED, boost::bind (&EditableList::selection_changed, this));
+#if BOOST_VERSION >= 106100
+ _list->Bind (wxEVT_SIZE, boost::bind (&EditableList::resized, this, boost::placeholders::_1));
+#else
_list->Bind (wxEVT_SIZE, boost::bind (&EditableList::resized, this, _1));
+#endif
refresh ();
selection_changed ();
int fixed_width = 0;
int growable = 0;
int j = 0;
- BOOST_FOREACH (EditableListColumn i, _columns) {
+ for (auto i: _columns) {
fixed_width += i.width.get_value_or (_default_width);
if (!i.growable) {
_list->SetColumnWidth (j, i.width.get_value_or(_default_width));
}
j = 0;
- BOOST_FOREACH (EditableListColumn i, _columns) {
+ for (auto i: _columns) {
if (i.growable) {
_list->SetColumnWidth (j, i.width.get_value_or(_default_width) + (w - fixed_width) / growable);
}
ev.Skip ();
}
- boost::function <std::vector<T> ()> _get;
- boost::function <void (std::vector<T>)> _set;
+ std::function <std::vector<T> ()> _get;
+ std::function <void (std::vector<T>)> _set;
std::vector<EditableListColumn> _columns;
- boost::function<std::string (T, int)> _column;
+ std::function<std::string (T, int)> _column;
wxButton* _add;
wxButton* _edit;