draw.py 23 KB

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