Эх сурвалжийг харах

refactor: JSCB, DIALOG.CFG, disable focus_out

micha 8 сар өмнө
parent
commit
6a1e5559f9
6 өөрчлөгдсөн 150 нэмэгдсэн , 53 устгасан
  1. 34 20
      _LibreLightDesk.py
  2. 20 0
      lib/execlib.py
  3. 2 2
      lib/fixlib.py
  4. 44 16
      lib/jsbc.py
  5. 1 1
      lib/libtk.py
  6. 49 14
      tkgui/EXEC.py

+ 34 - 20
_LibreLightDesk.py

@@ -502,7 +502,7 @@ def message_buss_loop():
         except Exception as e:
             cprint("--2 message_buss_loop Exc:",[e])
             time.sleep(2)
-        time.sleep(0.5)
+        time.sleep(0.2)
 
 thread.start_new_thread(message_buss_loop,())
 
@@ -1034,12 +1034,12 @@ class MASTER():
                 cprint(" master.button_refresh",self,e)
                 cprint("  ",elem)
 
-    def btn_cfg(self,nr,testing=0):
-        cfg    = EXEC._btn_cfg(nr) 
-        button = EXEC.btn_cfg(nr) 
-        label  = EXEC.label(nr) 
-
+    def dialog_cfg_return(self,nr):
+        # buffer nr
         def _cb(data):
+            cfg    = EXEC._btn_cfg(nr) 
+            button = EXEC.btn_cfg(nr) 
+            label  = EXEC.label(nr) 
             if not data:
                 cprint("err443",self,"_cb",data)
                 return None
@@ -1084,7 +1084,14 @@ class MASTER():
 
             modes.val("CFG-BTN",0)
             master._refresh_exec(nr=nr)
-        dialog._cb = _cb
+        return _cb
+
+    def btn_cfg(self,nr,testing=0):
+        cfg    = EXEC._btn_cfg(nr) 
+        button = EXEC.btn_cfg(nr) 
+        label  = EXEC.label(nr) 
+
+        dialog._cb = self.dialog_cfg_return(nr) # return cb()
 
         if 1: # testing:
             dialog.ask_exec_config(str(nr+1),button=button,label=label,cfg=cfg)
@@ -1310,7 +1317,7 @@ class MASTER():
         cprint("fix:",_XXX,round(time.time()-s),color="red"); _XXX += 1
 
     def exec_rec(self,nr):
-        cprint("------- STORE EXEC")
+        cprint("Master.exec_rec","-- EXEC RECORD ------------------------------")
         _filter=""
         if modes.val("REC-FX"):
             _filter="ONLY-FX"
@@ -1327,10 +1334,18 @@ class MASTER():
         cfg = get_exec_btn_cfg(nr)
         #master._refresh_exec()
         return 1
-
+    def exec_edit(self,nr):
+        cprint("Master.exec_edit","-- EXEC EDIT ------------------------------")
+        fixlib.clear(MAIN.FIXTURES.fixtures)
+        self.exec_select(nr)
+        event=None
+        self.exec_go(nr,xfade=0,event=event,val=255,button="go")
+        modes.val("EDIT", 0)
+        master.refresh_fix()
+        refresher_fix.reset() # = tkrefresh.Refresher()
 
     def exec_select(self,nr):
-        cprint("SELECT EXEC")
+        cprint("Master.exec_select","-- EXEC SELECT ------------------------------")
         sdata = EXEC.val_exec[nr]
         cmd = ""
         for fix in sdata:
@@ -1356,22 +1371,21 @@ class MASTER():
         if ptfade is None and FADE_move._is():
             ptfade = FADE_move.val()
 
-        cprint("GO EXEC FADE",nr,val)
+        print()
+        cprint("Master.exec_go","-- EXEC GO FADE -----",nr,val)
 
         rdata = EXEC.get_raw_map(nr)
         if not rdata:
             return 0
-        #cprint("???????")
+
         cfg   = EXEC.get_cfg(nr)
-        #cprint("''''''''")
-        #virtcmd  = FIXTURES.get_virtual(rdata)
         if not cfg:
-            cprint("NO CFG",cfg,nr)
+            cprint(" NO CFG",cfg,nr)
             return 0
 
         xFLASH = 0
         value=None
-        cprint("exec_go",nr,cfg)
+        cprint(" exec_go",nr,cfg)
         if modes.val("SELECT") or ( "BUTTON" in cfg and cfg["BUTTON"] == "SEL") and val and not button: #FLASH
             self.exec_select(nr)
         elif modes.val("FLASH") or ( "BUTTON" in cfg and cfg["BUTTON"] == "FL") and not button: #FLASH
