🚧 Fade in menu
This commit is contained in:
parent
d8e671d5ca
commit
d175360362
2 changed files with 81 additions and 18 deletions
71
app/fade.go
Normal file
71
app/fade.go
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
package app
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strconv"
|
||||
|
||||
"codeberg.org/danjones000/strip-beats/media"
|
||||
"github.com/rivo/tview"
|
||||
)
|
||||
|
||||
func validateNumber(input string, lastChar rune) bool {
|
||||
num, err := strconv.ParseFloat(input, 64)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
if num < 0 {
|
||||
return false
|
||||
}
|
||||
|
||||
if file == nil {
|
||||
return true
|
||||
}
|
||||
|
||||
st := file.WantedAudioStream()
|
||||
if st == nil {
|
||||
return true
|
||||
}
|
||||
|
||||
return num <= st.Duration
|
||||
}
|
||||
|
||||
func fadeFile() error {
|
||||
tmp, err := os.CreateTemp("", "audio.*.mka")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
tmp.Close()
|
||||
|
||||
var start, stop, up, down float64
|
||||
|
||||
cont := tview.NewApplication()
|
||||
form := tview.NewForm().
|
||||
AddInputField("Beginning time?", "0", 0, validateNumber, func(input string) {
|
||||
start, _ = strconv.ParseFloat(input, 64)
|
||||
}).
|
||||
AddInputField("Ending time? (leave 0 for full time)", "0", 0, validateNumber, func(input string) {
|
||||
stop, _ = strconv.ParseFloat(input, 64)
|
||||
}).
|
||||
AddInputField("Fade in duration?", "0", 0, validateNumber, func(input string) {
|
||||
up, _ = strconv.ParseFloat(input, 64)
|
||||
}).
|
||||
AddInputField("Fade out duration?", "0", 0, validateNumber, func(input string) {
|
||||
down, _ = strconv.ParseFloat(input, 64)
|
||||
}).
|
||||
AddButton("Start", func() {
|
||||
cont.Stop()
|
||||
})
|
||||
|
||||
form.SetBorder(true).SetTitleAlign(tview.AlignLeft)
|
||||
if err := cont.SetRoot(form, true).EnableMouse(true).Run(); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = media.TrimWithFade(*file, tmp.Name(), start, stop, up, down)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
SetTmpFile(tmp.Name())
|
||||
return nil
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue