Ver Fonte

fix: dmx_in on EXEC-WING not working if EXEC-WING closed or minimized - FIXED !

micha há 1 ano atrás
pai
commit
1ea38ed857
3 ficheiros alterados com 50 adições e 24 exclusões
  1. 19 5
      _LibreLightDesk.py
  2. 8 1
      input/touchscreen.py
  3. 23 18
      tkgui/GUI.py

+ 19 - 5
_LibreLightDesk.py

@@ -305,15 +305,19 @@ def set_exec_fader_cfg(nr,val,label="",color=""):
                 exec_wing.fader_elem[nr].attr["fg"] = cfg["fg"]
     except Exception as e:
         cprint("- exception:",e)
+        print(nr,val,label)
 
-def set_exec_fader(nr,val,label="",color=""):
+def set_exec_fader(nr,val,label="",color="",info="info",change=0):
     exec_wing = window_manager.get_obj(name="EXEC-WING") 
     if not exec_wing: 
         return
     try:
-        exec_wing.set_fader(nr,val,color=color)
+        exec_wing.set_fader(nr,val,color=color,info=info,change=change)
     except Exception as e:
+        pass
         cprint("- exception:",e)
+        print(nr,val,label)
+        raise e
    
 
 def set_exec_fader_all():
@@ -419,7 +423,7 @@ class MC():
         if index:
             for i in index:
                 print("  key",i)
-
+        self.last_fader_val = [-1]*512
         self.fader_map = []
         for i in range(30+1):
             self.fader_map.append({"UNIV":0,"DMX":0})
@@ -480,8 +484,18 @@ class MC():
                             if dmx > 0:
                                 val = x[dmx-1]
                                 #print("mc val",val)
-                                set_exec_fader(i,val,color="#aaa")
-                        except:pass
+                                #print("dmx_in change:",[i,val])
+                                change = 0
+                                if i < len(self.last_fader_val):
+                                    if self.last_fader_val[i] != val:
+                                        self.last_fader_val[i] = val
+                                        print("dmx_in change:",[i,val])
+                                        change = 1
+                                set_exec_fader(nr=i,val=val,color="#aaa",info="dmx_in",change=change)
+                        except Exception as e:
+                            cprint("MC exc:",e,color="red")
+                            traceback.print_exc()
+                            pass
 
                 time.sleep(0.01)
             except Exception as e:

+ 8 - 1
input/touchscreen.py

@@ -201,7 +201,14 @@ class Action():
             self.pointer_config.append( cfg )
 
 
-        if 1: 
+
+
+        if 0: #1: #multi pinter on/off  ,,, 
+            # window manager confusion 
+            # - window-ontop 
+            # - window-focus 
+            # error !!! ??? 
+
             # creat 5 pointer on screen for Mutlitouch input
             # pointer jump's around on X11 
             print()

+ 23 - 18
tkgui/GUI.py

@@ -994,7 +994,7 @@ class GUI_FixtureEditor():
             c+=1
 
     def _fader_cb(self,arg,name="<name>",**args):
-        print("   FixtureEditor._cb",args,arg)
+        print("   FixtureEditor._cb",args,arg,name)
         #print("    ",name,"_cb.args >>",args,arg[1:])
         self.count_ch()
     
@@ -1007,7 +1007,7 @@ class GUI_FixtureEditor():
             j.append(jdata)
             jclient_send(j)
         except Exception as e:
-            print(arg,args)
+            print("exec",arg,args)
             print(e)
 
     def _cb(self,arg,name="<name>",**args):
@@ -1608,23 +1608,28 @@ class GUI_ExecWingLayout():
         self.frame.pack()
         self._event_redraw()
 
-    def set_fader(self,nr,val,color=""):
-        #print("set_fader",nr,val)
+    def set_fader(self,nr,val,color="",info="info",change=0):
+        mute = 1
+        if nr == 2:
+            mute = 1
+        if info != "dmx_in":
+            mute=1
+        if not mute:print("set_fader",nr,val,info)
         if nr < len(self.elem):
-            ee = self.elem[nr].elem[0]
-            ee.set(val) 
-            if color:
-                ee["bg"] = color
-        return # STOP
+            try:
+                ee = self.elem[nr].elem[0]
+                ee.set(val) 
+                if color:
+                    ee["bg"] = color
+            except Exception as e:
+                if change:
+                    self.event_cb(a1=val,nr=nr)
+                #cprint("set_fader",e,color="red")
+                #raise e
+        #self.frame.update_idle_task()
+        if not mute:print("set_fader",nr,val,info)
 
-        for i in self.elem:
-            e = i #self.elem[i] #.append(e)
-            #print("e",e)
-            ee = e.elem[0]
-            #print(dir(ee))
-            ee.set(val)# = val
-        #for ee in e.elem: #.append(self.b)
-        #    print("ee",ee)
+        return # STOP
 
     def event_cb(self,a1="",a2="",nr=None,**args):
         #print(" ExecWing.event_cb:",nr,a1,a2,args)
@@ -1644,7 +1649,7 @@ class GUI_ExecWingLayout():
             jdata["CMD"] = "EXEC-OFFSET-MASTER"
             jdata["NR"] = nr-20 +self.start
 
-        print("   ExecWing.event_cb",jdata)
+        #print("   ExecWing.event_cb",jdata)
         j = [jdata]
         jclient_send(j)