// 6 january 2015 #define MAC_OS_X_VERSION_MIN_REQUIRED MAC_OS_X_VERSION_10_8 #define MAC_OS_X_VERSION_MAX_ALLOWED MAC_OS_X_VERSION_10_8 #import #import "../ui.h" #import "../ui_darwin.h" #import "../common/uipriv.h" #if __has_feature(objc_arc) #error Sorry, libui cannot be compiled with ARC. #endif #define toNSString(str) [NSString stringWithUTF8String:(str)] #define fromNSString(str) [(str) UTF8String] #ifndef NSAppKitVersionNumber10_9 #define NSAppKitVersionNumber10_9 1265 #endif // menu.m @interface menuManager : NSObject { struct mapTable *items; BOOL hasQuit; BOOL hasPreferences; BOOL hasAbout; } @property (strong) NSMenuItem *quitItem; @property (strong) NSMenuItem *preferencesItem; @property (strong) NSMenuItem *aboutItem; // NSMenuValidation is only informal - (BOOL)validateMenuItem:(NSMenuItem *)item; - (NSMenu *)makeMenubar; @end extern void finalizeMenus(void); extern void uninitMenus(void); // init.m @interface applicationClass : NSApplication @end // this is needed because NSApp is of type id, confusing clang #define realNSApp() ((applicationClass *) NSApp) @interface appDelegate : NSObject @property (strong) menuManager *menuManager; @end #define appDelegate() ((appDelegate *) [realNSApp() delegate]) // util.m extern void disableAutocorrect(NSTextView *); // entry.m extern void finishNewTextField(NSTextField *, BOOL); extern NSTextField *newEditableTextField(void); // window.m extern uiWindow *windowFromNSWindow(NSWindow *); // alloc.m extern NSMutableArray *delegates; extern void initAlloc(void); extern void uninitAlloc(void); // autolayout.m extern NSLayoutConstraint *mkConstraint(id view1, NSLayoutAttribute attr1, NSLayoutRelation relation, id view2, NSLayoutAttribute attr2, CGFloat multiplier, CGFloat c, NSString *desc); extern void jiggleViewLayout(NSView *view); struct singleChildConstraints { NSLayoutConstraint *leadingConstraint; NSLayoutConstraint *topConstraint; NSLayoutConstraint *trailingConstraintGreater; NSLayoutConstraint *trailingConstraintEqual; NSLayoutConstraint *bottomConstraintGreater; NSLayoutConstraint *bottomConstraintEqual; }; extern void singleChildConstraintsEstablish(struct singleChildConstraints *c, NSView *contentView, NSView *childView, BOOL hugsTrailing, BOOL hugsBottom, int margined, NSString *desc); extern void singleChildConstraintsRemove(struct singleChildConstraints *c, NSView *cv); extern void singleChildConstraintsSetMargined(struct singleChildConstraints *c, int margined); // map.m extern struct mapTable *newMap(void); extern void mapDestroy(struct mapTable *m); extern void *mapGet(struct mapTable *m, void *key); extern void mapSet(struct mapTable *m, void *key, void *value); extern void mapDelete(struct mapTable *m, void *key); extern void mapWalk(struct mapTable *m, void (*f)(void *key, void *value)); extern void mapReset(struct mapTable *m); // area.m extern int sendAreaEvents(NSEvent *); // areaevents.m extern BOOL fromKeycode(unsigned short keycode, uiAreaKeyEvent *ke); extern BOOL keycodeModifier(unsigned short keycode, uiModifiers *mod); // draw.m extern uiDrawContext *newContext(CGContextRef, CGFloat); extern void freeContext(uiDrawContext *); // drawtext.m extern uiDrawTextFont *mkTextFont(CTFontRef f, BOOL retain); extern uiDrawTextFont *mkTextFontFromNSFont(NSFont *f); extern void doDrawText(CGContextRef c, CGFloat cheight, double x, double y, uiDrawTextLayout *layout); // fontbutton.m extern BOOL fontButtonInhibitSendAction(SEL sel, id from, id to); extern BOOL fontButtonOverrideTargetForAction(SEL sel, id from, id to, id *override); extern void setupFontPanel(void); // colorbutton.m extern BOOL colorButtonInhibitSendAction(SEL sel, id from, id to); // scrollview.m struct scrollViewCreateParams { NSView *DocumentView; NSColor *BackgroundColor; BOOL DrawsBackground; BOOL Bordered; BOOL HScroll; BOOL VScroll; }; struct scrollViewData; extern NSScrollView *mkScrollView(struct scrollViewCreateParams *p, struct scrollViewData **dout); extern void scrollViewSetScrolling(NSScrollView *sv, struct scrollViewData *d, BOOL hscroll, BOOL vscroll); extern void scrollViewFreeData(NSScrollView *sv, struct scrollViewData *d); // label.cpp extern NSTextField *newLabel(NSString *str);