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