diff --git a/widget/widget.go b/widget/widget.go new file mode 100644 index 00000000..6e905f90 --- /dev/null +++ b/widget/widget.go @@ -0,0 +1,20 @@ +package widget + +import ( + "github.com/goplus/spx" +) + +func Gopt_Game_Gopx_GetWidget[T any](sg spx.ShapeGetter, name string) *T { + items := sg.GetAllShapes() + for _, item := range items { + widget, ok := item.(spx.Widget) + if ok && widget.GetName() == name { + if result, ok := widget.(interface{}).(*T); ok { + return result + } else { + panic("GetWidget: type mismatch") + } + } + } + panic("GetWidget: widget not found - " + name) +}