✨ Add list input
This commit is contained in:
parent
871db79c19
commit
e0bc00d779
2 changed files with 90 additions and 9 deletions
33
cmd/root.go
33
cmd/root.go
|
|
@ -8,7 +8,8 @@ import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"codeberg.org/danjones000/strip-beats/app"
|
"codeberg.org/danjones000/strip-beats/app"
|
||||||
"codeberg.org/danjones000/strip-beats/input/boolean"
|
// "codeberg.org/danjones000/strip-beats/input/boolean"
|
||||||
|
"codeberg.org/danjones000/strip-beats/input/list"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -19,14 +20,28 @@ var rootCmd = &cobra.Command{
|
||||||
// Uncomment the following line if your bare application
|
// Uncomment the following line if your bare application
|
||||||
// has an action associated with it:
|
// has an action associated with it:
|
||||||
Run: func(cmd *cobra.Command, args []string) {
|
Run: func(cmd *cobra.Command, args []string) {
|
||||||
out := app.PickFileWithConf()
|
opt := list.List([]list.Option{
|
||||||
fmt.Printf("%+v\n", out)
|
list.SimpleItem("Yes", "", 'y'),
|
||||||
// media.Watch(out.Format.Path)
|
list.SimpleItem("No", "", 'n'),
|
||||||
show := boolean.Choose("Show stream?")
|
list.SimpleItem("Maybe", "perhaps", 'm'),
|
||||||
if show {
|
}, nil)
|
||||||
stream := out.WantedAudioStream()
|
fmt.Printf("%+v\n", opt)
|
||||||
fmt.Printf("Stream %d of %s: %+v\n", stream.Index, out.Format.Path, stream)
|
// out := app.PickFileWithConf()
|
||||||
}
|
out := app.SetFile("/home/drj/nothing.mkv")
|
||||||
|
fmt.Println("first", out.Format.Path)
|
||||||
|
// tmp, _ := os.CreateTemp("", "audio.*.mka")
|
||||||
|
// defer os.Remove(tmp.Name())
|
||||||
|
// fmt.Println("temp", tmp.Name())
|
||||||
|
app.Finish()
|
||||||
|
/*
|
||||||
|
fmt.Printf("%+v\n", out)
|
||||||
|
// media.Watch(out.Format.Path)
|
||||||
|
show := boolean.Choose("Show stream?")
|
||||||
|
if show {
|
||||||
|
stream := out.WantedAudioStream()
|
||||||
|
fmt.Printf("Stream %d of %s: %+v\n", stream.Index, out.Format.Path, stream)
|
||||||
|
}
|
||||||
|
*/
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
66
input/list/list.go
Normal file
66
input/list/list.go
Normal file
|
|
@ -0,0 +1,66 @@
|
||||||
|
package list
|
||||||
|
|
||||||
|
import "github.com/rivo/tview"
|
||||||
|
|
||||||
|
type Option interface {
|
||||||
|
Title() string
|
||||||
|
Text() string
|
||||||
|
Rune() rune
|
||||||
|
Selected() func()
|
||||||
|
}
|
||||||
|
|
||||||
|
type opt struct {
|
||||||
|
tit string
|
||||||
|
t string
|
||||||
|
r rune
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o opt) Title() string {
|
||||||
|
return o.tit
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o opt) Text() string {
|
||||||
|
return o.t
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o opt) Rune() rune {
|
||||||
|
return o.r
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o opt) Selected() func() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func SimpleItem(title, text string, char rune) Option {
|
||||||
|
return opt{title, text, char}
|
||||||
|
}
|
||||||
|
|
||||||
|
func List(items []Option, cb func(*tview.List)) Option {
|
||||||
|
if len(items) == 0 {
|
||||||
|
return opt{}
|
||||||
|
}
|
||||||
|
|
||||||
|
var index int
|
||||||
|
|
||||||
|
app := tview.NewApplication()
|
||||||
|
list := tview.NewList()
|
||||||
|
for _, item := range items {
|
||||||
|
list.AddItem(item.Title(), item.Text(), item.Rune(), item.Selected())
|
||||||
|
}
|
||||||
|
list.Box.SetBorder(true) //.SetTitle(title)
|
||||||
|
|
||||||
|
if cb != nil {
|
||||||
|
cb(list)
|
||||||
|
}
|
||||||
|
|
||||||
|
list.SetSelectedFunc(func(idx int, _ string, _ string, _ rune) {
|
||||||
|
index = idx
|
||||||
|
app.Stop()
|
||||||
|
})
|
||||||
|
|
||||||
|
if err := app.SetRoot(list, false).EnableMouse(true).Run(); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
return items[index]
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue