1// +build ignore 2 3// Copyright 2015 The Tops'l Authors 4// 5// Licensed under the Apache License, Version 2.0 (the "License"); 6// you may not use file except in compliance with the License. 7// You may obtain a copy of the license at 8// 9// http://www.apache.org/licenses/LICENSE-2.0 10// 11// Unless required by applicable law or agreed to in writing, software 12// distributed under the License is distributed on an "AS IS" BASIS, 13// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14// See the License for the specific language governing permissions and 15// limitations under the License. 16 17package main 18 19import ( 20 "fmt" 21 "os" 22 23 "github.com/gdamore/tcell/v2" 24 "github.com/gdamore/tcell/v2/views" 25) 26 27type boxL struct { 28 views.BoxLayout 29} 30 31var app = &views.Application{} 32var box = &boxL{} 33 34func (m *boxL) HandleEvent(ev tcell.Event) bool { 35 switch ev := ev.(type) { 36 case *tcell.EventKey: 37 if ev.Key() == tcell.KeyEscape { 38 app.Quit() 39 return true 40 } 41 } 42 return m.BoxLayout.HandleEvent(ev) 43} 44 45func main() { 46 47 title := &views.TextBar{} 48 title.SetStyle(tcell.StyleDefault. 49 Background(tcell.ColorYellow). 50 Foreground(tcell.ColorBlack)) 51 title.SetCenter("Horizontal Boxes", tcell.StyleDefault) 52 title.SetLeft("ESC to exit", tcell.StyleDefault. 53 Background(tcell.ColorBlue). 54 Foreground(tcell.ColorWhite)) 55 title.SetRight("==>X", tcell.StyleDefault) 56 57 inner := views.NewBoxLayout(views.Horizontal) 58 59 l := views.NewText() 60 m := views.NewText() 61 r := views.NewText() 62 63 l.SetText("Left (0.0)") 64 m.SetText("Middle (0.7)") 65 r.SetText("Right (0.3)") 66 l.SetStyle(tcell.StyleDefault.Foreground(tcell.ColorWhite). 67 Background(tcell.ColorRed)) 68 m.SetStyle(tcell.StyleDefault.Foreground(tcell.ColorWhite). 69 Background(tcell.ColorLime)) 70 r.SetStyle(tcell.StyleDefault.Foreground(tcell.ColorWhite). 71 Background(tcell.ColorBlue)) 72 l.SetAlignment(views.AlignBegin) 73 m.SetAlignment(views.AlignMiddle) 74 r.SetAlignment(views.AlignEnd) 75 76 inner.AddWidget(l, 0) 77 inner.AddWidget(m, 0.7) 78 inner.AddWidget(r, 0.3) 79 80 box.SetOrientation(views.Vertical) 81 box.AddWidget(title, 0) 82 box.AddWidget(inner, 1) 83 app.SetRootWidget(box) 84 if e := app.Run(); e != nil { 85 fmt.Fprintln(os.Stderr, e.Error()) 86 os.Exit(1) 87 } 88} 89