@@ -1390,9 +1404,9 @@ class MASTER():
                         xfade=cfg["OUT-FADE"]
 
 
-            cprint("exec_go() FLUSH",value,color="red")
+            cprint(" exec_go() FLUSH",value,color="red")
             #print(";",rdata)
-            print(";",cfg)
+            print(" cfg:",cfg)
             fcmd  = FIXTURES.update_raw(rdata,update=0)
             #print(":",fcmd) # raw dmx
             self._exec_go(rdata,cfg,fcmd,value,xfade=xfade,xFLASH=xFLASH,nr=nr)
@@ -1405,10 +1419,10 @@ class MASTER():
         elif button == "go" or ( modes.val("GO") or ( "BUTTON" in cfg and cfg["BUTTON"] in ["go","GO"])): 
             fcmd  = FIXTURES.update_raw(rdata)
             e=time.time()
-            print("_GO TIME:","{:0.02f}".format(e-s),int(e*10)/10)
+            #print("_GO TIME:","{:0.02f}".format(e-s),int(e*10)/10)
             self._exec_go(rdata,cfg,fcmd,value,xfade=xfade,xFLASH=xFLASH,ptfade=ptfade,nr=nr)
             e=time.time()
-            print("GO TIME:","{:0.02f}".format(e-s),int(e*10)/10)
+            #print("GO TIME:","{:0.02f}".format(e-s),int(e*10)/10)
         return
 
         if not (modes.val("FLASH") or ( "BUTTON" in cfg and cfg["BUTTON"] == "FL")): #FLASH

+ 20 - 0
lib/execlib.py

@@ -241,6 +241,26 @@ class EXEC(): #Presets():
             return {}
         if "CFG" in self.val_exec[nr]:
             return self.val_exec[nr]["CFG"]
+    def set_cfg(self,nr,sdata):
+        cprint("EXEC.set_cfg()",nr,color="yellow")
+        cprint(" ",sdata,color="yellow")
+        #self.check_cfg(nr)
+        if nr < 0:
+            return {}
+        if nr not in self.val_exec:
+            cprint(" get_cfg",self,"error get_cfg no nr:",nr,color="red")
+            return {}
+        if "CFG" in self.val_exec[nr]:
+            print("   ",self.val_exec[nr]["CFG"] )
+            print("   ",sdata)
+            # OrderedDict([('FADE', 4), ('HAVE-FX', 0), ('HAVE-VAL', 0), ('FIX-COUNT', 0), ('DELAY', 0), 
+            #('BUTTON', 'GO'), ('HTP-MASTER', 100), ('SIZE-MASTER', 100), ('SPEED-MASTER', 100), ('OFFSET-MASTER', 100)])
+
+            r=EXEC_CFG_CHECKER(sdata)
+            print("   ",sdata)
+            self.val_exec[nr]["CFG"] = sdata
+            if "Label" in sdata:
+                self.label_exec[nr] = sdata["Label"]
 
     def clean(self,nr):
         

+ 2 - 2
lib/fixlib.py

@@ -331,7 +331,7 @@ def get_dmx(fixtures,fix,attr):
     return -199
 
 def get_active(fixtures,_filter=""): #_filter only-fx
-    cprint("get_active",id(fixtures))
+    cprint("fixlib.get_active",_filter)
     CFG = OrderedDict()
 
     sdata = OrderedDict()
@@ -353,7 +353,7 @@ def get_active(fixtures,_filter=""): #_filter only-fx
                 sdata[fix][attr] = OrderedDict()
 
                 if "ONLY-FX" in _filter:
-                    cprint( "          ONLY FX !!!     -------------------- ")
+                    #cprint( "          ONLY FX !!!     -------------------- ")
                     sdata[fix][attr]["VALUE"] = None 
                 else:
                     sdata[fix][attr]["VALUE"] = data["ATTRIBUT"][attr]["VALUE"]

+ 44 - 16
lib/jsbc.py

@@ -11,6 +11,7 @@ import lib.fixlib as fixlib
 
 
 def JSCB(x,sock=None):
+    print()
     # REMOTE KEY EVENT's
     i = ""
     msg = ""
@@ -72,38 +73,62 @@ def JSCB(x,sock=None):
                     MAIN.save_show()
                     OK = 1
                 elif "RESTART" == msg["event"]:
-                    print("OK OK")
+                    print("jsbc.RESTART")
                     MAIN.LOAD_SHOW_AND_RESTART("").cb(force=1)
                     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:",msg["event"])
+                    print("jscb.JSCB:",msg["event"])
                     try:
                         if exec_nr > 0:
-                            if val >= 1: # only Press
-                                pass
-                                if MAIN.modes.val("REC"):
+
+                            if MAIN.modes.val("REC"):
+                                if val >= 1: # only Press
                                     MAIN.master.exec_rec(exec_nr-1)
-                                    msg["OK"] = "REC"
                                     EXEC_REFRESH = 1
-                                    OK = 1
-                                elif MAIN.modes.val("COPY"):
+                                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)
-                                    msg["OK"] = "COPY"
                                     if MAIN.modes.val("COPY") > 2:
                                         MAIN.modes.val("COPY",0)
                                     EXEC_REFRESH = 1
-                                    OK = 1
-                                elif MAIN.modes.val("MOVE"):
+                                msg["OK"] = "COPY"
+                                OK = 1
+                            elif MAIN.modes.val("MOVE"):
+                                if val >= 1: # only Press
                                     MAIN.EXEC.move(exec_nr-1)
-                                    msg["OK"] = "MOVE"
                                     EXEC_REFRESH = 1
-                                    OK = 1
-                                elif MAIN.modes.val("DEL"):
+                                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)
-                                    msg["OK"] = "DEL"
                                     EXEC_REFRESH = 1
-                                    OK = 1
+                                msg["OK"] = "DEL"
+                                OK = 1
+
+
+
 
                             if not OK:
                                 if val >= 0: #Press/Release
@@ -113,16 +138,19 @@ def JSCB(x,sock=None):
 
                     except Exception as e:
                         print("EXEC ERR:",e)
+                        raise e
 
             
                 if OK:
                     cprint(" remote-key:",msg ,color="green")
+                    print()
                     if EXEC_REFRESH:
                         def xx():
                             MAIN.execlib.exec_set_mc(MAIN.EXEC.label_exec,MAIN.EXEC.val_exec)
                         thread.start_new_thread(xx,())
                 else:
                     cprint(" remote-key:",msg ,color="red")
+                    print()
     except Exception as e:
         cprint("exception JSCB:",e,color="red")
         cprint("- i:",i,color="red")

+ 1 - 1
lib/libtk.py

@@ -367,7 +367,7 @@ class on_focus():
         if self.mode == "Out":
             cmd="xset -display :0.0 r rate 240 20"
             #print(cmd)
-            os.system(cmd)
+            #os.system(cmd) # DISABLE !
             try:
                 e["bg"] = "#aaa"
                 e["activebackground"] = "#aaa"

+ 49 - 14
tkgui/EXEC.py

@@ -9,6 +9,15 @@ import _thread as thread
 
 import dialog
 DIALOG = dialog.Dialog()
+def Dcb(exec_nr):
+    def _Dcb(*args):
+        print("Dcb:",args)
+        msg=json.dumps([{"event":"EXEC-CFG","EXEC":exec_nr,"VALUE":255,"DATA":args[0]}]).encode("utf-8")
+        cprint("SEND DIALOG.cb",msg,color="green")
+        cmd_client.send(msg)
+    return _Dcb
+
+DIALOG._cb = Dcb(-3)
 #d = dialog.Dialog()
 #d.ask_exec_config(str(nr+1),button=button,label=label,cfg=cfg)
 
@@ -50,11 +59,16 @@ class Refresher(): # DUMMY
         print(self,"__init__",arg,args)
     def reset(*arg,**args):
         print(self,"reset",arg,args)
-    
+
+class Command():
+    def __init__(self):
+        self.elem = {}
+
 class MASTER(): # DUMMY
     def __init__(self,*arg,**args):
         print(self,"__init__",arg,args)
         #self.refresh_fix = Refresher()
+        self.commands = Command()
     def refresh_fix(self,*arg,**args):# = Refresher()
         print(self,"refresh_fix",arg,args)
     def exec_go(self,nr,*arg,**args): #val=None,xfade=None,event=None,button="",ptfade=None):
@@ -103,6 +117,7 @@ class Gui(): # DUMMY
     def __init__(self):
         self.elem_exec = []
         self.elem_meta = [None]*512
+        self.old_btn_nr = -1
         self.METAS = []
         for i in range(512):
             self.METAS.append({})
@@ -126,6 +141,7 @@ class Gui(): # DUMMY
 
         for nr,b in enumerate( self.elem_exec): #[nr]
             self._refresh_exec_single(nr,b,METAS)
+            #time.sleep(0.001)
 
     def _refresh_exec_single(self,nr,b,METAS=None):
             if not METAS:
@@ -224,24 +240,40 @@ class Gui(): # DUMMY
                 cfg = META["CFG"]
                 label = META["LABEL"]
                 button = cfg["BUTTON"]
+                DIALOG._cb = Dcb(btn_nr+1)
                 DIALOG.ask_exec_config(str(btn_nr+1),button=button,label=label,cfg=cfg)
+                #print("INFO",master.commands.elem)
             return #STOP
 
         PREFIX = ""
-        for k in []:#:["REC","EDIT","COPY","MOVE","DEL"]: #,"DEL","SELECT","FLASH","GO","EDIT"]:
+        REFRESH = 0
+        for k in ["REC","EDIT","COPY","MOVE","DEL","REC-FX"]:#,"SELECT","FLASH","GO","EDIT"]:
             if k in modes.modes:
-                PREFIX = str(k) +"-"
-                
+                PREFIX = str(k) #+"-"
 
-        msg=json.dumps([{"event":PREFIX+ "EXEC","EXEC":btn_nr+1,"VAL":v,"NR-KEY":btn_nr}]).encode("utf-8")
-        cprint("SEND GUI.EXEC_GO",msg,color="green")
+        for k in ["REC","COPY","MOVE","DEL","REC-FX"]:
+            if k in modes.modes:
+                REFRESH = 1
+
+        msg=json.dumps([{"event": "EXEC","EXEC":btn_nr+1,"VAL":v,"NR-KEY":btn_nr}]).encode("utf-8")
         cmd_client.send(msg)
-        if "REC" in PREFIX:
+        cprint("SEND GUI.EXEC_GO",msg,color="green")
+
+        if 1:#REFRESH:
             time.sleep(0.2)
-            print("REC REFRESH !?")
+            print("REC REFRESH !?",PREFIX)
             nr = btn_nr
             b = self.elem_exec[nr]
+
             self._refresh_exec_single(nr,b) #,METAS):
+            time.sleep(0.4)
+            if self.old_btn_nr >= 0 and self.old_btn_nr  != nr:
+                self._refresh_exec_single(self.old_btn_nr,b) #,METAS):
+                print(" REFRESH EXEC ",nr,self.old_btn_nr)
+            #time.sleep(0.2)
+            #self._refresh_exec()
+            if v:
+                self.old_btn_nr = nr
 
 gui  = Gui()
  
@@ -357,12 +389,12 @@ def tk_event(event,data={}):
             if "Press" in data["event"]:
                 Control_L = 1
             if "Release" in data["event"]:
-                Control_L = 1
+                Control_L = 0
         if keysym == 'Alt_L':  
             if "Press" in data["event"]:
                 Alt_L = 1
             if "Release" in data["event"]:
-                Alt_L = 1
+                Alt_L = 0
 
         data["Alt_L"] = Alt_L
         data["Control_L"] = Control_L
@@ -381,7 +413,9 @@ def tk_event(event,data={}):
                 msg=json.dumps([{"event":MOD}]).encode("utf-8")
                 cprint("SEND tk_event",msg,color="green")
                 cmd_client.send(msg)
-            ok = 1
+                if MOD in ["RESTART"]:
+                    exit()
+                ok = 1
 
         if ok:
             return
@@ -432,7 +466,7 @@ def focus_out(event=None):
     _global_short_key = 0
     cmd="xset -display :0.0 r rate 240 20"
     print("FOCUS_OUT", cmd)
-    os.system(cmd)
+    #os.system(cmd) # DISABLED 
 
 root.bind("<FocusIn>", focus_in)
 root.bind("<FocusOut>", focus_out)
@@ -442,7 +476,8 @@ def _refr_loop():
     time.sleep(3)
     while 1:
         gui._refresh_exec()
-        time.sleep(0.2)
+        time.sleep(10)
+
 thread.start_new_thread(_refr_loop,())
 
 def _refr_loop2():
@@ -464,7 +499,7 @@ def _refr_loop2():
         except Exception as e:
             print("  ER7R mc...",e)
             time.sleep(3)
-        time.sleep(0.5)
+        time.sleep(0.1)
 
 thread.start_new_thread(_refr_loop2,())