import curses from views import CursesAdapter from models import VimModel class EditController: def __init__(self, model: VimModel, view: CursesAdapter): self.model = model self.view = view def HandleInput(self, symbolCode): """Обработка ввода пользователя""" match symbolCode: case 27: return False # escape case curses.KEY_LEFT: self.model.MoveLeft() case curses.KEY_RIGHT: self.model.MoveRight() case curses.KEY_UP: self.model.MoveUp() case curses.KEY_DOWN: self.model.MoveDown() case 127 | 8: self.model.Backspace() case 10: self.model.Enter() case 19: self.model.SaveFile() case _: self.model.InsertSymbol(symbolCode) self.model.Scroll(self.view.lines, self.view.cols) return True def Render(self): """Отрисовка текущего состояния""" self.view.screen.clear() # Отображение видимой части текста for i in range(self.view.lines - 1): if i + self.model.scrollY < len(self.model.displayBuffer): line = ''.join(self.model.displayBuffer[i + self.model.scrollY]) if self.model.scrollX < len(line): self.view.SetString(i, 0, line[self.model.scrollX:self.model.scrollX + self.view.cols]) else: self.view.SetString(i, 0, '') else: self.view.SetString(i, 0, '') # Отображение панели режима self.view.EditModeBar(self.model.currentLine, len(self.model.displayBuffer), self.model.file_path) # Установка курсора self.view.SetCursor(self.model.currentLine - self.model.scrollY, self.model.currentCol - self.model.scrollX) self.view.Refresh()