Finished the uiTable test and fixed errors.
This commit is contained in:
parent
fa2252e9c6
commit
5d26b9b059
|
@ -11,6 +11,7 @@ CFILES += \
|
|||
test/page5.c \
|
||||
test/page6.c \
|
||||
test/page7.c \
|
||||
test/page8.c \
|
||||
test/spaced.c
|
||||
|
||||
HFILES += \
|
||||
|
|
69
test/page8.c
69
test/page8.c
|
@ -1,11 +1,80 @@
|
|||
// 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 *makePage8(void)
|
||||
{
|
||||
uiBox *page8;
|
||||
uiTable *table;
|
||||
uiTableModel *model;
|
||||
uiTableColumnParams p;
|
||||
intmax_t i;
|
||||
|
||||
page8 = newVerticalBox();
|
||||
|
||||
table = uiNewTable();
|
||||
uiBoxAppend(page8, 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 page8;
|
||||
}
|
||||
|
|
6
ui.h
6
ui.h
|
@ -522,8 +522,8 @@ typedef struct uiTableColumnParams uiTableColumnParams;
|
|||
typedef enum uiTableColumnType uiTableColumnType;
|
||||
typedef enum uiTableNotification uiTableNotification;
|
||||
|
||||
_UI_EXTERN uintmax_t uiMenuItemType(void);
|
||||
#define uiArea(this) ((uiArea *) uiIsA((this), uiAreaType(), 1))
|
||||
_UI_EXTERN uintmax_t uiTableType(void);
|
||||
#define uiTable(this) ((uiTable *) uiIsA((this), uiTableType(), 1))
|
||||
_UI_EXTERN void uiTableSetModel(uiTable *t, uiTableModel *m);
|
||||
_UI_EXTERN void uiTableAppendColumn(uiTable *t, uiTableColumnParams *p);
|
||||
_UI_EXTERN uiTable *uiNewTable(void);
|
||||
|
@ -550,7 +550,7 @@ _UI_EXTERN uiTableModel *uiNewTableModel(uintmax_t nCols, uiTableColumnType *typ
|
|||
_UI_EXTERN void uiFreeTableModel(uiTableModel *m);
|
||||
_UI_EXTERN void uiTableModelNotify(uiTableModel *m, uiTableNotification notification, intmax_t row, intmax_t column);
|
||||
|
||||
#define uiTableModelFromBool(b) ((void *) (b))
|
||||
#define uiTableModelFromBool(b) ((void *) ((intptr_t) (b)))
|
||||
_UI_EXTERN void *uiTableModelFromString(const char *str);
|
||||
|
||||
struct uiTableColumnParams {
|
||||
|
|
|
@ -20,7 +20,7 @@ uiUnixDefineControl(
|
|||
void uiTableSetModel(uiTable *t, uiTableModel *m)
|
||||
{
|
||||
t->model = m;
|
||||
gtk_tree_view_set_model(t->treeview, GTK_TREE_MODEL(t->moel));
|
||||
gtk_tree_view_set_model(t->treeview, GTK_TREE_MODEL(t->model));
|
||||
}
|
||||
|
||||
void uiTableAppendColumn(uiTable *t, uiTableColumnParams *p)
|
||||
|
@ -58,7 +58,7 @@ void uiTableAppendColumn(uiTable *t, uiTableColumnParams *p)
|
|||
NULL);
|
||||
// allow columns to be resized
|
||||
gtk_tree_view_column_set_resizable(col, TRUE);
|
||||
gtk_tree_view_append_column(t->treeviw, col);
|
||||
gtk_tree_view_append_column(t->treeview, col);
|
||||
}
|
||||
|
||||
uiTable *uiNewTable(void)
|
||||
|
|
|
@ -25,7 +25,7 @@ struct uiTableModelClass {
|
|||
GObjectClass parent_class;
|
||||
};
|
||||
|
||||
static void uiTableModel_treeModel_init(GtkTreeModel *);
|
||||
static void uiTableModel_treeModel_init(GtkTreeModelIface *);
|
||||
|
||||
G_DEFINE_TYPE_WITH_CODE(uiTableModel, uiTableModel, G_TYPE_OBJECT,
|
||||
G_IMPLEMENT_INTERFACE(GTK_TYPE_TREE_MODEL, uiTableModel_treeModel_init))
|
||||
|
@ -115,8 +115,8 @@ void *uiTableModelFromString(const char *str)
|
|||
return g_strdup(str);
|
||||
}
|
||||
|
||||
#define toBool(v) ((int) (v))
|
||||
#define toStr(v) ((const char *) (v))
|
||||
#define toBool(v) ((int) ((intptr_t) (v)))
|
||||
#define toStr(v) ((char *) (v))
|
||||
|
||||
static void uiTableModel_get_value(GtkTreeModel *mb, GtkTreeIter *iter, gint column, GValue *value)
|
||||
{
|
||||
|
@ -178,11 +178,11 @@ static gboolean uiTableModel_iter_children(GtkTreeModel *mb, GtkTreeIter *iter,
|
|||
uiTableModel *m = uiTableModel(mb);
|
||||
|
||||
if (parent == NULL && numRows(m) > 0) {
|
||||
child->stamp = GOOD_STAMP;
|
||||
child->user_data = 0;
|
||||
iter->stamp = GOOD_STAMP;
|
||||
iter->user_data = 0;
|
||||
return TRUE;
|
||||
}
|
||||
child->stamp = BAD_STAMP;
|
||||
iter->stamp = BAD_STAMP;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -205,17 +205,17 @@ static gboolean uiTableModel_iter_nth_child(GtkTreeModel *mb, GtkTreeIter *iter,
|
|||
uiTableModel *m = uiTableModel(mb);
|
||||
|
||||
if (parent == NULL && n >= 0 && n < numRows(m)) {
|
||||
child->stamp = GOOD_STAMP;
|
||||
child->user_data = TO(n);
|
||||
iter->stamp = GOOD_STAMP;
|
||||
iter->user_data = TO(n);
|
||||
return TRUE;
|
||||
}
|
||||
child->stamp = BAD_STAMP;
|
||||
iter->stamp = BAD_STAMP;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static gboolean uiTableModel_iter_parent(GtkTreeModel *mb, GtkTreeIter *iter, GtkTreeIter *child)
|
||||
{
|
||||
parent->stamp = BAD_STAMP;
|
||||
iter->stamp = BAD_STAMP;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -225,7 +225,7 @@ static void uiTableModel_class_init(uiTableModelClass *class)
|
|||
G_OBJECT_CLASS(class)->finalize = uiTableModel_finalize;
|
||||
}
|
||||
|
||||
static void uiTableModel_treeModel_init(GtkTreeModel *iface)
|
||||
static void uiTableModel_treeModel_init(GtkTreeModelIface *iface)
|
||||
{
|
||||
iface->get_flags = uiTableModel_get_flags;
|
||||
iface->get_n_columns = uiTableModel_get_n_columns;
|
||||
|
@ -246,6 +246,7 @@ static void uiTableModel_treeModel_init(GtkTreeModel *iface)
|
|||
uiTableModel *uiNewTableModel(uintmax_t nCols, uiTableColumnType *types, uiTableModelSpec *spec, void *mData)
|
||||
{
|
||||
uiTableModel *m;
|
||||
intmax_t i;
|
||||
|
||||
m = uiTableModel(g_object_new(uiTableModelType, NULL));
|
||||
m->spec = spec;
|
||||
|
|
Loading…
Reference in New Issue