Finished the initial implementation of OS X uiTable. Now to test.
This commit is contained in:
parent
2f08ec683a
commit
c26f438d3b
darwin
|
@ -35,6 +35,7 @@ struct uiTableCellPart {
|
||||||
}
|
}
|
||||||
|
|
||||||
struct uiTableColumn {
|
struct uiTableColumn {
|
||||||
|
tableColumn *c;
|
||||||
NSMutableArray *parts;
|
NSMutableArray *parts;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -42,6 +43,7 @@ struct uiTable {
|
||||||
uiDarwinControl c;
|
uiDarwinControl c;
|
||||||
NSScrollView *sv;
|
NSScrollView *sv;
|
||||||
NSTableView *tv;
|
NSTableView *tv;
|
||||||
|
struct scrollViewData *d;
|
||||||
};
|
};
|
||||||
|
|
||||||
@implementation tableModel
|
@implementation tableModel
|
||||||
|
@ -229,11 +231,87 @@ void uiTableColumnAppend(uiTableColumn *c, uiTableCellPart *part, int expand)
|
||||||
[c->parts addObject:part->part];
|
[c->parts addObject:part->part];
|
||||||
}
|
}
|
||||||
|
|
||||||
_UI_EXTERN uiTableCellPart *uiNewTableTextPart(int modelColumn);
|
uiTableCellPart *uiNewTableTextPart(int modelColumn)
|
||||||
_UI_EXTERN void uiFreeTableCellPart(uiTableCellPart *p);
|
{
|
||||||
|
uiTableCellPart *p;
|
||||||
|
|
||||||
typedef struct uiTable uiTable;
|
p = uiNew(uiTableCellPart);
|
||||||
#define uiTable(this) ((uiTable *) (this))
|
p->part = [tablePart new];
|
||||||
_UI_EXTERN uiTableColumn *uiTableAppendColumn(uiTable *t, const char *name);
|
p->part.type = partText;
|
||||||
_UI_EXTERN uiTableColumn *uiTableAppendTextColumn(uiTable *t, const char *name, int modelColumn);
|
p->part.mainColumn = modelColumn;
|
||||||
_UI_EXTERN uiTable *uiNewTable(uiTableModel *model);
|
return p;
|
||||||
|
}
|
||||||
|
|
||||||
|
void uiFreeTableCellPart(uiTableCellPart *p)
|
||||||
|
{
|
||||||
|
// TODO disallow if in use
|
||||||
|
[p->part release];
|
||||||
|
uiFree(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
uiDarwinControlAllDefaultsExceptDestroy(uiTable, sv)
|
||||||
|
|
||||||
|
static void uiTableDestroy(uiControl *c)
|
||||||
|
{
|
||||||
|
uiTable *t = uiTable(c);
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
[t->sv release];
|
||||||
|
uiFreeControl(uiControl(t));
|
||||||
|
}
|
||||||
|
|
||||||
|
uiTableColumn *uiTableAppendColumn(uiTable *t, const char *name)
|
||||||
|
{
|
||||||
|
uiTableColumn *c;
|
||||||
|
|
||||||
|
c = new(uiTableColumn);
|
||||||
|
c->c = [[tableColumn alloc] initWithIdentifier:@""];
|
||||||
|
// via Interface Builder
|
||||||
|
[c->c setResizingMask:(NSTableColumnAutoresizingMask | NSTableColumnUserResizingMask)];
|
||||||
|
[c->c setTitle:toNSString(name)];
|
||||||
|
// TODO is this sufficient?
|
||||||
|
[[c->c headerCell] setFont:[NSFont systemFontOfSize:[NSFont systemFontSizeForControlSize:NSSmallControlSize]]];
|
||||||
|
c->parts = [NSMutableArray new];
|
||||||
|
[t->tv addTableColumn:c->c];
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
|
uiTable *uiNewTable(uiTableModel *model)
|
||||||
|
{
|
||||||
|
uiTable *t;
|
||||||
|
struct scrollViewCreateParams p;
|
||||||
|
|
||||||
|
uiDarwinNewControl(uiTable, t);
|
||||||
|
|
||||||
|
e->tv = [[NSTableView alloc] initWIthFrame:NSZeroRect];
|
||||||
|
|
||||||
|
[e->tv setDataSource:model->m];
|
||||||
|
[e->tv setDelegate:model->m];
|
||||||
|
[e->tv reloadAllData];
|
||||||
|
[model->tables addObject:e->tv];
|
||||||
|
|
||||||
|
// TODO is this sufficient?
|
||||||
|
[e->tv setAllowsColumnReordering:NO];
|
||||||
|
[e->tv setAllowsColumnResizing:YES];
|
||||||
|
[e->tv setAllowsMultipleSelection:NO];
|
||||||
|
[e->tv setAllowsEmptySelection:YES];
|
||||||
|
[e->tv setAllowsColumnSelection:NO];
|
||||||
|
[e->tv setUsesAlternatingRowBackgroundColors:YES];
|
||||||
|
[e->tv setSelectionHighlightStyle:NSTableViewSelectionHighlightStyleRegular];
|
||||||
|
[e->tv setGridStyleMask:NSTableViewGridNone];
|
||||||
|
[e->tv setAllowsTypeSelect:YES];
|
||||||
|
// TODO floatsGroupRows — do we even allow group rows?
|
||||||
|
|
||||||
|
memset(&p, 0, sizeof (struct scrollViewCreateParams));
|
||||||
|
p.DocumentView = t->tv;
|
||||||
|
// this is what Interface Builder sets it to
|
||||||
|
// TODO verify
|
||||||
|
p.BackgroundColor = [NSColor colorWithCalibratedWhite:1.0 alpha:1.0];
|
||||||
|
p.DrawsBackground = YES;
|
||||||
|
p.Bordered = YES;
|
||||||
|
p.HScroll = YES;
|
||||||
|
p.VScroll = YES;
|
||||||
|
t->sv = mkScrollView(&p, &(t->d));
|
||||||
|
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue