From b095b799a01076150d478ba63409aa1886ab43d5 Mon Sep 17 00:00:00 2001 From: vsariola <5684185+vsariola@users.noreply.github.com> Date: Tue, 16 Feb 2021 23:25:21 +0200 Subject: [PATCH] feat(tracker): clicking on the parameter label when the parameter is already selected resets the parameter Closes #17 --- tracker/tracker.go | 1 + tracker/uniteditor.go | 24 ++++++++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/tracker/tracker.go b/tracker/tracker.go index 81013d6..3b8a276 100644 --- a/tracker/tracker.go +++ b/tracker/tracker.go @@ -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 diff --git a/tracker/uniteditor.go b/tracker/uniteditor.go index af171ed..dd31198 100644 --- a/tracker/uniteditor.go +++ b/tracker/uniteditor.go @@ -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))