Browse Source

extract tk Refresher

micha 10 months ago
parent
commit
e72627791d
4 changed files with 86 additions and 70 deletions
  1. 14 63
      _LibreLightDesk.py
  2. 0 2
      lib/jsbc.py
  3. 6 5
      lib/tkevent.py
  4. 66 0
      lib/tkrefresh.py

+ 14 - 63
_LibreLightDesk.py

@@ -1066,12 +1066,12 @@ class MASTER():
         cprint("__del__",self)
         
     def refresh_exec(self):
-        refresher_exec.reset() # = Refresher()
+        refresher_exec.reset() # = tkrefresh.Refresher()
 
     def _refresh_exec(self,nr=-1):
         s = time.time()
         cprint("EXEC.refresh_exec()")
-        refresher_exec.reset() # = Refresher()
+        refresher_exec.reset() # = tkrefresh.Refresher()
         
         self._XX +=1
         self._nr_ok = 0
@@ -1092,7 +1092,7 @@ class MASTER():
 
         time.sleep(0.01)
     def refresh_fix(self):
-        refresher_fix.reset() # = Refresher()
+        refresher_fix.reset() # = tkrefresh.Refresher()
     def _refresh_fix(self):
         cprint("_refresh_fix")
         s=time.time(); _XXX=0
@@ -1533,7 +1533,7 @@ class WindowManager():
                 global _ENCODER_WINDOW 
                 _ENCODER_WINDOW = w
             if name in ["DIMMER","FIXTURES"]:
-                refresher_fix.reset() # = Refresher()
+                refresher_fix.reset() # = tkrefresh.Refresher()
 
     def _check_window_is_open(self,name):
         try:
@@ -1608,80 +1608,25 @@ LOAD_SHOW()
 master = MASTER()
 
 
-class Refresher():
-    def __init__(self):
-        self.time = time.time()
-        self.time_max = time.time()
-        self.time_delta = 15
-        self.update = 1
-        self.name = "name" # exec
-        self.cb = None #self.dummy_cb
-    def dummy_cb(self):
-        cprint("dummy_cd()",time.time()-self.time)
-
-    def reset(self):
-        self.time = time.time() 
-        self.update = 1
-
-    def refresh(self):
-        if self.update: 
-            if self.time+self.time_delta < time.time():
-                self._refresh()
-        else:
-            self.time = time.time() 
-
-    def _refresh(self):
-        cprint("_refresh()",self.name,self)
-        if not INIT_OK:
-            return
-
-        self.time_max = time.time()
-        self.time     = time.time()
-        self.update = 0
-        try:
-            if self.cb:
-                self.cb()
-            else:
-                self.dummy_cb()
-        except Exception as e:
-            cprint("_refresh except:",e,"cb:",self.cb)
-            traceback.print_exc()
-            cprint()
-        cprint("t=",self.time_max- time.time())
-
-    def loop(self,args={}):
-        while 1:
-            try:
-                if INIT_OK:
-                    self.refresh()
-                    #tkinter.Tk.update_idletasks(gui_menu_gui.tk)
-            except Exception as e:
-                cprint("loop exc",e)
-                traceback.print_exc()
-                cprint("== cb EXCEPT",e,color="red")
-                cprint("Error on line {}".format(sys.exc_info()[-1].tb_lineno),color="red")
-                cprint(''.join(traceback.format_exception(None, e, e.__traceback__)),color="red")
-
-            time.sleep(0.2)
 
 print("main",__name__)
 
+import lib.tkrefresh as tkrefresh
 
 
-
-refresher_fix = Refresher()
+refresher_fix = tkrefresh.Refresher()
 refresher_fix.time_delta = 0.50 
 refresher_fix.name = "fix"
 refresher_fix.reset() 
 refresher_fix.cb = master._refresh_fix
 
-refresher_exec = Refresher()
+refresher_exec = tkrefresh.Refresher()
 refresher_exec.time_delta = 10 #0
 refresher_exec.name = "exec"
 refresher_exec.reset() 
 refresher_exec.cb = master._refresh_exec
 
-refresher_exec = Refresher()
+refresher_exec = tkrefresh.Refresher()
 refresher_exec.time_delta = 10 #0
 refresher_exec.name = "exec-fader"
 refresher_exec.reset() 
@@ -1801,6 +1746,12 @@ if __run_main:
     master._refresh_fix()
 
 
+
+
+
+
+
+
     # =======================================================================
     name="EXEC"
     args = {"title":name,"master":0,"width":W1,"height":H1,"left":L1,"top":TOP}

