This is a friendly fork of @mojbro's gocoa package with some additional features and bug fixes so it is suitable as Cocoa backend of my Spot GUI toolkit. I'll be in touch with the original author to get my changes upstreamed or make this a proper, maintained fork. Original README follows.
- 2024-05-22 #5: Add NSStepper
- 2024-05-22 #4: Add text alignment options to textfields
- 2024-05-22 #3: Add support for
OnChange
callbacks for textfields- 2024-05-22 #1: Add support for removing controls (based on work by @phaus)
- 2024-05-22 #2: Update deprecated NSButton enums (by @dim13)
- 2024-05-14 e85e4be progressindicator: Don't hide by default as this would increase time to create widgets in the first place
- 2024-05-14 724ee73 textview: Add hacky SetFontSize functionality.
- 2024-05-14 57058d9 window: Flip all views by default
- 2024-05-14 c93457a application: Add RunOnMainLoop
Go bindings for the Cocoa framework to build macOS applications.
The following is a basic Hello World application.
package main
import (
"fmt"
"github.com/mojbro/gocoa"
)
func main() {
gocoa.InitApplication()
gocoa.OnApplicationDidFinishLaunching(func() {
fmt.Println("App running!")
})
wnd := gocoa.NewWindow("Hello World!", 150, 150, 300, 200)
// Change me button
currentTitle, nextTitle := "Change me!", "Change me again!"
changeButton := gocoa.NewButton(75, 125, 150, 25)
changeButton.SetTitle(currentTitle)
changeButton.OnClick(func() {
changeButton.SetTitle(nextTitle)
currentTitle, nextTitle = nextTitle, currentTitle
})
wnd.AddButton(changeButton)
// Quit button
quitButton := gocoa.NewButton(75, 50, 150, 25)
quitButton.SetTitle("Quit")
quitButton.OnClick(func() { gocoa.TerminateApplication() })
wnd.AddButton(quitButton)
wnd.MakeKeyAndOrderFront()
gocoa.RunApplication()
}
This package is very, very early and incomplete! It is mostly just an experiment and is not really useful yet.
Big thanks to Philipp Haussleiter who has contributed a great deal to this project.