浏览代码

fix: FX-OFF,REC-FX, cleanup:FX3, add 2 colums

micha 1 天之前
父节点
当前提交
f1e58c83d7
共有 2 个文件被更改,包括 135 次插入133 次删除
  1. 7 7
      lib/meta.py
  2. 128 126
      tkgui/FX3.py

+ 7 - 7
lib/meta.py

@@ -368,7 +368,7 @@ fx3.labels =[]
 for i,f in fx3_grid_cfg.items():
     x=[]
     x.append(i)
-    for j in range(4):
+    for j in range(6):
         k="{}{}".format(i,j+1)
         x.append(k)
         fx3_grid[k] = f()
@@ -398,13 +398,13 @@ def change_grp(name,val):
 #print([fx3_grid["ATTR:1"].val()])
 #print("__ "*22)
 
-fx3.labels.extend([" "," "," "," "," ","\n"])
+fx3.labels.extend([" ","\n"])
 fx3.labels.extend(["\n"])
-fx3.labels.extend([" ","START","STOP","OFF"," ","\n"])
-fx3.labels.extend(["DIM","CIRCLE","PAN","TILT","FLAY","\n"])
-fx3.labels.extend([" ","RED","GREEN","BLUE","MAGENTA","\n"])
-fx3.labels.extend(["SIZE:","MINI","SMALL","NORMAL","BIG","\n"])
-fx3.labels.extend(["SPEED:","SLOW","MID","FAST","TURBO","\n"])
+fx3.labels.extend([" ","START","STOP","OFF"," "," "," ","\n"])
+fx3.labels.extend(["DIM","CIRCLE","PAN","TILT","FLAY","STREET"," ","\n"])
+fx3.labels.extend([" ","RED","GREEN","BLUE","MAGENTA","CYAN","YELLOW","\n"])
+fx3.labels.extend(["SIZE:","MINI","SMALL","NORMAL","BIG"," "," ","\n"])
+fx3.labels.extend(["SPEED:","SLOW","MID","FAST","TURBO"," "," ","\n"])
 
 fx_cfg = Elem_Container()
 fx_cfg.labels =[

+ 128 - 126
tkgui/FX3.py

@@ -258,30 +258,18 @@ class tk_event_fx():
         print(" --", self.attr)
         fx3_grid = MAIN.meta.fx3_grid # OptionBuffer()
         if self.attr == "START":
-
             grid_data1 = get_fx3_grid()
-
-            out = []
-            FIX=3001
-
             grid_data2 = reshape_grid_to_jdata(grid_data1)
-            #log(grid_data2,name="0:")
-
             programmer=get_programmer()
-            #log(programmer,name="A:")
-            
             grid_data3 = merge_grid_and_programmer(programmer,grid_data2)
-            #log(grid_data3,name="B:")
 
             calculate_offset(grid_data3)
             correct_base(grid_data3)
+            update_dmx_adresses(grid_data3)
 
-            out = update_dmx_adresses(grid_data3)
-            #log(out,name="C:")
-
-            msg=json.dumps(out).encode("utf-8")
+            msg=json.dumps(grid_data3).encode("utf-8")
             cprint("SEND FX3:",color="green")
-            for i in out:
+            for i in grid_data3:
                 cprint(" ", i,color="green")
             #cmd_client.send(msg)
             jsend(msg)
@@ -348,15 +336,26 @@ class tk_event_fx():
             return self.command_fx3(event,mode=mode)
 
     def cb(self,event):
-        cprint("tkevent.EVENT_fx.cb:",self.attr,self.mode,event,color='yellow')
-        cprint(["type",event.type,"num",event.num])
+        cprint("tkevent.EVENT_fx.cb:",[self.attr,self.mode,event],color='yellow')
+        cprint("  ",["type",event.type,"num",event.num])
         try:
             change = 0
 
-            if self.mode.startswith("FX"):
+            if self.attr == "REC-FX":
+                msg=json.dumps([{"event":"REC-FX","VALUE":255,"DATA":{}}]).encode("utf-8")
+                global modes
+                if "REC-FX" in modes:
+                    msg=json.dumps([{"event":"REC-FX","VALUE":0,"DATA":{}}]).encode("utf-8")
+
+                cmd_client.send(msg) # diable LABEL mode
+            elif self.attr == "FX OFF":
+                msg=json.dumps([{"event":"FX-OFF","VALUE":255,"DATA":{}}]).encode("utf-8")
+                cmd_client.send(msg) # diable LABEL mode
+            elif self.mode.startswith("FX"):
                 self.command(event)
                 return 0
 
+
         except Exception as e:
             cprint("== cb EXCEPT",e,color="red")
             cprint("Error on line {}".format(sys.exc_info()[-1].tb_lineno),color="red")
@@ -380,6 +379,12 @@ def motion(code="circle"):
     k = "GRP:4" #.format(i+1)
     MAIN.meta.fx3_grid[k].val(" ")
     MAIN.meta.change_grp(name=k,val=" ")
+    k = "GRP:5" #.format(i+1)
+    MAIN.meta.fx3_grid[k].val(" ")
+    MAIN.meta.change_grp(name=k,val=" ")
+    k = "GRP:6" #.format(i+1)
+    MAIN.meta.fx3_grid[k].val(" ")
+    MAIN.meta.change_grp(name=k,val=" ")
     
     
     k = "ATTR:1" #.format(i+1)
@@ -390,6 +395,10 @@ def motion(code="circle"):
     MAIN.meta.fx3_grid[k].val(" ")
     k = "ATTR:4" #.format(i+1)
     MAIN.meta.fx3_grid[k].val(" ")
+    k = "ATTR:5" #.format(i+1)
+    MAIN.meta.fx3_grid[k].val(" ")
+    k = "ATTR:6" #.format(i+1)
+    MAIN.meta.fx3_grid[k].val(" ")
 
     k = "TYPE:1" 
     MAIN.meta.fx3_grid[k].val("sinus")
@@ -448,6 +457,26 @@ def motion(code="circle"):
         k = "WIDTH:3" 
         MAIN.meta.fx3_grid[k].val(50)
 
+    if code == "street":
+        k = "SIZE:1" 
+        MAIN.meta.fx3_grid[k].val(100)
+        k = "SIZE:2" 
+        MAIN.meta.fx3_grid[k].val(0)
+        k = "SIZE:3" 
+        MAIN.meta.fx3_grid[k].val(100)
+
+        k = "TYPE:3" 
+        MAIN.meta.fx3_grid[k].val("ramp")
+
+        k = "GRP:3"
+        MAIN.meta.fx3_grid[k].val("BEAM")
+        MAIN.meta.change_grp(name=k,val="BEAM")
+        k = "ATTR:3" 
+        MAIN.meta.fx3_grid[k].val("DIM")
+
+        k = "WIDTH:3" 
+        MAIN.meta.fx3_grid[k].val(50)
+
 
 def size(val=255):
     for i in range(4):
@@ -456,7 +485,7 @@ def size(val=255):
         print("  ",k,val)
         if MAIN.meta.fx3_grid[kt].val() not in ["STATIC","-"]:
             MAIN.meta.fx3_grid[k].val(val)
-    __refresh_fx3(_filter="SIZE")
+    refresh_fx3_elem(_filter="SIZE")
 
 def speed(val=255):
     for i in range(4):
@@ -465,11 +494,11 @@ def speed(val=255):
         print("  ",k,val)
         if MAIN.meta.fx3_grid[kt].val() not in ["STATIC","-"]:
             MAIN.meta.fx3_grid[k].val(val)
-    __refresh_fx3(_filter="SPEED")
+    refresh_fx3_elem(_filter="SPEED")
 
 def dim(code="dim"):
 
-    for i in range(1,4+1):
+    for i in range(1,5+1):
         k = "GRP:" +str(i)
         MAIN.meta.change_grp(name=k,val="BEAM")
         MAIN.meta.fx3_grid[k].val("BEAM")
@@ -497,10 +526,14 @@ def dim(code="dim"):
 
 def rgb(code="red"):
     #basic()
-    for i in range(1,4+1):
+
+    for i in range(1,5+1):
         k = "GRP:" +str(i)
         MAIN.meta.change_grp(name=k,val="RGB")
         MAIN.meta.fx3_grid[k].val("RGB")
+    k = "GRP:6" 
+    MAIN.meta.change_grp(name=k,val=" ")
+    MAIN.meta.fx3_grid[k].val(" ")
 
     k = "ATTR:1"
     MAIN.meta.fx3_grid[k].val("RED")
@@ -510,8 +543,12 @@ def rgb(code="red"):
     MAIN.meta.fx3_grid[k].val("BLUE")
     k = "ATTR:4" 
     MAIN.meta.fx3_grid[k].val("WHITE")
+    k = "ATTR:5" 
+    MAIN.meta.fx3_grid[k].val("AMBER")
+    k = "ATTR:6" 
+    MAIN.meta.fx3_grid[k].val(" ")
 
-    for i in range(1,4+1):
+    for i in range(1,5+1):
         k = "TYPE:"+str(i) 
         MAIN.meta.fx3_grid[k].val("static")
         k = "WIDTH:"+str(i) 
@@ -545,13 +582,31 @@ def rgb(code="red"):
         MAIN.meta.fx3_grid[k].val(255)
         k = "SIZE:3" 
         MAIN.meta.fx3_grid[k].val(255)
+    if code == "cyan":
+        k = "TYPE:2" 
+        MAIN.meta.fx3_grid[k].val("fade")
+        k = "TYPE:3" 
+        MAIN.meta.fx3_grid[k].val("fade")
+        k = "SIZE:2" 
+        MAIN.meta.fx3_grid[k].val(255)
+        k = "SIZE:3" 
+        MAIN.meta.fx3_grid[k].val(255)
+    if code == "yellow":
+        k = "TYPE:1" 
+        MAIN.meta.fx3_grid[k].val("fade")
+        k = "TYPE:2" 
+        MAIN.meta.fx3_grid[k].val("fade")
+        k = "SIZE:1" 
+        MAIN.meta.fx3_grid[k].val(255)
+        k = "SIZE:2" 
+        MAIN.meta.fx3_grid[k].val(255)
 
-    __refresh_fx3()
+    refresh_fx3_elem()
 
 def clear():
     basic()
 
-    for i in range(1,4+1):
+    for i in range(1,5+1):
         k = "GRP:"+str(i) 
         MAIN.meta.fx3_grid[k].val(" ")
         k = "ATTR:"+str(i) 
@@ -562,20 +617,8 @@ def clear():
 
 motion("circle")
 
-def _refresh_fx3x(): #frame,c,r,gui,mode="FX"):
-    time.sleep(5)
-    while 1:
-        print("Ö " *22)
-        motion("circle")
-        time.sleep(3)
-        rgb()
-        time.sleep(3)
-        clear()
-        time.sleep(3)
-        print("Ö " *22)
-        break
 
-def __refresh_fx3(_filter=""):
+def refresh_fx3_elem(_filter=""):
     ct  = MAIN.meta.fx3 #moves
     prm = MAIN.meta.fx3_prm
     for comm in ct.labels:
@@ -587,26 +630,17 @@ def __refresh_fx3(_filter=""):
             if _filter and _filter != comm:
                 continue
         
-            #MAIN.meta.fx3_grid[comm].val("X")
             v2 = MAIN.meta.fx3_grid[comm].val()
             v1 = b["text"]
-            #if "ATTR" in comm or "GRP" in comm:
-            #    print([comm,v1,v2,b])
-            if "ATTR" in comm:
-                pass #MAIN.meta.fx3_grid[comm].val("PAN")
-                #print(MAIN.meta.fx3_grid[comm].data)
             v2 = MAIN.meta.fx3_grid[comm].val()
             v1 = b["text"]
-            if "ATTR" in comm or "GRP" in comm:
-                pass #print("A",[comm,v1,v2,b])
             if str(v2) != str(v1):
                 print(" change")
-                #print([comm,b,v1,v2])
                 b["text"] = str(v2)
 
-def _refresh_fx3(): #frame,c,r,gui,mode="FX"):
+def refresh_fx3_loop():
     while 1:
-        __refresh_fx3()
+        refresh_fx3_elem()
         time.sleep(2)
 
 def _draw_fx3(frame,c,r,gui,mode="FX"):
@@ -645,6 +679,8 @@ def _draw_fx3(frame,c,r,gui,mode="FX"):
                     motion("tilt")
                 elif xcomm == "FLAY":
                     motion("flay")
+                elif xcomm == "STREET":
+                    motion("street")
                 elif xcomm == "DIM":
                     dim(code="dim")
                 elif xcomm == "RED":
@@ -653,8 +689,12 @@ def _draw_fx3(frame,c,r,gui,mode="FX"):
                     rgb("green")
                 elif xcomm == "BLUE":
                     rgb("blue")
+                elif xcomm == "CYAN":
+                    rgb("cyan")
                 elif xcomm == "MAGENTA":
                     rgb("magenta")
+                elif xcomm == "YELLOW":
+                    rgb("yellow")
                 elif xcomm == "MINI":
                     size(25)
                 elif xcomm == "SMALL":
@@ -690,7 +730,7 @@ def _draw_fx3(frame,c,r,gui,mode="FX"):
             b["text"] = comm
             b["bg"] = "#ffbf00"
 
-        if comm in ["SHUFFLE:","WING:","BASE:","START:","STOP","OFF"]:  # not implemented !
+        if comm in ["SHUFFLE:","WING:","BASE:","INVERT:","DIR:","START:","STOP","OFF"]:  # not implemented !
             b["fg"] = "#aaa"
             b.config(activebackground="#aaa")
             #b.config(activebackground="#bbb")
@@ -726,14 +766,15 @@ def _draw_fx3(frame,c,r,gui,mode="FX"):
         if comm:
             b.grid(row=r, column=c, sticky=tk.W+tk.E)
         c+=1
-        if c >=6:
+        if c >=7:
             c=0
             r+=1
     c=0
     r+=1
     return c,r
 
-def _draw_fx(frame,c,r,gui,mode="FX"):
+fx_rec_btn = None
+def _draw_fx_head(frame,c,r,gui,mode="FX"):
     ct  = None
     prm = None
     if mode=="FX-MAIN":
@@ -764,6 +805,8 @@ def _draw_fx(frame,c,r,gui,mode="FX"):
 
         if comm == "REC-FX":
             b["bg"] = "grey"
+            global fx_rec_btn 
+            fx_rec_btn = b
         elif comm == "FX OFF":
             b["bg"] = "magenta"
 
@@ -792,10 +835,11 @@ def draw_fx3(gui,xframe):
     c+=1
 
     _add_space(frame,r,c)
-    c,r = _draw_fx(frame,c,r,gui,mode="FX-MAIN")
+    c,r = _draw_fx_head(frame,c,r,gui,mode="FX-MAIN")
 
     r,c=_add_space(frame,r,c)
     c,r = _draw_fx3(frame,c,r,gui,mode="FX-3")
+    r,c=_add_space(frame,r,c)
 
 
 
@@ -807,43 +851,10 @@ cmd_client = chat.Client(port=30003)
 try:
     import memcache
     mc = memcache.Client(['127.0.0.1:11211'], debug=0)
-    #data = mc.get("MODES")
 except:
     mc = None
 
-
-
-class MANAGER_X(): # DUMMY
-    def __init__(self,*arg,**args):
-        print(self,"__init__",arg,args)
-
-    def send(self,nr,*arg,**args): #val=None,xfade=None,event=None,button="",ptfade=None):
-        if _global_key_lock:
-            return
-
-        print(self,"MASTER",nr,arg,args)
-        btn_nr = nr
-        v = args["val"]
-        
-        msg=json.dumps([{"event":"EXEC","EXEC":btn_nr+1,"VAL":v,"NR-KEY":btn_nr}]).encode("utf-8")
-        msg=json.dumps([{"event":"XXX","YYY":1,"VAL":12}]).encode("utf-8")
-        cprint("SEND MASTER._GO:",msg,color="green")
-        cmd_client.send(msg)
-
-import lib.manager as manager
-master = manager.MANAGER() #{}
-
-
-class Modes(): # DUMMY
-    def __init__(self,*arg,**args):
-        print("Modes.__init__",arg,args)
-        self.modes = {}
-    def val(self,*arg,**args):
-        #print("Modes.val",arg,args)
-        pass
-
-
-class Gui(): # DUMMY
+class GUI(): # DUMMY
     def __init__(self):
         self.elem_exec = []
         self.elem_meta = [None]*512
@@ -861,7 +872,7 @@ class Gui(): # DUMMY
             print("  ER1R mc...",e)
         return data 
 
-    def _refresh_data(self,*arg,**args):
+    def _refresh_meta_data(self,*arg,**args):
         start = time.time()
 
         METAS = []
@@ -874,7 +885,18 @@ class Gui(): # DUMMY
         for nr,b in enumerate( self.elem_exec): #[nr]
             self._refresh_data_single(nr,b,METAS)
 
-        print(__file__.split("/")[-1], "_refresh_data:",int((time.time()-start)*10)/10 )
+        print(__file__.split("/")[-1], "_refresh_meta_data:",int((time.time()-start)*10)/10 )
+
+    def refresh_meta_loop(self):
+        time.sleep(3)
+        while 1:
+            try:
+                self._refresh_meta_data()
+                time.sleep(3)
+            except Exception as e:
+                print("  ER5R refr_loop()...",e)
+                time.sleep(3)
+            time.sleep(0.1)
 
     def _refresh_data_single(self,nr,b,METAS=None):
         start = time.time()
@@ -894,10 +916,7 @@ class Gui(): # DUMMY
             METAS = self.METAS
 
 
-#manager = MANAGER() 
-#master = MANAGER() 
-modes = Modes()
-gui  = Gui()
+gui  = GUI()
  
 root = tk.Tk()
 root.maxsize(600,800)
@@ -977,22 +996,15 @@ def get_programmer():
         ok=0
         for kk,vv in v["ATTRIBUT"].items():
             if kk.startswith("_"):
-                #print(":",k,v,kk,vv)
                 continue
             if vv["ACTIVE"]:
-                #print(":",k,v,kk,vv)
-                #print(k,v,v["NAME"],kk,vv)
                 tmp={"ID":k,"NAME":v["NAME"],"ATTR":kk,"NR":vv["NR"]} #,"FX3":vv["FX2"]}
-                print("get_programmer:",tmp)
                 out.append(tmp)
                 ok=1
         if ok:
             print()
     return out
 
-#import memcache
-#import json
-#mc = memcache.Client(['127.0.0.1:11211'], debug=0)
 def get_patch():
     if mc is None:
         return
@@ -1000,7 +1012,6 @@ def get_patch():
     index=json.loads(index)
     out = []
     for v in index:
-        #print()
         patch=mc.get("PATCH-"+str(v)) #index")#cmd)
         patch=json.loads(patch)
         u =  patch["UNIVERS"] #* 512
@@ -1010,7 +1021,6 @@ def get_patch():
             nr =patch["ATTRIBUT"][a]["NR"] 
             if nr <= 0:
                 continue
-            #print(v,u,d,nr,a)
             if a == "END":
                 continue
             if a.startswith("_"):
@@ -1019,53 +1029,47 @@ def get_patch():
             attr[a] = nr-1
         tmp = {"FIX":v,"UNI":u,"DMX":d,"NR":nr,"ATTR":attr}
         out.append(tmp )
-        #print("get_patch",tmp)
     
     return out
 
 
 
-def _refr_loop():
-    time.sleep(3)
-    while 1:
-        try:
-            gui._refresh_data()
-            time.sleep(3)
-        except Exception as e:
-            print("  ER5R refr_loop()...",e)
-            time.sleep(3)
-        time.sleep(0.1)
-
-def _refr_loop2():
+modes = {}
+def modes_refresh_loop():
     time.sleep(3)
     while 1:
         try:
-            global root,title
+            global root,title,modes
             data = mc.get("MODES")
             title2 = title +"  "+str(data)
             data = json.loads(data)
-            #print("MODES",data)
-            modes.modes = data
+            modes = data
 
             if root:
                 root.title(title2)
+
+            if "REC-FX" in data:
+                #print("xxxxxxxx REC-FX")
+                fx_rec_btn["bg"] = "red"
+                fx_rec_btn.config(activebackground="red")
+            else:
+                fx_rec_btn["bg"] = "#ddd"
+                fx_rec_btn.config(activebackground="#ddd")
+
             if "S-KEY" in data:
                 _global_short_key = 0
                 if data["S-KEY"]:
                     _global_short_key = 1
 
             for k in data:
-                #print("title",k)
                 for kk in ["RESTART","PRO","EASY","EXIT"]:
                     if kk in str(k):
                         print("RESTART !!! EXIT !!")
                         time.sleep(0.1)
                         root.quit()
-                        #sys.exit()
 
             fx3_line = {}
             for comm,v in MAIN.meta.fx3_grid.items():
-                #print(":",comm,v.val())
                 if comm.startswith("ATTR:"):
                     fx3_line[comm] = 1 
 
@@ -1075,10 +1079,8 @@ def _refr_loop2():
             time.sleep(3)
         time.sleep(0.1)
 
-thread.start_new_thread(_refr_loop,())
-thread.start_new_thread(_refr_loop2,())
-
-thread.start_new_thread(_refresh_fx3,())
-#thread.start_new_thread(_refresh_fx3x,())
+thread.start_new_thread(gui.refresh_meta_loop,())
+thread.start_new_thread(modes_refresh_loop,())
+thread.start_new_thread(refresh_fx3_loop,())
 
 root.mainloop()