And implemented (mostly) the progressbar table parts. I think that'll do for uiTable features now.
This commit is contained in:
parent
d7caa150b8
commit
6804f263d4
|
@ -8,6 +8,10 @@
|
|||
// - editable NSTextFields have no intrinsic width
|
||||
// - changing a part property does not refresh views
|
||||
// - is the Y position of checkbox cells correct?
|
||||
// - progressbars appear ABOVE the table header
|
||||
|
||||
// LONGTERM
|
||||
// - reuse row views instead of creating a new one each time
|
||||
|
||||
@interface tableModel : NSObject<NSTableViewDataSource, NSTableViewDelegate> {
|
||||
uiTableModel *libui_m;
|
||||
|
@ -21,6 +25,7 @@ enum {
|
|||
partImage,
|
||||
partButton,
|
||||
partCheckbox,
|
||||
partProgressBar,
|
||||
};
|
||||
|
||||
@interface tablePart : NSObject
|
||||
|
@ -227,6 +232,8 @@ if(1); else
|
|||
NSTextField *tf;
|
||||
NSImageView *iv;
|
||||
NSButton *b;
|
||||
NSProgressIndicator *p;
|
||||
int value;
|
||||
|
||||
switch (self.type) {
|
||||
case partText:
|
||||
|
@ -307,6 +314,30 @@ if(1); else
|
|||
[b setTag:self.valueColumn];
|
||||
view = b;
|
||||
break;
|
||||
case partProgressBar:
|
||||
data = (*(m->mh->CellValue))(m->mh, m, row, self.valueColumn);
|
||||
value = uiTableModelTakeInt(data);
|
||||
// TODO no intrinsic width
|
||||
p = [[NSProgressIndicator alloc] initWithFrame:NSZeroRect];
|
||||
[p setControlSize:NSRegularControlSize];
|
||||
[p setBezeled:YES];
|
||||
[p setStyle:NSProgressIndicatorBarStyle];
|
||||
if (value == -1) {
|
||||
[p setIndeterminate:YES];
|
||||
[p startAnimation:p];
|
||||
} else if (value == 100) {
|
||||
[p setIndeterminate:NO];
|
||||
[p setMaxValue:101];
|
||||
[p setDoubleValue:101];
|
||||
[p setDoubleValue:100];
|
||||
[p setMaxValue:100];
|
||||
} else {
|
||||
[p setIndeterminate:NO];
|
||||
[p setDoubleValue:(value + 1)];
|
||||
[p setDoubleValue:value];
|
||||
}
|
||||
view = p;
|
||||
break;
|
||||
}
|
||||
|
||||
// if stretchy, don't hug, otherwise hug forcibly
|
||||
|
@ -445,6 +476,17 @@ void uiTableColumnAppendCheckboxPart(uiTableColumn *c, int modelColumn, int expa
|
|||
[c->parts addObject:part];
|
||||
}
|
||||
|
||||
void uiTableColumnAppendProgressBarPart(uiTableColumn *c, int modelColumn, int expand)
|
||||
{
|
||||
tablePart *part;
|
||||
|
||||
part = [tablePart new];
|
||||
part.type = partProgressBar;
|
||||
part.valueColumn = modelColumn;
|
||||
part.expand = expand;
|
||||
[c->parts addObject:part];
|
||||
}
|
||||
|
||||
void uiTableColumnPartSetEditable(uiTableColumn *c, int part, int editable)
|
||||
{
|
||||
tablePart *p;
|
||||
|
|
|
@ -5,7 +5,7 @@ static uiTableModelHandler mh;
|
|||
|
||||
static int modelNumColumns(uiTableModelHandler *mh, uiTableModel *m)
|
||||
{
|
||||
return 8;
|
||||
return 9;
|
||||
}
|
||||
|
||||
static uiTableModelColumnType modelColumnType(uiTableModelHandler *mh, uiTableModel *m, int column)
|
||||
|
@ -14,7 +14,7 @@ static uiTableModelColumnType modelColumnType(uiTableModelHandler *mh, uiTableMo
|
|||
return uiTableModelColumnColor;
|
||||
if (column == 5)
|
||||
return uiTableModelColumnImage;
|
||||
if (column == 7)
|
||||
if (column == 7 || column == 8)
|
||||
return uiTableModelColumnInt;
|
||||
return uiTableModelColumnString;
|
||||
}
|
||||
|
@ -54,6 +54,15 @@ static void *modelCellValue(uiTableModelHandler *mh, uiTableModel *m, int row, i
|
|||
}
|
||||
if (col == 7)
|
||||
return uiTableModelGiveInt(checkStates[row]);
|
||||
if (col == 8) {
|
||||
if (row == 0)
|
||||
return uiTableModelGiveInt(0);
|
||||
if (row == 13)
|
||||
return uiTableModelGiveInt(100);
|
||||
if (row == 14)
|
||||
return uiTableModelGiveInt(-1);
|
||||
return uiTableModelGiveInt(50);
|
||||
}
|
||||
switch (col) {
|
||||
case 0:
|
||||
sprintf(buf, "Row %d", row);
|
||||
|
@ -127,5 +136,8 @@ uiBox *makePage16(void)
|
|||
uiTableColumnAppendCheckboxPart(tc, 7, 0);
|
||||
uiTableColumnAppendButtonPart(tc, 6, 1);
|
||||
|
||||
tc = uiTableAppendColumn(t, "Progress Bar");
|
||||
uiTableColumnAppendProgressBarPart(tc, 8, 0);
|
||||
|
||||
return page16;
|
||||
}
|
||||
|
|
|
@ -31,6 +31,8 @@ _UI_EXTERN void *uiTableModelStrdup(const char *str);
|
|||
// TODO rename the strdup one to this too
|
||||
_UI_EXTERN void *uiTableModelGiveColor(double r, double g, double b, double a);
|
||||
_UI_EXTERN void *uiTableModelGiveInt(int i);
|
||||
// TODO TakeString
|
||||
// TODO add const
|
||||
_UI_EXTERN int uiTableModelTakeInt(void *v);
|
||||
|
||||
_UI_EXTERN uiTableModel *uiNewTableModel(uiTableModelHandler *mh);
|
||||
|
@ -48,6 +50,7 @@ _UI_EXTERN void uiTableColumnAppendImagePart(uiTableColumn *c, int modelColumn,
|
|||
_UI_EXTERN void uiTableColumnAppendButtonPart(uiTableColumn *c, int modelColumn, int expand);
|
||||
// TODO should these have labels?
|
||||
_UI_EXTERN void uiTableColumnAppendCheckboxPart(uiTableColumn *c, int modelColumn, int expand);
|
||||
_UI_EXTERN void uiTableColumnAppendProgressBarPart(uiTableColumn *c, int modelColumn, int expand);
|
||||
// TODO Editable?
|
||||
_UI_EXTERN void uiTableColumnPartSetEditable(uiTableColumn *c, int part, int editable);
|
||||
_UI_EXTERN void uiTableColumnPartSetTextColor(uiTableColumn *c, int part, int modelColumn);
|
||||
|
|
Loading…
Reference in New Issue