diff --git a/src/widgets.go b/src/widgets.go index 7c4ab37..907c31a 100644 --- a/src/widgets.go +++ b/src/widgets.go @@ -5,6 +5,7 @@ import ( "github.com/ebitenui/ebitenui/image" "github.com/ebitenui/ebitenui/widget" + "github.com/hajimehoshi/ebiten/v2" ) func NewMenuButton( @@ -40,6 +41,32 @@ func NewMenuButton( ) } +func NewToolbarButton( + icon *ebiten.Image, + action func(args *widget.ButtonClickedEventArgs)) *widget.Container { + + buttonImage, _ := LoadButtonImage() + + iconContainer := widget.NewContainer( + widget.ContainerOpts.Layout(widget.NewStackedLayout()), + widget.ContainerOpts.WidgetOpts(widget.WidgetOpts.LayoutData(widget.AnchorLayoutData{ + HorizontalPosition: widget.AnchorLayoutPositionCenter, + VerticalPosition: widget.AnchorLayoutPositionCenter, + })), + ) + + button := widget.NewButton( + widget.ButtonOpts.Image(buttonImage), + widget.ButtonOpts.ClickedHandler(action), + ) + + iconContainer.AddChild(button) + + iconContainer.AddChild(widget.NewGraphic(widget.GraphicOpts.Image(icon))) + + return iconContainer +} + func NewCheckbox( text string, initialvalue bool,