diff options
Diffstat (limited to 'redo/warningpopover_darwin.m')
| -rw-r--r-- | redo/warningpopover_darwin.m | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/redo/warningpopover_darwin.m b/redo/warningpopover_darwin.m new file mode 100644 index 0000000..09be14b --- /dev/null +++ b/redo/warningpopover_darwin.m @@ -0,0 +1,78 @@ +// 26 august 2014 + +#include "objc_darwin.h" +#include <Cocoa/Cocoa.h> + +@interface goWarningView : NSView { +@public + NSImageView *icon; + NSTextField *label; +} +@end + +@implementation goWarningView + +- (void)sizeToFitAndArrange +{ + [self->label sizeToFit]; + + CGFloat labelheight, imageheight; + CGFloat targetwidth, imagewidth; + + labelheight = [self->label frame].size.height; + imageheight = [[self->icon image] size].height; + imagewidth = [[self->icon image] size].width; + targetwidth = (imagewidth * labelheight) / imageheight; + + [self->icon setFrameSize:NSMakeSize(targetwidth, labelheight)]; + + [self setFrameSize:NSMakeSize(targetwidth + [self->label frame].size.width, labelheight)]; + [self->icon setFrameOrigin:NSMakePoint(0, 0)]; + [self->label setFrameOrigin:NSMakePoint(targetwidth, 0)]; +} + +- (BOOL)acceptsFirstResponder +{ + return NO; +} + +@end + +id newWarningPopover(char *text) +{ + goWarningView *wv; + + wv = [[goWarningView alloc] initWithFrame:NSZeroRect]; + + wv->icon = [[NSImageView alloc] initWithFrame:NSZeroRect]; + [wv->icon setImage:[NSImage imageNamed:NSImageNameCaution]]; + // TODO verify against Interface Builder + [wv->icon setImageFrameStyle:NSImageFrameNone]; +// [wv->icon setImageAlignment:xxx]; + [wv->icon setImageScaling:NSImageScaleProportionallyUpOrDown]; + [wv->icon setEditable:NO]; + [wv->icon setAnimates:NO]; + [wv->icon setAllowsCutCopyPaste:NO]; + // TODO check other controls's values for this + [wv->icon setRefusesFirstResponder:YES]; + + wv->label = (NSTextField *) newLabel(); + // TODO rename to textfieldSetText + textFieldSetText((id) wv->label, text); + [wv->label setRefusesFirstResponder:YES]; + + [wv addSubview:wv->icon]; + [wv addSubview:wv->label]; + [wv sizeToFitAndArrange]; + + NSPopover *popover; + NSViewController *vc; + + vc = [NSViewController new]; + [vc setView:wv]; + popover = [NSPopover new]; + [popover setContentViewController:vc]; + [popover setContentSize:[wv frame].size]; + + return (id) popover; +} |
