From a29f34734bc2dfc18b85156b0f9344640e825b3b Mon Sep 17 00:00:00 2001 From: vsariola <5684185+vsariola@users.noreply.github.com> Date: Thu, 14 Jan 2021 00:44:33 +0200 Subject: [PATCH] feat(tracker): move new instrument button to the top right --- tracker/instruments.go | 29 +++++++++++++++++++++++++++-- tracker/layout.go | 12 +----------- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/tracker/instruments.go b/tracker/instruments.go index 111fbc4..79fd292 100644 --- a/tracker/instruments.go +++ b/tracker/instruments.go @@ -5,6 +5,7 @@ import ( "sort" "gioui.org/layout" + "gioui.org/op" "gioui.org/op/clip" "gioui.org/op/paint" "gioui.org/unit" @@ -24,15 +25,34 @@ func (t *Tracker) updateInstrumentScroll() { } func (t *Tracker) layoutInstruments() layout.Widget { + btnStyle := material.IconButton(t.Theme, t.NewInstrumentBtn, addIcon) + btnStyle.Background = transparent + btnStyle.Inset = layout.UniformInset(unit.Dp(6)) + if t.song.Patch.TotalVoices() < 32 { + btnStyle.Color = primaryColor + } else { + btnStyle.Color = disabledTextColor + } return func(gtx C) D { return layout.Flex{Axis: layout.Vertical}.Layout(gtx, - layout.Rigid(t.layoutInstrumentNames()), + layout.Rigid(func(gtx C) D { + return layout.Flex{}.Layout( + gtx, + layout.Flexed(1, t.layoutInstrumentNames()), + layout.Rigid(func(gtx C) D { + return layout.E.Layout(gtx, btnStyle.Layout) + }), + ) + }), layout.Flexed(1, t.layoutInstrumentEditor())) } } func (t *Tracker) layoutInstrumentNames() layout.Widget { return func(gtx C) D { + gtx.Constraints.Max.Y = gtx.Px(unit.Dp(36)) + gtx.Constraints.Min.Y = gtx.Px(unit.Dp(36)) + count := len(t.song.Patch.Instruments) if len(t.InstrumentBtns) < count { tail := make([]*widget.Clickable, count-len(t.InstrumentBtns)) @@ -41,7 +61,10 @@ func (t *Tracker) layoutInstrumentNames() layout.Widget { } t.InstrumentBtns = append(t.InstrumentBtns, tail...) } - return t.InstrumentList.Layout(gtx, count, func(gtx C, index int) D { + + defer op.Push(gtx.Ops).Pop() + + t.InstrumentList.Layout(gtx, count, func(gtx C, index int) D { for t.InstrumentBtns[index].Clicked() { t.CurrentInstrument = index } @@ -54,6 +77,8 @@ func (t *Tracker) layoutInstrumentNames() layout.Widget { } return btnStyle.Layout(gtx) }) + + return layout.Dimensions{Size: gtx.Constraints.Max} } } func (t *Tracker) layoutInstrumentEditor() layout.Widget { diff --git a/tracker/layout.go b/tracker/layout.go index 59b126f..6907d8f 100644 --- a/tracker/layout.go +++ b/tracker/layout.go @@ -206,8 +206,6 @@ func (t *Tracker) layoutControls(gtx layout.Context) layout.Dimensions { gtx.Constraints.Min.Y = 250 gtx.Constraints.Max.Y = 250 - in := layout.UniformInset(unit.Dp(1)) - go func() { for t.BPMUpBtn.Clicked() { t.ChangeBPM(1) @@ -230,15 +228,7 @@ func (t *Tracker) layoutControls(gtx layout.Context) layout.Dimensions { return t.TopSplit.Layout(gtx, t.layoutSongPanel, - func(gtx C) D { - return layout.Flex{Axis: layout.Horizontal}.Layout(gtx, - layout.Flexed(1, t.layoutInstruments()), - layout.Rigid(func(gtx layout.Context) layout.Dimensions { - iconBtn := enableButton(material.IconButton(t.Theme, t.NewInstrumentBtn, addIcon), t.song.Patch.TotalVoices() < 32) - return in.Layout(gtx, iconBtn.Layout) - }), - ) - }, + t.layoutInstruments(), ) }