forked from bickfordb/gocoa
/
NSClasses.go
80 lines (66 loc) · 2.1 KB
/
NSClasses.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package gocoa
/*
#cgo CFLAGS: -I/System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/
#cgo LDFLAGS: -lobjc
#include <CoreFoundation.h>
*/
import "C"
import (
"unsafe"
"reflect"
)
func NSDictionary(key string, value Object) Object {
return ClassForName("NSDictionary").Instance("alloc").Call("initWithObject:forKey:", value, NSString(key))
}
func NSString(inString string) Object {
l := C.CFIndex(len(inString))
ret := C.CFStringCreateWithBytes(nil, *(**C.UInt8)(unsafe.Pointer(&inString)),
l, C.kCFStringEncodingUTF8, 0)
return Object(unsafe.Pointer(ret))
}
func NSStringToString(inString Object) string {
cr := C.CFStringRef(unsafe.Pointer(inString))
var usedBufLen C.CFIndex
rng := C.CFRange { C.CFIndex(0), C.CFStringGetLength(cr) }
n := int(C.CFStringGetBytes(cr, rng, C.kCFStringEncodingUTF8, 0, 0, nil, 0, &usedBufLen))
if n <= 0 { return "" }
buf := make([]byte, int(usedBufLen))
C.CFStringGetBytes(cr, rng, C.kCFStringEncodingUTF8, 0, 0, (*C.UInt8)(unsafe.Pointer(&buf[0])), C.CFIndex(len(buf)), &usedBufLen)
sh := &reflect.StringHeader{
Data: uintptr(unsafe.Pointer(&buf[0])),
Len: int(usedBufLen),
}
return *(*string)(unsafe.Pointer(sh))
}
const (
BlackColor = "blackColor"
BlueColor = "blueColor"
BrownColor = "brownColor"
ClearColor = "clearColor"
CyanColor = "cyanColor"
DarkGrayColor = "darkGrayColor"
GrayColor = "grayColor"
GreenColor = "greenColor"
LightGrayColor = "lightGrayColor"
MagentaColor = "magentaColor"
OrangeColor = "orangeColor"
PurpleColor = "purpleColor"
RedColor = "redColor"
WhiteColor = "whiteColor"
YellowColor = "yellowColor"
)
func NSColor(color string) Object {
return ClassForName("NSColor").Instance(color)
}
const (
NSBorderlessWindowMask NSUInteger = 0
NSTitledWindowMask NSUInteger = 1 << 0
NSClosableWindowMask NSUInteger = 1 << 1
NSMiniaturizableWindowMask NSUInteger = 1 << 2
NSResizableWindowMask NSUInteger = 1 << 3
)
const (
NSBackingStoreRetained NSUInteger = 0
NSBackingStoreNonretained NSUInteger = 1
NSBackingStoreBuffered NSUInteger = 2
)