2025-02-05 10:59:54 +03:00
|
|
|
import sys
|
2025-02-04 14:17:15 +03:00
|
|
|
from mvc.models import VimModel
|
2025-02-05 00:24:14 +03:00
|
|
|
from mvc.views import VimView, CursesAdapter
|
2025-02-04 18:36:12 +03:00
|
|
|
from mvc.controllers import Controller, ReturnCode
|
|
|
|
from mvc.controllers import EditStrategy, CommandStrategy, NormalStrategy
|
2025-02-05 10:59:54 +03:00
|
|
|
import tools
|
2025-02-11 10:37:35 +03:00
|
|
|
from mystring import MyString as MyString
|
2025-02-04 13:16:23 +03:00
|
|
|
|
|
|
|
def main():
|
2025-02-05 00:24:14 +03:00
|
|
|
adapter = CursesAdapter()
|
|
|
|
|
|
|
|
model, view = VimModel(adapter.lines, adapter.cols), VimView(adapter)
|
2025-02-04 20:01:25 +03:00
|
|
|
# start mode - navigation mode
|
2025-02-04 20:28:41 +03:00
|
|
|
strategy = NormalStrategy(model, view.curses_adapter)
|
2025-02-04 16:08:51 +03:00
|
|
|
controller = Controller(strategy)
|
|
|
|
|
2025-02-10 21:24:46 +03:00
|
|
|
# load file from sys argv
|
2025-02-11 10:37:35 +03:00
|
|
|
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())
|
2025-02-04 13:16:23 +03:00
|
|
|
|
2025-02-10 20:57:28 +03:00
|
|
|
view.SetModel(model) # view subscribe model
|
|
|
|
|
2025-02-04 13:16:23 +03:00
|
|
|
while True:
|
2025-02-10 21:24:46 +03:00
|
|
|
|
2025-02-10 20:57:28 +03:00
|
|
|
model.notify()
|
2025-02-04 15:05:41 +03:00
|
|
|
symbolCode = view.curses_adapter.GetChar()
|
2025-02-04 18:36:12 +03:00
|
|
|
|
|
|
|
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))
|
2025-02-04 18:46:16 +03:00
|
|
|
case ReturnCode.SET_EDIT_MODE:
|
|
|
|
controller.SetStrategy(EditStrategy(model, view.curses_adapter))
|
2025-02-04 18:36:12 +03:00
|
|
|
case ReturnCode.EXIT_CODE:
|
|
|
|
break
|
2025-02-04 13:16:23 +03:00
|
|
|
|
2025-02-04 15:05:41 +03:00
|
|
|
view.curses_adapter.Cleanup()
|
2025-02-04 13:16:23 +03:00
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
main()
|