Kaynağa Gözat

cleanup FX window...

micha 1 yıl önce
ebeveyn
işleme
05284de23b
2 değiştirilmiş dosya ile 116 ekleme ve 95 silme
  1. 75 49
      _LibreLightDesk.py
  2. 41 46
      tkgui/draw.py

+ 75 - 49
_LibreLightDesk.py

@@ -783,8 +783,10 @@ DELAY = ValueBuffer()  #2 #0.1 #1.13
 DELAY.off()
 DELAY.val(0.2)
 
+fx_prm_main = {}
 fx_prm_move = {"SIZE":40,"SPEED":8,"OFFSET":100,"BASE":"0","START":0,"MODE":0,"MO":0,"DIR":1,"INVERT":0,"WING":2,"WIDTH":100}
 
+fx_color = {"A":"red","B":"blue"} 
 fx_prm = {"SIZE":255,"SPEED":10,"OFFSET":100,"BASE":"-","START":0,"MODE":0,"MO":0,"DIR":1,"INVERT":1,"SHUFFLE":0,"WING":2,"WIDTH":25,"2D-X":1,"2D:MODE":0}
 fx_x_modes = ["spiral","left","right","up","down","left_right","up_down"]
 
@@ -921,7 +923,7 @@ def process_effect(wing_buffer,fx_name=""):
     start = fx_prm["START"]
     base  = fx_prm["BASE"]
 
-    for wing in wing_buffer:
+    for wi, wing in enumerate(wing_buffer):
         count_of_fix_in_wing = len(wing)
         coffset= 0 # 1024/count_of_fix_in_wing * (offset/255)
         coffset_move=0
@@ -938,6 +940,7 @@ def process_effect(wing_buffer,fx_name=""):
                     continue
 
                 jdata = {"MODE":"FX"}
+                jdata["WING"] = wi
                 jdata["VALUE"]    = None
                 jdata["FIX"]      = fix
                 dmx               = FIXTURES.get_dmx(fix,attr)
@@ -949,22 +952,19 @@ def process_effect(wing_buffer,fx_name=""):
 
                 jdata["ATTR"]     = attr
 
+                tmp_fx_prm = fx_prm
+                coffset= round(offset,1)
+
                 if attr in ["PAN","TILT"]:
-                    csize  = fx_prm_move["SIZE"]
-                    cspeed = fx_prm_move["SPEED"]
-                    cstart = fx_prm_move["START"]
-                    cbase  = fx_prm_move["BASE"]
-                    width  = fx_prm_move["WIDTH"]
-                    invert = fx_prm_move["INVERT"]
+                    tmp_fx_prm = fx_prm_move
                     coffset_move= round(offset_move,1)
-                else:
-                    csize  = fx_prm["SIZE"]
-                    cspeed = fx_prm["SPEED"]
-                    cstart = fx_prm["START"]
-                    cbase  = fx_prm["BASE"]
-                    width  = fx_prm["WIDTH"]
-                    invert = fx_prm["INVERT"]
-                    coffset= round(offset,1)
+
+                csize  = tmp_fx_prm["SIZE"]
+                cspeed = tmp_fx_prm["SPEED"]
+                cstart = tmp_fx_prm["START"]
+                cbase  = tmp_fx_prm["BASE"]
+                width  = tmp_fx_prm["WIDTH"]
+                invert = tmp_fx_prm["INVERT"]
 
                 fx=""
                 if "SIN" in fx_name:
@@ -991,7 +991,7 @@ def process_effect(wing_buffer,fx_name=""):
                         continue
 
                 if fx:
-                    if fx_prm["SPEED"] < 0:
+                    if cspeed < 0:
                         fx = "off"
                 else:
                     if ":DIM" in fx_name:
@@ -999,7 +999,7 @@ def process_effect(wing_buffer,fx_name=""):
                         ffxb=fx_mo[fx_prm["MO"]] 
 
                         if attr == "DIM":
-                            if fx_prm["SPEED"] < 0:
+                            if cspeed < 0:
                                 fx = "off"
                             else:
                                 fx = ffxb #"fade"
@@ -1008,14 +1008,14 @@ def process_effect(wing_buffer,fx_name=""):
                         if attr == "PAN":
                             fx = "off"
                         if attr == "TILT":
-                            if fx_prm["SPEED"] < 0:
+                            if cspeed < 0:
                                 fx = "off"
                             else:
                                 fx = "sinus"
                     elif ":PAN" in fx_name:
                         base=""
                         if attr == "PAN":
-                            if fx_prm_move["SPEED"] < 0:
+                            if cspeed < 0:
                                 fx = "off"
                             else:
                                 fx = "cosinus" 
@@ -1024,47 +1024,45 @@ def process_effect(wing_buffer,fx_name=""):
                     elif ":CIR" in fx_name:
                         base=""
                         if attr == "PAN":
-                            if fx_prm_move["SPEED"] < 0:
+                            if cspeed < 0:
                                 fx = "off"
                             else:
 
                                 fx = "cosinus" 
                         if attr == "TILT":
-                            if fx_prm["SPEED"] < 0:
+                            if cspeed < 0:
                                 fx = "off"
                             else:
                                 fx = "sinus"
 
                     elif ":RED" in fx_name:
-                        fxon  = "on" #"sinus"  #fx_mo[fx_prm["MO"]] 
+                        fxon  = "on" 
                         fxoff = "static" #"off" 
                         MODE = fx_modes[fx_prm["MODE"]]
                         
-                        if "RED" in MODE: #fx_modes[fx_prm["MODE"]]:#
+                        if "RED" in MODE:
                             base="-"
                             if attr == "RED":
-                                fx = fxon
-                                csize *=-1
+                                fx = fxon # ON ---- 
+                                #csize *=-1
                             if attr == "GREEN":
                                 fx = "static"
                                 csize = 0
-                                fx = fxon
-                                #csize *=-1
                             if attr == "BLUE":
                                 fx = "static"
                                 csize = 0
-                        elif "GREEN" in MODE: #fx_modes[fx_prm["MODE"]]:
+                        elif "GREEN" in MODE:
                             base="-"
                             if attr == "RED":
                                 fx = "static"
                                 csize = 0
                             if attr == "GREEN":
-                                fx = fxon
+                                fx = fxon # ON ----
                                 csize *=-1
                             if attr == "BLUE":
                                 fx = "static"
                                 csize = 0
-                        elif "BLUE" in MODE: # fx_modes[fx_prm["MODE"]]:
+                        elif "BLUE" in MODE:
                             base="-"
                             if attr == "RED":
                                 fx = "static"
@@ -1073,9 +1071,9 @@ def process_effect(wing_buffer,fx_name=""):
                                 fx = "static"
                                 csize = 0
                             if attr == "BLUE":
-                                fx = fxon
+                                fx = fxon # ON ----
                                 csize *=-1
-                        elif "YELLOW" in MODE: # fx_modes[fx_prm["MODE"]]:
+                        elif "YELLOW" in MODE:
                             base="-"
                             if attr == "RED":
                                 fx = fxon
@@ -1086,7 +1084,7 @@ def process_effect(wing_buffer,fx_name=""):
                             if attr == "BLUE":
                                 fx = "static"
                                 csize = 0
-                        elif "CYAN" in MODE: # fx_modes[fx_prm["MODE"]]:
+                        elif "CYAN" in MODE: 
                             base="-"
                             if attr == "RED":
                                 fx = fxoff
@@ -1099,7 +1097,7 @@ def process_effect(wing_buffer,fx_name=""):
                             if attr == "BLUE":
                                 fx = fxon
                                 csize=0
-                        elif "MAG" in MODE: # fx_modes[fx_prm["MODE"]]:
+                        elif "MAG" in MODE: 
                             base="-"
                             if attr == "RED":
                                 fx = fxon
@@ -1125,14 +1123,12 @@ def process_effect(wing_buffer,fx_name=""):
                     data["ATTRIBUT"][attr]["FX2"] ={}
 
                 if data["ATTRIBUT"][attr]["ACTIVE"] and fxtype:
-                    #print("++ADD FX",fix,attr,fx)
-                    #data["ATTRIBUT"][attr]["FX"] = fx #"sinus:40:100:10"
                     fjdata = {}
                     if cspeed < 0.1:
                         fjdata["TYPE"]  = "off"
                     else:
                         fjdata["TYPE"]  = fxtype
