🚸 Add main menu
This commit is contained in:
parent
5b2896c032
commit
d8e671d5ca
4 changed files with 83 additions and 28 deletions
69
app/menu.go
Normal file
69
app/menu.go
Normal file
|
|
@ -0,0 +1,69 @@
|
||||||
|
package app
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"codeberg.org/danjones000/strip-beats/input/list"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (st AppStep) Title() string {
|
||||||
|
mustpick := "You need to pick a file"
|
||||||
|
switch st {
|
||||||
|
case Pick:
|
||||||
|
return "Pick a new show"
|
||||||
|
case Watch:
|
||||||
|
if file == nil {
|
||||||
|
return mustpick
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("Watch %s", file.ShortPath())
|
||||||
|
case Fade:
|
||||||
|
if file == nil {
|
||||||
|
return mustpick
|
||||||
|
}
|
||||||
|
return fmt.Sprintf("Trim and/or add fade to %s", file.ShortPath())
|
||||||
|
case Restart:
|
||||||
|
return "Forget current selection"
|
||||||
|
case Quit:
|
||||||
|
return "Quit"
|
||||||
|
default:
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (st AppStep) Text() string {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (st AppStep) Rune() rune {
|
||||||
|
switch st {
|
||||||
|
case Pick:
|
||||||
|
return 'p'
|
||||||
|
case Watch:
|
||||||
|
return 'w'
|
||||||
|
case Fade:
|
||||||
|
return 'f'
|
||||||
|
case Restart:
|
||||||
|
return 'r'
|
||||||
|
case Quit:
|
||||||
|
return 'q'
|
||||||
|
default:
|
||||||
|
return '0'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (st AppStep) Selected() func() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func mainMenu() AppStep {
|
||||||
|
var steps []list.Option
|
||||||
|
if file == nil {
|
||||||
|
steps = []list.Option{Pick, Quit}
|
||||||
|
} else {
|
||||||
|
steps = []list.Option{Pick, Watch, Fade, Quit}
|
||||||
|
}
|
||||||
|
|
||||||
|
step := list.List("What would you like to do next?", steps, nil)
|
||||||
|
|
||||||
|
return step.(AppStep)
|
||||||
|
}
|
||||||
13
app/run.go
13
app/run.go
|
|
@ -13,6 +13,7 @@ type AppStep int
|
||||||
const (
|
const (
|
||||||
Pick AppStep = iota
|
Pick AppStep = iota
|
||||||
Watch
|
Watch
|
||||||
|
Fade
|
||||||
Restart
|
Restart
|
||||||
Quit
|
Quit
|
||||||
)
|
)
|
||||||
|
|
@ -39,7 +40,6 @@ func testTrim() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func Run(step AppStep) {
|
func Run(step AppStep) {
|
||||||
testTrim()
|
|
||||||
for step < Quit {
|
for step < Quit {
|
||||||
switch step {
|
switch step {
|
||||||
case Pick:
|
case Pick:
|
||||||
|
|
@ -51,12 +51,21 @@ func Run(step AppStep) {
|
||||||
watch := boolean.Choose(fmt.Sprintf("Would you like to watch %s?", file.ShortPath()))
|
watch := boolean.Choose(fmt.Sprintf("Would you like to watch %s?", file.ShortPath()))
|
||||||
if watch {
|
if watch {
|
||||||
step = Watch
|
step = Watch
|
||||||
|
} else {
|
||||||
|
step = mainMenu()
|
||||||
}
|
}
|
||||||
case Watch:
|
case Watch:
|
||||||
media.Watch(file.Format.Path)
|
media.Watch(file.Format.Path)
|
||||||
step = Quit // @todo
|
fade := boolean.Choose(fmt.Sprintf("Would you like to trim/fade %s?", file.ShortPath()))
|
||||||
|
if fade {
|
||||||
|
step = Fade
|
||||||
|
} else {
|
||||||
|
step = mainMenu()
|
||||||
|
}
|
||||||
case Quit:
|
case Quit:
|
||||||
quit()
|
quit()
|
||||||
|
default:
|
||||||
|
step = mainMen()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
23
cmd/root.go
23
cmd/root.go
|
|
@ -8,7 +8,6 @@ import (
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"codeberg.org/danjones000/strip-beats/app"
|
"codeberg.org/danjones000/strip-beats/app"
|
||||||
// "codeberg.org/danjones000/strip-beats/input/list"
|
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -20,28 +19,6 @@ var rootCmd = &cobra.Command{
|
||||||
// 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) {
|
||||||
app.Run(0)
|
app.Run(0)
|
||||||
/*
|
|
||||||
opt := list.List([]list.Option{
|
|
||||||
list.SimpleItem("Yes", "", 'y'),
|
|
||||||
list.SimpleItem("No", "", 'n'),
|
|
||||||
list.SimpleItem("Maybe", "perhaps", 'm'),
|
|
||||||
}, nil)
|
|
||||||
fmt.Printf("%+v\n", opt)
|
|
||||||
// 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)
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ func SimpleItem(title, text string, char rune) Option {
|
||||||
return opt{title, text, char}
|
return opt{title, text, char}
|
||||||
}
|
}
|
||||||
|
|
||||||
func List(items []Option, cb func(*tview.List)) Option {
|
func List(title string, items []Option, cb func(*tview.List)) Option {
|
||||||
if len(items) == 0 {
|
if len(items) == 0 {
|
||||||
return opt{}
|
return opt{}
|
||||||
}
|
}
|
||||||
|
|
@ -47,7 +47,7 @@ func List(items []Option, cb func(*tview.List)) Option {
|
||||||
for _, item := range items {
|
for _, item := range items {
|
||||||
list.AddItem(item.Title(), item.Text(), item.Rune(), item.Selected())
|
list.AddItem(item.Title(), item.Text(), item.Rune(), item.Selected())
|
||||||
}
|
}
|
||||||
list.Box.SetBorder(true) //.SetTitle(title)
|
list.Box.SetBorder(true).SetTitle(title)
|
||||||
|
|
||||||
if cb != nil {
|
if cb != nil {
|
||||||
cb(list)
|
cb(list)
|
||||||
|
|
@ -58,7 +58,7 @@ func List(items []Option, cb func(*tview.List)) Option {
|
||||||
app.Stop()
|
app.Stop()
|
||||||
})
|
})
|
||||||
|
|
||||||
if err := app.SetRoot(list, false).EnableMouse(true).Run(); err != nil {
|
if err := app.SetRoot(list, true).EnableMouse(true).Run(); err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue