Explorar el Código

add: FixtureEditor/FaderWing pre-defined fixtures IRGB,MH... +ATTR, +FADE/SWITCH

micha hace 3 años
padre
commit
0eac7a00ef
Se han modificado 1 ficheros con 154 adiciones y 19 borrados
  1. 154 19
      _LibreLightDesk.py

+ 154 - 19
_LibreLightDesk.py

@@ -1901,7 +1901,7 @@ class GUI(Base):
                 b = tk.Button(frame,bg="lightblue", text="EXEC " )
                 b.grid(row=r, column=c, sticky=tk.W+tk.E)
                 c+=1
-                b = tk.Button(frame,bg="lightblue", text="PAGE " + str(int(i/(8*8))+1) )
+                b = tk.Button(frame,bg="lightblue", text="BANK " + str(int(i/(8*8))+1) )
                 b.grid(row=r, column=c, sticky=tk.W+tk.E)
                 c+=1
                 b = tk.Button(frame,bg="lightblue", text="<NAME>"  )
@@ -2636,28 +2636,66 @@ class ELEM_FADER():
     def __init__(self,frame,nr,**args):
         self.frame = frame
         self.nr= nr
-        self.elm = []
+        self.id=nr
+        self.elem = []
+        width=11
+        frameS = tk.Frame(self.frame,bg="#005",width=width)
+        frameS.pack(fill=tk.Y, side=tk.LEFT)
+        self.frame=frameS
+
+    def event(self,a1="",a2=""):
+        print(self,"event",[self.nr,a1,a2])
+        j=[]
+        jdata = {'VALUE': int(a1), 'args': [] , 'FADE': 0,'DMX': str(self.nr)}
+        j.append(jdata)
+        jclient_send(j)
+    def set_nr(self,nr,btn=1):
+        self.nr=nr
+        try:
+            self.elem[btn]["text"]="{} D:{}".format(self.id,nr)
+        except:pass
+
+    def set_attr(self,_event=None):
+        txt= self.attr["text"]
+        txt = tkinter.simpledialog.askstring("ATTR","XX",initialvalue=txt)
+        self._set_attr(txt)
+    def _set_attr(self,txt=""):
+        self.attr["text"] = "{}".format(txt)
+        print("_set_attr",[self])
+
+    def set_mode(self,_event=None):
+        txt= self.mode["text"]
+        txt = tkinter.simpledialog.askstring("MODE S/F:","SWITCH or FADE",initialvalue=txt)
+        self._set_mode(txt)
+    def _set_mode(self,txt=""):
+        self.mode["text"] = "{}".format(txt[0].upper())
+        print("_set_attr",[self])
+    def _refresh(self):
+        pass
     def pack(self,**args):
         width=11
         r=0
         c=0
         j=0
-        frameS = tk.Frame(self.frame,bg="#005",width=width)
-        #frameS.grid(row=r, column=c, sticky=tk.W+tk.E)#,anchor="w")
-        frameS.pack(fill=tk.Y, side=tk.LEFT)
-        #self.b.pack(fill=tk.BOTH, side=tk.TOP)
-        f = FixtureEditor(self.nr)
-        self.b = tk.Scale(frameS,bg="lightblue", width=11,from_=255,to=0,command=f.event)
+        frameS=self.frame
+        self.b = tk.Scale(frameS,bg="lightblue", width=11,from_=255,to=0,command=self.event)
         self.b.pack(fill=tk.Y, side=tk.TOP)
+        self.elem.append(self.b)
 
         self.b = tk.Button(frameS,bg="lightblue",text="DMX:{}".format(self.nr), width=4,command=test)
         self.b.pack(fill=tk.BOTH, side=tk.TOP)
-        self.b = tk.Button(frameS,bg="lightblue",text="PAN", width=4,command=test)
+        self.elem.append(self.b)
+        self.b = tk.Button(frameS,bg="lightblue",text="", width=5,command=self.set_attr)
+        self.attr=self.b
         self.b.pack(fill=tk.BOTH, side=tk.TOP)
-        self.b = tk.Button(frameS,bg="blue",text="FADE", width=4,command=test)
+        self.elem.append(self.b)
+        self.b = tk.Button(frameS,bg="lightblue",text="FADE", width=4,command=self.set_mode)
+        self.mode=self.b
         self.b.pack(fill=tk.BOTH, side=tk.TOP)
+        self.elem.append(self.b)
         self.b = tk.Label(frameS,bg="black",text="", width=4)
         self.b.pack(fill=tk.BOTH, side=tk.TOP)
+        self.elem.append(self.b)
 
 
 class GUI_FaderLayout():
@@ -2665,22 +2703,53 @@ class GUI_FaderLayout():
         r=0
         c=0
         i=1
-
+        self.elem=[]
+        self.header=[]
         self.data = data
         self.frame = tk.Frame(root,bg="black",width=width)
         self.frame.pack(fill=tk.BOTH, side=tk.TOP)
 
-        self.b = tk.Label(self.frame,bg="blue",text="Fixture Editor" )
+        self.b = tk.Label(self.frame,bg="#fff",text="Fixture Editor" )
         self.b.pack(fill=None, side=tk.LEFT)
         self.frame = tk.Frame(root,bg="black",width=width)
         self.frame.pack(fill=tk.BOTH, side=tk.TOP)
+        self.b = tk.Label(self.frame,bg="#ddd",text="NAME:")
+        self.b.pack(fill=None, side=tk.LEFT)
+        self.b = tk.Button(self.frame,bg="lightblue",text="MAC-500", width=11)
+        self.name=self.b
+        self.b["command"] = self.set_name
+        self.b.pack( side=tk.LEFT)
         self.b = tk.Label(self.frame,bg="lightblue",text="DMX START:")
         self.b.pack(fill=None, side=tk.LEFT)
 
-        self.b = tk.Button(self.frame,bg="lightblue",text="1", width=11)#,command=bv.change_dmx)
-        bv = BufferVar(self.b)
-        self.b["command"] = bv.change_dmx
+        self.b = tk.Button(self.frame,bg="lightblue",text="1", width=11)#,command=self.event) #bv.change_dmx)
+        self.entry=self.b
+        self.b["command"] = self.event
         self.b.pack( side=tk.LEFT)
+
+        self.b = tk.Label(self.frame,bg="#ddd",text="TYPE:")
+        self.b.pack(fill=None, side=tk.LEFT)
+
+        self.b = tk.Button(self.frame,bg="lightblue",text="Empty", width=5)#,command=self.event) #bv.change_dmx)
+        self.b["command"] = self.load_EMPTY
+        self.b.pack( side=tk.LEFT)
+
+        self.b = tk.Button(self.frame,bg="lightblue",text="DIM", width=5)#,command=self.event) #bv.change_dmx)
+        self.b["command"] = self.load_DIM
+        self.b.pack( side=tk.LEFT)
+
+        self.b = tk.Button(self.frame,bg="lightblue",text="IRGB", width=5)#,command=self.event) #bv.change_dmx)
+        self.b["command"] = self.load_LED
+        self.b.pack( side=tk.LEFT)
+
+        self.b = tk.Button(self.frame,bg="lightblue",text="MH", width=5)#,command=self.event) #bv.change_dmx)
+        self.b["command"] = self.load_MH
+        self.b.pack( side=tk.LEFT)
+        
+        self.b = tk.Button(self.frame,bg="lightblue",text="MH2", width=5)#,command=self.event) #bv.change_dmx)
+        self.b["command"] = self.load_MH2
+        self.b.pack( side=tk.LEFT)
+        
         self.b = tk.Label(self.frame,bg="black",text="") # spacer
         self.b.pack(fill=tk.Y, side=tk.LEFT)
 
@@ -2688,14 +2757,18 @@ class GUI_FaderLayout():
         self.frame.pack(fill=tk.BOTH, side=tk.TOP)
         r=0
         c=0
-        pb=13
+        pb=12
+        self.pb=pb
         for j,row in enumerate(data):
             if c % pb == 0 or c==0:
                 h=hex(j*10)[2:].rjust(2,"0")
                 frameS = tk.Frame(self.frame,bg="#000",width=width,border=2)
                 frameS.pack(fill=tk.BOTH, side=tk.TOP)
                 p=j//pb+1
