EXEC.py 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. import json
  2. import time
  3. import sys
  4. import tkinter as tk
  5. import traceback
  6. import _thread as thread
  7. import __main__ as MAIN
  8. sys.path.insert(0,"/opt/LibreLight/Xdesk/")
  9. INIT_OK = 1
  10. IS_GUI = 0
  11. import tkgui.draw as draw
  12. #import lib.mytklib as mytklib
  13. import lib.libtk as libtk
  14. #import lib.tkevent as tkevent
  15. #import lib.fixlib as fixlib
  16. from lib.cprint import cprint
  17. try:
  18. import memcache
  19. mc = memcache.Client(['127.0.0.1:11211'], debug=0)
  20. except:
  21. mc = None
  22. class Refresher():
  23. def __init__(self,*arg,**args):
  24. print(self,"__init__",arg,args)
  25. def reset(*arg,**args):
  26. print(self,"reset",arg,args)
  27. class MASTER():
  28. def __init__(self,*arg,**args):
  29. print(self,"__init__",arg,args)
  30. #self.refresh_fix = Refresher()
  31. def refresh_fix(self,*arg,**args):# = Refresher()
  32. print(self,"refresh_fix",arg,args)
  33. def refresh_fix(*arg,**args):
  34. print("refresh_fix",arg,args)
  35. class Refresher_fix():
  36. def __init__(self,*arg,**args):
  37. print(self,"init",arg,args)
  38. def reset(self,*arg,**args):
  39. print(self,"reset",arg,args)
  40. refresher_fix = Refresher_fix()
  41. class Modes():
  42. def __init__(self,*arg,**args):
  43. print("refresh_fix",arg,args)
  44. def val(self,*arg,**args):
  45. print("val",arg,args)
  46. master = MASTER() #{}
  47. modes = Modes()
  48. import tkinter as tk
  49. class Exec():
  50. def __init__(self):
  51. self.val_exec = {}
  52. for i in range(512):
  53. k=i #"ABC-{}".format(i+1)
  54. self.val_exec[k] = {"NAME":"XX"}
  55. EXEC = Exec()
  56. class Gui():
  57. def __init__(self):
  58. self.elem_exec = []
  59. def _refresh_exec(self,*arg,**args):
  60. self.A_refresh_exec(arg,args)
  61. #self.B_refresh_exec(arg,args)
  62. def A_refresh_exec(self,*arg,**args):
  63. print("Gui",arg,args)
  64. nr = 14-1
  65. METAS = []
  66. for i in range(512):
  67. nr = i #+1
  68. try:
  69. data = mc.get("EXEC-META-"+str(nr)) #,json.dumps(index))
  70. data = json.loads(data)
  71. METAS.append(data)
  72. except Exception as e:
  73. print(" ER1R mc...",e)
  74. #try:
  75. # y = mc.get("EXEC-"+str(nr)) #,json.dumps(index))
  76. # _jdata = json.loads(y)
  77. # keys = _jdata.keys()
  78. #except Exception as e:
  79. # print(" ER2R mc...",e,nr)
  80. for nr,b in enumerate( self.elem_exec): #[nr]
  81. _bg = "grey"
  82. _ba = "grey"
  83. _bg = "grey"
  84. _fg = "#555" #darkgrey"
  85. _text = "0 N/V 0\n N/V"
  86. txt = "None/nNone"
  87. txt1 = "None/nNone"
  88. out = {} # default
  89. out["fx"] = ""
  90. out["bg"] = _bg # "grey"
  91. out["ba"] = _ba #"grey"
  92. out["fg"] = _fg
  93. out["text"] = _text #"? "+str(nr+1)
  94. META = {'LABEL': 'ERR', 'LEN': 2, 'CFG': {}}
  95. META["CFG"] = {'FADE': 3.0, 'DEALY': 0, 'DELAY': 4.0, 'BUTTON': 'ON', 'HTP-MASTER': 100, 'SIZE-MASTER': 100, 'SPEED-MASTER': 100, 'OFFSET-MASTER': 100, 'OUT-FADE': 10.0}
  96. try:
  97. META = METAS[nr]
  98. label = "{} {} {}\n{}".format(nr+1,META["CFG"]["BUTTON"],META["LEN"],META["LABEL"])
  99. out["text"] = str(label)
  100. LEN = META["LEN"] #int(label.split("\n")[0].split()[-1])
  101. if LEN: # >= 3:
  102. _bg = "orange" #yellow"
  103. _fg = "black" #grey"
  104. except Exception as e:
  105. print(" ER4R",e,nr)
  106. time.sleep(0.001)
  107. try:
  108. txt1 = META["CFG"]["BUTTON"]
  109. except:
  110. pass
  111. if META["LEN"]:
  112. _fg = "black"
  113. _bg = "gold"
  114. _ba = "#ffaa55"
  115. if "SEL" in txt1:
  116. #_bg = "blue"
  117. #_fg = "blue"
  118. _bg = "#77f"
  119. elif "ON" in txt1:
  120. _fg = "#040"
  121. _fg = "black"
  122. elif "GO" in txt1:
  123. _fg = "#555"
  124. _fg = "black"
  125. if "FL" in txt1:
  126. _fg = "#00e"
  127. out["fg"] = _fg #= "#00e"
  128. out["bg"] = _bg #= "#00e"
  129. cfg = out
  130. b = self.elem_exec[nr]
  131. b.configure(fg=cfg["fg"],bg=cfg["bg"],activebackground=cfg["ba"],text=cfg["text"],fx=cfg["fx"])
  132. def B_refresh_exec(self,*arg,**args):
  133. #def OLD_get_exec_btn_cfg(nr):
  134. k = nr
  135. if 1:
  136. _bg = "grey"
  137. _ba = "grey"
  138. _fg = "lightgrey"
  139. _text = "N/V"
  140. txt = "None/nNone"
  141. txt1 = "None/nNone"
  142. if nr >= 0:
  143. if nr != k:
  144. return #continue
  145. label = ""
  146. if k in EXEC.label_exec:
  147. label = EXEC.label_exec[k]
  148. ifval = 0
  149. fx_only = 0
  150. fx_color = 0
  151. if k in EXEC.val_exec and len(EXEC.val_exec[k]) :
  152. sdata = EXEC.val_exec[k]
  153. BTN="go"
  154. if "CFG" in sdata:#["BUTTON"] = "GO"
  155. if "BUTTON" in sdata["CFG"]:
  156. BTN = sdata["CFG"]["BUTTON"]
  157. txt="{} {} {}\n{}".format(k+1,BTN,len(sdata)-1,label)
  158. _text = txt
  159. if len(sdata) > 1:
  160. ifval = 1
  161. val_color = 0
  162. for fix in sdata:
  163. if fix == "CFG":
  164. continue
  165. for attr in sdata[fix]:
  166. if "FX2" in sdata[fix][attr]:
  167. if sdata[fix][attr]["FX2"]:
  168. fx_color = 1
  169. if "FX" in sdata[fix][attr]:
  170. if sdata[fix][attr]["FX"]:
  171. fx_color = 1
  172. if "VALUE" in sdata[fix][attr]:
  173. if sdata[fix][attr]["VALUE"] is not None:
  174. val_color = 1
  175. if val_color:
  176. _bg = "gold"
  177. _ba = "#ffaa55"
  178. if fx_color:
  179. _fg = "blue"
  180. else:
  181. if fx_color:
  182. fx_only = 1
  183. else:
  184. _bg = "grey"
  185. _ba = "#aaa"
  186. if "\n" in txt:
  187. txt1 = txt.split("\n")[0]
  188. _fg = "black"
  189. if ifval:
  190. if fx_only:
  191. _bg = "cyan"
  192. _ba = "#55d4ff"
  193. if "SEL" in txt1:
  194. _bg = "#77f"
  195. else:
  196. _bg = "grey"
  197. _fg = "darkgrey"
  198. if "SEL" in txt1:
  199. _fg = "blue"
  200. elif "ON" in txt1:
  201. _fg = "#040"
  202. elif "GO" in txt1:
  203. _fg = "#555"
  204. if "FL" in txt1:
  205. _fg = "#00e"
  206. out = {} # default
  207. out["fx"] = ""
  208. out["bg"] = "lightgrey"
  209. out["ba"] = "grey"
  210. out["fg"] = "grey"
  211. out["text"] = "?"
  212. out["fx"] = fx_color
  213. out["bg"] = _bg
  214. out["ba"] = _ba
  215. out["fg"] = _fg
  216. out["text"] = _text
  217. return out
  218. def exec_go(*arg,**args):
  219. print("Gui",arg,args)
  220. gui = Gui()
  221. root = tk.Tk()
  222. #root.withdraw() # do not draw
  223. #root.resizable(1,1)
  224. root.tk_setPalette(background='#bbb', foreground='black', activeBackground='#aaa', activeForeground="black")
  225. defaultFont = tk.font.nametofont("TkDefaultFont")
  226. #cprint(defaultFont)
  227. defaultFont.configure(family="FreeSans",
  228. size=10,
  229. weight="bold")
  230. # MAIN MENUE
  231. #try:
  232. # self.tk.iconphoto(False, tk.PhotoImage(file=ico_path+"main.png"))
  233. #except Exception as e:
  234. # print(" Exception GUIWindowContainer.__init__",e)
  235. #xframe=root
  236. xframe = libtk.ScrollFrame(root,width=820,height=400,bd=1,bg="black",head=None,foot=None)
  237. draw.draw_exec(gui,xframe,EXEC)
  238. #xframe.pack()
  239. root.title("DEMO TK-EXEC 2")
  240. def _refr_loop():
  241. time.sleep(3)
  242. while 1:
  243. gui._refresh_exec()
  244. time.sleep(3)
  245. thread.start_new_thread(_refr_loop,())
  246. root.mainloop()