From d6ede28a2daf97043af863afba2f84b4c4aba02f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Chirag=20Dav=C3=A9?= Date: Thu, 24 Aug 2023 10:13:51 -0400 Subject: [PATCH] Subclass NSSplitView for subclass macos example --- macos/_examples/subclass/main.go | 40 ++++++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 5 deletions(-) diff --git a/macos/_examples/subclass/main.go b/macos/_examples/subclass/main.go index 6ea0dba0..ff650de6 100644 --- a/macos/_examples/subclass/main.go +++ b/macos/_examples/subclass/main.go @@ -20,13 +20,32 @@ func (v TestView) keyDown(event appkit.Event) { log.Println("Keydown:", v.Class().Name(), event.Class().Name()) } +func (v TestView) dividerThickness() float64 { + return 10.0 +} + +func (v TestView) dividerColor() appkit.Color { + return appkit.Color_BlackColor() +} + func main() { log.Println("Program started.") - c := objc.AllocateClass(objc.GetClass("NSView"), "TestView", 0) - objc.AddMethod(c, objc.Sel("acceptsFirstResponder"), (TestView).acceptsFirstResponder) - objc.AddMethod(c, objc.Sel("keyDown:"), (TestView).keyDown) - objc.RegisterClass(c) + // Create a SplitView subclass using AllocateClass + SplitViewClass := objc.AllocateClass(objc.GetClass("NSSplitView"), "TestSplitView", 0) + objc.AddMethod(SplitViewClass, objc.Sel("acceptsFirstResponder"), (TestView).acceptsFirstResponder) + objc.AddMethod(SplitViewClass, objc.Sel("keyDown:"), (TestView).keyDown) + + // Implement these methods for the dividerThickness and dividerColor properties on the subclass + objc.AddMethod(SplitViewClass, objc.Sel("dividerThickness"), (TestView).dividerThickness) + objc.AddMethod(SplitViewClass, objc.Sel("dividerColor"), (TestView).dividerColor) + + objc.RegisterClass(SplitViewClass) + + ViewClass := objc.AllocateClass(objc.GetClass("NSView"), "TestView", 0) + objc.AddMethod(ViewClass, objc.Sel("acceptsFirstResponder"), (TestView).acceptsFirstResponder) + objc.AddMethod(ViewClass, objc.Sel("keyDown:"), (TestView).keyDown) + objc.RegisterClass(ViewClass) app := appkit.Application_SharedApplication() @@ -45,7 +64,18 @@ func main() { win.SetTitle("Hello world") win.SetLevel(appkit.MainMenuWindowLevel + 2) - view := appkit.ViewFrom(c.CreateInstance(0).Ptr()).InitWithFrame(frame) + view := appkit.SplitViewFrom(SplitViewClass.CreateInstance(0).Ptr()).InitWithFrame(frame) + view.SetVertical(true) + + neatView := appkit.ViewFrom(ViewClass.CreateInstance(0).Ptr()).InitWithFrame(rectOf(0, 0, 150, 99)) + coolView := appkit.ViewFrom(ViewClass.CreateInstance(0).Ptr()).InitWithFrame(rectOf(10, 0, 150, 99)) + neatView.AddSubview(appkit.NewLabel("NEAT")) + coolView.AddSubview(appkit.NewLabel("COOL")) + + // Add subviews + view.AddArrangedSubview(neatView) + view.AddArrangedSubview(coolView) + win.SetContentView(view) win.MakeKeyAndOrderFront(nil)