//ActionError displays a window to give a description of the error occurred on a specific action func (c *CUI) ActionError(g *gocui.Gui, v *gocui.View) error { if c.selectedCommand < 0 { panic(errors.New("Invalid command selection value")) } //send an error on maxX, maxY := g.Size() if v, err := g.SetView("ErrorMessageTittleView", maxX/2-30, maxY/4-2, maxX/2+30, maxY/4); err != nil { if err != gocui.ErrorUnkView { return err } fmt.Fprintln(v, " Write a description for the error (<Enter> when done)") v.FgColor = gocui.ColorRed if err := g.SetCurrentView("ActionView"); err != nil { return err } } if v, err := g.SetView("ErrorMessageView", maxX/2-30, maxY/4, maxX/2+30, 3*maxY/4); err != nil { if err != gocui.ErrorUnkView { return err } if err := g.SetCurrentView("ActionView"); err != nil { return err } v.Editable = true } if err := g.SetCurrentView("ErrorMessageView"); err != nil { return err } return nil }
//quit is called when the user wants to finish the execution of the gui. It should display a warning screen and give an // error result to all the pending actions. If no pending actions exists, it just exists func (c *CUI) quit(g *gocui.Gui, v *gocui.View) error { if len(c.cmdList) > 0 { maxX, maxY := g.Size() if v, err := g.SetView("QuitWarnView", maxX/2-30, maxY/4, maxX/2+30, 3*maxY/4); err != nil { if err != gocui.ErrorUnkView { return err } fmt.Fprintf(v, "By pressing <Ctrl-X> all pending actions will be cancelled.\nPress <Enter> to go back") v.BgColor = gocui.ColorYellow v.FgColor = gocui.ColorBlack if err := g.SetCurrentView("QuitWarnView"); err != nil { return err } } return nil } return c.quitAcknowledged(g, v) }