summaryrefslogtreecommitdiff
path: root/redo/warningpopover_darwin.m
diff options
context:
space:
mode:
Diffstat (limited to 'redo/warningpopover_darwin.m')
-rw-r--r--redo/warningpopover_darwin.m78
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;
+}