diff --git a/gui/gui.go b/gui/gui.go index c7d637a..77cc7d9 100644 --- a/gui/gui.go +++ b/gui/gui.go @@ -292,6 +292,33 @@ func (g *Gui) AddNode() { }) } +func (g *Gui) AddValue() { + labels := []string{"json"} + g.Form(labels, "add", "add new value", "add_new_value", 7, func(values map[string]string) error { + j := values[labels[0]] + if j == "" { + log.Println(ErrEmptyJSON) + return ErrEmptyJSON + } + + buf := bytes.NewBufferString(j) + i, err := UnMarshalJSON(buf) + if err != nil { + return err + } + + current := g.Tree.GetCurrentNode() + for _, n := range g.Tree.AddNode(i) { + current.AddChild(n) + } + // update new origin root node + g.Tree.OriginRoot = g.Tree.GetRoot() + + return nil + }) + +} + func UnMarshalJSON(in io.Reader) (interface{}, error) { b, err := ioutil.ReadAll(in) if err != nil { diff --git a/gui/tree.go b/gui/tree.go index 6463213..6263293 100644 --- a/gui/tree.go +++ b/gui/tree.go @@ -145,6 +145,8 @@ func (t *Tree) SetKeybindings(g *Gui) { g.Search() case 'a': g.AddNode() + case 'A': + g.AddValue() } return event