mirror of
https://github.com/vsariola/sointu.git
synced 2025-05-28 03:10:24 -04:00
feat(tracker): move new instrument button to the top right
This commit is contained in:
parent
ed67408d6e
commit
a29f34734b
@ -5,6 +5,7 @@ import (
|
|||||||
"sort"
|
"sort"
|
||||||
|
|
||||||
"gioui.org/layout"
|
"gioui.org/layout"
|
||||||
|
"gioui.org/op"
|
||||||
"gioui.org/op/clip"
|
"gioui.org/op/clip"
|
||||||
"gioui.org/op/paint"
|
"gioui.org/op/paint"
|
||||||
"gioui.org/unit"
|
"gioui.org/unit"
|
||||||
@ -24,15 +25,34 @@ func (t *Tracker) updateInstrumentScroll() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (t *Tracker) layoutInstruments() layout.Widget {
|
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 func(gtx C) D {
|
||||||
return layout.Flex{Axis: layout.Vertical}.Layout(gtx,
|
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()))
|
layout.Flexed(1, t.layoutInstrumentEditor()))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (t *Tracker) layoutInstrumentNames() layout.Widget {
|
func (t *Tracker) layoutInstrumentNames() layout.Widget {
|
||||||
return func(gtx C) D {
|
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)
|
count := len(t.song.Patch.Instruments)
|
||||||
if len(t.InstrumentBtns) < count {
|
if len(t.InstrumentBtns) < count {
|
||||||
tail := make([]*widget.Clickable, count-len(t.InstrumentBtns))
|
tail := make([]*widget.Clickable, count-len(t.InstrumentBtns))
|
||||||
@ -41,7 +61,10 @@ func (t *Tracker) layoutInstrumentNames() layout.Widget {
|
|||||||
}
|
}
|
||||||
t.InstrumentBtns = append(t.InstrumentBtns, tail...)
|
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() {
|
for t.InstrumentBtns[index].Clicked() {
|
||||||
t.CurrentInstrument = index
|
t.CurrentInstrument = index
|
||||||
}
|
}
|
||||||
@ -54,6 +77,8 @@ func (t *Tracker) layoutInstrumentNames() layout.Widget {
|
|||||||
}
|
}
|
||||||
return btnStyle.Layout(gtx)
|
return btnStyle.Layout(gtx)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
return layout.Dimensions{Size: gtx.Constraints.Max}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func (t *Tracker) layoutInstrumentEditor() layout.Widget {
|
func (t *Tracker) layoutInstrumentEditor() layout.Widget {
|
||||||
|
@ -206,8 +206,6 @@ func (t *Tracker) layoutControls(gtx layout.Context) layout.Dimensions {
|
|||||||
gtx.Constraints.Min.Y = 250
|
gtx.Constraints.Min.Y = 250
|
||||||
gtx.Constraints.Max.Y = 250
|
gtx.Constraints.Max.Y = 250
|
||||||
|
|
||||||
in := layout.UniformInset(unit.Dp(1))
|
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
for t.BPMUpBtn.Clicked() {
|
for t.BPMUpBtn.Clicked() {
|
||||||
t.ChangeBPM(1)
|
t.ChangeBPM(1)
|
||||||
@ -230,15 +228,7 @@ func (t *Tracker) layoutControls(gtx layout.Context) layout.Dimensions {
|
|||||||
|
|
||||||
return t.TopSplit.Layout(gtx,
|
return t.TopSplit.Layout(gtx,
|
||||||
t.layoutSongPanel,
|
t.layoutSongPanel,
|
||||||
func(gtx C) D {
|
t.layoutInstruments(),
|
||||||
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)
|
|
||||||
}),
|
|
||||||
)
|
|
||||||
},
|
|
||||||
)
|
)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user