micha 2 жил өмнө
parent
commit
8695306a9e
1 өөрчлөгдсөн 38 нэмэгдсэн , 17 устгасан
  1. 38 17
      _LibreLightDesk.py

+ 38 - 17
_LibreLightDesk.py

@@ -2270,7 +2270,18 @@ class GUI_PATCH():
         r+=1
 
         dmx_ch_sum = 0
-        dmx_collision = []
+        dmx_collision = {}
+
+        for fix in FIXTURES.fixtures:
+            data = FIXTURES.fixtures[fix]
+
+            max_dmx = FIXTURES.get_max_dmx_nr(fix) 
+            
+            for i in range(data["DMX"],data["DMX"]+max_dmx[1]):
+                if i in dmx_collision:
+                    dmx_collision[i] += 1
+                else:
+                    dmx_collision[i] = 0
         z=0
         for fix in FIXTURES.fixtures:
             z+=1
@@ -2329,27 +2340,19 @@ class GUI_PATCH():
                     c=start_c
                     r+=1
 
-            max_dmx = 0
-            for a in data["ATTRIBUT"]:
-                attr = data["ATTRIBUT"][a]
-                if "NR" in attr:
-                    try:
-                        _n = int(attr["NR"])
-                        if _n > max_dmx:
-                            max_dmx=_n
-                    except ValueError:pass
+            max_dmx = FIXTURES.get_max_dmx_nr(fix) 
             
-            dmx_ch_sum += max_dmx
-            for i in range(data["DMX"],data["DMX"]+max_dmx):
+            dmx_ch_sum += max_dmx[1]
+            for i in range(data["DMX"],data["DMX"]+max_dmx[1]):
                 if i in dmx_collision:
-                    collision.append(i)
-                else:
-                    dmx_collision.append(i)
-            b = tk.Button(xframe,bg="grey", text="{:3} ({})".format(max_dmx , len(data["ATTRIBUT"])),width=4) #a,anchor="w")
+                    if dmx_collision[i]:
+                        collision.append(i)
+
+            b = tk.Button(xframe,bg="grey", text="{:3} ({})".format(max_dmx[1] , max_dmx[0]),width=4) #a,anchor="w")
             b.grid(row=r, column=c, sticky=tk.W+tk.E)
             c+=1
             #b = tk.Button(xframe,bg="#aaa", text="{:03}-{:03}".format(data["DMX"],len(data["ATTRIBUT"])+(data["DMX"])-1),width=6,anchor="w")
-            b = tk.Button(xframe,bg="#aaa", text="{:03} - {:03}".format(data["DMX"],max_dmx+(data["DMX"]-1)),width=8,anchor="w")
+            b = tk.Button(xframe,bg="#aaa", text="{:03} - {:03}".format(data["DMX"],max_dmx[1]+(data["DMX"]-1)),width=8,anchor="w")
             b.grid(row=r, column=c, sticky=tk.W+tk.E)
 
             c+=1
@@ -3392,6 +3395,24 @@ class Fixtures():
                 if attr in data["ATTRIBUT"]:
                     return data["ATTRIBUT"][attr]
 
+    def get_max_dmx_nr(self,fix):
+        max_dmx = 0
+        used_dmx = 0
+        if fix not in self.fixtures:
+            return (used_dmx,max_dmx)
+
+        data = self.fixtures[fix]
+        used_dmx = len(data["ATTRIBUT"])
+        for a in data["ATTRIBUT"]:
+            attr = data["ATTRIBUT"][a]
+            if "NR" in attr:
+                try:
+                    _n = int(attr["NR"])
+                    if _n > max_dmx:
+                        max_dmx=_n
+                except ValueError:pass
+        return (used_dmx,max_dmx)
+
     def get_dmx(self,fix,attr):
         #cprint("get_dmx",[fix,attr])
         if fix in self.fixtures: