|
|
@@ -31,10 +31,28 @@ func (sf *App) Screen() types.IScreen {
|
|
|
|
|
|
// Run -- запускает объект приложения в работу
|
|
|
func (sf *App) Run() error {
|
|
|
+ defer func() {
|
|
|
+ sf.scr.Fini() // Завершить работу с экраном
|
|
|
+ }()
|
|
|
if err := sf.run_init(); err != nil {
|
|
|
return fmt.Errorf("App.Run(): ininit screen, err=\n\t%w", err)
|
|
|
}
|
|
|
- return fmt.Errorf("App.Run(): доделать")
|
|
|
+ sf.scr.Clear() // Зачистить экран перед началом работы
|
|
|
+ for { // Главный цикл работы
|
|
|
+ sf.scr.Show() // Обновить экран
|
|
|
+
|
|
|
+ ev := sf.scr.PollEvent() // Получить событие
|
|
|
+
|
|
|
+ // Process event
|
|
|
+ switch ev := ev.(type) {
|
|
|
+ case *tcell.EventResize:
|
|
|
+ sf.scr.Sync()
|
|
|
+ case *tcell.EventKey:
|
|
|
+ if ev.Key() == tcell.KeyCtrlQ { // ev.Key() == tcell.KeyEscape
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Включение экрана терминала
|