Skip to content
forked from mojbro/gocoa

Go bindings for the Cocoa framework to build macOS applications

License

Notifications You must be signed in to change notification settings

roblillack/gocoa

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

What is this?

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.

@roblillack

Changes to original

  • 2024-05-27 270a541 Fix releasing control handlers/delegates
  • 2024-05-27 101ca94 imageview: Allow adding image.Images
  • 2024-05-27 0fbdd13 Add CustomButton which does not handle mouse clicks for you
  • 2024-05-27 0512f30 button: Add SetImage
  • 2024-05-27 0aa6fa8 slider: Fix setting callback handler
  • 2024-05-24 #6: Add TableView
  • 2024-05-22 #5: Add Stepper
  • 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

gocoa

GoDoc Go Report Card

Go bindings for the Cocoa framework to build macOS applications.

How to use

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()
}

Status of this project

This package is very, very early and incomplete! It is mostly just an experiment and is not really useful yet.

Contributors

Big thanks to Philipp Haussleiter who has contributed a great deal to this project.

About

Go bindings for the Cocoa framework to build macOS applications

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Languages

  • Objective-C 57.4%
  • Go 42.6%