метод рендера перенесен в view
parent
8dee90332e
commit
977db9d258
8
main.py
8
main.py
|
@ -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()
|
||||||
|
|
||||||
|
|
|
@ -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()
|
|
26
mvc/views.py
26
mvc/views.py
|
@ -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)) # Очистка строки
|
||||||
|
|
Loading…
Reference in New Issue