// 27 february 2014 package ui /* This creates a class goAppDelegate that will be used as the delegate for /everything/. Specifically, it: - handles window close events (windowShouldClose:) - handles window resize events (windowDidResize:) - handles button click events (buttonClicked:) - handles the application-global Quit event (such as from the Dock) (applicationShouldTerminate) */ // #include // #include "objc_darwin.h" import "C" var ( appDelegate C.id ) func makeAppDelegate() { appDelegate = C.makeAppDelegate() } //export appDelegate_windowShouldClose func appDelegate_windowShouldClose(win C.id) C.BOOL { sysData := getSysData(win) return toBOOL(sysData.close()) } //export appDelegate_windowDidResize func appDelegate_windowDidResize(win C.id) { s := getSysData(win) wincv := C.windowGetContentView(win) // we want the content view's size, not the window's r := C.frame(wincv) // (0,0) is the bottom left corner but this is handled in sysData.translateAllocationCoords() s.resizeWindow(int(r.width), int(r.height)) C.display(win) // redraw everything } //export appDelegate_buttonClicked func appDelegate_buttonClicked(button C.id) { sysData := getSysData(button) sysData.event() }