Browse Source

cleanup: GUI ... reopen WINDOW

micha 1 year ago
parent
commit
5d0dee2859
4 changed files with 389 additions and 229 deletions
  1. 189 84
      _LibreLightDesk.py
  2. 1 0
      init/40-TKSDL.sh
  3. 106 18
      tkgui/GUI.py
  4. 93 127
      tkgui/draw.py

+ 189 - 84
_LibreLightDesk.py

@@ -1339,35 +1339,52 @@ class Xevent_fx():
             cprint(''.join(traceback.format_exception(None, e, e.__traceback__)),color="red")
         return 1 
         
+
+window_list_buffer = {}
+
 def save_window_position(save_as=""):
+    global window_list_buffer
     print()
     cprint("save_window_position",[save_as])
+
+    base = Base()
+    fname = HOME+"/LibreLight"
+    fname = base.show_path1 +base.show_name 
+    if save_as:
+        fname = save_as 
+    fname +=  "/gui.txt"
+    cprint("- fname",fname)
+
+    for k in window_list_buffer:
+        window_list_buffer[k][0] = 0   
+
+    for k,win in window_manager.windows.items():
+        try:
+            geo = win.tk.geometry()
+            window_list_buffer[k] = [1,k,geo]
+        except Exception as e:
+            cprint("-A save_window_position Exception:",e,color="red")
+
+    lines = ""
+    for k,data in window_list_buffer.items():
+        try:
+            print("-- save:win:pos",k,data)
+            if not data[2]:
+                continue
+            line ="{} {} {}\n"
+            line = line.format(data[0],k,data[2])
+            lines += line
+        except Exception as e:
+            cprint("-A save_window_position Exception:",e,color="red")
+
     try:
-        base = Base()
-        fname = HOME+"/LibreLight"
-        fname = base.show_path1 +base.show_name 
-        if save_as:
-            fname = save_as 
-        fname +=  "/gui.txt"
-        cprint("- fname",fname)
         f = open(fname,"w")
-        for k,win in window_manager.windows.items():
-            try:
-                print("-- save:win:pos",win,k)
-                if not win:
-                    continue
-                #print("d",dir(win))
-                #print("winfo",k,win.tk.geometry())
-                line="{} {}\n".format(k,win.tk.geometry())
-                #print("> ",[line])
-                f.write( line )
-                f.flush()
-            except Exception as e:
-                cprint("- save_window_position Exception:",e,color="red")
+        f.write( lines )
     except Exception as e:
-        cprint("- save_window_position Exception:",e,color="red")
+        cprint("-B save_window_position Exception:",e,color="red")
     finally:
-        f.close()
+        f.close() #f.flush()
+
 
 
 def save_window_position_loop(): # like autosave
@@ -1382,6 +1399,7 @@ def save_window_position_loop(): # like autosave
     thread.start_new_thread(loop,())
 
 def load_window_position(_filter=""):
+    global window_list_buffer
     print()
     cprint("load_window_position",[_filter])
     try:
@@ -1391,12 +1409,22 @@ def load_window_position(_filter=""):
         fname +=  "/gui.txt"
         cprint("- fname:",fname)
         f = open(fname,"r")
+        lines = f.readlines()
+        f.close()
+
         data = {}
-        for line in f.readlines():
+        for line in lines:
             line = line.strip()
+            print(line)
             if " " in line:
-                k,geo = line.split(" ",1)
-                data[k] = geo
+                if line.count(" ") >= 2:
+                    show,k,geo = line.split(" ",2)
+                elif line.count(" ") == 1:
+                    k,geo = line.split(" ",1)
+                    show = 1
+
+                data[k] = [show,k,geo]
+                window_list_buffer[k] = [show,k,geo]
 
         for k,win in window_manager.windows.items():
             if not win:
@@ -1404,12 +1432,14 @@ def load_window_position(_filter=""):
 
             if k not in data:
                 continue
-            w = data[k] 
 
             if _filter:
                 if _filter != k:
                     continue
 
+            w = data[k][2] 
+            
+
             cprint("- set_win_pos","filter:",[_filter],"Name: {:<20}".format(k),w,win)
             try:
                 win.tk.geometry(w)
