jsbc.py 6.4 KB

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