mirror of
https://github.com/vsariola/sointu.git
synced 2025-11-12 21:02:52 -05:00
56 lines
1.8 KiB
Go
56 lines
1.8 KiB
Go
package gioui
|
|
|
|
import (
|
|
"gioui.org/layout"
|
|
"gioui.org/text"
|
|
"gioui.org/unit"
|
|
"github.com/vsariola/sointu/tracker"
|
|
)
|
|
|
|
type (
|
|
InstrumentPresets struct {
|
|
searchEditor *Editor
|
|
gmDlsBtn *Clickable
|
|
userPresetsBtn *Clickable
|
|
builtinPresetsBtn *Clickable
|
|
clearSearchBtn *Clickable
|
|
dirList *DragList
|
|
resultList *DragList
|
|
}
|
|
)
|
|
|
|
func NewInstrumentPresets(m *tracker.Model) *InstrumentPresets {
|
|
return &InstrumentPresets{
|
|
searchEditor: NewEditor(false, false, text.Start),
|
|
gmDlsBtn: new(Clickable),
|
|
clearSearchBtn: new(Clickable),
|
|
userPresetsBtn: new(Clickable),
|
|
builtinPresetsBtn: new(Clickable),
|
|
dirList: NewDragList(m.Instruments().List(), layout.Vertical),
|
|
resultList: NewDragList(m.Instruments().List(), layout.Vertical),
|
|
}
|
|
}
|
|
|
|
func (ip *InstrumentPresets) layout(gtx C) D {
|
|
// get tracker from values
|
|
tr := TrackerFromContext(gtx)
|
|
gmDlsBtn := ToggleBtn(tr.NoGmDls(), tr.Theme, ip.gmDlsBtn, "No gm.dls", "Exclude presets using gm.dls")
|
|
userPresetsFilterBtn := ToggleBtn(tr.UserPresetFilter(), tr.Theme, ip.userPresetsBtn, "User", "Show only user presets")
|
|
builtinPresetsFilterBtn := ToggleBtn(tr.BuiltinPresetsFilter(), tr.Theme, ip.builtinPresetsBtn, "Builtin", "Show only builtin presets")
|
|
// layout
|
|
return layout.Flex{Axis: layout.Vertical}.Layout(gtx,
|
|
layout.Rigid(func(gtx C) D {
|
|
return layout.UniformInset(unit.Dp(4)).Layout(gtx, func(gtx C) D {
|
|
return layout.Flex{Axis: layout.Horizontal}.Layout(gtx,
|
|
layout.Flexed(1, func(gtx C) D {
|
|
return ip.searchEditor.Layout(gtx, tr.Model.PresetSearchString(), tr.Theme, &tr.Theme.InstrumentEditor.InstrumentComment, "Search presets")
|
|
}),
|
|
layout.Rigid(userPresetsFilterBtn.Layout),
|
|
layout.Rigid(builtinPresetsFilterBtn.Layout),
|
|
layout.Rigid(gmDlsBtn.Layout),
|
|
)
|
|
})
|
|
}),
|
|
)
|
|
}
|