@@ -2290,7 +2320,8 @@ class MASTER():
                                 if sdata[fix][attr]["VALUE"] is not None:
                                     val_color = 1
 
-                    b.configure(fg= "black")
+                    try:b.configure(fg= "black")
+                    except:pass
                     if val_color:
                         _bg = "gold"
                         _ba = "#ffaa55"
@@ -2370,36 +2401,53 @@ class MASTER():
                 if not elem:
                     continue
 
-                if not attr.startswith("_"):
-                    v2 = row["VALUE"]
-                    _text  = "{} {:0.2f}".format(attr,v2) # ~0.2 sec
-                    if elem["text"] != _text: #"{} {:0.2f}".format(attr,v2)
-                        elem["text"] = _text #"{} {:0.2f}".format(attr,v2)
+                try:
 
-                if row["ACTIVE"]:
-                    if elem["bg"] != "yellow":
-                        elem["bg"] = "yellow"
-                        elem.config(activebackground="yellow")
+                    if not attr.startswith("_"):
+                        v2 = row["VALUE"]
+                        _text  = "{} {:0.2f}".format(attr,v2) # ~0.2 sec
+                        try:
+                            if elem["text"] != _text: #"{} {:0.2f}".format(attr,v2)
+                                elem["text"] = _text #"{} {:0.2f}".format(attr,v2)
+                        except:
+                            cprint("err778",attr,elem)
 
-                    #if "DIM" in sdata["ATTRIBUT"] and len(sdata["ATTRIBUT"]) == 1:
-                    if _dim_in_flag:
-                        c_d+=1
+                    if row["ACTIVE"]:
+                        try:
+                            if elem["bg"] != "yellow":
+                                elem["bg"] = "yellow"
+                                elem.config(activebackground="yellow")
+                        except:
+                            cprint("err778",attr,elem)
+
+                        #if "DIM" in sdata["ATTRIBUT"] and len(sdata["ATTRIBUT"]) == 1:
+                        if _dim_in_flag:
+                            c_d+=1
+                        else:
+                            _c_a += 1
                     else:
-                        _c_a += 1
-                else:
-                    if elem["bg"] != "grey":
-                        elem["bg"] = "grey"
-                        elem.config(activebackground="grey")
-
-                if "FX2" not in row: # insert FX2 excetption
-                    row["FX2"] = OrderedDict()
-                    
-                if row["FX"]:
-                    elem["fg"] = "blue"
-                elif row["FX2"]:
-                    elem["fg"] = "red"
-                else:
-                    elem["fg"] = "black"
+                        try:
+                            if elem["bg"] != "grey":
+                                elem["bg"] = "grey"
+                                elem.config(activebackground="grey")
+                        except:
+                            cprint("err778",attr,elem)
+
+                    if "FX2" not in row: # insert FX2 excetption
+                        row["FX2"] = OrderedDict()
+                        
+                    try:
+                        if row["FX"]:
+                            elem["fg"] = "blue"
+                        elif row["FX2"]:
+                            elem["fg"] = "red"
+                        else:
+                            elem["fg"] = "black"
+                    except:
+                        cprint("err778",attr,elem)
+                except Exception as e:
+                    cprint("EXCEPTON 2406 ",e,color="red")
+                    cprint("err778",attr,elem)
 
             c_a += _c_a
             if _c_a>0:
@@ -3823,6 +3871,7 @@ class Window():
         if exit:
             if self.title == "MAIN":
                save_window_position()
+            
             self.tk.destroy()
         try:
             self.cb("<exit>").cb()
@@ -3941,6 +3990,9 @@ class WindowManager():
         self.nr= 0
         self.first=""
     def new(self,w,name="",obj=None):
+
+        if not w:
+            return
         if not self.first:
             if name:
                 self.first = name
@@ -3975,7 +4027,6 @@ class WindowManager():
             out = self.obj[name]
             #print(out)
             return out
-
     def top(self,name):
         name = str(name)
         for n in self.windows:
@@ -4142,7 +4193,7 @@ class window_create_buffer():
         self.scroll = scroll
         self.gui    = gui
 
-    def create(self):
+    def create(self,hidde=0):
         cprint()
         cprint("window_create_buffer.create()",id(self),self.args["title"],color="green")
 
@@ -4195,6 +4246,10 @@ if __run_main:
     data.append({"text":"COMMAND"})
     data.append({"text":"COLORPICKER","name":"COLOR"})
     data.append({"text":"FX"})
+    data.append({"text":"---"})
+    data.append({"text":"FIXTURE-EDITOR","name":"FIX-EDIT"})
+    #data.append({"text":"CLOCK"})
+    data.append({"text":"CONFIG"})
     gui_menu = GUI_menu(w.tk,data)
 
     window_manager = gui_menu.window_manager #= window_manager
@@ -4209,10 +4264,19 @@ if __run_main:
     cb_ok = None #set_exec_fader_all
     data  = PRESETS
 
+    hidde = 1
+    if name in window_list_buffer:
+        if window_list_buffer[name][0]:
+            hidde = 0
+    else:
+        hidde = 0
     c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok,scroll=1,gui=master)
     window_init_buffer[name] = c
-    w,obj,cb_ok = c.create()
-    window_manager.new(w,name,obj=obj)
+    if hidde:
+        window_manager.new(None,name)
+    else:
+        w,obj,cb_ok = c.create(hidde=hidde)
+        window_manager.new(w,name,obj=obj)
     if cb_ok:
         cb_ok()
     
@@ -4225,46 +4289,79 @@ if __run_main:
     name="CONFIG"
     #w = Window(name,master=0,width=W1,height=H1,left=L1,top=TOP)
     args = {"title":name,"master":0,"width":W1,"height":H1,"left":L1,"top":TOP}
-    w = Window(args)
-    w1 = ScrollFrame(w.tk,width=W1,height=H1)
+    #w = Window(args)
+    #w1 = ScrollFrame(w.tk,width=W1,height=H1)
     #frame_exe = w.tk
-    draw_config(master,w1)#.tk)#Xroot)
-    #draw_enc(master,w.tk)#Xroot)
-    #draw_preset(master,w1)#w.tk)
-    window_manager.new(w,name)
+    #draw_config(master,w1)#.tk)#Xroot)
+    cls = GUI_CONF
+    data = []
+    ##draw_enc(master,w.tk)#Xroot)
+    ##draw_preset(master,w1)#w.tk)
+    #window_manager.new(w,name)
+
+    c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok,gui=master,scroll=1)
+    window_init_buffer[name] = c
+    #w,obj,cb_ok = c.create()
+    #window_manager.new(w,name,obj)
+    window_manager.new(None,name) #,obj)
+
 
     name="DIMMER"
     #w = Window(name,master=0,width=W1,height=H1,left=L1,top=TOP)
     args = {"title":name,"master":0,"width":W1,"height":H1,"left":L1,"top":TOP}
-    w = Window(args)
-    w2 = ScrollFrame(w.tk,width=W1,height=H1)
-    #frame_dim = w1 # w.tk
-    #master.draw_dim(w1.tk)
-    window_manager.new(w,name)
+    #w = Window(args)
+    #w2 = ScrollFrame(w.tk,width=W1,height=H1)
+    ##frame_dim = w1 # w.tk
+    ##master.draw_dim(w1.tk)
+    #window_manager.new(w,name)
+    cls = GUI_DIM
+    #gui_fix.draw(FIXTURES)
+    data = FIXTURES
+    #window_manager.new(w,name)
+
+    c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok,gui=master,scroll=1)
+    window_init_buffer[name] = c
+    w,obj,cb_ok = c.create()
+    window_manager.new(w,name,obj)
+
 
     name="FIXTURES"
     #w = Window(name,master=0,width=W1,height=H1,left=L1,top=TOP)
     args = {"title":name,"master":0,"width":W1,"height":H1,"left":L1,"top":TOP}
-    w = Window(args)
-    w1 = ScrollFrame(w.tk,width=W1,height=H1)
+    #w = Window(args)
+    #w1 = ScrollFrame(w.tk,width=W1,height=H1)
     #frame_fix = w1 #w.tk
     #draw_fix(master,w1,w2)#.tk)
