draw.py 20 KB

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