func layout(g *gocui.Gui) error { maxX, maxY := g.Size() columnX := maxX / 3 g.BgColor = gocui.ColorWhite g.FgColor = gocui.ColorBlack g.RenderFrames = false if v, err := g.SetView("status", -1, -1, maxX, 1); err != nil { if err != gocui.ErrorUnkView { return err } v.FgColor = gocui.ColorWhite v.BgColor = gocui.ColorBlack } if v, err := g.SetView("counterHeader", -1, 0, columnX, maxY); err != nil { if err != gocui.ErrorUnkView { return err } v.FgColor = gocui.ColorWhite v.BgColor = gocui.ColorBlue fmt.Fprintf(v, "Counters") } if _, err := g.SetView("counters", -1, 1, columnX, maxY); err != nil { if err != gocui.ErrorUnkView { return err } } if v, err := g.SetView("gaugeHeader", columnX, 0, columnX*2, maxY); err != nil { if err != gocui.ErrorUnkView { return err } v.FgColor = gocui.ColorWhite v.BgColor = gocui.ColorCyan fmt.Fprintf(v, "Gauges") } if _, err := g.SetView("gauges", columnX, 1, columnX*2, maxY); err != nil { if err != gocui.ErrorUnkView { return err } } if v, err := g.SetView("timerHeader", columnX*2, 0, maxX-1, maxY); err != nil { if err != gocui.ErrorUnkView { return err } v.FgColor = gocui.ColorWhite v.BgColor = gocui.ColorMagenta fmt.Fprintf(v, "Timers") } if _, err := g.SetView("timers", (columnX * 2), 1, maxX-1, maxY); err != nil { if err != gocui.ErrorUnkView { return err } } return nil }
func (c *controller) layout(g *gocui.Gui) error { g.BgColor = gocui.ColorDefault maxX, maxY := g.Size() if len(c.columns) == 0 { return errors.New("No columns defined") } colWidth := maxX / len(c.columns) for i, col := range c.columns { v, err := g.SetView(col.name, i*colWidth, 0, ((i+1)*colWidth)-1, maxY-2) if err != nil { if err != gocui.ErrorUnkView { return err } } v.Clear() v.Write([]byte(col.name + ": \n\n")) err = col.CreateViews(g, v) if err != nil { return err } } status, err := g.SetView("statusbar", 0, maxY-2, maxX-1, maxY+1) if err != nil { if err != gocui.ErrorUnkView { return err } status.Frame = false status.BgColor = gocui.ColorBlack status.FgColor = gocui.ColorDefault | gocui.AttrBold } status.Clear() if c.debugOn { status.Write([]byte(debug)) } else { status.Write(c.statusBar(maxX)) } return nil }