// 18 october 2015 #include "test.h" // TODO manage the memory of the uiTableModel static intmax_t nColumns = 4; static uiTableColumnType coltypes[] = { uiTableColumnText, uiTableColumnText, uiTableColumnCheckbox, uiTableColumnCheckbox, }; static intmax_t nRows = 6; static intmax_t modelNumRows(uiTableModel *m, void *mData) { return nRows; } void *modelCellValue(uiTableModel *m, void *mData, intmax_t row, intmax_t column) { char line[20]; line[0] = 'R'; line[1] = 'o'; line[2] = 'w'; line[3] = ' '; line[4] = row + '0'; line[5] = '\0'; switch (column) { case 0: case 1: return uiTableModelFromString(line); case 2: return uiTableModelFromBool(row % 2 == 0); case 3: return uiTableModelFromBool(row % 3 == 0); } // TODO return NULL; } // TODO make this not need to be static uiTableModelSpec spec; void modelSetCellValue(uiTableModel *m, void *mData, intmax_t row, intmax_t column, void *value) { // TODO } uiBox *makePage9(void) { uiBox *page9; uiTable *table; uiTableModel *model; uiTableColumnParams p; intmax_t i; page9 = newVerticalBox(); table = uiNewTable(); uiBoxAppend(page9, uiControl(table), 1); spec.NumRows = modelNumRows; spec.CellValue = modelCellValue; spec.SetCellValue = modelSetCellValue; model = uiNewTableModel(nColumns, coltypes, &spec, NULL); uiTableSetModel(table, model); for (i = 0; i < nColumns; i++) { p.Name = "Column"; p.Type = coltypes[i]; p.Mutable = i % 2 == 1; p.ValueColumn = i; uiTableAppendColumn(table, &p); } return page9; }