// SPDX-License-Identifier: Unlicense OR MIT package material import ( "github.com/p9c/p9/pkg/gel/gio/layout" "github.com/p9c/p9/pkg/gel/gio/unit" "github.com/p9c/p9/pkg/gel/gio/widget" ) type RadioButtonStyle struct { checkable Key string Group *widget.Enum } // RadioButton returns a RadioButton with a label. The key specifies // the value for the Enum. func RadioButton(th *Theme, group *widget.Enum, key, label string) RadioButtonStyle { return RadioButtonStyle{ Group: group, checkable: checkable{ Label: label, Color: th.Palette.Fg, IconColor: th.Palette.ContrastBg, TextSize: th.TextSize.Scale(14.0 / 16.0), Size: unit.Dp(26), shaper: th.Shaper, checkedStateIcon: th.Icon.RadioChecked, uncheckedStateIcon: th.Icon.RadioUnchecked, }, Key: key, } } // Layout updates enum and displays the radio button. func (r RadioButtonStyle) Layout(gtx layout.Context) layout.Dimensions { hovered, hovering := r.Group.Hovered() dims := r.layout(gtx, r.Group.Value == r.Key, hovering && hovered == r.Key) gtx.Constraints.Min = dims.Size r.Group.Layout(gtx, r.Key) return dims }