diff options
| author | Pietro Gagliardi <[email protected]> | 2014-08-30 23:02:02 -0400 |
|---|---|---|
| committer | Pietro Gagliardi <[email protected]> | 2014-08-30 23:02:02 -0400 |
| commit | 77bf566ebbcb62acd4d08d905d9542d6ff9b6b80 (patch) | |
| tree | eeb8e72bc3bf57f5be7f0c0af4319189ac6de838 /window_darwin.go | |
| parent | 155899c65ed32245e2ccad4197a10c77017d835b (diff) | |
...in with the new.
Diffstat (limited to 'window_darwin.go')
| -rw-r--r-- | window_darwin.go | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/window_darwin.go b/window_darwin.go new file mode 100644 index 0000000..ddd598e --- /dev/null +++ b/window_darwin.go @@ -0,0 +1,69 @@ +// 8 july 2014 + +package ui + +import ( + "unsafe" +) + +// #include "objc_darwin.h" +import "C" + +type window struct { + id C.id + + closing *event + + *container +} + +func newWindow(title string, width int, height int, control Control) *window { + id := C.newWindow(C.intptr_t(width), C.intptr_t(height)) + ctitle := C.CString(title) + defer C.free(unsafe.Pointer(ctitle)) + C.windowSetTitle(id, ctitle) + w := &window{ + id: id, + closing: newEvent(), + container: newContainer(control), + } + C.windowSetDelegate(w.id, unsafe.Pointer(w)) + C.windowSetContentView(w.id, w.container.id) + return w +} + +func (w *window) Title() string { + return C.GoString(C.windowTitle(w.id)) +} + +func (w *window) SetTitle(title string) { + ctitle := C.CString(title) + defer C.free(unsafe.Pointer(ctitle)) + C.windowSetTitle(w.id, ctitle) +} + +func (w *window) Show() { + C.windowShow(w.id) +} + +func (w *window) Hide() { + C.windowHide(w.id) +} + +func (w *window) Close() { + C.windowClose(w.id) +} + +func (w *window) OnClosing(e func() bool) { + w.closing.setbool(e) +} + +//export windowClosing +func windowClosing(xw unsafe.Pointer) C.BOOL { + w := (*window)(unsafe.Pointer(xw)) + close := w.closing.fire() + if close { + return C.YES + } + return C.NO +} |
