Implemented uiCheckbox on Mac OS X. Before I implement it on GTK+ I'll go back and add uiCheckboxChecked() and uICheckboxSetChecked().
This commit is contained in:
parent
07f3b4698e
commit
42e99da587
|
@ -0,0 +1,78 @@
|
|||
// 7 april 2015
|
||||
#import "uipriv_darwin.h"
|
||||
|
||||
@interface uiCheckboxNSButton : NSButton
|
||||
@property uiControl *uiC;
|
||||
@property void (*uiOnToggled)(uiControl *, void *);
|
||||
@property void *uiOnToggledData;
|
||||
@end
|
||||
|
||||
@implementation uiCheckboxNSButton
|
||||
|
||||
- (void)viewDidMoveToSuperview
|
||||
{
|
||||
if (uiDarwinControlFreeWhenAppropriate(self.uiC, [self superview])) {
|
||||
[self setTarget:nil];
|
||||
self.uiC = NULL;
|
||||
}
|
||||
[super viewDidMoveToSuperview];
|
||||
}
|
||||
|
||||
- (IBAction)uiCheckboxToggled:(id)sender
|
||||
{
|
||||
(*(self.uiOnToggled))(self.uiC, self.uiOnToggledData);
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
static void defaultOnToggled(uiControl *c, void *data)
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
|
||||
uiControl *uiNewCheckbox(const char *text)
|
||||
{
|
||||
uiControl *c;
|
||||
uiCheckboxNSButton *cc;
|
||||
|
||||
c = uiDarwinNewControl([uiCheckboxNSButton class], NO, NO);
|
||||
cc = (uiCheckboxNSButton *) uiControlHandle(c);
|
||||
cc.uiC = c;
|
||||
|
||||
[cc setTitle:toNSString(text)];
|
||||
[cc setButtonType:NSSwitchButton];
|
||||
[cc setBordered:NO];
|
||||
setStandardControlFont((NSControl *) cc);
|
||||
|
||||
[cc setTarget:cc];
|
||||
[cc setAction:@selector(uiCheckboxToggled:)];
|
||||
|
||||
cc.uiOnToggled = defaultOnToggled;
|
||||
|
||||
return cc.uiC;
|
||||
}
|
||||
|
||||
char *uiCheckboxText(uiControl *c)
|
||||
{
|
||||
uiCheckboxNSButton *cc;
|
||||
|
||||
cc = (uiCheckboxNSButton *) uiControlHandle(c);
|
||||
return strdup(fromNSString([cc title]));
|
||||
}
|
||||
|
||||
void uiCheckboxSetText(uiControl *c, const char *text)
|
||||
{
|
||||
uiCheckboxNSButton *cc;
|
||||
|
||||
cc = (uiCheckboxNSButton *) uiControlHandle(c);
|
||||
[cc setTitle:toNSString(text)];
|
||||
}
|
||||
|
||||
void uiCheckboxOnToggled(uiControl *c, void (*f)(uiControl *, void *), void *data)
|
||||
{
|
||||
uiCheckboxNSButton *cc;
|
||||
|
||||
cc = (uiCheckboxNSButton *) uiControlHandle(c);
|
||||
cc.uiOnToggled = f;
|
||||
cc.uiOnToggledData = data;
|
||||
}
|
Loading…
Reference in New Issue