123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- #!/usr/bin/python3
- import time
- import traceback
- import json
- import _thread as thread
- import __main__ as MAIN
- from lib.cprint import *
- import lib.fixlib as fixlib
- GLOBAL_old_exec_nr = -1
- def JSCB(x,sock=None):
- global GLOBAL_old_exec_nr
- print()
- # REMOTE KEY EVENT's
- i = ""
- msg = ""
- msgs = []
- try:
- #print("JSCB",sock)
- for i in x:
- #print("i",[i])
- msgs = json.loads(i)
- #print(" JSCB",msgs) #,sock)
- if type(msgs) is not list:
- continue
-
- for msg in msgs:
- OK = 0
- EXEC_REFRESH = 0
- val = -1
- exec_nr = -1
- fix_nr = -1
- attr = ""
- if "event" not in msg:
- continue
- if "EXEC" in msg:
- try:
- exec_nr = int(msg["EXEC"])
- except:
- exec_nr = -2
- if "VAL" in msg:
- val = msg["VAL"] # fix int MIDI
- try:
- val = int(msg["VAL"]) # fix int MIDI
- except:pass
- if "FIX" in msg:
- fix_nr=msg["FIX"]
- if "ATTR" in msg:
- attr=msg["ATTR"]
- print(" MAIN.tk_event","fix:",fix_nr,"exec_nr:",exec_nr,"val:",val,"attr",attr)
- if "FIXTURES" == msg["event"]:
- fixlib.encoder(MAIN.FIXTURES.fixtures,str(fix_nr),attr,xval=val,xfade=0,xdelay=0)#,blind=0)
- OK = 1
- elif "CLEAR" == msg["event"]:
- fixlib.clear(MAIN.FIXTURES.fixtures)
- OK = 1
- elif "ESC" == msg["event"]:
- fixlib.clear(MAIN.FIXTURES.fixtures)
- MAIN.modes.clear() # FIX
- MAIN.master.button_clear() # REC,CFG-BTN ...
- OK = 1
- elif msg["event"] in ["REC","REC-FX","EDIT","BLIND","FLASH","CFG-BTN","LABEL","MOVE","GO","SELECT","DEL","COPY"]:
- if msg["event"] in ["REC-FX"]:
- MAIN.modes.clear(protect=["REC-FX","REC",msg["event"]]) # FIX
- MAIN.master.button_clear() # REC,CFG-BTN ...
- MAIN.modes.val(msg["event"],1)
- OK = 1
- elif "FX-OFF" == msg["event"]:
- MAIN.CONSOLE.fx_off("all")
- OK = 1
- elif "SAVE\nSHOW" == msg["event"]:
- MAIN.save_show()
- OK = 1
- elif "RESTART" == msg["event"]:
- print("jsbc.RESTART")
- MAIN.LOAD_SHOW_AND_RESTART("").cb(force=1)
- OK = 1
- elif "EXEC-LABEL" == msg["event"]:
- print("LABEL",msg)
- if 1:#val >= 1: # only Press
- if "DATA" in msg:
- sdata = msg["DATA"]
- print("EXEC-CFG",sdata)
- if sdata:
- MAIN.master.dialog_cfg_return(exec_nr-1)(sdata)
- #MAIN.EXEC.set_cfg(exec_nr-1,sdata)
- EXEC_REFRESH = 1
- msg["OK"] = "EXEC-LABEL"
- OK = 1
- elif "EXEC-CFG" == msg["event"]:
- print("EXEC-CFG",msg)
- if 1:#val >= 1: # only Press
- if "DATA" in msg:
- sdata = msg["DATA"]
- print("EXEC-CFG",sdata)
- if sdata:
- MAIN.master.dialog_cfg_return(exec_nr-1)(sdata)
- #MAIN.EXEC.set_cfg(exec_nr-1,sdata)
- EXEC_REFRESH = 1
- msg["OK"] = "SET-CFG"
- OK = 1
- elif "EXEC" == msg["event"]:
- print("jscb.JSCB:",msg["event"])
- try:
- if exec_nr > 0:
- if MAIN.modes.val("REC"):
- if val >= 1: # only Press
- MAIN.master.exec_rec(exec_nr-1)
- EXEC_REFRESH = 1
- msg["OK"] = "REC"
- OK = 1
- elif MAIN.modes.val("EDIT"):
- if val >= 1: # only Press
- MAIN.master.exec_edit(exec_nr-1)
- EXEC_REFRESH = 1
- msg["OK"] = "EDIT"
- OK = 1
- elif MAIN.modes.val("COPY"):
- if val >= 1: # only Press
- MAIN.EXEC.copy(exec_nr-1)
- if MAIN.modes.val("COPY") > 2:
- MAIN.modes.val("COPY",0)
- EXEC_REFRESH = 1
- msg["OK"] = "COPY"
- OK = 1
- elif MAIN.modes.val("MOVE"):
- if val >= 1: # only Press
- MAIN.EXEC.move(exec_nr-1)
- EXEC_REFRESH = 1
- msg["OK"] = "MOVE"
- OK = 1
- elif MAIN.modes.val("DEL"):
- if val >= 1: # only Press
- MAIN.EXEC.delete(exec_nr-1)
- MAIN.modes.val("DEL",0)
- EXEC_REFRESH = 1
- msg["OK"] = "DEL"
- OK = 1
- if not OK:
- print("MIDI?",val)
- if val >= 0: #Press/Release
- if "MOUSE" in msg and msg["MOUSE"] == "RIGHT":
- MAIN.master.exec_go(exec_nr-1,xfade=0,val=val)
- else:
- MAIN.master.exec_go(exec_nr-1,xfade=None,val=val)
- OK = 1
- #EXEC_REFRESH = 1
- msg["MODES"]=MAIN.modes.list("active")
- except Exception as e:
- print("EXEC ERR:",e)
- raise e
-
- if OK:
- cprint(" jsbc.remote-key:",msg ,color="green")
- print()
- if EXEC_REFRESH:
- def xx():
- #MAIN.execlib.exec_set_mc(MAIN.EXEC.label_exec,MAIN.EXEC.val_exec)
- nr = exec_nr-1
- label = MAIN.EXEC.label_exec[nr] #l[nr]
- data = MAIN.EXEC.val_exec[nr] #d[k]
- print(" EXEC_REFRESH ? ",nr,label,"==================")
- MAIN.execlib.exec_set_mc_single(nr,label,data)
- print(time.time())
- global GLOBAL_old_exec_nr
- nr2 = GLOBAL_old_exec_nr
- if nr2 != nr and nr2 >= 0:
- label = MAIN.EXEC.label_exec[nr2] #l[nr]
- cprint(" GLOBAL_OLD_EXEC_NR",nr2,nr,label,"==================")
- data = MAIN.EXEC.val_exec[nr2] #d[k]
- MAIN.execlib.exec_set_mc_single(nr2,label,data)
- GLOBAL_old_exec_nr = nr
- thread.start_new_thread(xx,())
- else:
- cprint(" jsbc.remote-key:",msg ,color="red")
- print()
- except Exception as e:
- cprint("exception JSCB:",e,color="red")
- cprint("- i:",i,color="red")
- cprint("- msg:",msgs,color="red")
- cprint(traceback.format_exc(),color="red")
- if sock:
- msg = ["Notice: Exception on JSCB-SERVER: ",str(e)]
- msg = json.dumps(msg)
- msg = bytes(msg,"utf8")
- cprint(msg,color="red")
- #chat._send(sock,msg)
- #time.sleep(1/60)
|