52 lines
2.1 KiB
Python
52 lines
2.1 KiB
Python
class VimModel:
|
|
def __init__(self):
|
|
self.displayBuffer = [] # буфер для хранения всех строк
|
|
self.currentLine = 0 # текущий индекс строки
|
|
self.currentCol = 0 # текущий индекс колонки
|
|
self.scrollY = 0 # вертикальная прокрутка
|
|
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
|
|
try:
|
|
with open(file_path, "r") as file:
|
|
self.displayBuffer = [list(line.rstrip('\n')) for line in file.readlines()]
|
|
except FileNotFoundError:
|
|
print(f"File {file_path} not found. Starting with empty buffer.")
|
|
self.displayBuffer = []
|
|
|
|
def save_file(self):
|
|
"""Сохранение файла"""
|
|
try:
|
|
with open(self.file_path, "w") as file:
|
|
for line in self.displayBuffer:
|
|
file.write(''.join(line) + '\n')
|
|
return True
|
|
except Exception as e:
|
|
return str(e) |