func (m *Monitor) Start(conn *net.Conn) { if err := ui.Init(); err != nil { panic(err) } defer ui.Close() help := ui.NewPar(":PRESS q TO QUIT") help.Height = 3 help.Width = 50 help.TextFgColor = ui.ColorWhite help.BorderLabel = "Help" help.BorderFg = ui.ColorCyan // build ui.Body.AddRows( ui.NewRow( ui.NewCol(6, 0, help), ), ) draw := func(t int) { ui.Body.Align() ui.Render(ui.Body) } draw(0) ui.Handle("/sys/kbd/q", func(ui.Event) { ui.StopLoop() }) ui.Handle("/timer/1s", func(e ui.Event) { t := e.Data.(ui.EvtTimer) draw(int(t.Count)) }) ui.Loop() }
func main() { err := ui.Init() if err != nil { panic(err) } defer ui.Close() p := ui.NewPar(":PRESS q TO QUIT DEMO") p.Height = 3 p.Width = 50 p.TextFgColor = ui.ColorWhite p.BorderLabel = "Text Box" p.BorderFg = ui.ColorCyan g := ui.NewGauge() g.Percent = 50 g.Width = 50 g.Height = 3 g.Y = 11 g.BorderLabel = "Gauge" g.BarColor = ui.ColorRed g.BorderFg = ui.ColorWhite g.BorderLabelFg = ui.ColorCyan ui.Render(p, g) // feel free to call Render, it's async and non-block }
func ResetView() { termui.Close() err := termui.Init() if err != nil { panic(err) } }
func main() { err := termui.Init() if err != nil { panic(err) } defer termui.Close() termui.UseTheme("helloworld") strs := []string{ "[0] github.com/gizak/termui", "[1] 你好,世界", "[2] こんにちは世界", "[3] keyboard.go", "[4] output.go", "[5] random_out.go", "[6] dashboard.go", "[7] nsf/termbox-go"} ls := termui.NewList() ls.Items = strs ls.ItemFgColor = termui.ColorYellow ls.Border.Label = "List" ls.Height = 7 ls.Width = 25 ls.Y = 0 termui.Render(ls) <-termui.EventCh() }
func main() { err := ui.Init() if err != nil { panic(err) } defer ui.Close() p := ui.NewPar("Press q to QUIT THE DEMO. [There](fg-blue) are other things [that](fg-red) are going to fit in here I think. What do you think? Now is the time for all good [men to](bg-blue) come to the aid of their country. [This is going to be one really really really long line](fg-green) that is going to go together and stuffs and things. Let's see how this thing renders out.\n Here is a new paragraph and stuffs and things. There should be a tab indent at the beginning of the paragraph. Let's see if that worked as well.") p.WrapLength = 48 // this should be at least p.Width - 2 p.Height = 20 p.Width = 50 p.Y = 2 p.X = 20 p.TextFgColor = ui.ColorWhite p.BorderLabel = "Text Box with Wrapping" p.BorderFg = ui.ColorCyan //p.Border = false ui.Render(p) ui.Handle("/sys/kbd/q", func(ui.Event) { ui.StopLoop() }) ui.Loop() }
func main() { err := ui.Init() if err != nil { panic(err) } defer ui.Close() w11 := ui.NewPar("Hello world") w11.Height = 10 w11.Border.Label = "Hello" w11.Border.LabelFgColor = ui.ColorGreen w12 := ui.NewPar("first") w12.Height = 20 w2 := ui.NewPar("second") w2.Height = 20 ui.Body.AddRows( ui.NewRow( ui.NewCol(6, 0, w11), ui.NewCol(6, 0, w12)), ui.NewRow( ui.NewCol(12, 0, w2))) ui.Body.Align() ui.Render(ui.Body) <-ui.EventCh() }
func main() { err := termui.Init() if err != nil { panic(err) } defer termui.Close() termui.UseTheme("helloworld") bc := termui.NewBarChart() data := []int{3, 2, 5, 3, 9, 5, 3, 2, 5, 8, 3, 2, 4, 5, 3, 2, 5, 7, 5, 3, 2, 6, 7, 4, 6, 3, 6, 7, 8, 3, 6, 4, 5, 3, 2, 4, 6, 4, 8, 5, 9, 4, 3, 6, 5, 3, 6} bclabels := []string{"S0", "S1", "S2", "S3", "S4", "S5"} bc.Border.Label = "Bar Chart" bc.Data = data bc.Width = 26 bc.Height = 10 bc.DataLabels = bclabels bc.TextColor = termui.ColorGreen bc.BarColor = termui.ColorRed bc.NumColor = termui.ColorYellow termui.Render(bc) <-termui.EventCh() }
func main() { if err := termui.Init(); err != nil { panic(err) } defer termui.Close() bc := termui.NewBarChart() data := []int{3, 2, 5, 3, 9, 5, 3, 2, 5, 8, 3, 2, 4, 5, 3, 2, 5, 7, 5, 3, 2, 6, 7, 4, 6, 3, 6, 7, 8, 3, 6, 4, 5, 3, 2, 4, 6, 4, 8, 5, 9, 4, 3, 6, 5, 3, 6} bclabels := []string{"S0", "S1", "S2", "S3", "S4", "S5"} bc.BorderLabel = "Bar Chart" bc.Data = data bc.Width = 26 bc.Height = 10 bc.DataLabels = bclabels bc.TextColor = termui.ColorGreen bc.BarColor = termui.ColorRed bc.NumColor = termui.ColorYellow termui.Render(bc) termui.Handle("/sys/kbd/q", func(termui.Event) { termui.StopLoop() }) termui.Loop() }
func main() { err := termui.Init() if err != nil { panic(err) } defer termui.Close() //termui.UseTheme("helloworld") strs := []string{ "[0] github.com/gizak/termui", "[1] [你好,世界](fg-blue)", "[2] [こんにちは世界](fg-red)", "[3] [color output](fg-white,bg-green)", "[4] output.go", "[5] random_out.go", "[6] dashboard.go", "[7] nsf/termbox-go"} ls := termui.NewList() ls.Items = strs ls.ItemFgColor = termui.ColorYellow ls.BorderLabel = "List" ls.Height = 7 ls.Width = 25 ls.Y = 0 termui.Render(ls) termui.Handle("/sys/kbd/q", func(termui.Event) { termui.StopLoop() }) termui.Loop() }
func BuildUI() { ui.Init() defer ui.Close() receiveBox := CreateReceiveBox() sendBox := CreateSendBox() ui.Body.AddRows( ui.NewRow(ui.NewCol(12, 0, receiveBox)), ui.NewRow(ui.NewCol(12, 0, sendBox)), ) ui.Body.Align() ui.Render(ui.Body) ui.Handle("/sys/kbd/C-x", func(e ui.Event) { ui.StopLoop() }) ui.Handle("/timer/1s", func(e ui.Event) { ReceiveBoxHeight = ui.TermHeight() - SendBoxHeight receiveBox.Height = ReceiveBoxHeight ui.Body.Align() ui.Render(ui.Body) }) // Leaving this commented out for now // I'd like to get this method of screen refreshing working instead of the 1s method, // but this crashes on resize. // ui.Handle("/sys/wnd/resize", func(e ui.Event) { // ui.Body.Align() // ui.Render(ui.Body) // }) ui.Loop() }
func main() { flag.Parse() if err := termui.Init(); err != nil { panic(err) } defer termui.Close() ticker := time.NewTicker(15 * time.Second) go func() { for { mstats, err := fetch.FetchMemStats(*target) if err != nil { termui.StopLoop() log.Fatal(err) } render(*mstats) <-ticker.C } }() termui.Handle("/sys/kbd/q", func(termui.Event) { // press q to quit termui.StopLoop() }) termui.Loop() }
func init() { err := termui.Init() if err != nil { panic(err) } termui.UseTheme("default") ui = NewUi() refreshTicker := time.NewTicker(time.Millisecond * 50) evt := termui.EventCh() ui.refresh() go func() { for { select { case e := <-evt: if e.Type == termui.EventKey && e.Ch == 'q' { os.Exit(1) } if e.Type == termui.EventResize { ui.gridWidth = termui.TermWidth() ui.refresh() } case <-refreshTicker.C: ui.refresh() } } }() }
// Init creates widgets, sets sizes and labels. func (t *TermUISingle) Init(data UIData) error { err := termui.Init() if err != nil { return err } t.Sparklines = make(map[VarName]*termui.Sparkline) termui.UseTheme("helloworld") t.Title = func() *termui.Par { p := termui.NewPar("") p.Height = 3 p.TextFgColor = termui.ColorWhite p.Border.Label = "Services Monitor" p.Border.FgColor = termui.ColorCyan return p }() t.Status = func() *termui.Par { p := termui.NewPar("") p.Height = 3 p.TextFgColor = termui.ColorWhite p.Border.Label = "Status" p.Border.FgColor = termui.ColorCyan return p }() t.Pars = make([]*termui.Par, len(data.Vars)) for i, name := range data.Vars { par := termui.NewPar("") par.TextFgColor = colorByKind(name.Kind()) par.Border.Label = name.Short() par.Border.LabelFgColor = termui.ColorGreen par.Height = 3 t.Pars[i] = par } var sparklines []termui.Sparkline for _, name := range data.Vars { spl := termui.NewSparkline() spl.Height = 1 spl.TitleColor = colorByKind(name.Kind()) spl.LineColor = colorByKind(name.Kind()) spl.Title = name.Long() sparklines = append(sparklines, spl) } t.Sparkline = func() *termui.Sparklines { s := termui.NewSparklines(sparklines...) s.Height = 2*len(sparklines) + 2 s.HasBorder = true s.Border.Label = fmt.Sprintf("Monitoring") return s }() t.Relayout() return nil }
func main() { err := termui.Init() if err != nil { panic(err) } defer termui.Close() //termui.UseTheme("helloworld") data := []int{4, 2, 1, 6, 3, 9, 1, 4, 2, 15, 14, 9, 8, 6, 10, 13, 15, 12, 10, 5, 3, 6, 1, 7, 10, 10, 14, 13, 6} spl0 := termui.NewSparkline() spl0.Data = data[3:] spl0.Title = "Sparkline 0" spl0.LineColor = termui.ColorGreen // single spls0 := termui.NewSparklines(spl0) spls0.Height = 2 spls0.Width = 20 spls0.Border = false spl1 := termui.NewSparkline() spl1.Data = data spl1.Title = "Sparkline 1" spl1.LineColor = termui.ColorRed spl2 := termui.NewSparkline() spl2.Data = data[5:] spl2.Title = "Sparkline 2" spl2.LineColor = termui.ColorMagenta // group spls1 := termui.NewSparklines(spl0, spl1, spl2) spls1.Height = 8 spls1.Width = 20 spls1.Y = 3 spls1.BorderLabel = "Group Sparklines" spl3 := termui.NewSparkline() spl3.Data = data spl3.Title = "Enlarged Sparkline" spl3.Height = 8 spl3.LineColor = termui.ColorYellow spls2 := termui.NewSparklines(spl3) spls2.Height = 11 spls2.Width = 30 spls2.BorderFg = termui.ColorCyan spls2.X = 21 spls2.BorderLabel = "Tweeked Sparkline" termui.Render(spls0, spls1, spls2) termui.Handle("/sys/kbd/q", func(termui.Event) { termui.StopLoop() }) termui.Loop() }
func newTerminalUI(appName string) error { if err := ui.Init(); err != nil { return err } ui.UseTheme("helloworld") // usage text usageText := fmt.Sprintf(`Show live statistics for [%s] :Press 'q' or 'ctrl-c' to exit :Press 'PageUp' to increase app instances :Press 'PageDown' to decrease app instances`, appName) usage := ui.NewPar(usageText) usage.Height = 12 usage.TextFgColor = ui.ColorWhite usage.Border.Label = "Usage" usage.Border.FgColor = ui.ColorCyan // summary text summary := ui.NewPar("") summary.Height = 12 summary.TextFgColor = ui.ColorRed summary.Border.Label = "Summary" summary.Border.FgColor = ui.ColorCyan // cpu sparklines data := [400]int{} line := ui.NewSparkline() line.Data = data[:] line.Height = 4 line.LineColor = colors[0] cpu := ui.NewSparklines(line) cpu.Height = 7 cpu.Border.Label = "CPU Usage" // memory gauges mem := make([]*ui.Gauge, 1) for i := range mem { mem[i] = ui.NewGauge() mem[i].Percent = 0 mem[i].Height = 5 } // disk bars disk := ui.NewBarChart() disk.Border.Label = "Disk Usage (in MB)" disk.Data = []int{0, 0, 0, 0, 0, 0, 0, 0} disk.Height = 12 disk.BarWidth = 10 disk.DataLabels = []string{"I: 0", "I: 1", "I: 2", "I: 3", "I: 4", "I: 5", "I: 6", "I: 7"} disk.TextColor = ui.ColorWhite disk.BarColor = ui.ColorYellow disk.NumColor = ui.ColorWhite term = &TerminalUI{ui.Body, usage, summary, cpu, mem, disk} return nil }
func main() { err := termui.Init() if err != nil { panic(err) } defer termui.Close() showSubreddit("golang") }
func main() { err := termui.Init() if err != nil { panic(err) } defer termui.Close() //termui.UseTheme("helloworld") sinps := (func() []float64 { n := 220 ps := make([]float64, n) for i := range ps { ps[i] = 1 + math.Sin(float64(i)/5) } return ps })() lc0 := termui.NewLineChart() lc0.BorderLabel = "braille-mode Line Chart" lc0.Data = sinps lc0.Width = 50 lc0.Height = 12 lc0.X = 0 lc0.Y = 0 lc0.AxesColor = termui.ColorWhite lc0.LineColor = termui.ColorGreen | termui.AttrBold lc1 := termui.NewLineChart() lc1.BorderLabel = "dot-mode Line Chart" lc1.Mode = "dot" lc1.Data = sinps lc1.Width = 26 lc1.Height = 12 lc1.X = 51 lc1.DotStyle = '+' lc1.AxesColor = termui.ColorWhite lc1.LineColor = termui.ColorYellow | termui.AttrBold lc2 := termui.NewLineChart() lc2.BorderLabel = "dot-mode Line Chart" lc2.Mode = "dot" lc2.Data = sinps[4:] lc2.Width = 77 lc2.Height = 16 lc2.X = 0 lc2.Y = 12 lc2.AxesColor = termui.ColorWhite lc2.LineColor = termui.ColorCyan | termui.AttrBold termui.Render(lc0, lc1, lc2) termui.Handle("/sys/kbd/q", func(termui.Event) { termui.StopLoop() }) termui.Loop() }
//doLiveGraph builds a graph in the terminal window that //updates every graphUpdate seconds //It will build up to maxGraphs graphs with one time-series //per graph func doLiveGraph(res *wavefront.QueryResponse, query *wavefront.Querying, period int64) { err := ui.Init() if err != nil { log.Fatal(err) } defer ui.Close() if maxGraphs > len(res.TimeSeries) { maxGraphs = len(res.TimeSeries) } var wDivisor, hDivisor int switch maxGraphs { case 1: wDivisor = 1 hDivisor = 1 case 2: wDivisor = 2 hDivisor = 1 case 3, 4: wDivisor = 2 hDivisor = 2 } height := ui.TermHeight() / hDivisor width := ui.TermWidth() / wDivisor xVals, yVals := calculateCoords(maxGraphs, ui.TermWidth()/wDivisor, ui.TermHeight()/hDivisor) graphs := buildGraphs(res, height, width, xVals, yVals) ui.Render(graphs...) ui.Handle("/sys/kbd/q", func(ui.Event) { // press q to quit ui.StopLoop() }) ui.Handle("/sys/kbd/C-c", func(ui.Event) { // handle Ctrl + c combination ui.StopLoop() }) ui.Handle("/timer/1s", func(e ui.Event) { query.SetEndTime(time.Now()) query.SetStartTime(period) res, err := query.Execute() if err != nil { log.Fatal(err) } graphs := buildGraphs(res, height, width, xVals, yVals) ui.Render(graphs...) }) ui.Loop() }
func (s *Stats) Start() { s.cfUI.Say("Starting Stats...") err := termui.Init() if err != nil { s.cfUI.Warn(err.Error()) return } defer termui.Close() go func() { sinkTypeChart := &charts.SinkTypeChart{} sinkTypeChart.Init(s.cfUI) uaaChart := &charts.UAAChart{} uaaChart.Init(s.cfUI) msgLossChart := &charts.MsgLossChart{} msgLossChart.Init(s.cfUI) notesChart := &charts.NotesChart{} notesChart.Init() s.client.Sift( []charts.Chart{ sinkTypeChart, uaaChart, msgLossChart, }, ) termui.Body.AddRows( termui.NewRow( termui.NewCol(6, 0, sinkTypeChart), termui.NewCol(6, 0, uaaChart), ), termui.NewRow( termui.NewCol(6, 0, msgLossChart), termui.NewCol(6, 0, notesChart), ), ) for { termui.Body.Align() termui.Render(termui.Body) time.Sleep(1 * time.Second) } }() termui.Handle("/sys/kbd/q", func(termui.Event) { termui.StopLoop() }) termui.Loop() }
func main() { err := termui.Init() if err != nil { panic(err) } defer termui.Close() sinps := (func() []float64 { n := 220 ps := make([]float64, n) for i := range ps { ps[i] = 1 + math.Sin(float64(i)/5) } return ps })() p := termui.NewPar(":PRESS q or Esc TO QUIT DEMO Hello World") p.Height = 3 p.Width = 50 p.TextFgColor = termui.ColorWhite p.BorderLabel = "Hello-World" p.BorderFg = termui.ColorCyan lc1 := termui.NewLineChart() lc1.BorderLabel = "dot-mode Line Chart" lc1.Mode = "dot" lc1.Data = sinps lc1.Width = 26 lc1.Height = 12 lc1.X = 51 lc1.DotStyle = '+' lc1.AxesColor = termui.ColorWhite lc1.LineColor = termui.ColorYellow | termui.AttrBold g0 := termui.NewGauge() g0.Percent = 40 g0.Width = 50 g0.Height = 3 g0.Y = 3 g0.BorderLabel = "Slim Gauge" g0.BarColor = termui.ColorRed g0.BorderFg = termui.ColorWhite g0.BorderLabelFg = termui.ColorCyan termui.Render(p, g0, lc1) termui.Handle("/sys", func(e termui.Event) { k, ok := e.Data.(termui.EvtKbd) if ok && (k.KeyStr == "q" || k.KeyStr == "<escape>") { termui.StopLoop() } }) termui.Loop() }
func main() { err := ui.Init() if err != nil { panic(err) } defer ui.Close() initial() ech := ui.EventCh() for screen := intro; screen != nil; { screen = screen(ech) } }
func main() { err := termui.Init() if err != nil { panic(err) } defer termui.Close() termui.UseTheme("helloworld") g0 := termui.NewGauge() g0.Percent = 40 g0.Width = 50 g0.Height = 3 g0.Border.Label = "Slim Gauge" g0.BarColor = termui.ColorRed g0.Border.FgColor = termui.ColorWhite g0.Border.LabelFgColor = termui.ColorCyan g2 := termui.NewGauge() g2.Percent = 60 g2.Width = 50 g2.Height = 3 g2.PercentColor = termui.ColorBlue g2.Y = 3 g2.Border.Label = "Slim Gauge" g2.BarColor = termui.ColorYellow g2.Border.FgColor = termui.ColorWhite g1 := termui.NewGauge() g1.Percent = 30 g1.Width = 50 g1.Height = 5 g1.Y = 6 g1.Border.Label = "Big Gauge" g1.PercentColor = termui.ColorYellow g1.BarColor = termui.ColorGreen g1.Border.FgColor = termui.ColorWhite g1.Border.LabelFgColor = termui.ColorMagenta g3 := termui.NewGauge() g3.Percent = 50 g3.Width = 50 g3.Height = 3 g3.Y = 11 g3.Border.Label = "Gauge with custom label" g3.Label = "{{percent}}% (100MBs free)" g3.LabelAlign = termui.AlignRight termui.Render(g0, g1, g2, g3) <-termui.EventCh() }
func main() { flag.Parse() if err := ui.Init(); err != nil { panic(err) } defer ui.Close() draw() ui.Handle("/sys/kbd", func(e ui.Event) { ev := e.Data.(ui.EvtKbd) switch ev.KeyStr { case ":": promptMsg = ":" case "C-8": if l := len(promptMsg); l != 0 { promptMsg = promptMsg[:l-1] } case "<enter>": handleInput() promptMsg = "" case "<left>": case "<up>": if reportPage > 0 { reportPage-- } case "<right>": case "<down>": reportPage++ case "<escape>": promptMsg = "" default: // TODO: filter irrelevant keys such as up, down, etc. promptMsg += ev.KeyStr } refresh() }) ui.Handle("/sys/kbd/C-c", func(ui.Event) { ui.StopLoop() }) ui.Handle("/timer/1s", func(ui.Event) { loadProfile(false) loadStats() refresh() }) ui.Handle("/sys/wnd/resize", func(e ui.Event) { ui.Body.Width = ui.TermWidth() refresh() }) ui.Body.Align() ui.Render(ui.Body) ui.Loop() }
func main() { // run as client if len(os.Args) > 1 { fmt.Print(debug.ConnectAndListen()) return } // run as server go func() { panic(debug.ListenAndServe()) }() if err := termui.Init(); err != nil { panic(err) } defer termui.Close() //termui.UseTheme("helloworld") b := termui.NewBlock() b.Width = 20 b.Height = 20 b.Float = termui.AlignCenter b.BorderLabel = "[HELLO](fg-red,bg-white) [WORLD](fg-blue,bg-green)" termui.Render(b) termui.Handle("/sys", func(e termui.Event) { k, ok := e.Data.(termui.EvtKbd) debug.Logf("->%v\n", e) if ok && k.KeyStr == "q" { termui.StopLoop() } }) termui.Handle(("/usr"), func(e termui.Event) { debug.Logf("->%v\n", e) }) termui.Handle("/timer/1s", func(e termui.Event) { t := e.Data.(termui.EvtTimer) termui.SendCustomEvt("/usr/t", t.Count) if t.Count%2 == 0 { b.BorderLabel = "[HELLO](fg-red,bg-green) [WORLD](fg-blue,bg-white)" } else { b.BorderLabel = "[HELLO](fg-blue,bg-white) [WORLD](fg-red,bg-green)" } termui.Render(b) }) termui.Loop() }
func main() { err := termui.Init() if err != nil { panic(err) } defer termui.Close() if termutil.Isatty(os.Stdin.Fd()) { panic("...") } eventChan := make(chan termbox.Event) go func() { for { eventChan <- termbox.PollEvent() } }() dataChan := make(chan string) go func() { scanner := bufio.NewScanner(os.Stdin) for scanner.Scan() { dataChan <- scanner.Text() } if err := scanner.Err(); err != nil { panic(err) } }() summary := cntbar.NewSummary() tick := time.Tick(tickInterval) termui.UseTheme("helloworld") render(summary) for { select { case event := <-eventChan: if event.Type == termbox.EventKey && event.Ch == 'q' { return } case data := <-dataChan: summary.CountUp(data) case <-tick: render(summary) } } }
func main() { if len(os.Args) < 2 { log.Fatal("Usage: ", os.Args[0], " <sparkyfish server hostname/IP>[:port]") } dest := os.Args[1] i := last(dest, ':') if i < 0 { dest = fmt.Sprint(dest, ":7121") } // Initialize our screen err := termui.Init() if err != nil { panic(err) } if termui.TermWidth() < 60 || termui.TermHeight() < 28 { fmt.Println("sparkyfish needs a terminal window at least 60x28 to run.") os.Exit(1) } defer termui.Close() // 'q' quits the program termui.Handle("/sys/kbd/q", func(termui.Event) { termui.StopLoop() }) // 'Q' also works termui.Handle("/sys/kbd/Q", func(termui.Event) { termui.StopLoop() }) sc := newsparkyClient() sc.serverHostname = dest sc.prepareChannels() sc.wr = newwidgetRenderer() // Begin our tests go sc.runTestSequence() termui.Loop() }
func main() { if len(os.Args) < 2 { fmt.Println("Please specify the URL you want to check.") os.Exit(0) } url := os.Args[1] info := detect(url) err := ui.Init() if err != nil { panic(err) } buildUI(info) defer ui.Close() }
func main() { err := termui.Init() if err != nil { panic(err) } defer termui.Close() //termui.UseTheme("helloworld") bc := termui.NewMBarChart() math := []int{90, 85, 90, 80} english := []int{70, 85, 75, 60} science := []int{75, 60, 80, 85} compsci := []int{100, 100, 100, 100} bc.Data[0] = math bc.Data[1] = english bc.Data[2] = science bc.Data[3] = compsci studentsName := []string{"Ken", "Rob", "Dennis", "Linus"} bc.BorderLabel = "Student's Marks X-Axis=Name Y-Axis=Marks[Math,English,Science,ComputerScience] in %" bc.Width = 100 bc.Height = 30 bc.Y = 0 bc.BarWidth = 10 bc.DataLabels = studentsName bc.ShowScale = true //Show y_axis scale value (min and max) bc.SetMax(400) bc.TextColor = termui.ColorGreen //this is color for label (x-axis) bc.BarColor[3] = termui.ColorGreen //BarColor for computerscience bc.BarColor[1] = termui.ColorYellow //Bar Color for english bc.NumColor[3] = termui.ColorRed // Num color for computerscience bc.NumColor[1] = termui.ColorRed // num color for english //Other colors are automatically populated, btw All the students seems do well in computerscience. :p termui.Render(bc) termui.Handle("/sys/kbd/q", func(termui.Event) { termui.StopLoop() }) termui.Loop() }
func main() { defer glog.Flush() flag.Parse() err := ui.Init() if err != nil { panic(err) } defer ui.Close() jenkins, err := gojenkins.CreateJenkins(*jenkinsUrl).Init() if err != nil { panic(err) } ls, infobox, redbox, yellowbox, greenbox := initWidgets() if *filter != "" { filterBuildName = regexp.MustCompile(*filter) } evt := make(chan tm.Event) go func() { for { evt <- tm.PollEvent() } }() ticker := time.NewTicker(*sampleInterval).C for { select { case e := <-evt: if e.Type == tm.EventKey && e.Ch == 'q' { return } case <-ticker: // alway resize, strange behaviour with tm.EventResize resizeUI(ls) ls.Items = ls.Items[:0] resetBox(infobox, redbox, yellowbox, greenbox) jenkinsPoll(jenkins, infobox, ls, redbox, yellowbox, greenbox) ui.Render(ui.Body) } } }
func main() { err := termui.Init() if err != nil { panic(err) } defer termui.Close() termui.UseTheme("helloworld") g0 := termui.NewGauge() g0.Percent = 40 g0.Width = 50 g0.Height = 3 g0.Border.Label = "Slim Gauge" g0.BarColor = termui.ColorRed g0.Border.FgColor = termui.ColorWhite g0.Border.LabelFgColor = termui.ColorCyan g2 := termui.NewGauge() g2.Percent = 60 g2.Width = 50 g2.Height = 3 g2.PercentColor = termui.ColorBlue g2.Y = 3 g2.Border.Label = "Slim Gauge" g2.BarColor = termui.ColorYellow g2.Border.FgColor = termui.ColorWhite g1 := termui.NewGauge() g1.Percent = 30 g1.Width = 50 g1.Height = 5 g1.Y = 6 g1.Border.Label = "Big Gauge" g1.PercentColor = termui.ColorYellow g1.BarColor = termui.ColorGreen g1.Border.FgColor = termui.ColorWhite g1.Border.LabelFgColor = termui.ColorMagenta termui.Render(g0, g1, g2) termbox.PollEvent() }