У модели теперь есть методы, отвечающие за изменение текущей позиции
parent
50595ba6f6
commit
f79ad4010f
|
@ -1 +1 @@
|
|||
Простой консольный текстовый редактор по типу вима, написанный на Python в ходе лабораторной работы по ООП.
|
||||
Простой консольный текстовый редактор по типу вима, написанный на Python в ходе лабораторной работы по ООП
|
|
@ -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,28 +14,16 @@ 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
|
||||
|
|
24
models.py
24
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
|
||||
|
|
Loading…
Reference in New Issue