-    gui_fix = GUI_FIX(master,w1,w2)
-    gui_fix.draw(FIXTURES)
-    window_manager.new(w,name)
+    #gui_fix = GUI_FIX(master,w1,w2)
+    cls = GUI_FIX
+    #gui_fix.draw(FIXTURES)
+    data = FIXTURES
+    #window_manager.new(w,name)
+
+    c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok,gui=master,scroll=1)
+    window_init_buffer[name] = c
+    w,obj,cb_ok = c.create()
+    window_manager.new(w,name,obj)
 
 
     name="FIXTURE-EDITOR"
     args = {"title":name,"master":0,"width":W1,"height":H1,"left":L1,"top":TOP}
-    w = Window(args)
+    #w = Window(args)
     #w = Window(name,master=0,width=W1,height=H1,left=L1,top=TOP)
-    w1 = ScrollFrame(w.tk,width=W1,height=H1)
+    #w1 = ScrollFrame(w.tk,width=W1,height=H1)
     data=[]
     #for i in range((24+12)*15):
     for i in range(12*6):
         data.append({"text"+str(i):"test"})
-    GUI_FaderLayout(w1,data)
-    window_manager.new(w,name)
+    #GUI_FaderLayout(w1,data)
+    cls = GUI_FaderLayout
+    #window_manager.new(w,name)
+
+    c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok)
+    window_init_buffer[name] = c
+    #w,obj,cb_ok = c.create()
+    #window_manager.new(w,name,obj)
+    window_manager.new(None,name)
 
     name="MASTER-WING"
     #w = Window(name,master=0,width=730,height=205,left=L1-80,top=TOP+H1-200)
@@ -4352,12 +4449,20 @@ if __run_main:
     name="PATCH"
     #w = Window(name,master=0,width=W1,height=H1,left=L1,top=TOP)
     args = {"title":name,"master":0,"width":W1,"height":H1,"left":L1,"top":TOP}
-    w = Window(args)
-    w1 = ScrollFrame(w.tk,width=W1,height=H1)
-    main_preset_frame = w1
-    gui_patch = GUI_PATCH(master,main_preset_frame)
-    gui_patch.draw(FIXTURES)
-    window_manager.new(w,name)
+    #w = Window(args)
+    #w1 = ScrollFrame(w.tk,width=W1,height=H1)
+    #main_preset_frame = w1
+    #gui_patch = GUI_PATCH(master,main_preset_frame)
+    cls = GUI_PATCH
+    #gui_patch.draw(FIXTURES)
+    data = FIXTURES
+    #window_manager.new(w,name)
+
+    c = window_create_buffer(args=args,cls=cls,data=data,cb_ok=cb_ok,gui=master,scroll=1)
+    window_init_buffer[name] = c
+    #w,obj,cb_ok = c.create()
+    #window_manager.new(w,name,obj)
+    window_manager.new(None,name) #,obj)
 
     #LibreLightDesk
     name="COLORPICKER"

+ 1 - 0
init/40-TKSDL.sh

@@ -1,5 +1,6 @@
 #!/usr/bin/bash
 set -e
+exit
 
 path="/opt/LibreLight"
 SES="TKSDL.py"

+ 106 - 18
tkgui/GUI.py

@@ -36,7 +36,7 @@ class LOAD_FIXTURE():
                 self.master.load_MH2()
             else:
                 self.master.load_DIM()
-            print(dir(self.master))
+            #print(dir(self.master))
 
 class TableFrame():
     def __init__(self,root, width=50,height=100,bd=1):
@@ -206,6 +206,49 @@ class GUIHandler():
 
 
 
+class X_CLOCK():
+    def __init__(self):
+        self._last_label_id = 1
+        self._label_ring = [ "labelA","labelB"]
+
+    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")
+        while 1:
+            tag = self._label_ring[self._last_label_id]
+            #b["text"] = 
+            d = time.strftime("%Y-%m-%d")
+            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()
+    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")
+        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,))
+
 
 
 
@@ -266,32 +309,72 @@ def draw_sub_dim(gui,fix,data,c=0,r=0,frame=None):
 
 
 
