draw.py 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694
  1. import tkinter as tk
  2. import traceback
  3. from __main__ import *
  4. import lib.mytklib as mytklib
  5. def draw_command(gui,xframe):
  6. frame_cmd=xframe
  7. i=0
  8. c=0
  9. r=0
  10. frame = tk.Frame(frame_cmd,bg="black")
  11. frame.pack(fill=tk.X, side=tk.TOP)
  12. # b = tk.Button(frame,bg="lightblue", text="COMM.",width=6)
  13. #b.bind("<Button>",Xevent(fix=fix,elem=b).cb)
  14. #b.grid(row=r, column=c, sticky=tk.W+tk.E)
  15. #r+=1
  16. c+=1
  17. for comm in gui.commands.commands:
  18. if comm == "\n":
  19. c=0
  20. r+=1
  21. continue
  22. v=0
  23. b = tk.Button(frame,bg="lightgrey", text=str(comm),width=6,height=2)
  24. if comm not in gui.commands.elem:
  25. gui.commands.elem[comm] = b
  26. gui.commands.val[comm] = 0
  27. if comm == "BLIND":
  28. b["bg"] = "grey"
  29. myTip = Hovertip(b,'BLIND MODE\nNO CHANGE on DMX-OUTPUT')
  30. if comm == "CLEAR":
  31. b["bg"] = "grey"
  32. myTip = Hovertip(b,'CLEAR ALL SELECTED\nFIXTURES ATTRIBUTES')
  33. if comm == "REC-FX":
  34. b["bg"] = "grey"
  35. myTip = Hovertip(b,'RECORD ONLY FX\nINTO EXEC')
  36. if comm == "FADE":
  37. b["bg"] = "green"
  38. myTip = Hovertip(b,'adjust fade time')
  39. if comm == "S-KEY":
  40. b["bg"] = "green"
  41. myTip = Hovertip(b,'keyboard short-key\non or off')
  42. if comm == "FX OFF":
  43. b["bg"] = "magenta"
  44. if comm == "SIZE:":
  45. b["text"] = "SIZE:{:0.0f}".format(fx_prm["SIZE"])
  46. if comm == "SPEED:":
  47. b["text"] = "SPEED:{:0.0f}".format(fx_prm["SPEED"])
  48. if comm == "DELAY":
  49. b["text"] = "FADE:\n{:0.02f}".format(DELAY.val())
  50. if comm == "FADE":
  51. b["text"] = "FADE:\n{:0.02f}".format(FADE.val())
  52. if comm == "START:":
  53. b["text"] = "START:{:0.0f}".format(fx_prm["START"])
  54. if comm == "OFFSET:":
  55. b["text"] = "OFFSET:{:0.0f}".format(fx_prm["OFFSET"])
  56. if comm == "FX-X:":
  57. b["text"] = "FX-X:{}".format(fx_prm["FX-X"])
  58. if comm == "BASE:":
  59. b["text"] = "BASE:{}".format(fx_prm["BASE"])
  60. b.bind("<Button>",Xevent(fix=0,elem=b,attr=comm,data=gui,mode="COMMAND").cb)
  61. if comm:
  62. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  63. c+=1
  64. if c >=8:
  65. c=0
  66. r+=1
  67. def draw_exec(gui,xframe,PRESETS):
  68. draw_preset(gui,xframe,PRESETS)
  69. def draw_preset(gui,xframe,PRESETS):
  70. i=0
  71. c=0
  72. r=0
  73. root = xframe
  74. frame = tk.Frame(root,bg="black")
  75. frame.pack(fill=tk.X, side=tk.TOP)
  76. #time.sleep(0.1)
  77. gui.elem_presets = {}
  78. i=0
  79. for k in PRESETS.val_presets:
  80. if i%(10*8)==0 or i ==0:
  81. c=0
  82. #b = tk.Label(frame,bg="black", text="" )
  83. b = tk.Canvas(frame,bg="black", height=4,bd=0,width=6,highlightthickness=0) #,bd="black")
  84. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  85. r+=1
  86. c=0
  87. b = tk.Button(frame,bg="lightblue", text="EXEC " )
  88. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  89. c+=1
  90. b = tk.Button(frame,bg="lightblue", text="BANK " + str(int(i/(8*8))+1) )
  91. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  92. c+=1
  93. b = tk.Button(frame,bg="lightblue", text="NAME" )
  94. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  95. r+=1
  96. c=0
  97. i+=1
  98. v=0
  99. label = ""
  100. #if k in PRESETS.label_presets:
  101. # label = PRESETS.label_presets[k]
  102. # #print([label])
  103. sdata=PRESETS.val_presets[k]
  104. BTN="go"
  105. if "CFG" in sdata:#["BUTTON"] = "GO"
  106. if "BUTTON" in sdata["CFG"]:
  107. BTN = sdata["CFG"]["BUTTON"]
  108. #bb = tk.Frame(frame, highlightbackground = "red", highlightthickness = 1, bd=0)
  109. #bb = tk.Canvas(frame, highlightbackground = "black", highlightthickness = 1, bd=1)
  110. #bb.configure(width=70, height=38)
  111. txt=str(k+1)+":"+str(BTN)+":"+str(len(sdata)-1)+"\n"+label
  112. b = mytklib.ExecButton(frame,text=txt)
  113. #b = tk.Button(bb,bg="grey", text=txt,width=7,height=2)
  114. b.bind("<Button>",Xevent(fix=0,elem=b,attr=k,data=gui,mode="PRESET").cb)
  115. b.bind("<ButtonRelease>",Xevent(fix=0,elem=b,attr=k,data=gui,mode="PRESET").cb)
  116. if k not in gui.elem_presets:
  117. gui.elem_presets[k] = b
  118. #b.pack(expand=1)
  119. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  120. b.config(text="xx")
  121. c+=1
  122. if c >=10:
  123. c=0
  124. r+=1
  125. time.sleep(0.1)
  126. gui._refresh_exec()
  127. #gui.refresh_exec()
  128. #gui.refresh_exec()
  129. print("##################################")
  130. def draw_input(gui,root2):
  131. i=0
  132. c=0
  133. r=0
  134. frame = tk.Frame(root2,bg="black")
  135. frame.pack(fill=tk.X, side=tk.TOP)
  136. b = tk.Label(frame,bg="black", text="------------------------ ---------------------------------------")
  137. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  138. r=0
  139. frame = tk.Frame(root2,bg="black")
  140. frame.pack(fill=tk.X, side=tk.TOP)
  141. b = tk.Label(frame, text="send:")
  142. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  143. c+=1
  144. b = tk.Entry(frame,bg="grey", text="",width=50)
  145. gui.entry = b
  146. b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
  147. b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
  148. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  149. b.insert("end","d0:127,fx241:sinus:50:50:10,fx243:cosinus:50:50:10,d201:127,fx201:sinus:50:300:10")
  150. r+=1
  151. b = tk.Entry(frame,bg="grey", text="",width=20)
  152. gui.entry2 = b
  153. b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT2").cb)
  154. b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT2").cb)
  155. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  156. b.insert("end","d1:0:4")
  157. r+=1
  158. b = tk.Entry(frame,bg="grey", text="",width=20)
  159. gui.entry3 = b
  160. b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT3").cb)
  161. #b.bind("<B1-Motion>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT3").cb)
  162. b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT3").cb)
  163. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  164. b.insert("end","fx:alloff:::")
  165. def draw_colorpicker(gui,xframe,FIXTURES,master):
  166. import lib.colorpicker as colp
  167. class _CB():
  168. def __init__(gui,FIXTURES,master):
  169. gui.old_color = (0,0,0)
  170. def cb(gui,event,data):
  171. print("CB.cb",gui,event,data)
  172. cprint("colorpicker CB")
  173. if "color" not in data:
  174. return 0
  175. if gui.old_color == data["color"]:
  176. pass #return 0
  177. #gui.old_color = data["color"]
  178. color = data["color"]
  179. print("e",event,data)
  180. print("e",dir(event))#.keys())
  181. try:
  182. print("e.state",event.state)
  183. except:pass
  184. set_fade = FADE.val() #fade
  185. event_ok = 0
  186. event_num = 0
  187. event_state = 0
  188. if event is None:
  189. event_ok = 1
  190. event_num = 3
  191. elif event.num == 1:
  192. event_ok = 1
  193. event_num = event.num
  194. elif event.num == 3:
  195. event_ok = 1
  196. event_num = event.num
  197. elif event.num==2:
  198. event_ok = 1
  199. event_num = event.num
  200. elif event.state in [256,1024]:
  201. event_ok = 1
  202. event_state = event.state
  203. if "color" in data and event_ok:
  204. cr=None
  205. cg=None
  206. cb=None
  207. cw=0
  208. ca=0
  209. set_fade=0
  210. if event_num == 1:
  211. if FADE._is():
  212. set_fade=FADE.val() #fade
  213. cr = color[0]
  214. cg = color[1]
  215. cb = color[2]
  216. elif event_num == 3:
  217. cr = color[0]
  218. cg = color[1]
  219. cb = color[2]
  220. elif event_num == 2:
  221. cr= "click"
  222. cg= "click"
  223. cb= "click"
  224. cw= "click"
  225. ca= "click"
  226. elif event_state == 256:
  227. cr = color[0]
  228. cg = color[1]
  229. cb = color[2]
  230. if cr is not None:
  231. FIXTURES.encoder(fix=0,attr="RED",xval=cr,xfade=set_fade)
  232. if cg is not None:
  233. FIXTURES.encoder(fix=0,attr="GREEN",xval=cg,xfade=set_fade)
  234. if cb is not None:
  235. FIXTURES.encoder(fix=0,attr="BLUE",xval=cb,xfade=set_fade)
  236. FIXTURES.encoder(fix=0,attr="WHITE",xval=cw,xfade=set_fade)
  237. FIXTURES.encoder(fix=0,attr="AMBER",xval=ca,xfade=set_fade)
  238. master.refresh_fix()
  239. print("PICK COLOR:",data["color"])
  240. _cb=_CB(FIXTURES,master)
  241. colp.colorpicker(xframe,width=580,height=113, xcb=_cb.cb)
  242. return 0
  243. canvas=tk.Canvas(xframe,width=600,height=113)
  244. canvas["bg"] = "yellow" #"green"
  245. canvas.pack()
  246. # RGB
  247. x=0
  248. y=0
  249. j=0
  250. d = 20
  251. for i in range(0,d+1):
  252. fi = int(i*255/d)
  253. f = 255-fi
  254. if i > d/2:
  255. pass#break
  256. color = '#%02x%02x%02x' % (f, fi, fi)
  257. print( "farbe", i*10, j, f,fi,fi,color)
  258. r = canvas.create_rectangle(x, y, x+20, y+20, fill=color)
  259. x+=20
  260. def draw_config(gui,xframe):
  261. for widget in xframe.winfo_children():
  262. widget.destroy()
  263. i=0
  264. c=0
  265. r=0
  266. root2 = xframe
  267. frame = tk.Frame(root2,bg="#222")
  268. frame.pack(fill="both", expand=1,side=tk.TOP)
  269. b = tk.Label(frame, text="",bg="#222")
  270. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  271. c+=0
  272. r+=1
  273. b = tk.Label(frame, text="",bg="#222")
  274. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  275. c=0
  276. r+=1
  277. b = tk.Label(frame, text="",bg="#222")
  278. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  279. c=1
  280. r+=1
  281. b = tk.Label(frame, text="_________")
  282. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  283. c+=1
  284. b = tk.Entry(frame,bg="grey", text="",width=50)
  285. gui.entry = b
  286. #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
  287. #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
  288. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  289. b.insert("end","" ) #d0:127,fx241:sinus:50:50:10,fx243:cosinus:50:50:10,d201:127,fx201:sinus:50:300:10")
  290. r+=1
  291. b = tk.Entry(frame,bg="grey", text="",width=20)
  292. gui.entry2 = b
  293. #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT2").cb)
  294. #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT2").cb)
  295. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  296. b.insert("end","d1:0:4")
  297. r+=1
  298. b = tk.Entry(frame,bg="grey", text="",width=20)
  299. gui.entry3 = b
  300. #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT3").cb)
  301. ##b.bind("<B1-Motion>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT3").cb)
  302. #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT3").cb)
  303. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  304. b.insert("end","fx:alloff:::")
  305. r+=1
  306. b = tk.Label(frame, text="",bg="#222")
  307. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  308. c+=0
  309. r+=1
  310. b = tk.Label(frame, text="",bg="#222")
  311. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  312. c+=0
  313. r+=1
  314. b = tk.Label(frame, text=" BATCH COMMAND ")
  315. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  316. c+=0
  317. r+=1
  318. b1 = tk.Entry(frame,bg="grey", text="",width=50)
  319. #gui.entry = b
  320. #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
  321. #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
  322. b1.grid(row=r, column=c, sticky=tk.W+tk.E)
  323. b1.insert("end","fix 1-100 patch @ 2.120")
  324. r+=1
  325. b = tk.Label(frame, text="",bg="#222")
  326. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  327. c+=0
  328. r+=1
  329. b = tk.Label(frame, text=" BATCH COMMAND ")
  330. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  331. c+=0
  332. r+=1
  333. b2 = tk.Entry(frame,bg="grey", text="",width=50)
  334. #gui.entry = b
  335. #b.bind("<Button>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
  336. #b.bind("<Key>",Xevent(fix=0,elem=b,attr="INPUT",data=gui,mode="INPUT").cb)
  337. b2.grid(row=r, column=c, sticky=tk.W+tk.E)
  338. b2.insert("end","SELECT 33-61 PAN,TILT")
  339. root2.pack(fill="both",expand=1,side="top")
  340. def draw_enc(gui,xframe):
  341. for widget in xframe.winfo_children():
  342. widget.destroy()
  343. root2 = xframe
  344. i=0
  345. c=0
  346. r=0
  347. frame = tk.Frame(xframe,bg="black")
  348. frame.pack( side=tk.LEFT,expand=0,fill="both")
  349. b = tk.Button(frame,bg="lightblue", text="ENCODER",width=6)
  350. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  351. thread.start_new_thread(mytklib.tk_btn_bg_loop,(b,))
  352. c+=1
  353. eat = gui.all_attr
  354. if len(eat) < 24:
  355. for i in range(24-len(eat)):
  356. eat.append("")
  357. for attr in eat:
  358. if attr.endswith("-FINE"):
  359. continue
  360. v=0
  361. if attr.startswith("_"):
  362. continue
  363. b = tk.Button(frame,bg="#6e6e6e", text=str(attr)+'',width=7)#, anchor="w")
  364. if attr == "DIM":
  365. b = tk.Button(frame,bg="#ff7f00", text=str(attr)+'',width=7)#, anchor="w")
  366. b.bind("<Button>",Xevent(fix=0,elem=b,attr=attr,data=gui,mode="ENCODER2").cb)
  367. b.grid(row=r, column=c, sticky=tk.W+tk.E ,ipadx=0,ipady=0,padx=0,pady=0)#,expand=True)
  368. c+=1
  369. if c >=8:
  370. c=0
  371. r+=1
  372. b = tk.Button(frame,bg="#bfff00", text="INV-ATTR",width=6)
  373. myTip = Hovertip(b,'INVERT ATTRIBUT SELECTION')
  374. b.bind("<Button>",Xevent(fix="SEL",elem=b,attr="INV-ATTR",data=gui,mode="INVERT").cb)
  375. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  376. c+=1
  377. def _draw_fx(frame,c,r,gui,mode="FX"):
  378. ct = gui.fx
  379. prm = fx_prm
  380. if mode=="FX-MOVE":
  381. ct = gui.fx_moves
  382. prm = fx_prm_move
  383. elif mode=="FX-GENERIC":
  384. ct = gui.fx_generic
  385. prm = fx_prm #_generic
  386. for comm in ct.commands:
  387. if comm == "\n\n":
  388. b = tk.Label(frame,bg="black", text="-",font=space_font)
  389. b.grid(row=r, column=c,pady=0,padx=0, sticky=tk.W+tk.E)
  390. c=0
  391. r+=1
  392. continue
  393. if comm == "\n":
  394. c=0
  395. r+=1
  396. continue
  397. v=0
  398. if "PAN/TILT" in comm:
  399. b = tk.Button(frame,bg="grey", text=str(comm),width=6,height=2)
  400. else:
  401. b = tk.Button(frame,bg="lightgrey", text=str(comm),width=6,height=2)
  402. if comm not in ct.elem:
  403. #comm = comm.replace("\n","")
  404. ct.elem[comm] = b
  405. ct.val[comm] = 0
  406. b.bind("<Button>",Xevent_fx(fix=0,elem=b,attr=comm,data=gui,mode=mode).cb)
  407. if comm == "REC-FX":
  408. b["bg"] = "grey"
  409. elif comm == "FX OFF":
  410. b["bg"] = "magenta"
  411. elif comm[:3] == "FX:":
  412. b["text"] = comm
  413. b["bg"] = "#ffbf00"
  414. elif comm[:3] == "MO:":
  415. b["text"] = comm
  416. b["bg"] = "lightgreen"
  417. elif comm.startswith( "SIZE:"):
  418. b["text"] = "SIZE:\n{:0.0f}".format(prm["SIZE"])
  419. b["bg"] = "lightgreen"
  420. elif comm.startswith( "SPEED:"):
  421. b["text"] = "SPEED:\n{:0.0f}".format(prm["SPEED"])
  422. b["bg"] = "lightgreen"
  423. elif comm.startswith("START:"):
  424. b["bg"] = "lightgreen"
  425. b["text"] = "START:\n{:0.0f}".format(prm["START"])
  426. elif comm.startswith( "OFFSET:"):
  427. b["bg"] = "lightgreen"
  428. b["text"] = "OFFSET:\n{:0.0f}".format(prm["OFFSET"])
  429. elif comm[:3] == "BASE:":
  430. b["bg"] = "lightgreen"
  431. b["text"] = "BASE:\n{}".format(prm["BASE"])
  432. elif comm[0] == "M":
  433. b["text"] = comm
  434. b["bg"] = "lightgrey"
  435. if comm:
  436. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  437. c+=1
  438. if c >=6:
  439. c=0
  440. r+=1
  441. return c,r
  442. def draw_fx(gui,xframe):
  443. frame_fx=xframe
  444. i=0
  445. c=0
  446. r=0
  447. frame = tk.Frame(frame_fx,bg="black")
  448. frame.pack(fill=tk.X, side=tk.TOP)
  449. b = tk.Button(frame,bg="lightblue", text="FX.",width=6)
  450. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  451. c+=1
  452. thread.start_new_thread(mytklib.tk_btn_bg_loop,(b,))
  453. c,r = _draw_fx(frame,c,r,gui,mode="FX-MOVE")
  454. r+=1
  455. b = tk.Canvas(frame,bg="black", height=4,bd=0,width=6,highlightthickness=0) #,bd="black")
  456. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  457. r+=1
  458. c=0
  459. c,r = _draw_fx(frame,c,r,gui,mode="FX")
  460. b = tk.Canvas(frame,bg="black", height=4,bd=0,width=6,highlightthickness=0) #,bd="black")
  461. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  462. r+=1
  463. c=0
  464. c,r = _draw_fx(frame,c,r,gui,mode="FX-GENERIC")
  465. def draw_setup(gui,xframe):
  466. frame_cmd=xframe
  467. i=0
  468. c=0
  469. r=0
  470. frame = tk.Frame(frame_cmd,bg="black")
  471. frame.pack(fill=tk.X, side=tk.TOP)
  472. #b = tk.Button(frame,bg="lightblue", text="SETUP",width=6)
  473. #b.bind("<Button>",Xevent(fix=fix,elem=b).cb)
  474. #b.grid(row=r, column=c, sticky=tk.W+tk.E)
  475. #r+=1
  476. c+=1
  477. for comm in ["SAVE\nSHOW","LOAD\nSHOW","NEW\nSHOW","SAVE\nSHOW AS","SAVE &\nRESTART","DRAW\nGUI"]:
  478. if comm == "\n":
  479. c=0
  480. r+=1
  481. continue
  482. v=0
  483. if comm == "SAVE\nSHOW":
  484. b = tk.Button(frame,bg="lightgrey", text=str(comm),width=5,height=2)
  485. elif comm == "LOAD\nSHOW":
  486. b = tk.Button(frame,bg="lightgrey", text=str(comm),width=5,height=2)
  487. elif comm == "SAVE\nSHOW AS":
  488. b = tk.Button(frame,bg="lightgrey", text=str(comm),width=6,height=2)
  489. elif comm == "SAVE &\nRESTART":
  490. b = tk.Button(frame,bg="lightgrey", text=str(comm),width=6,height=2)
  491. elif comm == "DRAW\nGUI":
  492. b = tk.Button(frame,bg="lightgrey", text=str(comm),width=6,height=2)
  493. else:
  494. b = tk.Button(frame,bg="grey", text=str(comm),width=5,height=2)
  495. if comm not in gui.commands.elem:
  496. gui.commands.elem[comm] = b
  497. gui.commands.val[comm] = 0
  498. b.bind("<Button>",Xevent(fix=0,elem=b,attr=comm,data=gui,mode="SETUP").cb)
  499. if comm == "BASE:":
  500. b["text"] = "BASE:{}".format(prm["BASE"])
  501. if comm:
  502. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  503. c+=1
  504. if c >=7:
  505. c=0
  506. r+=1
  507. class X_CLOCK():
  508. def __init__(self):
  509. self._last_label_id = 1
  510. self._label_ring = [ "labelA","labelB"]
  511. def loop_clock(self,b):
  512. xfont = tk.font.Font(family="FreeSans", size=65, weight="bold")
  513. xfont1 = tk.font.Font(family="FreeSans", size=25, weight="bold")
  514. while 1:
  515. tag = self._label_ring[self._last_label_id]
  516. #b["text"] =
  517. d = time.strftime("%Y-%m-%d")
  518. s = time.strftime("%X")
  519. #b.delete("all")
  520. b.create_text(170,41,text=s,fill="#aa0" ,font=xfont,tag=tag)
  521. b.create_text(160,91,text=d,fill="#aa0" ,font=xfont1,tag=tag)
  522. self.delete_tag()
  523. time.sleep(0.2)
  524. #exit()
  525. def delete_tag(self):
  526. self._last_label_id += 1
  527. if self._last_label_id >=len(self._label_ring ):
  528. self._last_label_id = 0
  529. tag = self._label_ring[self._last_label_id]
  530. self.bb.delete(tag)
  531. def draw_clock(self,gui,xframe):
  532. frame_cmd=xframe
  533. frame = tk.Frame(frame_cmd,bg="black")
  534. frame.pack(fill=tk.X, side=tk.TOP)
  535. comm = "xx"
  536. xfont = tk.font.Font(family="FreeSans", size=25, weight="bold")
  537. b = tk.Canvas(frame,bg="black", height=105,bd=0,width=6,highlightthickness=0) #,bd="black")
  538. self.bb = b
  539. #b = tk.Button(frame,bg="lightgrey", text=str(comm),width=26,height=2,font=xfont)
  540. #b.config(activebackground="lightgreen")
  541. #b.config(background="lightgreen")
  542. b.pack(fill="both",expand=1) #row=0, column=0, sticky=tk.W+tk.E)
  543. #b["text"] = time.strftime("%Y-%m-%d %X")
  544. thread.start_new_thread(self.loop_clock,(b,))
  545. def draw_live(gui,xframe):
  546. frame_cmd=xframe
  547. i=0
  548. c=0
  549. r=0
  550. frame = tk.Frame(frame_cmd,bg="black")
  551. frame.pack(fill=tk.X, side=tk.TOP)
  552. c+=1
  553. for comm in ["FADE","DELAY","PAN/TILT\nFADE","PAN/TILT\nDELAY"]:
  554. if comm == "\n":
  555. c=0
  556. r+=1
  557. continue
  558. v=0
  559. b = tk.Button(frame,bg="lightgrey", text=str(comm),width=6,height=2)
  560. if comm not in gui.commands.elem:
  561. gui.commands.elem[comm] = b
  562. gui.commands.val[comm] = 0
  563. b.bind("<Button>",Xevent(fix=0,elem=b,attr=comm,data=gui,mode="LIVE").cb)
  564. if "FADE" == comm:
  565. b["text"] = "FADE:\n{:0.2}".format(FADE.val())
  566. if "DELAY" == comm:
  567. b["text"] = "DELAY:\n{:0.2}".format(DELAY.val())
  568. if "PAN/TILT\nFADE" == comm:
  569. b["text"] = "PAN/TILT\nFADE:{:0.2}".format(FADE_move.val())
  570. if "FADE" in comm:
  571. b["bg"] = "green"
  572. b.config(activebackground="lightgreen")
  573. if comm:
  574. b.grid(row=r, column=c, sticky=tk.W+tk.E)
  575. c+=1
  576. if c >=5:
  577. c=0
  578. r+=1