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 from mystring import MyString as MyString 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(MyString(sys.argv[1])) else: model.LoadFile(MyString("File not found but i create it").data()+\ MyString(str(tools.UnixSec())).data()+\ MyString(".txt").data()) 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()