Added a Select() method to List

This commit is contained in:
Sasha Koshka 2023-02-10 22:26:34 -05:00
parent 5e448edb21
commit dce0321e9b
2 changed files with 30 additions and 12 deletions

View File

@ -330,6 +330,14 @@ func (element *List) Replace (index int, entry ListEntry) {
}
}
// Select selects a specific item in the list. If the index is out of bounds,
// no items will be selecected.
func (element *List) Select (index int) {
if element.selectEntry(index) {
element.redo()
}
}
func (element *List) selectUnderMouse (x, y int) (updated bool) {
inset := element.theme.Inset(theme.PatternSunken)
bounds := inset.Apply(element.Bounds())

View File

@ -36,17 +36,27 @@ func run () {
controlBar := basicElements.NewContainer(basicLayouts.Horizontal { true, false })
label := basicElements.NewLabel("Play a song!", false)
waveformButton := basicElements.NewButton("Sine")
waveformButton.OnClick (func () {
waveform = (waveform + 1) % 5
switch waveform {
case 0: waveformButton.SetText("Sine")
case 1: waveformButton.SetText("Square")
case 2: waveformButton.SetText("Saw")
case 3: waveformButton.SetText("Triangle")
case 4: waveformButton.SetText("Supersaw")
}
})
waveformList := basicElements.NewList (
basicElements.NewListEntry("Sine", func(){ waveform = 0 }),
basicElements.NewListEntry("Triangle", func(){ waveform = 3 }),
basicElements.NewListEntry("Square", func(){ waveform = 1 }),
basicElements.NewListEntry("Saw", func(){ waveform = 2 }),
basicElements.NewListEntry("Supersaw", func(){ waveform = 4 }),
)
waveformList.Select(0)
// waveformButton := basicElements.NewButton("Sine")
// waveformButton.OnClick (func () {
// waveform = (waveform + 1) % 5
// switch waveform {
// case 0: waveformButton.SetText("Sine")
// case 1: waveformButton.SetText("Square")
// case 2: waveformButton.SetText("Saw")
// case 3: waveformButton.SetText("Triangle")
// case 4: waveformButton.SetText("Supersaw")
// }
// })
attackSlider := basicElements.NewLerpSlider(0, 3 * time.Second, adsr.Attack, true)
decaySlider := basicElements.NewLerpSlider(0, 3 * time.Second, adsr.Decay, true)
@ -73,7 +83,7 @@ func run () {
window.Adopt(container)
controlBar.Adopt(label, true)
controlBar.Adopt(waveformButton, false)
controlBar.Adopt(waveformList, false)
controlBar.Adopt(basicElements.NewSpacer(true), false)
controlBar.Adopt(attackSlider, false)
controlBar.Adopt(decaySlider, false)