+ 0 - 2
lib/jsbc.py

@@ -44,8 +44,6 @@ def JSCB(x,sock=None):
                     #print(dir(cb))
                     #event.num = enum
 
-                    #MAIN.master.refresh_fix() # delayed
-                    #refresher_fix.reset() # = Refresher()
                     #cb.cb(event)
                 if "CLEAR" == msg["event"]:
                     MAIN.FIXTURES.clear()

+ 6 - 5
lib/tkevent.py

@@ -12,6 +12,7 @@ import lib.baselib as baselib
 import lib.fxlib as fxlib
 import lib.libtk as libtk
 import tkgui.dialog as dialoglib
+import lib.tkrefresh as tkrefresh
 
 dialog = dialoglib.Dialog()
 
@@ -230,18 +231,18 @@ class tk_event():
         if self.mode == "ENCODER":
             if self._encoder(event):
                 MAIN.master.refresh_fix() # delayed
-                MAIN.refresher_fix.reset() # = Refresher()
+                MAIN.refresher_fix.reset() # = tkrefresh.Refresher()
 
         if self.mode == "ENCODER2":
             if self._encoder(event):
                 MAIN.master.refresh_fix() # delayed
-                MAIN.refresher_fix.reset() # = Refresher()
+                MAIN.refresher_fix.reset() # = tkrefresh.Refresher()
 
         if self.mode == "INVERT":
             cprint("INVERT",event)
             if self._encoder(event):
                 MAIN.master.refresh_fix() # delayed
-                MAIN.refresher_fix.reset() # = Refresher()
+                MAIN.refresher_fix.reset() # = tkrefresh.Refresher()
 
     def _encoder(self,event):
 
@@ -362,7 +363,7 @@ class tk_event():
                             self.data.exec_go(nr,xfade=0,event=event,val=255,button="go")
                             MAIN.modes.val("EDIT", 0)
                             MAIN.master.refresh_fix()
-                            MAIN.refresher_fix.reset() # = Refresher()
+                            MAIN.refresher_fix.reset() # = tkrefresh.Refresher()
 
                         elif MAIN.modes.val("SELECT"):
                             self.data.exec_select(nr)
@@ -372,7 +373,7 @@ class tk_event():
                         self.data.exec_go(nr,xfade=0,event=event,val=0)
                         #cprint(" == "*10)
                         MAIN.master.refresh_fix()
-                        MAIN.refresher_fix.reset() # = Refresher()
+                        MAIN.refresher_fix.reset() # = tkrefresh.Refresher()
 
                         
                 if event.num == 3:

+ 66 - 0
lib/tkrefresh.py

@@ -0,0 +1,66 @@
+#!/usr/bin/python3
+
+import time
+import sys
+from lib.cprint import cprint
+import traceback
+
+import __main__ as MAIN
+    
+
+
+
+class Refresher():
+    def __init__(self):
+        self.time = time.time()
+        self.time_max = time.time()
+        self.time_delta = 15
+        self.update = 1
+        self.name = "name" # exec
+        self.cb = None #self.dummy_cb
+    def dummy_cb(self):
+        cprint("dummy_cd()",time.time()-self.time)
+
+    def reset(self):
+        self.time = time.time() 
+        self.update = 1
+
+    def refresh(self):
+        if self.update: 
+            if self.time+self.time_delta < time.time():
+                self._refresh()
+        else:
+            self.time = time.time() 
+
+    def _refresh(self):
+        cprint("_refresh()",self.name,self)
+        if not MAIN.INIT_OK:
+            return
+
+        self.time_max = time.time()
+        self.time     = time.time()
+        self.update = 0
+        try:
+            if self.cb:
+                self.cb()
+            else:
+                self.dummy_cb()
+        except Exception as e:
+            cprint("_refresh except:",e,"cb:",self.cb,color="red")
+            traceback.print_exc()
+            cprint()
+        cprint("t=",self.time_max- time.time())
+
+    def loop(self,args={}):
+        while 1:
+            try:
+                if MAIN.INIT_OK:
+                    self.refresh()
+                    #tkinter.Tk.update_idletasks(gui_menu_gui.tk)
+            except Exception as e:
+                traceback.print_exc()
+                cprint("== cb EXCEPT",e,color="red")
+                cprint("Error on line {}".format(sys.exc_info()[-1].tb_lineno),color="red")
+                cprint(''.join(traceback.format_exception(None, e, e.__traceback__)),color="red")
+
+            time.sleep(0.2)