VIM-like-text-editor/main.py

38 lines
1.4 KiB
Python

from mvc.models import VimModel
from mvc.views import VimView
from mvc.controllers import Controller, ReturnCode
from mvc.controllers import EditStrategy, CommandStrategy, NormalStrategy
def main():
model, view = VimModel(), VimView()
# начальный режим - редактирование
strategy = NormalStrategy(model, view.curses_adapter)
controller = Controller(strategy)
# Загрузка файла для редактирования
file_path = "example.txt" # Укажите путь к файлу
model.LoadFile(file_path)
while True:
view.Render(model.displayBuffer,
model.currentLine, model.currentCol,
model.scrollX, model.scrollY,
model.ModeBar())
symbolCode = view.curses_adapter.GetChar()
match controller.HandleInput(symbolCode):
case ReturnCode.SET_BASIC_MODE:
controller.SetStrategy(NormalStrategy(model, view.curses_adapter))
case ReturnCode.SET_COMMAND_MODE:
controller.SetStrategy(CommandStrategy(model, view.curses_adapter))
case ReturnCode.SET_EDIT_MODE:
controller.SetStrategy(EditStrategy(model, view.curses_adapter))
case ReturnCode.EXIT_CODE:
break
view.curses_adapter.Cleanup()
if __name__ == "__main__":
main()