+class GUI_DIM():
+    def __init__(self,gui,xframe,data):
+        self.gui = gui
+        self.data = data
+        self.xframe = xframe
+        self.draw()
+    def draw(self):
+        FIXTURES = self.data
+        gui=self.gui
+        xframe=self.xframe
+
+        r=0
+        c=0
+        frame_dim=xframe
+        for widget in xframe.winfo_children():
+            widget.destroy()
+
+
+        root = frame_dim
+        dim_frame = tk.Frame(root,bg="black")
+        dim_frame.pack(fill=tk.X, side=tk.TOP)
+
+        i=0
+        c=0
+        r=0
+        dim_end=0
+        for fix in FIXTURES.fixtures:
+            i+=1
+            data = FIXTURES.fixtures[fix]
+            if fix not in gui.elem_attr:
+                gui.elem_attr[fix] = {}
+            
+            kix = []
+            for ix in data["ATTRIBUT"].keys():
+                if not ix.startswith("_") and not ix.endswith("-FINE"):
+                    kix.append(ix)
+
+            if "DIM" in kix and len(kix) == 1:
+                c,r=draw_sub_dim(gui,fix,data,c=c,r=r,frame=dim_frame)
+                continue
+
+            break
+
+
 
 class GUI_FIX():
-    def __init__(self,gui,xframe,yframe=None):
+    def __init__(self,gui,xframe,data):
         self.gui = gui
+        self.data = data
         self.xframe = xframe
-        self.yframe = yframe
-    def draw(self,FIXTURES):
+        self.draw()
+    def draw(self):
+        FIXTURES = self.data
         gui=self.gui
         xframe=self.xframe
-        yframe=self.yframe
+       
 
         r=0
         c=0
         frame_dim=xframe
-        if yframe:
-            frame_dim=yframe
-            for widget in yframe.winfo_children():
-                widget.destroy()
         frame_fix=xframe
         for widget in xframe.winfo_children():
             widget.destroy()
 
 
         root = frame_dim
-        dim_frame = tk.Frame(root,bg="black")
-        dim_frame.pack(fill=tk.X, side=tk.TOP)
         root = frame_fix
         fix_frame = tk.Frame(root,bg="black")
         fix_frame.pack(fill=tk.X, side=tk.TOP)
@@ -302,23 +385,18 @@ class GUI_FIX():
         for fix in FIXTURES.fixtures:
             i+=1
             data = FIXTURES.fixtures[fix]
-            #print("draw_fix", fix ,data )
             if fix not in gui.elem_attr:
                 gui.elem_attr[fix] = {}
             
-            #if (len(data["ATTRIBUT"].keys()) <= 1):
-            #    c,r=draw_sub_dim(gui,fix,data,c=c,r=r,frame=dim_frame)
             kix = []
             for ix in data["ATTRIBUT"].keys():
                 if not ix.startswith("_") and not ix.endswith("-FINE"):
                     kix.append(ix)
 
             if "DIM" in kix and len(kix) == 1:
-                c,r=draw_sub_dim(gui,fix,data,c=c,r=r,frame=dim_frame)
                 continue
 
 
-
             if not dim_end:
                 dim_end=1
                 c=0
@@ -450,10 +528,14 @@ class _SET_PATCH():
 
 
 class GUI_PATCH():
-    def __init__(self,gui,yframe):
+    #def __init__(self,gui,yframe):
+    def __init__(self,gui,yframe,data):
         self.gui = gui
         self.yframe = yframe
-    def draw(self,FIXTURES): #,gui,yframe):
+        self.data = data
+        self.draw()
+    def draw(self): #,gui,yframe):
+        FIXTURES = self.data
         gui = self.gui
         yframe = self.yframe
 
@@ -723,6 +805,10 @@ class GUI_FaderLayout():
         self.b["command"] = self.save_fixture
         self.b.pack( side=tk.LEFT)
         
+        self.b = tk.Button(self.frame,bg="lightblue",text="SAVE AS", width=5)#,command=self.event) #bv.change_dmx)
+        self.b["command"] = self.save_as_fixture
+        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)
 
@@ -775,6 +861,8 @@ class GUI_FaderLayout():
         dialog.askstring("FIXTURE NAME:","NAME:",initialvalue=txt)
 
 
+    def save_as_fixture(self,event=None):
+        print("save_as_fix",self,event)
     def save_fixture(self,event=None):
         print("save_fix",self,event)
     def open_fixture_list(self):

+ 93 - 127
tkgui/draw.py

@@ -81,7 +81,7 @@ def draw_exec(gui,xframe,PRESETS):
 
 
 def draw_preset(gui,xframe,PRESETS):
-
+    
     i=0
     c=0
     r=0
@@ -303,96 +303,105 @@ def draw_colorpicker(gui,xframe,FIXTURES,master):
 
 
 
-def draw_config(gui,xframe):
-    for widget in xframe.winfo_children():
-        widget.destroy()
-
-    i=0
-    c=0
-    r=0
-    root2 = xframe
+#def draw_config(gui,xframe):
+class GUI_CONF():
+    def __init__(self,gui,xframe,data):
+        self.gui = gui
+        self.data = data
+        self.xframe = xframe
+        self.draw()
+    def draw(self):
+        gui =self.gui
+        xframe = self.xframe
+        for widget in xframe.winfo_children():
+            widget.destroy()
 
-    frame = tk.Frame(root2,bg="#222")
-    frame.pack(fill="both", expand=1,side=tk.TOP)
+        i=0
+        c=0
+        r=0
+        root2 = xframe
 
+        frame = tk.Frame(root2,bg="#222")
+        frame.pack(fill="both", expand=1,side=tk.TOP)
 
-    b = tk.Label(frame, text="",bg="#222")
-    b.grid(row=r, column=c, sticky=tk.W+tk.E)
-    c+=0
-    r+=1
-    b = tk.Label(frame, text="",bg="#222")
-    b.grid(row=r, column=c, sticky=tk.W+tk.E)
-    c=0
-    r+=1
-    b = tk.Label(frame, text="",bg="#222")
-    b.grid(row=r, column=c, sticky=tk.W+tk.E)
-    c=1
-    r+=1
-    
-    
-    b = tk.Label(frame, text="_________")
-    b.grid(row=r, column=c, sticky=tk.W+tk.E)
-    c+=1
-    b = tk.Entry(frame,bg="grey", text="",width=50)
-    gui.entry = b
-    #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
-    #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
-    b.grid(row=r, column=c, sticky=tk.W+tk.E)
-    b.insert("end","" ) #d0:127,fx241:sinus:50:50:10,fx243:cosinus:50:50:10,d201:127,fx201:sinus:50:300:10")
-    r+=1
-    b = tk.Entry(frame,bg="grey", text="",width=20)
-    gui.entry2 = b
-    #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT2").cb)
-    #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT2").cb)
-    b.grid(row=r, column=c, sticky=tk.W+tk.E)
-    b.insert("end","d1:0:4")
-    r+=1
-    b = tk.Entry(frame,bg="grey", text="",width=20)
-    gui.entry3 = b
-    #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT3").cb)
-    ##b.bind("<B1-Motion>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT3").cb)
-    #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT3").cb)
-    b.grid(row=r, column=c, sticky=tk.W+tk.E)
-    b.insert("end","fx:alloff:::")
 
-    r+=1
+        b = tk.Label(frame, text="",bg="#222")
+        b.grid(row=r, column=c, sticky=tk.W+tk.E)
+        c+=0
+        r+=1
+        b = tk.Label(frame, text="",bg="#222")
+        b.grid(row=r, column=c, sticky=tk.W+tk.E)
+        c=0
+        r+=1
+        b = tk.Label(frame, text="",bg="#222")
+        b.grid(row=r, column=c, sticky=tk.W+tk.E)
+        c=1
+        r+=1
+        
+        
+        b = tk.Label(frame, text="_________")
+        b.grid(row=r, column=c, sticky=tk.W+tk.E)
+        c+=1
+        b = tk.Entry(frame,bg="grey", text="",width=50)
+        gui.entry = b
+        #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
+        #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
+        b.grid(row=r, column=c, sticky=tk.W+tk.E)
+        b.insert("end","" ) #d0:127,fx241:sinus:50:50:10,fx243:cosinus:50:50:10,d201:127,fx201:sinus:50:300:10")
+        r+=1
+        b = tk.Entry(frame,bg="grey", text="",width=20)
+        gui.entry2 = b
+        #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT2").cb)
+        #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT2").cb)
+        b.grid(row=r, column=c, sticky=tk.W+tk.E)
+        b.insert("end","d1:0:4")
+        r+=1
+        b = tk.Entry(frame,bg="grey", text="",width=20)
+        gui.entry3 = b
+        #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT3").cb)
+        ##b.bind("<B1-Motion>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT3").cb)
+        #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT3").cb)
+        b.grid(row=r, column=c, sticky=tk.W+tk.E)
+        b.insert("end","fx:alloff:::")
 
