فهرست منبع

refactor: WindowManager

micha 1 سال پیش
والد
کامیت
90bb3640c5
3فایلهای تغییر یافته به همراه143 افزوده شده و 100 حذف شده
  1. 101 67
      _LibreLightDesk.py
  2. 34 27
      tkgui/GUI.py
  3. 8 6
      tkgui/draw.py

+ 101 - 67
_LibreLightDesk.py

@@ -2137,34 +2137,36 @@ class MASTER():
         cprint("button_refresh",name,color)
         #if color == "gold":
         #    color2 = "yellow"
-        if color2 is None:
-            color2 = color
-        if text:
-            text = "\n"+str(text)
-        if name in self.commands.elem:
-            self.commands.elem[name]["bg"] = color
-            self.commands.elem[name]["text"] = name+ text
-            self.commands.elem[name].config(activebackground=color2)
-            if fg:
-                self.commands.elem[name]["fg"] = fg
-        elif name in self.fx.elem:
-            #todo
-            self.fx.elem[name]["bg"] = color
-            self.fx.elem[name].config(activebackground=color2)
-            if fg:
-                self.fx.elem[name]["fg"] = fg
-
-        # new version
-        for elems in [self.fx_moves]:
-            if name in elems.elem:
-                elem = elems.elem[name]
-                cprint("elem",elem)
-                elem.config(bg = color)
-                elem.config(text = name+text)
-                elem.config(activebackground=color2)
-
-                if fg and "fg" in elem:
-                    elem["fg"] = fg
+        try:
+            if color2 is None:
+                color2 = color
+            if text:
+                text = "\n"+str(text)
+            if name in self.commands.elem:
+                self.commands.elem[name]["bg"] = color
+                self.commands.elem[name]["text"] = name+ text
+                self.commands.elem[name].config(activebackground=color2)
+                if fg:
+                    self.commands.elem[name]["fg"] = fg
+            elif name in self.fx.elem:
+                #todo
+                self.fx.elem[name]["bg"] = color
+                self.fx.elem[name].config(activebackground=color2)
+                if fg:
+                    self.fx.elem[name]["fg"] = fg
+
+            # new version
+            for elems in [self.fx_moves]:
+                if name in elems.elem:
+                    elem = elems.elem[name]
+                    cprint("elem",elem)
+                    elem.config(bg = color)
+                    elem.config(text = name+text)
+                    elem.config(activebackground=color2)
+
+                    if fg and "fg" in elem:
+                        elem["fg"] = fg
+        except Exception as e:cprint("exc",self,e)
 
     def btn_cfg(self,nr,testing=0):
         cfg    = PRESETS._btn_cfg(nr) 
@@ -2380,7 +2382,7 @@ class MASTER():
             _c_a = 0
 
             if fix not in self.elem_attr:
-                cprint("_refresh_fix fix not in self.elem_attr (no Button)",fix,color="red")
+                #cprint("_refresh_fix fix not in self.elem_attr (no Button)",fix,color="red")
                 continue
             elem_attr_fix = self.elem_attr[fix]
 
@@ -2410,7 +2412,7 @@ class MASTER():
                             if elem["text"] != _text: #"{} {:0.2f}".format(attr,v2)
                                 elem["text"] = _text #"{} {:0.2f}".format(attr,v2)
                         except:
-                            cprint("err778",attr,elem)
+                            pass#cprint("err778",attr,elem)
 
                     if row["ACTIVE"]:
                         try:
@@ -2418,7 +2420,7 @@ class MASTER():
                                 elem["bg"] = "yellow"
                                 elem.config(activebackground="yellow")
                         except:
-                            cprint("err778",attr,elem)
+                            pass#cprint("err778",attr,elem)
 
                         if "DIM" in sdata["ATTRIBUT"] and len(sdata["ATTRIBUT"]) == 2:
                             c_d+=1
@@ -2432,7 +2434,7 @@ class MASTER():
                                 elem["bg"] = "grey"
                                 elem.config(activebackground="grey")
                         except:
-                            cprint("err778",attr,elem)
+                            pass#cprint("err778",attr,elem)
 
                     if "FX2" not in row: # insert FX2 excetption
                         row["FX2"] = OrderedDict()
@@ -2445,7 +2447,7 @@ class MASTER():
                         else:
                             elem["fg"] = "black"
                     except:
-                        cprint("err778",attr,elem)
+                        pass#cprint("err778",attr,elem)
                 except Exception as e:
                     cprint("EXCEPTON 2406 ",e,color="red")
                     cprint("err778",attr,elem)
@@ -2665,12 +2667,14 @@ class InputEventBlocker():
     def _lock(self):
         global _global_short_key
         _global_short_key = 0
-        master.commands.elem["S-KEY"]["bg"] = "red"
+        try:master.commands.elem["S-KEY"]["bg"] = "red"
+        except Exception as e:cprint("exc",self,e)
 
     def _unlock(self):
         global _global_short_key
         _global_short_key = 1
-        master.commands.elem["S-KEY"]["bg"] = "green"
+        try:master.commands.elem["S-KEY"]["bg"] = "green"
+        except Exception as e:cprint("exc",self,e)
 
     def lock(self):
         self._lock()
@@ -4266,14 +4270,17 @@ if __run_main:
     data.append({"text":"EXEC","name":"EXEC-BTN"})
     data.append({"text":"EXEC-WING"})
     data.append({"text":"---"})
-    data.append({"text":"ENCODER"})
+    data.append({"text":"SETUP"})
     data.append({"text":"COMMAND"})
-    data.append({"text":"COLORPICKER","name":"COLOR"})
+    data.append({"text":"LIVE"})
     data.append({"text":"FX"})
+    data.append({"text":"ENCODER"})
+    data.append({"text":"COLORPICKER","name":"COLOR"})
     data.append({"text":"---"})
     data.append({"text":"FIXTURE-EDITOR","name":"FIX-EDIT"})
-    #data.append({"text":"CLOCK"})
     data.append({"text":"CONFIG"})
+    data.append({"text":"CLOCK"})
+    data.append({"text":"---"})
 
     name="MAIN"
     args = {"title":"MAIN","master":1,"width":80,"height":H1,"left":L0,"top":TOP,"resize":1}
@@ -4311,7 +4318,7 @@ if __run_main:
 
     c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok,gui=master,scroll=1)
     window_manager.new(None,name,wcb=c)
-    window_manager.top(name)
+    #window_manager.top(name)
 
 
     name="DIMMER"
@@ -4323,7 +4330,7 @@ if __run_main:
 
     c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok,gui=master,scroll=1)
     window_manager.new(None,name,wcb=c)
-    window_manager.top(name)
+    #window_manager.top(name)
 
 
     name="FIXTURES"
@@ -4335,7 +4342,7 @@ if __run_main:
 
     c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok,gui=master,scroll=1)
     window_manager.new(None,name,wcb=c)
-    window_manager.top(name)
+    #window_manager.top(name)
 
 
     # -------------------------------
@@ -4351,12 +4358,12 @@ if __run_main:
 
     c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok,gui=master,scroll=0)
     window_manager.new(None,name,wcb=c)
-    window_manager.top(name)
+    #window_manager.top(name)
 
     
     # -------------------------------
     name="MASTER-WING"
-    args = {"title":name,"master":0,"width":75,"height":405,"left":L0,"top":TOP+H1-220,"resize":1}
+    args = {"title":name,"master":0,"width":75,"height":405,"left":L0,"top":TOP+H1-220,"resize":0}
 
     data=[]
     for i in range(2):
@@ -4393,39 +4400,61 @@ if __run_main:
 
     c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok,gui=master,scroll=0)
     window_manager.new(None,name,wcb=c)
-    window_manager.top(name)
+    #window_manager.top(name)
 
     name = "SETUP"
-    args = {"title":name,"master":0,"width":415,"height":42,"left":L1+10+W1,"top":TOP,"resize":0}
-    w = Window(args)
-    w.tk.title("SETUP   SHOW:"+master.base.show_name)
-    draw_setup(master,w.tk)
-    window_manager.new(w,name)
+    args = {"title":name +" SHOW:"+master.base.show_name,"master":0,"width":415,"height":42,"left":L1+10+W1,"top":TOP,"resize":0}
+    args["title"]  = "SETUP SHOW:"+master.base.show_name
+
+    cls = draw_setup #(master,w.tk)
+    data = []
+    cb_ok = None
+
+    c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok,gui=master,scroll=0)
+    window_manager.new(None,name,wcb=c)
+    window_manager.top(name)
+
 
     name = "COMMAND"
     args = {"title":name,"master":0,"width":415,"height":130,"left":L1+10+W1,"top":TOP+81,"resize":0}
-    w = Window(args)
-    draw_command(master,w.tk)
-    window_manager.new(w,name)
+    cls = draw_command #(master,w.tk)
+    data = []
+    cb_ok = None
+
+    c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok,gui=master,scroll=0)
+    window_manager.new(None,name,wcb=c)
+    window_manager.top(name)
 
     name = "LIVE"
     args = {"title":name,"master":0,"width":415,"height":42,"left":L1+10+W1,"top":TOP+235,"resize":0}
-    w = Window(args)
-    draw_live(master,w.tk)
-    window_manager.new(w,name)
+    cls = draw_live #(master,w.tk)
+    data = []
+    cb_ok = None
+
+    c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok,gui=master,scroll=0)
+    window_manager.new(None,name,wcb=c)
+    window_manager.top(name)
 
     name = "CLOCK"
     args = {"title":name,"master":0,"width":335,"height":102,"left":L1+10+W1+80,"top":TOP+H1+HTB+160,"resize":0}
-    w = Window(args)
     cclock = X_CLOCK()
-    cclock.draw_clock(master,w.tk)
-    window_manager.new(w,name)
+    cls = cclock.draw_clock 
+    data = []
+    cb_ok = None
+
+    c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok,gui=master,scroll=0)
+    window_manager.new(None,name,wcb=c)
+    window_manager.top(name)
 
     name="FX"
     args = {"title":name,"master":0,"width":415,"height":297,"left":L1+10+W1,"top":TOP+302,"resize":0}
-    w = Window(args)
-    draw_fx(master,w.tk)
-    window_manager.new(w,name)
+    cls = draw_fx #(master,w.tk)
+    data = []
+    cb_ok = None
+
+    c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok,gui=master,scroll=0)
+    window_manager.new(None,name,wcb=c)
+    window_manager.top(name)
 
 
     name="PATCH"
@@ -4435,14 +4464,19 @@ if __run_main:
 
     c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok,gui=master,scroll=1)
     window_manager.new(None,name,wcb=c) #,obj)
-    window_manager.top(name)
+    #window_manager.top(name)
 
     name="COLORPICKER"
     args = {"title":name,"master":0,"width":600,"height":113,"left":L1+5,"top":TOP+5+HTB*2+H1}
-    w = Window(args)
-    draw_colorpicker(master,w.tk,FIXTURES,master)
-    window_manager.new(w,name)
-    window_manager.top(name)
+    #w = Window(args)
+    #draw_colorpicker(master,w.tk,FIXTURES,master)
+    cls = draw_colorpicker #(master,w.tk,FIXTURES,master)
+    data = [FIXTURES,master]
+    cb_ok = None #FIXTURES
+
+    c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok,gui=master,scroll=0)
+    window_manager.new(None,name,wcb=c)
+    #window_manager.top(name)
 
     name="TableA"
     #w = Window(name,master=0,width=W1,height=H1,left=L1,top=TOP)
@@ -4463,7 +4497,7 @@ if __run_main:
     master.render()
     window_manager.top("Table")
     #w = frame_fix #Window("OLD",master=0,width=W1,height=500,left=130,top=TOP)
-    window_manager.new(w,name)
+    #window_manager.new(w,name)
 
 
 

+ 34 - 27
tkgui/GUI.py

@@ -209,44 +209,51 @@ class X_CLOCK():
     def __init__(self):
         self._last_label_id = 1
         self._label_ring = [ "labelA","labelB"]
+        self.b = tk.Canvas()
+        self.bb = tk.Canvas()
+        self.xfont  = tk.font.Font(family="FreeSans", size=65, weight="bold")
+        self.xfont1 = tk.font.Font(family="FreeSans", size=25, weight="bold")
 
-    def loop_clock(self,b):
-        xfont = tk.font.Font(family="FreeSans", size=65, weight="bold")
-        xfont1 = tk.font.Font(family="FreeSans", size=25, weight="bold")
+        self.write_text(text1="text1",text2="text2")
+
+    def write_text(self,text1="text1",text2="text2"):
+        tag = self._label_ring[self._last_label_id]
+        self.bb.create_text(170,41,text=text1,fill="#aa0" ,font=self.xfont,tag=tag)
+        self.bb.create_text(160,91,text=text2,fill="#aa0" ,font=self.xfont1,tag=tag)
+        self.delete_tag()
+        time.sleep(0.2)
+
+    def loop_clock(self,b=None):
         while 1:
-            tag = self._label_ring[self._last_label_id]
-            #b["text"] = 
-            d = time.strftime("%Y-%m-%d")
+            #print("x",self.bb,dir(self.bb))
+            #print(self,"x")
             s = time.strftime("%X")
-            #b.delete("all")
-            b.create_text(170,41,text=s,fill="#aa0" ,font=xfont,tag=tag)
-            b.create_text(160,91,text=d,fill="#aa0" ,font=xfont1,tag=tag)
-        
-            self.delete_tag()
-            time.sleep(0.2)
-            #exit()
+            d = time.strftime("%Y-%m-%d")
+            try:
+                self.write_text(text1=s,text2=d)
+            except:
+                break
+                cprint("CLOSE XCLOCK",self)
+
     def delete_tag(self):
         self._last_label_id += 1
         if self._last_label_id >=len(self._label_ring ):
             self._last_label_id = 0
         tag = self._label_ring[self._last_label_id]
         self.bb.delete(tag)
-    def draw_clock(self,gui,xframe):
-        frame_cmd=xframe
-        
-        frame = tk.Frame(frame_cmd,bg="black")
+
+    def draw_clock(self,gui,xframe,data=[]):
+        print("draw_clock",self)
+        xframe.pack(fill="both",expand=1)
+        frame = tk.Frame(xframe,bg="black")
         frame.pack(fill=tk.X, side=tk.TOP)
-        comm = "xx"
         
-        xfont = tk.font.Font(family="FreeSans", size=25, weight="bold")
-        b = tk.Canvas(frame,bg="black", height=105,bd=0,width=6,highlightthickness=0) #,bd="black")
-        self.bb = b
-        #b = tk.Button(frame,bg="lightgrey", text=str(comm),width=26,height=2,font=xfont)
-        #b.config(activebackground="lightgreen")
-        #b.config(background="lightgreen")
-        b.pack(fill="both",expand=1) #row=0, column=0, sticky=tk.W+tk.E)
-        #b["text"] = time.strftime("%Y-%m-%d %X")
-        thread.start_new_thread(self.loop_clock,(b,))
+        self.bb = tk.Canvas(frame,bg="black", height=105,bd=0,width=6,highlightthickness=0) 
+        self.bb.pack(fill="both",expand=1)
+
+        thread.start_new_thread(self.loop_clock,())
+
+        return self.bb
 
 
 

+ 8 - 6
tkgui/draw.py

@@ -9,7 +9,7 @@ import lib.mytklib as mytklib
 
 
 
-def draw_command(gui,xframe):
+def draw_command(gui,xframe,data):
     frame_cmd=xframe
     i=0
     c=0
@@ -23,6 +23,7 @@ def draw_command(gui,xframe):
     #b.grid(row=r, column=c, sticky=tk.W+tk.E)
     #r+=1
     c+=1
+    gui.commands.elem = {}
     for comm in gui.commands.commands:
         if comm == "\n":
             c=0
@@ -193,7 +194,8 @@ def draw_input(gui,root2):
     b.insert("end","fx:alloff:::")
 
 
-def draw_colorpicker(gui,xframe,FIXTURES,master):
+def draw_colorpicker(gui,xframe,data):
+    FIXTURES,master = data
     import lib.colorpicker as colp
 
     class _CB():
@@ -524,7 +526,7 @@ def _draw_fx(frame,c,r,gui,mode="FX"):
 
 
 
-def draw_fx(gui,xframe):
+def draw_fx(gui,xframe,data=[]):
     frame_fx=xframe
     i=0
     c=0
@@ -556,14 +558,14 @@ def draw_fx(gui,xframe):
     c,r = _draw_fx(frame,c,r,gui,mode="FX-GENERIC")
 
 
-def draw_setup(gui,xframe):
+def draw_setup(gui,xframe,data):
     frame_cmd=xframe
     i=0
     c=0
     r=0
     
     frame = tk.Frame(frame_cmd,bg="black")
-    frame.pack(fill=tk.X, side=tk.TOP)
+    frame.pack(fill=tk.X, side=tk.LEFT)
    
     #b = tk.Button(frame,bg="lightblue", text="SETUP",width=6)
     #b.bind("<Button>",Xevent(fix=fix,elem=b).cb)
@@ -618,7 +620,7 @@ def draw_setup(gui,xframe):
 
 
 
-def draw_live(gui,xframe):
+def draw_live(gui,xframe,data):
     frame_cmd=xframe
     i=0
     c=0