Migrated the controls that don't have children to the new object method model on OS X.

This commit is contained in:
Pietro Gagliardi 2016-04-25 11:54:09 -04:00
parent e69010139d
commit c36d5079db
13 changed files with 49 additions and 101 deletions

View File

@ -27,11 +27,6 @@ struct uiArea {
BOOL scrolling;
};
uiDarwinDefineControl(
uiArea, // type name
view // handle
)
@implementation areaView
- (id)initWithFrame:(NSRect)r area:(uiArea *)a
@ -305,6 +300,8 @@ mouseEvent(otherMouseUp)
@end
uiDarwinControlAllDefaults(uiArea, view)
// called by subclasses of -[NSApplication sendEvent:]
// by default, NSApplication eats some key events
// this prevents that from happening with uiArea
@ -359,7 +356,7 @@ uiArea *uiNewArea(uiAreaHandler *ah)
{
uiArea *a;
a = (uiArea *) uiNewControl(uiArea);
uiDarwinNewControl(uiArea, a);
a->ah = ah;
a->scrolling = NO;
@ -368,8 +365,6 @@ uiArea *uiNewArea(uiAreaHandler *ah)
a->view = a->area;
uiDarwinFinishNewControl(a, uiArea);
return a;
}
@ -377,7 +372,7 @@ uiArea *uiNewScrollingArea(uiAreaHandler *ah, intmax_t width, intmax_t height)
{
uiArea *a;
a = (uiArea *) uiNewControl(uiArea);
uiDarwinNewControl(uiArea, a);
a->ah = ah;
a->scrolling = YES;
@ -394,7 +389,5 @@ uiArea *uiNewScrollingArea(uiAreaHandler *ah, intmax_t width, intmax_t height)
[a->sv setDocumentView:a->area];
uiDarwinFinishNewControl(a, uiArea);
return a;
}

View File

