libui/redo/reredo/darwin/group.m

94 lines
1.9 KiB
Mathematica
Raw Normal View History

2015-08-14 21:50:20 -05:00
// 14 august 2015
#import "uipriv_darwin.h"
struct uiGroup {
uiDarwinControl c;
NSBox *box;
uiControl *child;
int margined;
};
static void onDestroy(uiGroup *);
2015-08-14 21:50:20 -05:00
uiDarwinDefineControlWithOnDestroy(
uiGroup, // type name
uiGroupType, // type function
box, // handle
onDestroy(this); // on destroy
2015-08-14 21:50:20 -05:00
)
static void onDestroy(uiGroup *g)
{
if (g->child != NULL) {
uiControlSetParent(g->child, NULL);
uiControlDestroy(g->child);
}
}
2015-08-14 21:50:20 -05:00
// TODO group container update
char *uiGroupTitle(uiGroup *g)
{
return PUT_CODE_HERE;
}
void uiGroupSetTitle(uiGroup *g, const char *text)
{
// TODO
// changing the text might necessitate a change in the groupbox's size
//TODO uiControlQueueResize(uiControl(g));
2015-08-14 21:50:20 -05:00
}
void uiGroupSetChild(uiGroup *g, uiControl *child)
{
NSView *childView;
if (g->child != NULL) {
childView = (NSView *) uiControlHandle(g->child);
[childView removeFromSuperview];
2015-08-14 21:50:20 -05:00
uiControlSetParent(g->child, NULL);
}
2015-08-14 21:50:20 -05:00
g->child = child;
if (g->child != NULL) {
childView = (NSView *) uiControlHandle(g->child);
2015-08-14 21:50:20 -05:00
uiControlSetParent(g->child, uiControl(g));
[g->box addSubview:childView];
layoutSingleView(g->box, childView, g->margined);
2015-08-14 21:50:20 -05:00
}
}
int uiGroupMargined(uiGroup *g)
{
return g->margined;
}
void uiGroupSetMargined(uiGroup *g, int margined)
{
NSView *childView;
2015-08-14 21:50:20 -05:00
g->margined = margined;
if (g->child != NULL) {
childView = (NSView *) uiControlHandle(g->child);
layoutSingleView(g->box, childView, g->margined);
}
2015-08-14 21:50:20 -05:00
}
uiGroup *uiNewGroup(const char *title)
{
uiGroup *g;
g = (uiGroup *) uiNewControl(uiGroupType());
g->box = [[NSBox alloc] initWithFrame:NSZeroRect];
// TODO title
[g->box setBoxType:NSBoxPrimary];
//TODO [g->box setBorderType:TODO];
[g->box setTransparent:NO];
[g->box setTitlePosition:NSAtTop];
2015-08-17 00:41:04 -05:00
//TODO uiDarwinSetControlFont(g->box, NSSmallControlSize);
2015-08-14 21:50:20 -05:00
uiDarwinFinishNewControl(g, uiGroup);
return g;
}