-    b = tk.Label(frame, text="",bg="#222")
-    b.grid(row=r, column=c, sticky=tk.W+tk.E)
-    c+=0
-    r+=1
-    b = tk.Label(frame, text="",bg="#222")
-    b.grid(row=r, column=c, sticky=tk.W+tk.E)
-    c+=0
-    r+=1
-    b = tk.Label(frame, text=" BATCH COMMAND ")
-    b.grid(row=r, column=c, sticky=tk.W+tk.E)
-    c+=0
-    r+=1
-    b1 = tk.Entry(frame,bg="grey", text="",width=50)
-    #gui.entry = b
-    #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
-    #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
-    b1.grid(row=r, column=c, sticky=tk.W+tk.E)
-    b1.insert("end","fix 1-100 patch @ 2.120")
-    r+=1
+        r+=1
 
-    b = tk.Label(frame, text="",bg="#222")
-    b.grid(row=r, column=c, sticky=tk.W+tk.E)
-    c+=0
-    r+=1
-    b = tk.Label(frame, text=" BATCH COMMAND ")
-    b.grid(row=r, column=c, sticky=tk.W+tk.E)
-    c+=0
-    r+=1
-    b2 = tk.Entry(frame,bg="grey", text="",width=50)
-    #gui.entry = b
-    #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
-    #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
-    b2.grid(row=r, column=c, sticky=tk.W+tk.E)
-    b2.insert("end","SELECT 33-61 PAN,TILT")
+        b = tk.Label(frame, text="",bg="#222")
+        b.grid(row=r, column=c, sticky=tk.W+tk.E)
+        c+=0
+        r+=1
+        b = tk.Label(frame, text="",bg="#222")
+        b.grid(row=r, column=c, sticky=tk.W+tk.E)
+        c+=0
+        r+=1
+        b = tk.Label(frame, text=" BATCH COMMAND ")
+        b.grid(row=r, column=c, sticky=tk.W+tk.E)
+        c+=0
+        r+=1
+        b1 = tk.Entry(frame,bg="grey", text="",width=50)
+        #gui.entry = b
+        #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
+        #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
+        b1.grid(row=r, column=c, sticky=tk.W+tk.E)
+        b1.insert("end","fix 1-100 patch @ 2.120")
+        r+=1
+
+        b = tk.Label(frame, text="",bg="#222")
+        b.grid(row=r, column=c, sticky=tk.W+tk.E)
+        c+=0
+        r+=1
+        b = tk.Label(frame, text=" BATCH COMMAND ")
+        b.grid(row=r, column=c, sticky=tk.W+tk.E)
+        c+=0
+        r+=1
+        b2 = tk.Entry(frame,bg="grey", text="",width=50)
+        #gui.entry = b
+        #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
+        #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
+        b2.grid(row=r, column=c, sticky=tk.W+tk.E)
+        b2.insert("end","SELECT 33-61 PAN,TILT")
 
-    root2.pack(fill="both",expand=1,side="top")
+        root2.pack(fill="both",expand=1,side="top")
 
 
 
@@ -606,49 +615,6 @@ def draw_setup(gui,xframe):
 
 
 
-class X_CLOCK():
-    def __init__(self):
-        self._last_label_id = 1
-        self._label_ring = [ "labelA","labelB"]
-
-    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")
-        while 1:
-            tag = self._label_ring[self._last_label_id]
-            #b["text"] = 
-            d = time.strftime("%Y-%m-%d")
-            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()
-    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")
-        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,))
-