diff --git a/gui/gui.go b/gui/gui.go index 375da7a..2d7e898 100644 --- a/gui/gui.go +++ b/gui/gui.go @@ -3,6 +3,7 @@ package gui import ( "log" + "github.com/gdamore/tcell" "github.com/rivo/tview" ) @@ -23,7 +24,7 @@ func New() *Gui { func (g *Gui) Run(i interface{}) error { g.Tree.UpdateView(g, i) - g.Tree.SetKeybindings() + g.Tree.SetKeybindings(g) grid := tview.NewGrid(). AddItem(g.Tree, 0, 0, 1, 1, 0, 0, true) @@ -37,3 +38,15 @@ func (g *Gui) Run(i interface{}) error { return nil } + +func (g *Gui) Input(text string, doneFunc func(text string)) { + input := tview.NewInputField().SetText(text) + input.SetLabel("field:").SetLabelWidth(6).SetDoneFunc(func(key tcell.Key) { + if key == tcell.KeyEnter { + doneFunc(input.GetText()) + g.Pages.SendToBack("input") + } + }) + + g.Pages.AddPage("input", input, true, true).SendToFront("input").ShowPage("main") +} diff --git a/gui/tree.go b/gui/tree.go index 8e64ee8..c781dc4 100644 --- a/gui/tree.go +++ b/gui/tree.go @@ -86,11 +86,11 @@ func (t *Tree) NewNodeWithLiteral(i interface{}) *tview.TreeNode { return node.SetText(text) } -func (t *Tree) SetKeybindings() { +func (t *Tree) SetKeybindings(g *Gui) { t.SetSelectedFunc(func(node *tview.TreeNode) { - if len(node.GetChildren()) > 0 { - node.SetExpanded(!node.IsExpanded()) - } + g.Input(node.GetText(), func(text string) { + node.SetText(text) + }) }) t.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {