3 #include <boost/tokenizer.hpp> 4 #include <boost/lexical_cast.hpp> 6 #include <Wt/WAbstractItemModel> 7 #include <Wt/WStandardItemModel> 8 #include <Wt/WStandardItem> 22 virtual void setData(
const boost::any &
data,
int role = Wt::UserRole) {
25 if (role == Wt::EditRole) {
29 double d = std::strtod(s.c_str(), &end);
43 bool firstLineIsHeaders)
45 std::ifstream f(csvFile.c_str());
57 int numRows,
bool firstLineIsHeaders)
66 typedef boost::tokenizer<boost::escaped_list_separator<char> >
68 CsvTokenizer tok(line);
71 for (CsvTokenizer::iterator i = tok.begin();
72 i != tok.end(); ++i, ++col) {
78 if (firstLineIsHeaders && csvRow == 0)
81 int dataRow = firstLineIsHeaders ? csvRow - 1 : csvRow;
83 if (numRows != -1 && dataRow >= numRows)
91 model->
setData(dataRow, col, data);
virtual bool insertColumns(int column, int count, const WModelIndex &parent=WModelIndex())
static WString fromUTF8(const std::string &value, bool checkValid=false)
virtual bool insertRows(int row, int count, const WModelIndex &parent=WModelIndex())
virtual cpp17::any data(ItemDataRole role=ItemDataRole::User) const
virtual NumericItem * clone() const
virtual void setData(const boost::any &data, int role=Wt::UserRole)
virtual bool setData(const WModelIndex &index, const cpp17::any &value, ItemDataRole role=ItemDataRole::Edit)
virtual int rowCount(const WModelIndex &parent=WModelIndex()) const=0
virtual void setData(const cpp17::any &data, ItemDataRole role=ItemDataRole::User)
std::string toUTF8() const
WString asString(const cpp17::any &v, const WString &formatString=WString())
void setItemPrototype(std::unique_ptr< WStandardItem > item)
virtual int columnCount(const WModelIndex &parent=WModelIndex()) const=0
Wt::WStandardItemModel * csvToModel(const std::string &csvFile, Wt::WObject *parent, bool firstLineIsHeaders)
virtual bool setHeaderData(int section, Orientation orientation, const cpp17::any &value, ItemDataRole role=ItemDataRole::Edit)
WStandardItemModel * model() const
void readFromCsv(std::istream &f, Wt::WAbstractItemModel *model, int numRows, bool firstLineIsHeaders)
Utility function that reads a model from a CSV file.
WStandardItem * parent() const