package main import ( "github.com/nsf/termbox-go" "os" //"syscall" "time" ) const PROGRAM_NAME = "tis100e" func readUserInput(e chan termbox.Event) { for { e <- termbox.PollEvent() } } func sendNoneEvent(e chan termbox.Event) { for { time.Sleep(60 * time.Millisecond) e <- termbox.Event{Type: termbox.EventNone} } } func mainLoop(style Style) { screens := defaultScreens() display_screen := screens[MAIN_SCREEN_INDEX] layoutAndDrawScreen(display_screen, style) eventchan := make(chan termbox.Event) go readUserInput(eventchan) go sendNoneEvent(eventchan) for { event := <-eventchan // := termbox.PollEvent() if event.Type == termbox.EventKey { if event.Key == termbox.KeyCtrlZ || event.Key == termbox.KeyCtrlC { /* process, _ := os.FindProcess(os.Getpid()) termbox.Close() process.Signal(syscall.SIGSTOP) termbox.Init() */ break } new_screen_index := display_screen.handleKeyEvent(event) if new_screen_index < len(screens) { display_screen = screens[new_screen_index] layoutAndDrawScreen(display_screen, style) } else if new_screen_index == EXIT_SCREEN_INDEX { break } } if event.Type == termbox.EventResize || event.Type == termbox.EventNone { layoutAndDrawScreen(display_screen, style) } } } func main() { var err error err = termbox.Init() if err != nil { panic(err) } defer termbox.Close() style := defaultStyle() termbox.SetOutputMode(termbox.Output256) mainLoop(style) } func WriteToLog(d string) { f, err := os.OpenFile("tis100e_log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0664) if err != nil { panic(err) } f.WriteString(d) f.Close() }