-                    fjdata["SIZE"] = round(csize,2)
+                    fjdata["SIZE"]  = round(csize,2)
                     fjdata["SPEED"] = round(cspeed,2)
                     fjdata["WIDTH"] = int(width)
                     fjdata["START"] = cstart
@@ -1142,9 +1138,10 @@ def process_effect(wing_buffer,fx_name=""):
                         fjdata["OFFSET"]= round(coffset,2)
                     fjdata["INVERT"]= int(invert)
                     fjdata["BASE"]  = cbase
-                    jdata["FX2"] = fjdata
+                    jdata["FX2"]    = fjdata
                     data["ATTRIBUT"][attr]["FX2"] = fjdata
                     jdatas.append(jdata)
+                    print("GOO FX:",jdata)
 
             
             if fx_prm_move["OFFSET"] > 0.5: # and 
@@ -1163,6 +1160,7 @@ def process_effect(wing_buffer,fx_name=""):
                     offset += aoffset 
                 offset = round(offset,2)
 
+    #exit()
     if jdatas and not modes.val("BLIND"):
         jclient_send(jdatas)
     master._refresh_fix()
@@ -1202,7 +1200,7 @@ def process_matrix(xfixtures):
             for i,f in enumerate(xfixtures):
                 if i < w*h:
                     j = int(_map[i])
-                    cprint([i,f,j])
+                    cprint(["i:",i,"f:",f,"j:",j])
                     out[j] = f
 
             matrix.mprint(out,w,h)
@@ -1234,7 +1232,7 @@ class Xevent_fx():
                     fx_prm["MODE"]=0
                 txt = "FX:\n"+fx_modes[fx_prm["MODE"]]
 
-                master.fx.elem["FX:RED"]["text"] = txt
+                master.fx_color.elem["FX:RED"]["text"] = txt
             elif event.num == 5:
                 cprint("FX:COLOR CHANGE",fx_prm,color="red")
                 txt = "FX:RED" 
@@ -1242,7 +1240,7 @@ class Xevent_fx():
                 if fx_prm["MODE"] < 0:
                     fx_prm["MODE"]= len(fx_modes)-1
                 txt = "FX:\n"+fx_modes[fx_prm["MODE"]]
-                master.fx.elem["FX:RED"]["text"] = txt
+                master.fx_color.elem["FX:RED"]["text"] = txt
 
         if self.attr.startswith("2D"):
             if event.num == 4:
@@ -1295,7 +1293,14 @@ class Xevent_fx():
                 #global fx_prm
                 k = "SIZE"
                 if event.num == 1:
-                    prm[k] =30
+                    _stats = [0,30,100,255]
+                    if prm[k] in _stats:
+                        idx = _stats.index(prm[k])+1
+                        if idx > len(_stats)-1: #rotate
+                            idx = 0
+                        prm[k] = _stats[idx]
+                    else:
+                        prm[k] = _stats[1]
                 elif event.num == 3:
                     prm[k] =100
                 elif event.num == 4:
@@ -1318,7 +1323,14 @@ class Xevent_fx():
                 #global prm
                 k = "SPEED"
                 if event.num == 1:
-                    prm[k] = 6
+                    _stats = [0,30,100,255]
+                    if prm[k] in _stats:
+                        idx = _stats.index(prm[k])+1
+                        if idx > len(_stats)-1: #rotate
+                            idx = 0
+                        prm[k] = _stats[idx]
+                    else:
+                        prm[k] = 0
                 elif event.num == 3:
                     prm[k] = 60
                 elif event.num == 4:
@@ -1375,7 +1387,14 @@ class Xevent_fx():
                 #global prm
                 k = "WIDTH"
                 if event.num == 1:
-                    prm[k] = 25
+                    _stats = [0,25,50,75,10]
+                    if prm[k] in _stats:
+                        idx = _stats.index(prm[k])+1
+                        if idx > len(_stats)-1: #rotate
+                            idx = 0
+                        prm[k] = _stats[idx]
+                    else:
+                        prm[k] = 25
                 elif event.num == 2:
                     prm[k] = 50
                 elif event.num == 3:
