draw.py 21 KB

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