У модели теперь есть методы, отвечающие за изменение текущей позиции
parent
50595ba6f6
commit
f79ad4010f
|
@ -1 +1 @@
|
||||||
Простой консольный текстовый редактор по типу вима, написанный на Python в ходе лабораторной работы по ООП.
|
Простой консольный текстовый редактор по типу вима, написанный на Python в ходе лабораторной работы по ООП
|
|
@ -1,7 +1,10 @@
|
||||||
import curses
|
import curses
|
||||||
|
|
||||||
|
from views import CursesAdapter
|
||||||
|
from models import VimModel
|
||||||
|
|
||||||
class EditController:
|
class EditController:
|
||||||
def __init__(self, model, view):
|
def __init__(self, model: VimModel, view: CursesAdapter):
|
||||||
self.model = model
|
self.model = model
|
||||||
self.view = view
|
self.view = view
|
||||||
|
|
||||||
|
@ -11,31 +14,19 @@ class EditController:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
elif symbolCode == curses.KEY_LEFT:
|
elif symbolCode == curses.KEY_LEFT:
|
||||||
if self.model.currentCol > 0:
|
self.model.MoveLeft()
|
||||||
self.model.currentCol -= 1
|
|
||||||
elif self.model.currentLine > 0:
|
|
||||||
self.model.currentLine -= 1
|
|
||||||
self.model.currentCol = len(self.model.displayBuffer[self.model.currentLine])
|
|
||||||
|
|
||||||
elif symbolCode == curses.KEY_RIGHT:
|
elif symbolCode == curses.KEY_RIGHT:
|
||||||
if self.model.currentCol < len(self.model.displayBuffer[self.model.currentLine]):
|
self.model.MoveRight()
|
||||||
self.model.currentCol += 1
|
|
||||||
elif self.model.currentLine < len(self.model.displayBuffer) - 1:
|
|
||||||
self.model.currentLine += 1
|
|
||||||
self.model.currentCol = 0
|
|
||||||
|
|
||||||
elif symbolCode == curses.KEY_UP:
|
elif symbolCode == curses.KEY_UP:
|
||||||
if self.model.currentLine > 0:
|
self.model.MoveUp()
|
||||||
self.model.currentLine -= 1
|
|
||||||
self.model.currentCol = min(self.model.currentCol, len(self.model.displayBuffer[self.model.currentLine]))
|
|
||||||
|
|
||||||
elif symbolCode == curses.KEY_DOWN:
|
elif symbolCode == curses.KEY_DOWN:
|
||||||
if self.model.currentLine < len(self.model.displayBuffer) - 1:
|
self.model.MoveDown()
|
||||||
self.model.currentLine += 1
|
|
||||||
self.model.currentCol = min(self.model.currentCol, len(self.model.displayBuffer[self.model.currentLine]))
|
|
||||||
|
|
||||||
# BACKSPACE
|
# BACKSPACE
|
||||||
elif symbolCode in (127, 8): # Backspace
|
elif symbolCode in (127, 8): # Backspace
|
||||||
if self.model.currentCol > 0: # Если символ существует в текущей строке
|
if self.model.currentCol > 0: # Если символ существует в текущей строке
|
||||||
self.model.currentCol -= 1
|
self.model.currentCol -= 1
|
||||||
del self.model.displayBuffer[self.model.currentLine][self.model.currentCol] # Удаляем символ
|
del self.model.displayBuffer[self.model.currentLine][self.model.currentCol] # Удаляем символ
|
||||||
|
|
24
models.py
24
models.py
|
@ -7,6 +7,30 @@ class VimModel:
|
||||||
self.scrollX = 0 # горизонтальная прокрутка
|
self.scrollX = 0 # горизонтальная прокрутка
|
||||||
self.file_path = "" # путь к файлу
|
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):
|
def load_file(self, file_path):
|
||||||
"""Загрузка файла для редактирования"""
|
"""Загрузка файла для редактирования"""
|
||||||
self.file_path = file_path
|
self.file_path = file_path
|
||||||
|
|
Loading…
Reference in New Issue