package CustomWidget import ( "log" "fyne.io/fyne/v2" "fyne.io/fyne/v2/widget" "g.r-io.lu/shynd/kemoforge/pkg/KFData" "g.r-io.lu/shynd/kemoforge/pkg/KFData/KFObjects/KFFunction" "g.r-io.lu/shynd/kemoforge/pkg/KFData/KFObjects/KFWidget" ) // Import is a function used to allow importing of the custom widget package // while still allowing the package to be used normally and not be yelled at by the compiler func Import() {} func init() { log.Printf("Registering ExampleWidget") customWidget := KFWidget.Widget{ Type: "ExampleWidget", RequiredArgs: KFData.NewNFInterfaceMap( KFData.NewKeyVal("action", ""), KFData.NewKeyVal("message", ""), ), OptionalArgs: KFData.NewNFInterfaceMap(), } customWidget.Register(ExampleWidgetHandler) } func ExampleWidgetHandler(window fyne.Window, args *KFData.NFInterfaceMap, w *KFWidget.Widget) (fyne.CanvasObject, error) { //Get the action from the args var action string err := args.Get("action", &action) if err != nil { return nil, err } var message string err = args.Get("message", &message) if err != nil { return nil, err } button := widget.NewButton("Example Button", func() { //Do something _, _ = KFFunction.ParseAndRun(window, action, KFData.NewNFInterfaceMap(KFData.NewKeyVal("message", message))) }) return button, nil }