draw.py 22 KB

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