12345678910111213141516171819202122232425262728293031323334353637383940 |
- // SPDX-License-Identifier: Unlicense OR MIT
- package material
- import (
- "gioui.org/io/semantic"
- "gioui.org/layout"
- "gioui.org/widget"
- )
- type CheckBoxStyle struct {
- checkable
- CheckBox *widget.Bool
- }
- func CheckBox(th *Theme, checkBox *widget.Bool, label string) CheckBoxStyle {
- c := CheckBoxStyle{
- CheckBox: checkBox,
- checkable: checkable{
- Label: label,
- Color: th.Palette.Fg,
- IconColor: th.Palette.ContrastBg,
- TextSize: th.TextSize * 14.0 / 16.0,
- Size: 26,
- shaper: th.Shaper,
- checkedStateIcon: th.Icon.CheckBoxChecked,
- uncheckedStateIcon: th.Icon.CheckBoxUnchecked,
- },
- }
- c.checkable.Font.Typeface = th.Face
- return c
- }
- // Layout updates the checkBox and displays it.
- func (c CheckBoxStyle) Layout(gtx layout.Context) layout.Dimensions {
- return c.CheckBox.Layout(gtx, func(gtx layout.Context) layout.Dimensions {
- semantic.CheckBox.Add(gtx.Ops)
- return c.layout(gtx, c.CheckBox.Value, c.CheckBox.Hovered() || gtx.Focused(c.CheckBox))
- })
- }
|