Add new API functions to get/set table column widths.

uiTableColumnWidth
uiTableColumnSetWidth

Implementations provided for darwin, unix, and windows.
This commit is contained in:
Angelo Haller 2020-09-18 09:52:16 -05:00
parent 5577159fe1
commit 30a5533c34
5 changed files with 70 additions and 0 deletions

View File

@ -216,3 +216,16 @@ uiTable *uiNewTable(uiTableParams *p)
return t; return t;
} }
int uiTableColumnWidth(uiTable *t, int column)
{
NSTableColumn *tc = [t->tv tableColumnWithIdentifier:[@(column) stringValue]];
return [tc width];
}
void uiTableColumnSetWidth(uiTable *t, int column, int width)
{
NSTableColumn *tc = [t->tv tableColumnWithIdentifier:[@(column) stringValue]];
[tc setWidth: width];
}

View File

@ -98,11 +98,26 @@ static void modelSetCellValue(uiTableModelHandler *mh, uiTableModel *m, int row,
checkStates[row] = uiTableValueInt(val); checkStates[row] = uiTableValueInt(val);
} }
uiSpinbox *columnID;
uiSpinbox *columnWidth;
static void changedColumnID(uiSpinbox *s, void *data)
{
uiTable *t = data;
uiSpinboxSetValue(columnWidth, uiTableColumnWidth(t, uiSpinboxValue(columnID)));
}
static void changedColumnWidth(uiSpinbox *s, void *data)
{
uiTable *t = data;
uiTableColumnSetWidth(t, uiSpinboxValue(columnID), uiSpinboxValue(columnWidth));
}
static uiTableModel *m; static uiTableModel *m;
uiBox *makePage16(void) uiBox *makePage16(void)
{ {
uiBox *page16; uiBox *page16;
uiBox *controls;
uiTable *t; uiTable *t;
uiTableParams p; uiTableParams p;
uiTableTextColumnOptionalParams tp; uiTableTextColumnOptionalParams tp;
@ -119,6 +134,8 @@ uiBox *makePage16(void)
memset(checkStates, 0, 15 * sizeof (int)); memset(checkStates, 0, 15 * sizeof (int));
page16 = newVerticalBox(); page16 = newVerticalBox();
controls = newHorizontalBox();
uiBoxAppend(page16, uiControl(controls), 0);
mh.NumColumns = modelNumColumns; mh.NumColumns = modelNumColumns;
mh.ColumnType = modelColumnType; mh.ColumnType = modelColumnType;
@ -152,6 +169,16 @@ uiBox *makePage16(void)
uiTableAppendProgressBarColumn(t, "Progress Bar", uiTableAppendProgressBarColumn(t, "Progress Bar",
8); 8);
uiBoxAppend(controls, uiControl(uiNewLabel("Column")), 0);
columnID = uiNewSpinbox(0, INT_MAX);
uiBoxAppend(controls, uiControl(columnID), 0);
uiBoxAppend(controls, uiControl(uiNewLabel("Width")), 0);
columnWidth = uiNewSpinbox(0, INT_MAX);
uiBoxAppend(controls, uiControl(columnWidth), 0);
uiSpinboxOnChanged(columnID, changedColumnID, t);
uiSpinboxOnChanged(columnWidth, changedColumnWidth, t);
return page16; return page16;
} }

6
ui.h
View File

@ -1458,6 +1458,12 @@ _UI_EXTERN void uiTableAppendButtonColumn(uiTable *t,
// uiNewTable() creates a new uiTable with the specified parameters. // uiNewTable() creates a new uiTable with the specified parameters.
_UI_EXTERN uiTable *uiNewTable(uiTableParams *params); _UI_EXTERN uiTable *uiNewTable(uiTableParams *params);
// uiTableColumnWidth() return current table column width
_UI_EXTERN int uiTableColumnWidth(uiTable *t, int column);
// uiTableColumnSetWidth() set table column width
_UI_EXTERN void uiTableColumnSetWidth(uiTable *t, int column, int width);
#ifdef __cplusplus #ifdef __cplusplus
} }
#endif #endif

View File

@ -522,3 +522,16 @@ uiTable *uiNewTable(uiTableParams *p)
return t; return t;
} }
int uiTableColumnWidth(uiTable *t, int column)
{
GtkTreeViewColumn *c = gtk_tree_view_get_column(t->tv, column);
return gtk_tree_view_column_get_width(c);
}
void uiTableColumnSetWidth(uiTable *t, int column, int width)
{
GtkTreeViewColumn *c = gtk_tree_view_get_column(t->tv, column);
gtk_tree_view_column_set_fixed_width(c, width);
}

View File

@ -520,3 +520,14 @@ uiTable *uiNewTable(uiTableParams *p)
return t; return t;
} }
int uiTableColumnWidth(uiTable *t, int column)
{
return ListView_GetColumnWidth(t->hwnd, column);
}
void uiTableColumnSetWidth(uiTable *t, int column, int width)
{
ListView_SetColumnWidth(t->hwnd, column, width);
}