Started rewriting the column constructors.

This commit is contained in:
Pietro Gagliardi 2018-06-05 22:47:11 -04:00
parent 18d8a8fe22
commit b7151388e3
1 changed files with 56 additions and 21 deletions

View File

@ -10,6 +10,7 @@ struct uiTable {
GtkWidget *treeWidget; GtkWidget *treeWidget;
GtkTreeView *tv; GtkTreeView *tv;
uiTableModel *model; uiTableModel *model;
GPtrArray *columnParams;
int backgroundColumn; int backgroundColumn;
}; };
@ -255,34 +256,68 @@ static void buttonColumnClicked(uiprivCellRendererButton *r, gchar *pathstr, gpo
onEdited(p->m, p->modelColumn, path, NULL, NULL); onEdited(p->m, p->modelColumn, path, NULL, NULL);
} }
=================== TODOTODO static void addTextColumn(uiTable *t, GtkTreeViewColumn *c, int textModelColumn, int textEditableModelColumn, uiTableTextColumnOptionalParams *params)
static void appendPart(uiTableColumn *c, struct tablePart *part, GtkCellRenderer *r, int expand)
{ {
part->r = r; struct textColumnParams *p;
gtk_tree_view_column_pack_start(c->c, part->r, expand != 0);
gtk_tree_view_column_set_cell_data_func(c->c, part->r, dataFunc, part, NULL);
g_ptr_array_add(c->parts, part);
}
void uiTableColumnAppendTextPart(uiTableColumn *c, int modelColumn, int expand)
{
struct tablePart *part;
GtkCellRenderer *r; GtkCellRenderer *r;
part = uiprivNew(struct tablePart); p = uiprivNew(struct textColumnParams);
part->type = partText; p->t = t;
part->textColumn = modelColumn; xx TODO get rid of these fields in favor of t->m
part->tv = c->tv; p->m = t->m;
part->colorColumn = -1; p->modelColumn = textModelColumn;
p->editableColumn = textEditableModelColumn;
if (params != NULL)
p->params = *params;
else
p->params = defaultTextColumnOptionalParams;
r = gtk_cell_renderer_text_new(); r = gtk_cell_renderer_text_new();
g_object_set(r, "editable", FALSE, NULL); gtk_tree_view_column_pack_start(c, r, TRUE);
g_signal_connect(r, "edited", G_CALLBACK(textEdited), part); gtk_tree_view_column_set_cell_data_func(c, r, textColumnDataFunc, p, NULL);
g_signal_connect(r, "edited", G_CALLBACK(textColumnEdited), p);
appendPart(c, part, r, expand); g_ptr_array_add(c->columnParams, p);
} }
void uiTableAppendTextColumn(uiTable *t, const char *name, int textModelColumn, int textEditableModelColumn, uiTableTextColumnOptionalParams *params)
{
GtkTreeViewColumn *c;
c = gtk_tree_view_column_new();
gtk_tree_view_column_set_resizable(c, TRUE);
gtk_tree_view_column_set_title(c, name);
gtk_tree_view_append_column(t->tv, c);
addTextColumn(t, c, textModelColumn, textEditableModelColumn, params);
}
_UI_EXTERN void uiTableAppendImageColumn(uiTable *t,
const char *name,
int imageModelColumn);
_UI_EXTERN void uiTableAppendImageTextColumn(uiTable *t,
const char *name,
int imageModelColumn,
int textModelColumn,
int textEditableModelColumn,
uiTableTextColumnOptionalParams *textParams);
_UI_EXTERN void uiTableAppendCheckboxColumn(uiTable *t,
const char *name,
int checkboxModelColumn,
int checkboxEditableModelColumn);
_UI_EXTERN void uiTableAppendCheckboxTextColumn(uiTable *t,
const char *name,
int checkboxModelColumn,
int checkboxEditableModelColumn,
int textModelColumn,
int textEditableModelColumn,
uiTableTextColumnOptionalParams *textParams);
_UI_EXTERN void uiTableAppendProgressBarColumn(uiTable *t,
const char *name,
int progressModelColumn);
_UI_EXTERN void uiTableAppendButtonColumn(uiTable *t,
const char *name,
int buttonTextModelColumn,
int buttonClickableModelColumn);
void uiTableColumnAppendImagePart(uiTableColumn *c, int modelColumn, int expand) void uiTableColumnAppendImagePart(uiTableColumn *c, int modelColumn, int expand)
{ {
struct tablePart *part; struct tablePart *part;