import ctypes
from ctypes import CFUNCTYPE, POINTER
libcgui = None
def on_evt(ptr, evt_str):
  global libcgui
  evt_str = ctypes.string_at(evt_str).decode("utf-8")
  if evt_str == "KeyPress,q":
    libcgui.set_rep_exit_flag(ptr, True)
  
  print("on_event(?, ", evt_str, ")")
  
if __name__ == '__main__':
  print("Inside python...")
  print("Opening libcgui...")
  libcgui = ctypes.CDLL('./target/release/libcgui.so')
    libcgui.alloc_win.argtypes = []
  libcgui.alloc_win.restype = ctypes.c_void_p
  win_ptr = libcgui.alloc_win()
  print("win_ptr = ", win_ptr)
  
  print("Adding function callback...")
  c_wrapp_for_func = CFUNCTYPE(None, POINTER(ctypes.c_void_p), POINTER(ctypes.c_char))
  on_event_cfunc = c_wrapp_for_func(on_evt)
  print("Adding...")
  libcgui.add_callback(ctypes.cast(win_ptr, ctypes.c_void_p), on_event_cfunc)
  
  print("Running main loop...")
    libcgui.event_loop(ctypes.cast(win_ptr, ctypes.c_void_p))
  
  print("Deallocating...")
  libcgui.dealloc_win(ctypes.cast(win_ptr, ctypes.c_void_p))