Pārlūkot izejas kodu

add: remote client from SDL-FIX to Librelight-GUI

micha 1 gadu atpakaļ
vecāks
revīzija
21cda07a1a
4 mainītis faili ar 80 papildinājumiem un 19 dzēšanām
  1. 42 7
      _LibreLightDesk.py
  2. 0 1
      tkgui/GUI.py
  3. 20 4
      tksdl/fix.py
  4. 18 7
      tool/sdl_elm.py

+ 42 - 7
_LibreLightDesk.py

@@ -379,25 +379,60 @@ def server1_loop():
         time.sleep(0.01)
 thread.start_new_thread(server1_loop,()) # SERVER
 # remote input - end
+chat.dbg=1
 
+class DEVENT():
+    def __init__(self):
+        #if "keysym" in dir(event):
+        #if "Escape" == 
+        #event.keysym:
+        #event.num == 1:
+        self.keysym = ""
+        self.num = 1
+        self.type = ""
 
 def JSCB(x,sock=None):
     i = ""
     msg = ""
+    msgs = []
     try:
+        #print("JSCB",sock)
         for i in x:
             #print("i",[i])
-            msg = json.loads(i)
-            print("JSCB",i,msg,sock)
-            if sock:
-                msg = json.dumps(msg)
-                msg = bytes(msg,"utf8")
-                chat._send(sock,msg)
+            msgs = json.loads(i)
+            print(" JSCB",msgs) #,sock)
+            if type(msgs) is list:
+                for msg in msgs:
+                    print("  ",msg)
+                    # FIXTURES.encoder
+                    if "event" in msg:
+                        if "FIXTURES" == msg["event"]:
+                            FIX=0
+                            enum=-1
+                            ATTR=""
+                            if "FIX" in msg:
+                                FIX=msg["FIX"]
+                            if "E-NUM" in msg:
+                                enum=msg["E-NUM"]
+                            if "ATTR" in msg:
+                                ATTR=msg["ATTR"]
+                            print("  Xevent",FIX,enum,ATTR)
+                            #cb = Xevent(fix=FIX,elem=None,attr=ATTR,mode="ENCODER",data=[]) #data)
+                            FIXTURES.encoder(str(FIX),ATTR,xval="click",xfade=0,xdelay=0)#,blind=0)
+                            #print(dir(cb))
+                            event =  DEVENT()
+                            event.num = enum
+                            #cb.cb(event)
+            #bounce msg
+            #if sock:
+            #    msg = json.dumps(msg)
+            #    msg = bytes(msg,"utf8")
+            #    chat._send(sock,msg)
             
     except Exception as e:
         cprint("exception JSCB:",e)
         cprint("- i:",i)
-        cprint("- msg:",msg)
+        cprint("- msg:",msgs)
         cprint(traceback.format_exc(),color="red")
         if sock:
             msg = ["Notice: Exception on JSCB-SERVER: ",str(e)]

+ 0 - 1
tkgui/GUI.py

@@ -372,7 +372,6 @@ class GUI_DIM():
 
 
 
-
 class GUI_FIX():
     def __init__(self,gui,xframe,data):
         self.gui = gui

+ 20 - 4
tksdl/fix.py

@@ -204,6 +204,9 @@ y=[]
                         
 bx_font0 = pygame.font.SysFont("freesans-bold",20)
 
+import lib.zchat as chat
+cmd_client = chat.Client(port=30003)
+
 
 while 1:
     fps +=1
@@ -340,7 +343,7 @@ while 1:
                         bcv_b = v["ATTRIBUT"]["BLUE"]["VALUE2"]
 
 
-                    print( [bcv_r,bcv_g,bcv_b])
+                    #print("bvc_rgb" [bcv_r,bcv_g,bcv_b])
                     if bcv_r > 255:
                         bcv_r=255
                     if bcv_g > 255:
@@ -389,6 +392,10 @@ while 1:
                         if k3 not in table_grid:
                             bx = sdl_elm.Button(window,pos=[300,rr,60,20])
                             bx.btn1.color_on = [255,255,0]
+                            bx.ID = 0
+                            if "ID" in v:
+                                bx.ID = v["ID"]
+                            bx.ATTR = k2
                             table_grid[k3] = bx
 
                         if "ACTIVE" in k2_ATTR:
@@ -468,7 +475,7 @@ while 1:
                     #t.btn2.clean()
                     t.btn1.clean()
 
-        print("event",event)
+        #print("event",event)
         if event.type == pygame.QUIT:
             pygame.quit()
             sys.exit(0)
@@ -487,10 +494,19 @@ while 1:
 
         for t in table_grid:
             #print(t)
-            table_grid[t].event(event)
+            change = table_grid[t].event(event)
             if table_grid[t].btn3.get():
                 data = table_grid[t].data
-                print(" ATTR:",data)
+                FIX = table_grid[t].ID
+                ATTR = table_grid[t].ATTR
+
+                if "BUTTON" in change:
+                    if "press" in change["BUTTON"]:
+                        print(" ATTR:",FIX,ATTR,data)
+                        print("  CHANGE",change)
+                        msg = json.dumps([{"event":"FIXTURES","TYPE":"ENCODERS","FIX":str(FIX),"E-NUM":1,"ATTR":ATTR}]).encode("utf-8")
+                        print("   ",msg)
+                        cmd_client.send(msg)
                 
             
 

+ 18 - 7
tool/sdl_elm.py

@@ -87,6 +87,12 @@ class ELEM_BUF():
         self.color_on = [255,255,0]
         self.type="flash" #"toggle" #"flash",fade
         self.killgroup = kill 
+        self.events = []
+
+    def get_event(self):
+        out = self.events[:]
+        self.events = []
+        return out
 
     def get(self):
         return self.val.get()
@@ -100,7 +106,7 @@ class ELEM_BUF():
         self.val.set(0)
 
     def press(self):
-        print([self.name,self.type,self.val.get()])
+        #print("ELEM_BUF.press",[self.name,self.type,self.val.get()])
         if self.type == "fader":
             self.inc(self.increment)
 
@@ -112,7 +118,8 @@ class ELEM_BUF():
 
         if self.type == "flash":
             self.val.set(1)
-
+        
+        self.events.append("press")
         self.cb_on.cb("ho")
 
     def release(self):
@@ -121,6 +128,7 @@ class ELEM_BUF():
             return
         if self.type == "flash":
             self.val.set(0)
+        self.events.append("release")
 
     def inc(self,v):
         self.val.inc(v)
@@ -215,7 +223,7 @@ class Button():
         self.fader = 1
 
         self.btn1 = ELEM_BUF() 
-        self.btn1.name = "BUTTON BUF"
+        self.btn1.name = "BUTTON"
         self.btn1.nr_on  = [1,3]
         self.btn1.nr_off = [1,3]
         #self.btn1.color = LIGHTGRAY 
@@ -363,6 +371,7 @@ class Button():
 
 
     def event(self,event=None):
+        r_event = {}
         if "pos" in event.dict:
             self.event_pos = event.pos
             self._check_event()
@@ -380,15 +389,17 @@ class Button():
                     mode = "release"
 
                 e = [event.button,mode]
-                print("e",e)
-                
+                #print("e",e)
                 for btn in self.btns: 
                     if e[0] in btn.nr_on  and e[1] == "press":
                         btn.press()
                     if e[0] in btn.nr_off and e[1] == "release":
                         btn.release()
-
-
+                    re = btn.get_event()
+                    if re and btn.name not in ['MOUSE FOCUS']:
+                        print("----------------",btn.name,re)
+                        r_event[btn.name] = re
+        return r_event
 def draw_mouse_box(window,pos1,pos2,color=[128,128,128],text=1):
     color = [200,0,0,127]