Removed all the objc_getClass() and sel_getUid() calls from the Go code on Mac OS X. Also got rid of a forgotten objc_msgSend(). Now comes the Objective-C half...

This commit is contained in:
Pietro Gagliardi 2014-05-15 20:14:44 -04:00
parent 9d8976abab
commit b7db0e15cd
8 changed files with 0 additions and 229 deletions

View File

@ -14,10 +14,6 @@ import (
// #include "area_darwin.h"
import "C"
var (
_NSView = objc_getClass("NSView")
)
func makeArea(parentWindow C.id, alternate bool, s *sysData) C.id {
area := C.makeArea()
area = newScrollView(area)
@ -29,10 +25,6 @@ func areaInScrollView(scrollview C.id) C.id {
return getScrollViewContent(scrollview)
}
var (
_drawAtPoint = sel_getUid("drawAtPoint:")
)
//export areaView_drawRect
func areaView_drawRect(self C.id, rect C.struct_xrect) {
s := getSysData(self)
@ -51,20 +43,6 @@ func areaView_drawRect(self C.id, rect C.struct_xrect) {
C.int64_t(cliprect.Min.X), C.int64_t(cliprect.Min.Y))
}
var (
_addTrackingArea = sel_getUid("addTrackingArea:")
_removeTrackingArea = sel_getUid("removeTrackingArea:")
)
var (
_NSEvent = objc_getClass("NSEvent")
_modifierFlags = sel_getUid("modifierFlags")
_buttonNumber = sel_getUid("buttonNumber")
_clickCount = sel_getUid("clickCount")
_pressedMouseButtons = sel_getUid("pressedMouseButtons")
)
func parseModifiers(e C.id) (m Modifiers) {
const (
_NSShiftKeyMask = 1 << 17
@ -157,10 +135,6 @@ func areaView_mouseUp(self C.id, e C.id) {
areaMouseEvent(self, e, true, true)
}
var (
_keyCode = sel_getUid("keyCode")
)
func sendKeyEvent(self C.id, e C.id, ke KeyEvent) bool {
s := getSysData(self)
handled, repaint := s.handler.Key(ke)

View File

@ -25,11 +25,6 @@ var (
appDelegate C.id
)
var (
_uitask = sel_getUid("uitask:") // used by uitask_darwin.go
_buttonClicked = sel_getUid("buttonClicked:") // used by sysdata_darwin.go
)
func makeAppDelegate() {
appDelegate = C.makeAppDelegate()
}
@ -40,11 +35,6 @@ func appDelegate_windowShouldClose(win C.id) {
sysData.signal()
}
var (
_object = sel_getUid("object")
_display = sel_getUid("display")
)
//export appDelegate_windowDidResize
func appDelegate_windowDidResize(win C.id) {
s := getSysData(win)

View File

@ -11,23 +11,6 @@ import (
// #include "dialog_darwin.h"
import "C"
// NSAlert styles.
const (
_NSWarningAlertStyle = 0 // default
_NSInformationalAlertStyle = 1
_NSCriticalAlertStyle = 2
)
var (
_NSAlert = objc_getClass("NSAlert")
_setMessageText = sel_getUid("setMessageText:")
_setInformativeText = sel_getUid("setInformativeText:")
_setAlertStyle = sel_getUid("setAlertStyle:")
_addButtonWithTitle = sel_getUid("addButtonWithTitle:")
_runModal = sel_getUid("runModal")
)
func _msgBox(primarytext string, secondarytext string, style uintptr) {
ret := make(chan struct{})
defer close(ret)

View File

@ -37,11 +37,6 @@ const (
)
var (
_NSMutableDictionary = objc_getClass("NSMutableDictionary")
_dictionaryWithObjectForKey = sel_getUid("dictionaryWithObject:forKey:")
_objectForKey = sel_getUid("objectForKey:")
listboxItemKey = toNSString(_listboxItemKey)
)
@ -71,17 +66,6 @@ But what is arrangedObjects? Why care about arranging objects? We don't have to
Of course, Mac OS X 10.5 adds the ability to automatically arrange objects. So let's just turn that off to be safe.
*/
var (
_NSArrayController = objc_getClass("NSArrayController")
_setAutomaticallyRearrangesObjects = sel_getUid("setAutomaticallyRearrangesObjects:")
_addObject = sel_getUid("addObject:")
_insertObjectAtArrangedObjectIndex = sel_getUid("insertObject:atArrangedObjectIndex:")
_removeObjectAtArrangedObjectIndex = sel_getUid("removeObjectAtArrangedObjectIndex:")
_arrangedObjects = sel_getUid("arrangedObjects")
_objectAtIndex = sel_getUid("objectAtIndex:")
)
func newListboxArray() C.id {
return C.newListboxArray()
}
@ -122,9 +106,6 @@ const (
)
var (
_bindToObjectWithKeyPathOptions = sel_getUid("bind:toObject:withKeyPath:options:")
_infoForBinding = sel_getUid("infoForBinding:")
tableColumnBinding = toNSString("value")
listboxItemKeyPath = toNSString(_listboxItemKeyPath)
)
@ -146,16 +127,6 @@ Columns need string identifiers; we'll just reuse the item key.
Editability is also handled here, as opposed to in NSTableView itself.
*/
var (
_NSTableColumn = objc_getClass("NSTableColumn")
_initWithIdentifier = sel_getUid("initWithIdentifier:")
_tableColumnWithIdentifier = sel_getUid("tableColumnWithIdentifier:")
_dataCell = sel_getUid("dataCell")
_setDataCell = sel_getUid("setDataCell:")
// _setEditable in sysdata_darwin.go
)
func newListboxTableColumn() C.id {
column := C.makeListboxTableColumn(listboxItemKey)
bindListboxArray(column, newListboxArray())
@ -172,15 +143,7 @@ The NSTableViews don't draw their own scrollbars; we have to drop our NSTableVie
The actual creation code was moved to objc_darwin.go.
*/
var (
_setBorderType = sel_getUid("setBorderType:")
)
func newListboxScrollView(listbox C.id) C.id {
const (
_NSBezelBorder = 2
)
scrollview := newScrollView(listbox)
C.giveScrollViewBezelBorder(scrollview) // this is what Interface Builder gives the scroll view
return scrollview
@ -204,21 +167,6 @@ func listboxArray(listbox C.id) C.id {
We'll handle selections from the NSTableView too. The only trickery is dealing with the return value of -[NSTableView selectedRowIndexes]: NSIndexSet. The only way to get indices out of a NSIndexSet is to get them all out wholesale, and working with C arrays in Go is Not Fun.
*/
var (
_NSTableView = objc_getClass("NSTableView")
_addTableColumn = sel_getUid("addTableColumn:")
_setAllowsMultipleSelection = sel_getUid("setAllowsMultipleSelection:")
_setAllowsEmptySelection = sel_getUid("setAllowsEmptySelection:")
_setHeaderView = sel_getUid("setHeaderView:")
_selectedRowIndexes = sel_getUid("selectedRowIndexes")
_count = sel_getUid("count")
_firstIndex = sel_getUid("firstIndex")
_indexGreaterThanIndex = sel_getUid("indexGreaterThanIndex:")
_numberOfRows = sel_getUid("numberOfRows")
_deselectAll = sel_getUid("deselectAll:")
)
func makeListbox(parentWindow C.id, alternate bool, s *sysData) C.id {
listbox := C.makeListbox(newListboxTableColumn(), toBOOL(alternate))
listbox = newListboxScrollView(listbox)

View File

@ -9,36 +9,8 @@ import (
// #cgo LDFLAGS: -lobjc -framework Foundation
// #include <stdlib.h>
// #include "objc_darwin.h"
// /* cgo doesn't like Nil */
// Class NilClass = Nil;
import "C"
func objc_getClass(class string) C.id {
cclass := C.CString(class)
defer C.free(unsafe.Pointer(cclass))
return C.objc_getClass(cclass)
}
func sel_getUid(sel string) C.SEL {
csel := C.CString(sel)
defer C.free(unsafe.Pointer(csel))
return C.sel_getUid(csel)
}
// Common Objective-C types and selectors.
var (
_NSObject = objc_getClass("NSObject")
_NSString = objc_getClass("NSString")
_alloc = sel_getUid("alloc")
_new = sel_getUid("new")
_release = sel_getUid("release")
_stringWithUTF8String = sel_getUid("stringWithUTF8String:")
_UTF8String = sel_getUid("UTF8String")
)
func toNSString(str string) C.id {
cstr := C.CString(str)
defer C.free(unsafe.Pointer(cstr))
@ -52,16 +24,6 @@ func fromNSString(str C.id) string {
// These consolidate the NSScrollView code (used by listbox_darwin.go and area_darwin.go) into a single place.
var (
_NSScrollView = objc_getClass("NSScrollView")
_setHasHorizontalScroller = sel_getUid("setHasHorizontalScroller:")
_setHasVerticalScroller = sel_getUid("setHasVerticalScroller:")
_setAutohidesScrollers = sel_getUid("setAutohidesScrollers:")
_setDocumentView = sel_getUid("setDocumentView:")
_documentView = sel_getUid("documentView")
)
func newScrollView(content C.id) C.id {
return C.makeScrollView(content)
}

View File

@ -11,11 +11,6 @@ import "C"
Cocoa doesn't provide a reliable way to get the preferred size of a control (you're supposed to use Interface Builder and have it set up autoresizing for you). The best we can do is call [control sizeToFit] (which is defined for NSControls and has a custom implementation for the other types here) and read the preferred size. Though this changes the size, we're immediately overriding the change on return from sysData.preferredSize(), so no harm done. (This is similar to what we are doing with GTK+, except GTK+ does not actually change the size.)
*/
var (
_sizeToFit = sel_getUid("sizeToFit")
// _frame in sysdata_darwin.go
)
// standard case: control immediately passed in
func controlPrefSize(control C.id) (width int, height int) {
r := C.controlPrefSize(control)

View File

@ -37,65 +37,6 @@ type classData struct {
selectIndices func(id C.id, indices []int)
}
var (
_NSWindow = objc_getClass("NSWindow")
_NSButton = objc_getClass("NSButton")
_NSPopUpButton = objc_getClass("NSPopUpButton")
_NSComboBox = objc_getClass("NSComboBox")
_NSTextField = objc_getClass("NSTextField")
_NSSecureTextField = objc_getClass("NSSecureTextField")
_NSProgressIndicator = objc_getClass("NSProgressIndicator")
_initWithContentRect = sel_getUid("initWithContentRect:styleMask:backing:defer:")
_initWithFrame = sel_getUid("initWithFrame:")
_setDelegate = sel_getUid("setDelegate:")
_makeKeyAndOrderFront = sel_getUid("makeKeyAndOrderFront:")
_orderOut = sel_getUid("orderOut:")
_setHidden = sel_getUid("setHidden:")
_setTitle = sel_getUid("setTitle:")
_setStringValue = sel_getUid("setStringValue:")
_setFrame = sel_getUid("setFrame:")
_state = sel_getUid("state")
_title = sel_getUid("title")
_stringValue = sel_getUid("stringValue")
_frame = sel_getUid("frame")
_setContentSize = sel_getUid("setContentSize:")
_setBezelStyle = sel_getUid("setBezelStyle:")
_setTarget = sel_getUid("setTarget:")
_setAction = sel_getUid("setAction:")
_contentView = sel_getUid("contentView")
_addSubview = sel_getUid("addSubview:")
_setButtonType = sel_getUid("setButtonType:")
_initWithFramePullsDown = sel_getUid("initWithFrame:pullsDown:")
_setUsesDataSource = sel_getUid("setUsesDataSource:")
_addItemWithTitle = sel_getUid("addItemWithTitle:")
_insertItemWithTitleAtIndex = sel_getUid("insertItemWithTitle:atIndex:")
_removeItemAtIndex = sel_getUid("removeItemAtIndex:")
_titleOfSelectedItem = sel_getUid("titleOfSelectedItem")
_indexOfSelectedItem = sel_getUid("indexOfSelectedItem")
_addItemWithObjectValue = sel_getUid("addItemWithObjectValue:")
_insertItemWithObjectValueAtIndex = sel_getUid("insertItemWithObjectValue:atIndex:")
_setEditable = sel_getUid("setEditable:")
_setBordered = sel_getUid("setBordered:")
_setDrawsBackground = sel_getUid("setDrawsBackground:")
_cell = sel_getUid("cell")
_setLineBreakMode = sel_getUid("setLineBreakMode:")
_setStyle = sel_getUid("setStyle:")
_setControlSize = sel_getUid("setControlSize:")
_setIndeterminate = sel_getUid("setIndeterminate:")
_startAnimation = sel_getUid("startAnimation:")
_stopAnimation = sel_getUid("stopAnimation:")
_setDoubleValue = sel_getUid("setDoubleValue:")
_numberOfItems = sel_getUid("numberOfItems")
_selectItemAtIndex = sel_getUid("selectItemAtIndex:")
_deselectItemAtIndex = sel_getUid("deselectItemAtIndex:")
)
func initWithDummyFrame(self C.id) C.id {
return C.objc_msgSend_rect(self, _initWithFrame,
C.int64_t(0), C.int64_t(0), C.int64_t(100), C.int64_t(100))
}
func addControl(parentWindow C.id, control C.id) {
C.addControl(parentWindow, control)
}

View File

@ -15,19 +15,6 @@ import "C"
var uitask chan func()
var (
_NSAutoreleasePool = objc_getClass("NSAutoreleasePool")
_NSValue = objc_getClass("NSValue")
_valueWithPointer = sel_getUid("valueWithPointer:")
_performSelectorOnMainThread =
sel_getUid("performSelectorOnMainThread:withObject:waitUntilDone:")
_stop = sel_getUid("stop:")
_postEventAtStart = sel_getUid("postEvent:atStart:")
_pointerValue = sel_getUid("pointerValue")
_run = sel_getUid("run")
)
func ui(main func()) error {
runtime.LockOSThread()
@ -58,15 +45,6 @@ func ui(main func()) error {
// TODO move to init_darwin.go?
var (
_NSApplication = objc_getClass("NSApplication")
_sharedApplication = sel_getUid("sharedApplication")
_setActivationPolicy = sel_getUid("setActivationPolicy:")
_activateIgnoringOtherApps = sel_getUid("activateIgnoringOtherApps:")
// _setDelegate in sysdata_darwin.go
)
func initCocoa() (err error) {
C.initBleh() // initialize bleh_darwin.m functions
makeAppDelegate()