func main() { stdscr, err := gc.Init() if err != nil { log.Fatal(err) } defer gc.End() gc.Echo(false) gc.CBreak(true) gc.Cursor(0) var panels [2]fp.FilePanel rows, cols := stdscr.MaxYX() height, width := rows, cols/2 y, x := 0, 0 activePanel := 0 panels[0] = fp.FilePanel{Height: height, Width: width, Y: y, X: x, Directory: "./", Selected: 0, IsActive: true} panels[1] = fp.FilePanel{Height: height, Width: width, Y: y, X: x + width, Directory: "/home/kuzzmi/", Selected: 2, IsActive: false} panels[0].Draw() panels[1].Draw() gc.UpdatePanels() gc.Update() stdscr.Keypad(true) // stdscr.GetChar() main: for { switch panels[activePanel].Panel.Window().GetChar() { case 'q': break main case gc.KEY_RETURN: panels[activePanel].Execute() case gc.KEY_TAB: panels[0].ToggleActivity() panels[1].ToggleActivity() gc.UpdatePanels() gc.Update() if activePanel == 0 { activePanel = 1 } else { activePanel = 0 } case 'u': panels[activePanel].GoUp() case 'k': panels[activePanel].Select(panels[activePanel].Selected - 1) case 'j': panels[activePanel].Select(panels[activePanel].Selected + 1) case 'i': panels[activePanel].HideHidden() } } stdscr.Delete() }
func main() { stdscr, _ := gc.Init() defer gc.End() gc.StartColor() gc.CBreak(true) gc.Echo(true) stdscr.Keypad(true) stdscr.Print("Hit 'tab' to cycle through windows, 'q' to quit") gc.InitPair(1, gc.C_RED, gc.C_BLACK) gc.InitPair(2, gc.C_GREEN, gc.C_BLACK) gc.InitPair(3, gc.C_BLUE, gc.C_BLACK) gc.InitPair(4, gc.C_CYAN, gc.C_BLACK) var panels [3]*gc.Panel y, x := 4, 10 for i := 0; i < 3; i++ { h, w := 10, 40 title := "Window Number %d" window, _ := gc.NewWindow(h, w, y+(i*4), x+(i*10)) window.Box(0, 0) window.MoveAddChar(2, 0, gc.ACS_LTEE) window.HLine(2, 1, gc.ACS_HLINE, w-2) window.MoveAddChar(2, w-1, gc.ACS_RTEE) window.ColorOn(int16(i + 1)) window.MovePrintf(1, (w/2)-(len(title)/2), title, i+1) window.ColorOff(int16(i + 1)) panels[i] = gc.NewPanel(window) } active := 2 for { gc.UpdatePanels() gc.Update() switch stdscr.GetChar() { case 'q': return case gc.KEY_TAB: active += 1 if active > 2 { active = 0 } panels[active].Top() } } }
func main() { stdscr, _ := gc.Init() defer gc.End() var panels [3]*gc.Panel y, x := 2, 4 for i := 0; i < 3; i++ { window, _ := gc.NewWindow(10, 40, y+i, x+(i*5)) window.Box(0, 0) panels[i] = gc.NewPanel(window) } gc.UpdatePanels() gc.Update() stdscr.GetChar() }