From 12d5d392c575c46b848ee17e5743b45e429547a4 Mon Sep 17 00:00:00 2001 From: vsariola <5684185+vsariola@users.noreply.github.com> Date: Wed, 17 Feb 2021 09:35:57 +0200 Subject: [PATCH] tracker: only one "hex" checkbox in the tracker title bar Closes #28 --- tracker/track.go | 34 ++++++---------------------------- tracker/tracker.go | 3 ++- 2 files changed, 8 insertions(+), 29 deletions(-) diff --git a/tracker/track.go b/tracker/track.go index 2ee7d8a..21d114f 100644 --- a/tracker/track.go +++ b/tracker/track.go @@ -47,10 +47,6 @@ func (t *Tracker) layoutTracker(gtx layout.Context) layout.Dimensions { t.AddTrack() } - for len(t.TrackHexCheckBoxes) < len(t.song.Tracks) { - t.TrackHexCheckBoxes = append(t.TrackHexCheckBoxes, new(widget.Bool)) - } - for len(t.TrackShowHex) < len(t.song.Tracks) { t.TrackShowHex = append(t.TrackShowHex, false) } @@ -120,6 +116,8 @@ func (t *Tracker) layoutTracker(gtx layout.Context) layout.Dimensions { gtx.Constraints.Min.X = gtx.Px(unit.Dp(70)) return in.Layout(gtx, numStyle.Layout) } + t.TrackHexCheckBox.Value = t.TrackShowHex[t.Cursor.Track] + hexCheckBoxStyle := material.CheckBox(t.Theme, t.TrackHexCheckBox, "Hex") dims := layout.Flex{Axis: layout.Horizontal, Alignment: layout.Middle}.Layout(gtx, layout.Rigid(Label("OCT:", white)), layout.Rigid(octave), @@ -128,10 +126,12 @@ func (t *Tracker) layoutTracker(gtx layout.Context) layout.Dimensions { layout.Rigid(subtractSemitoneBtnStyle.Layout), layout.Rigid(addOctaveBtnStyle.Layout), layout.Rigid(subtractOctaveBtnStyle.Layout), - layout.Rigid(Label("Voices:", white)), + layout.Rigid(hexCheckBoxStyle.Layout), + layout.Rigid(Label(" Voices:", white)), layout.Rigid(voiceUpDown), layout.Flexed(1, func(gtx C) D { return layout.Dimensions{Size: gtx.Constraints.Min} }), layout.Rigid(newTrackBtnStyle.Layout)) + t.TrackShowHex[t.Cursor.Track] = t.TrackHexCheckBox.Value t.SetTrackVoices(t.TrackVoices.Value) return dims } @@ -158,33 +158,11 @@ func (t *Tracker) layoutTracker(gtx layout.Context) layout.Dimensions { layout.Flexed(1, func(gtx C) D { return layout.Flex{Axis: layout.Horizontal}.Layout(gtx, rowMarkers, - layout.Flexed(1, func(gtx C) D { - return layout.Stack{Alignment: layout.NW}.Layout(gtx, - layout.Stacked(t.layoutTracks), - layout.Stacked(t.layoutTrackTitles), - ) - })) - + layout.Flexed(1, t.layoutTracks)) }), ) } -func (t *Tracker) layoutTrackTitles(gtx C) D { - defer op.Save(gtx.Ops).Load() - hexFlexChildren := make([]layout.FlexChild, len(t.song.Tracks)) - for trkIndex := range t.song.Tracks { - trkIndex2 := trkIndex - hexFlexChildren[trkIndex] = layout.Rigid(func(gtx C) D { - t.TrackHexCheckBoxes[trkIndex2].Value = t.TrackShowHex[trkIndex2] - cbStyle := material.CheckBox(t.Theme, t.TrackHexCheckBoxes[trkIndex2], "hex") - dims := cbStyle.Layout(gtx) - t.TrackShowHex[trkIndex2] = t.TrackHexCheckBoxes[trkIndex2].Value - return layout.Dimensions{Size: image.Pt(trackColWidth, dims.Size.Y)} - }) - } - return layout.Flex{Axis: layout.Horizontal}.Layout(gtx, hexFlexChildren...) -} - func (t *Tracker) layoutTracks(gtx C) D { defer op.Save(gtx.Ops).Load() clip.Rect{Max: gtx.Constraints.Max}.Add(gtx.Ops) diff --git a/tracker/tracker.go b/tracker/tracker.go index 3b8a276..2ded5ed 100644 --- a/tracker/tracker.go +++ b/tracker/tracker.go @@ -71,7 +71,7 @@ type Tracker struct { AddUnitBtn *widget.Clickable ParameterLabelBtns []*widget.Clickable InstrumentDragList *DragList - TrackHexCheckBoxes []*widget.Bool + TrackHexCheckBox *widget.Bool TrackShowHex []bool VuMeter VuMeter TopHorizontalSplit *Split @@ -698,6 +698,7 @@ func New(audioContext sointu.AudioContext, synthService sointu.SynthService) *Tr ClearUnitBtn: new(widget.Clickable), PanicBtn: new(widget.Clickable), CopyInstrumentBtn: new(widget.Clickable), + TrackHexCheckBox: new(widget.Bool), Menus: make([]Menu, 2), MenuBar: make([]widget.Clickable, 2), UnitDragList: &DragList{List: &layout.List{Axis: layout.Vertical}},