@ -57,11 +57,12 @@ struct uiButton {
static buttonDelegateClass *buttonDelegate = nil;
uiDarwinDefineControlWithOnDestroy(
uiButton, // type name
button, // handle
[buttonDelegate unregisterButton:this]; // on destroy
)
uiDarwinControlAllDefaultsExceptDestroy(uiButton, button)
static void uiButtonDestroy(uiControl *b)
{
[buttonDelegate unregisterButton:uiButton(b)];
}
char *uiButtonText(uiButton *b)
{
@ -90,7 +91,7 @@ uiButton *uiNewButton(const char *text)
{
uiButton *b;
b = (uiButton *) uiNewControl(uiButton);
uiDarwinNewControl(uiButton, b);
b->button = [[NSButton alloc] initWithFrame:NSZeroRect];
[b->button setTitle:toNSString(text)];
@ -106,7 +107,5 @@ uiButton *uiNewButton(const char *text)
[buttonDelegate registerButton:b];
uiButtonOnClicked(b, defaultOnClicked, NULL);
uiDarwinFinishNewControl(b, uiButton);
return b;
}

View File

@ -59,11 +59,12 @@ struct uiCheckbox {
static checkboxDelegateClass *checkboxDelegate = nil;
uiDarwinDefineControlWithOnDestroy(
uiCheckbox, // type name
button, // handle
[checkboxDelegate unregisterCheckbox:this]; // on destroy
)
uiDarwinControlAllDefaultsExceptDestroy(uiCheckbox, button)
static void uiCheckboxDestroy(uiControl *c)
{
[checkboxDelegate unregisterCheckbox:uiCheckbox(c)];
}
char *uiCheckboxText(uiCheckbox *c)
{
@ -109,7 +110,7 @@ uiCheckbox *uiNewCheckbox(const char *text)
{
uiCheckbox *c;
c = (uiCheckbox *) uiNewControl(uiCheckbox);
uiDarwinNewControl(uiCheckbox, c);
c->button = [[NSButton alloc] initWithFrame:NSZeroRect];
[c->button setTitle:toNSString(text)];
@ -124,7 +125,5 @@ uiCheckbox *uiNewCheckbox(const char *text)
[checkboxDelegate registerCheckbox:c];
uiCheckboxOnToggled(c, defaultOnToggled, NULL);
uiDarwinFinishNewControl(c, uiCheckbox);
return c;
}

View File

@ -6,16 +6,13 @@ struct uiDateTimePicker {
NSDatePicker *dp;
};
uiDarwinDefineControl(
uiDateTimePicker, // type name
dp // handle
)
uiDarwinControlAllDefaults(uiDateTimePicker, dp)
static uiDateTimePicker *finishNewDateTimePicker(NSDatePickerElementFlags elements)
{
uiDateTimePicker *d;
d = (uiDateTimePicker *) uiNewControl(uiDateTimePicker);
uiDarwinNewControl(uiDateTimePicker, d);
d->dp = [[NSDatePicker alloc] initWithFrame:NSZeroRect];
[d->dp setBordered:NO];
@ -26,8 +23,6 @@ static uiDateTimePicker *finishNewDateTimePicker(NSDatePickerElementFlags elemen
[d->dp setDatePickerMode:NSSingleDateMode];
uiDarwinSetControlFont(d->dp, NSRegularControlSize);
uiDarwinFinishNewControl(d, uiDateTimePicker);
return d;
}

View File

@ -75,11 +75,12 @@ struct uiEntry {
static entryDelegateClass *entryDelegate = nil;
uiDarwinDefineControlWithOnDestroy(
uiEntry, // type name
textfield, // handle
[entryDelegate unregisterEntry:this]; // on destroy
)
uiDarwinControlAllDefaultsExceptDestroy(uiEntry, textfield)
static void uiEntryDestroy(uiControl *c)
{
[entryDelegate unregisterEntry:uiEntry(c)];
}
char *uiEntryText(uiEntry *e)
{
@ -148,7 +149,7 @@ uiEntry *uiNewEntry(void)
{
uiEntry *e;
e = (uiEntry *) uiNewControl(uiEntry);
uiDarwinNewControl(uiEntry, e);
e->textfield = newEditableTextField();
@ -159,7 +160,5 @@ uiEntry *uiNewEntry(void)
[entryDelegate registerEntry:e];
uiEntryOnChanged(e, defaultOnChanged, NULL);
uiDarwinFinishNewControl(e, uiEntry);
return e;
}

View File

@ -2,7 +2,6 @@
#import "uipriv_darwin.h"
// TODO drag and drop fonts? what other interactions does NSColorWell allow that we can do for fonts?
// TODO make position of templates consistent
@interface fontButton : NSButton {
uiFontButton *libui_b;
@ -26,11 +25,6 @@ struct uiFontButton {
void *onChangedData;
};
uiDarwinDefineControl(
uiFontButton, // type name
button // handle
)
@implementation fontButton
- (id)initWithFrame:(NSRect)frame libuiFontButton:(uiFontButton *)b
@ -131,6 +125,8 @@ uiDarwinDefineControl(
@end
uiDarwinControlAllDefaults(uiFontButton, button)
// we do not want font change events to be sent to any controls other than the font buttons
// see main.m for more details
BOOL fontButtonInhibitSendAction(SEL sel, id from, id to)
@ -172,14 +168,12 @@ uiFontButton *uiNewFontButton(void)
{
uiFontButton *b;
b = (uiFontButton *) uiNewControl(uiFontButton);
uiDarwinNewControl(uiFontButton, b);
b->button = [[fontButton alloc] initWithFrame:NSZeroRect libuiFontButton:b];
uiDarwinSetControlFont(b->button, NSRegularControlSize);
uiFontButtonOnChanged(b, defaultOnChanged, NULL);
uiDarwinFinishNewControl(b, uiFontButton);
return b;
}

View File

@ -6,10 +6,7 @@ struct uiLabel {
NSTextField *textfield;
};
uiDarwinDefineControl(
uiLabel, // type name
textfield // handle
)
uiDarwinControlAllDefaults(uiLabel, textfield)
char *uiLabelText(uiLabel *l)
{
@ -27,7 +24,7 @@ uiLabel *uiNewLabel(const char *text)
{
uiLabel *l;
l = (uiLabel *) uiNewControl(uiLabel);
uiDarwinNewControl(uiLabel, l);
l->textfield = [[NSTextField alloc] initWithFrame:NSZeroRect];
[l->textfield setStringValue:toNSString(text)];
@ -36,7 +33,5 @@ uiLabel *uiNewLabel(const char *text)
[l->textfield setDrawsBackground:NO];
finishNewTextField(l->textfield, NO);
uiDarwinFinishNewControl(l, uiLabel);
return l;
}

View File

@ -11,10 +11,7 @@ struct uiMultilineEntry {
// TODO events
uiDarwinDefineControl(
uiMultilineEntry, // type name
sv // handle
)
uiDarwinControlAllDefaults(uiMultilineEntry, sv)
static void defaultOnChanged(uiMultilineEntry *e, void *data)
{
@ -70,7 +67,7 @@ uiMultilineEntry *uiNewMultilineEntry(void)
uiMultilineEntry *e;
NSFont *font;
e = (uiMultilineEntry *) uiNewControl(uiMultilineEntry);
uiDarwinNewControl(uiMultilineEntry, e);
e->sv = [[NSScrollView alloc] initWithFrame:NSZeroRect];
// TODO verify against Interface Builder
@ -134,8 +131,6 @@ uiMultilineEntry *uiNewMultilineEntry(void)
uiMultilineEntryOnChanged(e, defaultOnChanged, NULL);
uiDarwinFinishNewControl(e, uiMultilineEntry);
return e;
}

View File

@ -6,10 +6,7 @@ struct uiProgressBar {
NSProgressIndicator *pi;
};
uiDarwinDefineControl(
uiProgressBar, // type name
pi // handle
)
uiDarwinControlAllDefaults(uiProgressBar, pi)
void uiProgressBarSetValue(uiProgressBar *p, int value)
{
@ -31,7 +28,7 @@ uiProgressBar *uiNewProgressBar(void)
{
uiProgressBar *p;
p = (uiProgressBar *) uiNewControl(uiProgressBar);
uiDarwinNewControl(uiProgressBar, p);
p->pi = [[NSProgressIndicator alloc] initWithFrame:NSZeroRect];
[p->pi setControlSize:NSRegularControlSize];
@ -39,7 +36,5 @@ uiProgressBar *uiNewProgressBar(void)
[p->pi setStyle:NSProgressIndicatorBarStyle];
[p->pi setIndeterminate:NO];
uiDarwinFinishNewControl(p, uiProgressBar);
return p;
}

View File

@ -8,10 +8,7 @@ struct uiRadioButtons {
NSMatrix *matrix;
};
uiDarwinDefineControl(
uiRadioButtons, // type name
matrix // handle
)
uiDarwinControlAllDefaults(uiRadioButtons, matrix)
static NSButtonCell *cellAt(uiRadioButtons *r, uintmax_t n)
{
@ -46,7 +43,7 @@ uiRadioButtons *uiNewRadioButtons(void)
uiRadioButtons *r;
NSButtonCell *cell;
r = (uiRadioButtons *) uiNewControl(uiRadioButtons);
uiDarwinNewControl(uiRadioButtons, r);
// we have to set up the NSMatrix this way (prototype first)
// otherwise we won't be able to change its properties (such as the button type)
@ -69,7 +66,5 @@ uiRadioButtons *uiNewRadioButtons(void)
[r->matrix setDrawsCellBackground:NO];
[r->matrix setAutosizesCells:YES];
uiDarwinFinishNewControl(r, uiRadioButtons);
return r;
}

View File

@ -11,16 +11,13 @@ struct uiSeparator {
NSBox *box;
};
uiDarwinDefineControl(
uiSeparator, // type name
box // handle
)
uiDarwinControlAllDefaults(uiSeparator, box)
uiSeparator *uiNewHorizontalSeparator(void)
{
uiSeparator *s;
s = (uiSeparator *) uiNewControl(uiSeparator);
uiDarwinNewControl(uiSeparator);
s->box = [[NSBox alloc] initWithFrame:NSMakeRect(0, 0, separatorFrameWidth, separatorFrameHeight)];
[s->box setBoxType:NSBoxSeparator];
@ -28,7 +25,5 @@ uiSeparator *uiNewHorizontalSeparator(void)
[s->box setTransparent:NO];
[s->box setTitlePosition:NSNoTitle];
uiDarwinFinishNewControl(s, uiSeparator);
return s;
}

View File

@ -77,11 +77,12 @@ struct uiSlider {
static sliderDelegateClass *sliderDelegate = nil;
uiDarwinDefineControlWithOnDestroy(
uiSlider, // type name
slider, // handle
[sliderDelegate unregisterSlider:this]; // on destroy
)
uiDarwinControlAllDefaultsExceptDestroy(uiSlider, slider)
static void uiSliderDestroy(uiControl *c)
{
[sliderDelegate unregisterSlider:uiSlider(c)];
}
intmax_t uiSliderValue(uiSlider *s)
{
@ -110,7 +111,7 @@ uiSlider *uiNewSlider(intmax_t min, intmax_t max)
uiSlider *s;
NSSliderCell *cell;
s = (uiSlider *) uiNewControl(uiSlider);
uiDarwinNewControl(uiSlider, s);
// a horizontal slider is defined as one where the width > height, not by a flag
// to be safe, don't use NSZeroRect, but make it horizontal from the get-go
@ -132,7 +133,5 @@ uiSlider *uiNewSlider(intmax_t min, intmax_t max)
[sliderDelegate registerSlider:s];
uiSliderOnChanged(s, defaultOnChanged, NULL);
uiDarwinFinishNewControl(s, uiSlider);
return s;
}

View File

@ -129,10 +129,7 @@ struct uiSpinbox {
@end
uiDarwinDefineControl(
uiSpinbox, // type name
spinbox // handle
)
uiDarwinControlAllDefaults(uiSpinbox, spinbox)
intmax_t uiSpinboxValue(uiSpinbox *s)
{
@ -162,7 +159,7 @@ uiSpinbox *uiNewSpinbox(intmax_t min, intmax_t max)
if (min >= max)
complain("error: min >= max in uiNewSpinbox()");
s = (uiSpinbox *) uiNewControl(uiSpinbox);
uiDarwinNewControl(uiSpinbox, s);
s->spinbox = [[libui_spinbox alloc] initWithFrame:NSZeroRect spinbox:s];
[s->spinbox setMinimum:min];
@ -171,7 +168,5 @@ uiSpinbox *uiNewSpinbox(intmax_t min, intmax_t max)
uiSpinboxOnChanged(s, defaultOnChanged, NULL);
uiDarwinFinishNewControl(s, uiSpinbox);
return s;
}