import sys from mvc.models import VimModel from mvc.views import VimView, CursesAdapter from mvc.controllers import Controller, ReturnCode from mvc.controllers import EditStrategy, CommandStrategy, NormalStrategy import tools def main(): adapter = CursesAdapter() model, view = VimModel(adapter.lines, adapter.cols), VimView(adapter) # start mode - navigation mode strategy = NormalStrategy(model, view.curses_adapter) controller = Controller(strategy) # load file from sys argv if len(sys.argv) > 1: model.LoadFile(sys.argv[1]) else: model.LoadFile("File not found but i create it"+str(tools.UnixSec())+".txt") view.SetModel(model) # view subscribe model while True: model.notify() 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()