diff --git a/README.md b/README.md index 82eb11b..211f88e 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -Простой консольный текстовый редактор по типу вима, написанный на Python в ходе лабораторной работы по ООП. \ No newline at end of file +Простой консольный текстовый редактор по типу вима, написанный на Python в ходе лабораторной работы по ООП \ No newline at end of file diff --git a/controllers.py b/controllers.py index 65ca942..84d49db 100644 --- a/controllers.py +++ b/controllers.py @@ -1,7 +1,10 @@ import curses +from views import CursesAdapter +from models import VimModel + class EditController: - def __init__(self, model, view): + def __init__(self, model: VimModel, view: CursesAdapter): self.model = model self.view = view @@ -11,31 +14,19 @@ class EditController: return False elif symbolCode == curses.KEY_LEFT: - if self.model.currentCol > 0: - self.model.currentCol -= 1 - elif self.model.currentLine > 0: - self.model.currentLine -= 1 - self.model.currentCol = len(self.model.displayBuffer[self.model.currentLine]) + self.model.MoveLeft() elif symbolCode == curses.KEY_RIGHT: - if self.model.currentCol < len(self.model.displayBuffer[self.model.currentLine]): - self.model.currentCol += 1 - elif self.model.currentLine < len(self.model.displayBuffer) - 1: - self.model.currentLine += 1 - self.model.currentCol = 0 + self.model.MoveRight() elif symbolCode == curses.KEY_UP: - if self.model.currentLine > 0: - self.model.currentLine -= 1 - self.model.currentCol = min(self.model.currentCol, len(self.model.displayBuffer[self.model.currentLine])) + self.model.MoveUp() elif symbolCode == curses.KEY_DOWN: - if self.model.currentLine < len(self.model.displayBuffer) - 1: - self.model.currentLine += 1 - self.model.currentCol = min(self.model.currentCol, len(self.model.displayBuffer[self.model.currentLine])) + self.model.MoveDown() # BACKSPACE - elif symbolCode in (127, 8): # Backspace + elif symbolCode in (127, 8): # Backspace if self.model.currentCol > 0: # Если символ существует в текущей строке self.model.currentCol -= 1 del self.model.displayBuffer[self.model.currentLine][self.model.currentCol] # Удаляем символ diff --git a/models.py b/models.py index 4194714..58a7388 100644 --- a/models.py +++ b/models.py @@ -7,6 +7,30 @@ class VimModel: self.scrollX = 0 # горизонтальная прокрутка self.file_path = "" # путь к файлу + def MoveLeft(self): + if self.currentCol > 0: + self.currentCol -= 1 + elif self.currentLine > 0: + self.currentLine -= 1 + self.currentCol = len(self.displayBuffer[self.currentLine]) + + def MoveRight(self): + if self.currentCol < len(self.displayBuffer[self.currentLine]): + self.currentCol += 1 + elif self.currentLine < len(self.displayBuffer) - 1: + self.currentLine += 1 + self.currentCol = 0 + + def MoveUp(self): + if self.currentLine > 0: + self.currentLine -= 1 + self.currentCol = min(self.currentCol, len(self.displayBuffer[self.currentLine])) + + def MoveDown(self): + if self.currentLine < len(self.displayBuffer) - 1: + self.currentLine += 1 + self.currentCol = min(self.currentCol, len(self.displayBuffer[self.currentLine])) + def load_file(self, file_path): """Загрузка файла для редактирования""" self.file_path = file_path