метод рендера перенесен в view
parent
8dee90332e
commit
977db9d258
8
main.py
8
main.py
|
@ -12,10 +12,12 @@ def main():
|
|||
model.LoadFile(file_path)
|
||||
|
||||
while True:
|
||||
controller.Render()
|
||||
view.Render(model.displayBuffer,
|
||||
model.currentLine, model.currentCol,
|
||||
model.scrollX, model.scrollY,
|
||||
model.file_path)
|
||||
symbolCode = view.GetChar()
|
||||
if not controller.HandleInput(symbolCode):
|
||||
break
|
||||
if not controller.HandleInput(symbolCode): break
|
||||
|
||||
view.Cleanup()
|
||||
|
||||
|
|
|
@ -22,26 +22,4 @@ class EditController:
|
|||
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()
|
||||
return True
|
26
mvc/views.py
26
mvc/views.py
|
@ -35,6 +35,32 @@ class CursesAdapter:
|
|||
"""Wait users input"""
|
||||
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):
|
||||
"""Print edit mode information panel"""
|
||||
self.screen.addstr(self.lines - 1, 0, ' ' * (self.cols - 1)) # Очистка строки
|
||||
|
|
Loading…
Reference in New Issue