jsbc.py 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. #!/usr/bin/python3
  2. import time
  3. import traceback
  4. import json
  5. import _thread as thread
  6. import __main__ as MAIN
  7. from lib.cprint import *
  8. import lib.fixlib as fixlib
  9. def JSCB(x,sock=None):
  10. # REMOTE KEY EVENT's
  11. i = ""
  12. msg = ""
  13. msgs = []
  14. try:
  15. #print("JSCB",sock)
  16. for i in x:
  17. #print("i",[i])
  18. msgs = json.loads(i)
  19. #print(" JSCB",msgs) #,sock)
  20. if type(msgs) is not list:
  21. continue
  22. for msg in msgs:
  23. OK = 0
  24. EXEC_REFRESH = 0
  25. val = -1
  26. exec_nr = -1
  27. fix_nr = -1
  28. attr = ""
  29. if "event" not in msg:
  30. continue
  31. if "EXEC" in msg:
  32. try:
  33. exec_nr = int(msg["EXEC"])
  34. except:
  35. exec_nr = -2
  36. if "VAL" in msg:
  37. val = msg["VAL"]
  38. if "FIX" in msg:
  39. fix_nr=msg["FIX"]
  40. if "ATTR" in msg:
  41. attr=msg["ATTR"]
  42. print(" MAIN.tk_event","fix:",fix_nr,"exec_nr:",exec_nr,"val:",val,"attr",attr)
  43. if "FIXTURES" == msg["event"]:
  44. fixlib.encoder(MAIN.FIXTURES.fixtures,str(fix_nr),attr,xval=val,xfade=0,xdelay=0)#,blind=0)
  45. OK = 1
  46. elif "CLEAR" == msg["event"]:
  47. fixlib.clear(MAIN.FIXTURES.fixtures)
  48. OK = 1
  49. elif "ESC" == msg["event"]:
  50. fixlib.clear(MAIN.FIXTURES.fixtures)
  51. MAIN.modes.clear() # FIX
  52. MAIN.master.button_clear() # REC,CFG-BTN ...
  53. OK = 1
  54. elif msg["event"] in ["REC","REC-FX","EDIT","BLIND","FLASH","CFG-BTN","LABEL","MOVE","GO","SELECT","DEL","COPY"]:
  55. if msg["event"] in ["REC-FX"]:
  56. MAIN.modes.clear(protect=["REC-FX","REC",msg["event"]]) # FIX
  57. MAIN.master.button_clear() # REC,CFG-BTN ...
  58. MAIN.modes.val(msg["event"],1)
  59. OK = 1
  60. elif "FX-OFF" == msg["event"]:
  61. MAIN.CONSOLE.fx_off("all")
  62. OK = 1
  63. elif "SAVE\nSHOW" == msg["event"]:
  64. MAIN.save_show()
  65. OK = 1
  66. elif "RESTART" == msg["event"]:
  67. print("OK OK")
  68. MAIN.LOAD_SHOW_AND_RESTART("").cb(force=1)
  69. OK = 1
  70. elif "EXEC" == msg["event"]:
  71. print(" JSCB:",msg["event"])
  72. try:
  73. if exec_nr > 0:
  74. if val >= 1: # only Press
  75. pass
  76. if MAIN.modes.val("REC"):
  77. MAIN.master.exec_rec(exec_nr-1)
  78. msg["OK"] = "REC"
  79. EXEC_REFRESH = 1
  80. OK = 1
  81. elif MAIN.modes.val("COPY"):
  82. MAIN.EXEC.copy(exec_nr-1)
  83. msg["OK"] = "COPY"
  84. if MAIN.modes.val("COPY") > 2:
  85. MAIN.modes.val("COPY",0)
  86. EXEC_REFRESH = 1
  87. OK = 1
  88. elif MAIN.modes.val("MOVE"):
  89. MAIN.EXEC.move(exec_nr-1)
  90. msg["OK"] = "MOVE"
  91. EXEC_REFRESH = 1
  92. OK = 1
  93. elif MAIN.modes.val("DEL"):
  94. MAIN.EXEC.delete(exec_nr-1)
  95. MAIN.modes.val("DEL",0)
  96. msg["OK"] = "DEL"
  97. EXEC_REFRESH = 1
  98. OK = 1
  99. if not OK:
  100. if val >= 0: #Press/Release
  101. MAIN.master.exec_go(exec_nr-1,xfade=None,val=val)
  102. OK = 1
  103. EXEC_REFRESH = 1
  104. except Exception as e:
  105. print("EXEC ERR:",e)
  106. if OK:
  107. cprint(" remote-key:",msg ,color="green")
  108. if EXEC_REFRESH:
  109. def xx():
  110. MAIN.execlib.exec_set_mc(MAIN.EXEC.label_exec,MAIN.EXEC.val_exec)
  111. thread.start_new_thread(xx,())
  112. else:
  113. cprint(" remote-key:",msg ,color="red")
  114. except Exception as e:
  115. cprint("exception JSCB:",e,color="red")
  116. cprint("- i:",i,color="red")
  117. cprint("- msg:",msgs,color="red")
  118. cprint(traceback.format_exc(),color="red")
  119. if sock:
  120. msg = ["Notice: Exception on JSCB-SERVER: ",str(e)]
  121. msg = json.dumps(msg)
  122. msg = bytes(msg,"utf8")
  123. cprint(msg,color="red")
  124. #chat._send(sock,msg)
  125. #time.sleep(1/60)