метод рендера перенесен в view

master
serr 2025-02-04 14:37:04 +03:00
parent 8dee90332e
commit 977db9d258
3 changed files with 32 additions and 26 deletions

View File

@ -12,10 +12,12 @@ def main():
model.LoadFile(file_path) model.LoadFile(file_path)
while True: while True:
controller.Render() view.Render(model.displayBuffer,
model.currentLine, model.currentCol,
model.scrollX, model.scrollY,
model.file_path)
symbolCode = view.GetChar() symbolCode = view.GetChar()
if not controller.HandleInput(symbolCode): if not controller.HandleInput(symbolCode): break
break
view.Cleanup() view.Cleanup()

View File

@ -23,25 +23,3 @@ class EditController:
self.model.Scroll(self.view.lines, self.view.cols) self.model.Scroll(self.view.lines, self.view.cols)
return True 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()

View File

@ -35,6 +35,32 @@ class CursesAdapter:
"""Wait users input""" """Wait users input"""
return self.screen.getch() return self.screen.getch()
def Render(self,
displayBuffer: list[list[str]],
currentLine: int, currentCol: int,
scrollX: int, scrollY: int,
file_path: str):
"""Отрисовка текущего состояния"""
self.screen.clear()
# display visible part of text
for i in range(self.lines - 1):
if i + scrollY < len(displayBuffer):
line = ''.join(displayBuffer[i + scrollY])
if scrollX < len(line):
self.SetString(i, 0, line[scrollX:scrollX + self.cols])
else:
self.SetString(i, 0, '')
else:
self.SetString(i, 0, '')
# update mode bar
self.EditModeBar(currentLine, len(displayBuffer), file_path)
# update cursor
self.SetCursor(currentLine - scrollY, currentCol - scrollX)
self.Refresh()
def EditModeBar(self, currentLine, totalLines, fileName): def EditModeBar(self, currentLine, totalLines, fileName):
"""Print edit mode information panel""" """Print edit mode information panel"""
self.screen.addstr(self.lines - 1, 0, ' ' * (self.cols - 1)) # Очистка строки self.screen.addstr(self.lines - 1, 0, ' ' * (self.cols - 1)) # Очистка строки