+class EditableListColumn
+{
+public:
+ EditableListColumn (std::string name_)
+ : name (name_)
+ , growable (false)
+ {}
+
+ EditableListColumn (std::string name_, boost::optional<int> width_, bool growable_)
+ : name (name_)
+ , width (width_)
+ , growable (growable_)
+ {}
+
+ std::string name;
+ boost::optional<int> width;
+ bool growable;
+};
+
+/** @param T type of things being edited.
+ * @param S dialog to edit a thing.
+ * @param get Function to get a std::vector of the things being edited.
+ * @param set Function set the things from a a std::vector.
+ * @param column Function to get the display string for a given column in a given item.
+ */