@@ -1413,7 +1432,9 @@ class Xevent_fx():
                     prm[k] =5
                 if prm[k] > 25 and prm[k] < 50: #bug
                     prm[k] =50
-                if prm[k] > 50 and prm[k] < 100: #bug
+                if prm[k] > 50 and prm[k] < 75: #bug
+                    prm[k] =75
+                if prm[k] > 75 and prm[k] < 100: #bug
                     prm[k] =100
 
                 ct.elem[self.attr]["text"] = "WIDTH:\n{:0.0f}".format(prm[k])
@@ -2594,20 +2615,25 @@ class MASTER():
         self.setup_elem = {} # Elem_Container()
         self.setup_cmd  = ["SAVE\nSHOW","LOAD\nSHOW","NEW\nSHOW","SAVE\nSHOW AS","SAVE &\nRESTART","DRAW\nGUI","PRO\nMODE"]
 
+        self.fx_main = Elem_Container()
+        self.fx_main.commands =["REC-FX","FX OFF","\n"]
         self.fx_moves = Elem_Container()
-        self.fx_moves.commands =["REC-FX","FX OFF","\n"
-                ,"FX:CIR","FX:PAN","FX:TILT", "WIDTH:\n100","DIR:\n0","INVERT:\n0","\n",
+        self.fx_moves.commands =[
+                "FX:CIR","FX:PAN","FX:TILT", "WIDTH:\n100","DIR:\n0","INVERT:\n0","\n",
                 "SHUFFLE:\n0","SIZE:\n","SPEED:\n","START:\n","OFFSET:\n","\n"
                 ]
                 #, "FX:SIN","FX:COS","FX:RAMP","FX:RAMP2","FX:FD","FX:ON","BASE:\n-"] #,"FX:RND" ]
 
         self.fx = Elem_Container()
         self.fx.commands =[
-                "FX:DIM","FX:RED", "WIDTH:\n25","WING:\n2","DIR:\n1","INVERT:\n1","\n","SHUFFLE:\n0"
+                "FX:DIM"," ", "WIDTH:\n25","WING:\n2","DIR:\n1","INVERT:\n1","\n","SHUFFLE:\n0"
                 ,"SIZE:\n","SPEED:\n","START:\n","OFFSET:\n","BASE:\n-","2D-X:\n-","2D:MODE"
                 ]
         self.fx_generic = Elem_Container()
-        self.fx_generic.commands =["FX:SIN","FX:COS","FX:RAMP","FX:RAMP2","FX:FD","FX:ON","FX:STATIC"] 
+        self.fx_generic.commands =["FX:SIN","FX:COS","FX:RAMP","FX:RAMP2","FX:FD","FX:ON","FX:STATIC"]
+
+        self.fx_color = Elem_Container()
+        self.fx_color.commands =["FX:RED","FX-C:A","FX-C:B"] 
 
         self.commands = Elem_Container()
         self.commands.commands =["\n","ESC","CFG-BTN","LABEL","-","DEL","-","\n"

+ 41 - 46
tkgui/draw.py

@@ -18,10 +18,6 @@ def draw_command(gui,xframe,data):
     frame = tk.Frame(frame_cmd,bg="black")
     frame.pack(fill=tk.X, side=tk.TOP)
    
-    # b = tk.Button(frame,bg="lightblue", text="COMM.",width=6)
-    #b.bind("<Button>",Xevent(fix=fix,elem=b).cb)
-    #b.grid(row=r, column=c, sticky=tk.W+tk.E)
-    #r+=1
     c+=1
     gui.commands.elem = {}
     for comm in gui.commands.commands:
@@ -90,14 +86,12 @@ def draw_preset(gui,xframe,PRESETS):
     
     frame = tk.Frame(root,bg="black")
     frame.pack(fill=tk.X, side=tk.TOP)
-    #time.sleep(0.1)
+
     gui.elem_presets = {}
     i=0
     for k in PRESETS.val_presets:
-        #print( PRESETS.val_presets[k])
         if i%(10*8)==0 or i ==0:
             c=0
-            #b = tk.Label(frame,bg="black", text="" )
             b = tk.Canvas(frame,bg="black", height=4,bd=0,width=6,highlightthickness=0) #,bd="black")
             b.grid(row=r, column=c, sticky=tk.W+tk.E)
             r+=1
@@ -115,9 +109,6 @@ def draw_preset(gui,xframe,PRESETS):
         i+=1
         v=0
         label = ""
-        #if k in PRESETS.label_presets:
-        #    label = PRESETS.label_presets[k]
-        #    #print([label])
 
         sdata=PRESETS.val_presets[k]
         BTN="go"
@@ -126,21 +117,15 @@ def draw_preset(gui,xframe,PRESETS):
                 BTN = sdata["CFG"]["BUTTON"]
 
 
-        #bb = tk.Frame(frame, highlightbackground = "red", highlightthickness = 1, bd=0)
-        #bb = tk.Canvas(frame, highlightbackground = "black", highlightthickness = 1, bd=1)
-        #bb.configure(width=70, height=38)
         txt=str(k+1)+":"+str(BTN)+":"+str(len(sdata)-1)+"\n"+label
 
         b = mytklib.ExecButton(frame,text=txt)
 
-        #b = tk.Button(bb,bg="grey", text=txt,width=7,height=2)
         b.bind("<Button>",Xevent(fix=0,elem=b,attr=k,data=gui,mode="PRESET").cb)
         b.bind("<ButtonRelease>",Xevent(fix=0,elem=b,attr=k,data=gui,mode="PRESET").cb)
         
         if k not in gui.elem_presets:
-            #print(b)
             gui.elem_presets[k] = b
-        #b.pack(expand=1)
         b.grid(row=r, column=c, sticky=tk.W+tk.E)
 
         b.config(text="xx")
@@ -150,8 +135,6 @@ def draw_preset(gui,xframe,PRESETS):
             r+=1
     time.sleep(0.1)
     gui._refresh_exec()
-    #gui.refresh_exec()
-    #gui.refresh_exec()
     print("##################################")
 
 
@@ -173,6 +156,7 @@ def draw_input(gui,root2):
     b = tk.Label(frame, text="send:")
     b.grid(row=r, column=c, sticky=tk.W+tk.E)
     c+=1
+    
     b = tk.Entry(frame,bg="grey", text="",width=50)
     gui.entry = b
     b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
@@ -180,6 +164,7 @@ def draw_input(gui,root2):
     b.grid(row=r, column=c, sticky=tk.W+tk.E)
     b.insert("end","d0:127,fx241:sinus:50:50:10,fx243:cosinus:50:50:10,d201:127,fx201:sinus:50:300:10")
     r+=1
+    
     b = tk.Entry(frame,bg="grey", text="",width=20)
     gui.entry2 = b
     b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT2").cb)
@@ -187,6 +172,7 @@ def draw_input(gui,root2):
     b.grid(row=r, column=c, sticky=tk.W+tk.E)
     b.insert("end","d1:0:4")
     r+=1
+
     b = tk.Entry(frame,bg="grey", text="",width=20)
     gui.entry3 = b
     b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT3").cb)
@@ -372,23 +358,16 @@ class GUI_CONF():
         c+=1
         b = tk.Entry(frame,bg="grey", text="",width=50)
         gui.entry = b
-        #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
-        #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
         b.grid(row=r, column=c, sticky=tk.W+tk.E)
-        b.insert("end","" ) #d0:127,fx241:sinus:50:50:10,fx243:cosinus:50:50:10,d201:127,fx201:sinus:50:300:10")
+        b.insert("end","" )
         r+=1
         b = tk.Entry(frame,bg="grey", text="",width=20)
         gui.entry2 = b
-        #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT2").cb)
-        #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT2").cb)
         b.grid(row=r, column=c, sticky=tk.W+tk.E)
         b.insert("end","d1:0:4")
         r+=1
         b = tk.Entry(frame,bg="grey", text="",width=20)
         gui.entry3 = b
-        #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT3").cb)
-        ##b.bind("<B1-Motion>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT3").cb)
-        #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT3").cb)
         b.grid(row=r, column=c, sticky=tk.W+tk.E)
         b.insert("end","fx:alloff:::")
 
@@ -407,9 +386,6 @@ class GUI_CONF():
         c+=0
         r+=1
         b1 = tk.Entry(frame,bg="grey", text="",width=50)
-        #gui.entry = b
-        #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
-        #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
         b1.grid(row=r, column=c, sticky=tk.W+tk.E)
         b1.insert("end","fix 1-100 patch @ 2.120")
         r+=1
@@ -423,9 +399,6 @@ class GUI_CONF():
         c+=0
         r+=1
         b2 = tk.Entry(frame,bg="grey", text="",width=50)
-        #gui.entry = b
-        #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
-        #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
         b2.grid(row=r, column=c, sticky=tk.W+tk.E)
         b2.insert("end","SELECT 33-61 PAN,TILT")
 
@@ -489,14 +462,25 @@ def draw_enc(gui,xframe,data=[]):
     c+=1
 
 def _draw_fx(frame,c,r,gui,mode="FX"):
-    ct  = gui.fx
-    prm = fx_prm
-    if mode=="FX-MOVE":
+    if mode=="FX-MAIN":
+        ct  = gui.fx_main
+        prm = fx_prm_main
+    elif mode=="FX-MOVE":
         ct  = gui.fx_moves
         prm = fx_prm_move
+    elif mode=="FX":
+        ct  = gui.fx
+        prm = fx_prm
     elif mode=="FX-GENERIC":
         ct  = gui.fx_generic
         prm = fx_prm #_generic
+    elif mode=="FX-COLOR":
+        ct  = gui.fx_color
+        prm = fx_color #_generic
+    else:
+        ct = Elem_Container()
+        ct.commands =["err"]
+        prm = ["err"]
 
     for comm in ct.commands:
         if comm == "\n\n":
@@ -554,9 +538,17 @@ def _draw_fx(frame,c,r,gui,mode="FX"):
         if c >=6:
             c=0
             r+=1
+    c=0
+    r+=1
     return c,r
 
 
+def _add_space(frame,r,c):
+    b = tk.Canvas(frame,bg="black", height=2,bd=0,width=6,highlightthickness=0) #,bd="black")
+    b.grid(row=r, column=c, sticky=tk.W+tk.E)
+    r+=1
+    c=0
+    return r,c
 
 def draw_fx(gui,xframe,data=[]):
     frame_fx=xframe
@@ -567,28 +559,31 @@ def draw_fx(gui,xframe,data=[]):
     frame = tk.Frame(frame_fx,bg="black")
     frame.pack(fill=tk.X, side=tk.TOP)
    
+    # ------------------------------
     b = tk.Button(frame,bg="lightblue", text="FX.",width=6)
     b.grid(row=r, column=c, sticky=tk.W+tk.E)
     c+=1
+
     thread.start_new_thread(mytklib.tk_btn_bg_loop,(b,))
+    # ------------------------------
 
-    c,r = _draw_fx(frame,c,r,gui,mode="FX-MOVE")
-    r+=1
 
-    b = tk.Canvas(frame,bg="black", height=4,bd=0,width=6,highlightthickness=0) #,bd="black")
-    b.grid(row=r, column=c, sticky=tk.W+tk.E)
-    r+=1
-    c=0
+    _add_space(frame,r,c)
+    c,r = _draw_fx(frame,c,r,gui,mode="FX-MAIN")
 
-    c,r = _draw_fx(frame,c,r,gui,mode="FX")
+    r,c=_add_space(frame,r,c)
+    c,r = _draw_fx(frame,c,r,gui,mode="FX-MOVE")
 
-    b = tk.Canvas(frame,bg="black", height=4,bd=0,width=6,highlightthickness=0) #,bd="black")
-    b.grid(row=r, column=c, sticky=tk.W+tk.E)
-    r+=1
-    c=0
+    r,c=_add_space(frame,r,c)
+    c,r = _draw_fx(frame,c,r,gui,mode="FX")
 
+    r,c=_add_space(frame,r,c)
+    r,c=_add_space(frame,r,c)
     c,r = _draw_fx(frame,c,r,gui,mode="FX-GENERIC")
 
+    r,c=_add_space(frame,r,c)
+    c,r = _draw_fx(frame,c,r,gui,mode="FX-COLOR")
+
 
 def draw_setup(gui,xframe,data):
     frame_cmd=xframe