feat(tracker): clicking on the parameter label when the parameter is already selected resets the parameter

Closes #17
This commit is contained in:
vsariola 2021-02-16 23:25:21 +02:00
parent d49e0a6bc8
commit b095b799a0
2 changed files with 23 additions and 2 deletions

View File

@ -69,6 +69,7 @@ type Tracker struct {
ChooseUnitTypeList *layout.List
ChooseUnitTypeBtns []*widget.Clickable
AddUnitBtn *widget.Clickable
ParameterLabelBtns []*widget.Clickable
InstrumentDragList *DragList
TrackHexCheckBoxes []*widget.Bool
TrackShowHex []bool

View File

@ -40,6 +40,21 @@ func (t *Tracker) layoutUnitSliders(gtx C) D {
for len(t.ParameterSliders) <= index {
t.ParameterSliders = append(t.ParameterSliders, new(widget.Float))
}
for len(t.ParameterLabelBtns) <= index {
t.ParameterLabelBtns = append(t.ParameterLabelBtns, new(widget.Clickable))
}
for t.ParameterLabelBtns[index].Clicked() {
if t.EditMode != EditParameters || t.CurrentParam != index {
t.EditMode = EditParameters
t.CurrentParam = index
op.InvalidateOp{}.Add(gtx.Ops)
} else {
if index < len(ut) {
t.SetUnitParam(defaultUnits[u.Type].Parameters[ut[index].Name])
op.InvalidateOp{}.Add(gtx.Ops)
}
}
}
params := u.Parameters
var name string
var value, min, max int
@ -97,8 +112,13 @@ func (t *Tracker) layoutUnitSliders(gtx C) D {
sliderStyle.Color = t.Theme.Fg
return layout.Flex{Axis: layout.Horizontal, Alignment: layout.Middle}.Layout(gtx,
layout.Rigid(func(gtx C) D {
gtx.Constraints.Min.X = gtx.Px(unit.Dp(110))
return layout.E.Layout(gtx, Label(name, white))
return layout.Stack{}.Layout(gtx,
layout.Stacked(func(gtx C) D {
gtx.Constraints.Min.X = gtx.Px(unit.Dp(110))
return layout.E.Layout(gtx, Label(name, white))
}),
layout.Expanded(t.ParameterLabelBtns[index].Layout),
)
}),
layout.Rigid(func(gtx C) D {
gtx.Constraints.Min.X = gtx.Px(unit.Dp(200))