-                self.b = tk.Label(frameS,bg="lightblue",text="PAGE:{} {}-{}".format(p,p*pb-pb+1,p*pb) ,width=15)
+                txt="BANK:{} {}-{}".format(p,p*pb-pb+1,p*pb) 
+                self.b = tk.Label(frameS,bg="lightblue",text=txt,width=15)
+                self.header.append(self.b)
+
                 self.b.pack(fill=None, side=tk.LEFT)
                 self.b = tk.Label(frameS,bg="black",text="" ,width=11)
                 self.b.pack(fill=tk.BOTH, side=tk.LEFT)
@@ -2705,11 +2778,73 @@ class GUI_FaderLayout():
             print(frameS)
             e= ELEM_FADER(frameS,nr=j+1)
             e.pack()
+            self.elem.append(e)
             frameS.pack(fill=tk.X, side=tk.TOP)
             c+=1
             i+=1
         self.frame.pack()
-
+    def set_name(self,_event=None):
+        txt = self.name["text"]
+        txt = tkinter.simpledialog.askstring("FIXTURE NAME:","NAME:",initialvalue=txt)
+        self.name["text"] = "{}".format(txt)
+        print("change_dmx",[_event,self])
+
+
+
+    def load_EMPTY(self,_event=None,attr=[]):
+        #attr = [,"RED","GREEN","BLUE"]
+        #mode = ["F","F","F","F"]
+        self._load_mh(None)#,attr,mode)
+    def load_DIM(self,_event=None,attr=[]):
+        attr = ["DIM"]
+        mode = ["F"]
+        self._load_mh(None,attr,mode)
+    def load_LED(self,_event=None,attr=[]):
+        attr = ["DIM","RED","GREEN","BLUE"]
+        mode = ["F","F","F","F"]
+        self._load_mh(None,attr,mode)
+    def load_MH(self,_event=None,attr=[]):
+        attr = ["PAN","PAN-FINE","TITL","TITL-FINE","SHUTTER","DIM","RED","GREEN","BLUE","GOBO"]
+        mode = ["F","F","F","F","S","F","F","F","F","S"]
+        self._load_mh(None,attr,mode)
+    def load_MH2(self,_event=None,attr=[]):
+        attr = ["PAN","PAN-FINE","TITL","TITL-FINE","SHUTTER","DIM","RED","GREEN","BLUE","GOBO","G-ROT","PRISM","P-ROT","ZOOM","CONTR"]
+        mode = ["F","F","F","F","S","F","F","F","F","S","S","S","S","F","S"]
+        self._load_mh(None,attr,mode)
+    def _load_mh(self,_event=None,attr=[],mode=[]):
+        print("load_fixture",[_event,self])
+        #for i,e in enumerate(self.elem):
+        for i,e in enumerate(self.elem):
+            #print(self,"event",_event,e)
+            print("event",_event,e)
+            e._set_attr( "---")
+            if len(attr) > i:
+                e._set_attr( attr[i])
+            e._set_mode( "---")
+            if len(mode) > i:
+                e._set_mode( mode[i])
+
+    def event(self,_event=None):
+        nr=1
+        txt="dd"
+        txt= self.entry["text"]
+        txt = tkinter.simpledialog.askstring("FADER-DMX-START","DMX:"+str(nr+1),initialvalue=txt)
+        nr = int(txt)
+        self.entry["text"] = "DMX:{}".format(nr)
+        print("change_dmx",[_event,self])
+        for i,e in enumerate(self.elem):
+            #print(self,"event",_event,e)
+            print("event",_event,e)
+            e.set_nr(nr+i)
+
+        pb=self.pb
+        for j,e in enumerate(self.header):
+            p=j+1
+            #p=nr/pb
+            txt="BANK:{} {}-{}".format(p,p*pb-pb+nr,p*pb+nr-1) 
+            print("---",j,txt,e)
+            e["text"] = txt
+            
 
 class GUI_grid():
     def __init__(self,root,data,title="tilte",width=800):
@@ -2990,7 +3125,7 @@ name="FADER"
 w = GUIWindow(name,master=0,width=800,height=400,left=110,top=65)
 w1 = ScrollFrame(w.tk,width=800,height=400)
 data=[]
-for i in range(24):
+for i in range(24+12):
     data.append({"text"+str(i):"test"})
 GUI_FaderLayout(w1,data)
 #frame_fix = w1 #w.tk