From 977db9d258aaa4081343122ab1cf4856dfdaa6fe Mon Sep 17 00:00:00 2001 From: serr Date: Tue, 4 Feb 2025 14:37:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BC=D0=B5=D1=82=D0=BE=D0=B4=20=D1=80=D0=B5?= =?UTF-8?q?=D0=BD=D0=B4=D0=B5=D1=80=D0=B0=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BD?= =?UTF-8?q?=D0=B5=D1=81=D0=B5=D0=BD=20=D0=B2=20view?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 8 +++++--- mvc/controllers.py | 24 +----------------------- mvc/views.py | 26 ++++++++++++++++++++++++++ 3 files changed, 32 insertions(+), 26 deletions(-) diff --git a/main.py b/main.py index a9f0078..814a1de 100644 --- a/main.py +++ b/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() diff --git a/mvc/controllers.py b/mvc/controllers.py index dd4fe43..0be2372 100644 --- a/mvc/controllers.py +++ b/mvc/controllers.py @@ -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() \ No newline at end of file + return True \ No newline at end of file diff --git a/mvc/views.py b/mvc/views.py index ebdb28c..8e5b8d2 100644 --- a/mvc/views.py +++ b/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)) # Очистка строки