| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849 |
- #from pyray import *
- import pyray
- import sys
- import _thread as thread
- sys.path.insert(0,"/opt/LibreLight/Xdesk/")
- CAPTION = 'RAY-FIX-LIST'
- import tool.movewin as movewin
- import pathlib
- _file_path=pathlib.Path(__file__)
- print("file:",_file_path)
- movewin.check_is_started(CAPTION,_file_path)
- win_title =CAPTION.strip().split()[-1]
- store = movewin.load_all_sdl(win_title)
- print(store)
- POS=[10,10]
- W=760
- H=450
- if store:
- POS[0] += 5 #frame kompensation
- POS[1] += 29 #frame kompensation
- POS=[store[-2],store[-1]]
- RUN = 1
- pyray.set_config_flags(pyray.FLAG_WINDOW_RESIZABLE)
- pyray.init_window(W, H, CAPTION) #"RAY-DMX")#,10,10,10,10)
- pyray.set_window_min_size(200,200)
- pyray.set_window_max_size(1000,1000)
- pyray.set_exit_key(-1)
- #pyray.set_captur_key(-1)
- pyray.begin_drawing()
- pyray.clear_background(pyray.BLACK)
- pyray.Color(255,0,0,0)
- pyray.end_drawing()
- pyray.set_target_fps(60)
- import json
- import lib.zchat as chat
- cmd_client = chat.Client(port=30003)
- win_con = movewin.Control()
- win_con.title = win_title
- win_con.winfo()
- if POS:
- win_con.move(POS[0],POS[1])
- print(POS,win_con.title)
- #exit()
- import sys
- sys.path.insert(0,"/opt/LibreLight/Xdesk/")
- import tool.tk_elm as tk_elm
- #import tool.sdl_elm as sdl_elm
- img = "/opt/LibreLight/Xdesk/icon/scribble.png"
- IMG = pyray.load_image(img)
- print(pyray.set_window_icon(IMG))
- import time
- import memcache
- mc = memcache.Client(['127.0.0.1:11211'], debug=0)
- #x=mc.get(k)
- old_x = -10
- old_y = -10
- start = time.time()
- frame_count = 0
- fps_count = 0
- a = "/usr/share/fonts/truetype/freefont/FreeSans.ttf"
- a = "/usr/share/fonts/truetype/freefont/FreeSansBold.ttf"
- k=200
- a = "/usr/share/fonts/truetype/freefont/FreeSans.ttf"
- font_l_10 = pyray.load_font_ex(a, 10, None, 0);
- a = "/usr/share/fonts/truetype/freefont/FreeSansBold.ttf"
- font10 = pyray.load_font_ex(a, 10, None, 0);
- font12 = pyray.load_font_ex(a, 12, None, 0);
- font14 = pyray.load_font_ex(a, 14, None, 0);
- font16 = pyray.load_font_ex(a, 16, None, 0);
- font20 = pyray.load_font_ex(a, 20, None, 0);
- font22 = pyray.load_font_ex(a, 22, None, 0);
- font24 = pyray.load_font_ex(a, 24, None, 0);
- a = "/usr/share/fonts/truetype/freefont/FreeSans.ttf"
- font_l_22 = pyray.load_font_ex(a, 22, None, 0);
- a = "/usr/share/fonts/truetype/freefont/FreeMono.ttf"
- a = "/usr/share/fonts/truetype/freefont/FreeSansBold.ttf"
- a = "/usr/share/fonts/truetype/freefont/FreeSans.ttf"
- font25 = pyray.load_font_ex(a, 25, None, 0);
- pyray.TextureFilter(3)
- class EVENT():
- def __init__(self):
- self.dict = {}
- self.type = 0
- self.button=10
- self.buttons=[0,0,0,0]
- xevent=EVENT()
- class BUTTON():
- def __init__(self,master=None,txt="<BUTTON>",pos=[10,10,20,90]):
- #self.btn = tk_elm.Button(None,pos=[390,12,20,90])
- self.btn = tk_elm.Button(master,pos=pos)
- self.btn.btn1.color = [127,127,127,255]
- #self.btn.btn1.type = "toggle"
- #self.btn.btn2.type = "toggle"
- #self.btn.btn3.type = "toggle"
- #btn.btn1.color_on = [155,155,155,255]
- #btn.btn2.color = [155,55,155,255]
- #btn.btn2.color_on = [155,155,155,255]
- self.btn.btn3.color = [55,155,155,255]
- self.btn.btn3.color_on = [55,255,255,255]
- self.btn.btn2.color_on = [55,255,255,255]
-
- self.font = font14
- self.val = 0
- self.btn.btn1.name=txt
- #x=btn.btn1.name
- def __repr__(self):
- return "<BUTTON {} {} {}>".format(id(self),str(self.btn.pos),self.btn.btn1.name)
- def draw(self,event=None):
- pos=self.btn.pos
- c=[122,122,122,122] #btn.btn2.get_color()
- pyray.draw_rectangle(pos[1],pos[0],pos[3],pos[2],c)
- c=self.btn.btn1.get_color()
- pyray.draw_rectangle(pos[1]+2,pos[0]+2,pos[3]-4,pos[2]-4,c)
- c=self.btn.btn4.color # color bar
- pyray.draw_rectangle(pos[1]+2,pos[0]+2,1+int((pos[3]-4)*self.val/255),3,c)
- c=self.btn.btn3.get_color()
- #pyray.draw_rectangle(pos[1]+1,pos[0]+1,pos[3]-2,pos[2]-2,c)
- pyray.draw_rectangle_lines_ex([pos[1]+1,pos[0]+1,pos[3]-2,pos[2]-2],1,c)
- x=self.btn.btn1.name
- font_size = self.font.baseSize
- pyray.draw_text_ex(self.font,str(x), [pos[1]+4,pos[0]+4], font_size, 0, [0,0,0,255])#pyray.YELLOW)#[0,255,0,255]) #pyray.YELLOW)
- def event(self,x,y,mouse):
- try:
- buttons = [0,0,0]
- button = 0
- PRESS=5 #1025
- RELEASE=6 #1026
- _type=0
- for i in range(3):#2,0,-1):
- #print(i,mouse)
- if mouse[i] == "press":
- _type=PRESS
- if mouse[i] == "release":
- _type=RELEASE
- if mouse[i]:
- buttons[i] = 1
- button = i+1
- xevent.dict={"pos":[y,x],"button":button,"buttons":buttons,"type":_type}
- #print(xevent.dict)
- pos=self.btn.pos
-
- if check_area(pos,[y,x]):
- #print("POS:",x,y,mouse,xevent.type)
- for i,v in enumerate(mouse):
- if i==0:
- #if v == "release": # or v == "click":
- if v == "click": #"press" or v == "click": # or v == "release":
- self.btn.btn1.type = "toggle"
- self.btn.btn1.press()
- #xevent.type=5
- #xevent.dict["button"] = 1
- #self.btn.btn1.val.set(0)
- #xevent.dict["buttons"] = mouse
- #print(xevent.dict,xevent.type,xevent.button)
- self.btn.event(xevent)
- except Exception as e:
- import traceback
- print(traceback.format_exc())
- raise e
- mouse_box_on = 0
- mouse_box_on_pos = [0,0]
- def draw_mouse_box(window,pos1,mouse=[None,None,None],color=[128,128,128],text=1):
- global mouse_box_on_pos
- global mouse_box_on
- if mouse[0]=="click":#"press":
- if mouse_box_on == 0:
- pos2 = pos1[:]
- mouse_box_on_pos = pos2
- mouse_box_on = 1
- else:
- mouse_box_on = 0
- if mouse[0]=="press":
- pos2 = mouse_box_on_pos[:]
-
- w=pos1[0]-pos2[0]
- h=pos1[1]-pos2[1]
- pos = pos2[:]
- #print(pos1,pos2,h,w)
- wd=1
- hd=1
- if w < 0:
- pos[0] = pos1[0]
- w*=-1
- wd=-1
- if h < 0:
- pos[1] = pos1[1]
- h*=-1
- hd=-1
- if w > 10 or h > 10:
- c=[255,255,255,255]
- pyray.draw_rectangle_lines_ex([pos[0],pos[1],w,h],1,c)
- font_size = font_l_10.baseSize
- pyray.draw_text_ex(font_l_10,str(pos1[0])+" "+str(pos1[1]), [pos1[0],pos1[1]-10], font_size, 0, pyray.WHITE)
- pyray.draw_text_ex(font_l_10,str(pos2[0])+" "+str(pos2[1]), [pos2[0]+5,pos2[1]+10], font_size, 0, pyray.WHITE)
- pyray.draw_text_ex(font_l_10,str(w), [pos2[0]+5+w/2*wd,pos2[1]], font_size, 0, pyray.WHITE)
- pyray.draw_text_ex(font_l_10,str(h), [pos2[0]+5,pos2[1]+h/2*hd], font_size, 0, pyray.WHITE)
- return pos1,pos2
- mouse_old=[None,None,None]
- def check_area_v(v1,v2,event_v):#elm_pos,event_pos):
- if event_v < v1+1:
- return 0
- if event_v > v2-1:
- return 0
- return 1
- def check_area(pos,event_pos):
- v2 = pos[0]+pos[2]
- x = check_area_v(pos[0],v2,event_pos[0])
- v2 = pos[1]+pos[3]
- y = check_area_v(pos[1],v2,event_pos[1])
- if x and y:
- return 1
- def is_hidden_attr(attr_name):
- if attr_name.endswith("-FINE"):
- return 1
- if attr_name == "END":
- return 1
- if attr_name.startswith("_"):
- return 1
- return 0
- def read_dmx():
- dmx = {} #univ
- iii = 0
- y=mc.get("index")
- if y:
- key=y.keys()
- key = list(key)
- key.sort()
- for k in key:
- if k.startswith("ltp-out"):
- #v = y[k]
- u = k.split(":")[-1]
- x=mc.get(k)
- dmx[u] = x
- return dmx
-
- def read_fix(dmx):
- global mc
- y=mc.get("fix")#cmd)
- if y is None:
- print("==== "*10)
- print("error -- read_fix(dmx) mc.get('fix') return",y)
- print()
- mc = memcache.Client(['127.0.0.1:11211'], debug=0)
- return {}
- key=y.keys()
- key = list(key)
- key.sort()
- for k in key:#y.items():
- v = y[k]
- #print(k,v)
- x=mc.get(k)
- dmx_start = 0
- if "DMX" in v:
- dmx_start = v["DMX"]
- univ_start = 0
- if "UNIVERS" in v:
- univ_start = v["UNIVERS"]
- if "ATTRIBUT" in v: # and 10:
- ATTR = v["ATTRIBUT"]
- for k2 in ATTR:
- k2_ATTR = ATTR[k2]
- k2_ATTR["VALUE2"] = -2
- if is_hidden_attr(k2):
- #if k2.startswith("_"):
- continue
- k3 = k+"-"+k2
-
- dmx_nr = 0
- if "NR" in k2_ATTR:
- if k2_ATTR["NR"] >= 1:
- dmx_nr = k2_ATTR["NR"]+1
-
- val2 = ""
- if "VALUE" in k2_ATTR:
- val2 = k2_ATTR["VALUE"]
- dmx_val=-1
- dmx_x=-1
- if dmx_nr > 0 and dmx_start > 0:
- try:
- dmx_x = dmx_start-1+dmx_nr-1
- dmx_val = dmx[str(univ_start)][dmx_x-1]
- except:pass
- if type(dmx_val) in [int,float]:
- k2_ATTR["VALUE2"] = dmx_val
- else:
- k2_ATTR["VALUE2"] = 0
- return y
- _load_fix_DATA = {}
- _load_fix_fix_list = {}
- _load_fix_last = time.time()
- _load_fix_keys = 0
- _load_fix_init = 0
- _load_fix_keys = []
- lock = thread.allocate_lock()
- #lock.acquire()
- #lock.release()
- def get_fix():
- lock.acquire()
- a=_load_fix_keys #= keys.copy()
- b=_load_fix_fix_list #= fix_list.copy()
- #a,b = _load_fix_keys.copy(), _load_fix_fix_list.copy()
- lock.release()
- return a,b
- def load_fix():
- global _load_fix_DATA
- global _load_fix_fix_list
- global _load_fix_keys
- global _load_fix_init
- global _load_fix_last
- if not _load_fix_init:
- pass
- elif _load_fix_last+1 > time.time():
- pass
- #lock.acquire()
- #a,b = _load_fix_keys.copy(), _load_fix_fix_list.copy()
- #lock.release()
- #return a,b
- #return _load_fix_keys.copy(), _load_fix_fix_list.copy()
- print("load_fix update")
- _load_fix_last = time.time()
- _load_fix_init = 1
- DATA=mc.get("fix")#cmd)
- keys = []
- fix_list = {}
- if not DATA:
- DATA = {}
- print("mc.get ist NONE")
- #continue
- for k in DATA:
- keys.append(k)
- fix_list[k] = DATA[k] #[0]).ljust(" ",18) #,0,"=",0]
- keys.sort()
- lock.acquire()
- _load_fix_keys = keys.copy()
- _load_fix_fix_list = fix_list.copy()
- #a,b = _load_fix_keys.copy(), _load_fix_fix_list.copy()
- lock.release()
- #return a,b
- def loop_load_fix():
- global RUN
- while RUN:
- try:
- load_fix()
- time.sleep(1)
- except Exception as e:
- print("EXC loop_load_fix:",e)
-
- load_fix()
- thread.start_new_thread(loop_load_fix,())
- def check_buttons(buttons,fix_list):
- #raylib.enable_event_waiting()
- #pyray.disable_event_waiting() # not working , fast clickinb button or key
- _x=20
- _y=30
- H = 22
- W = 100
- W2 = W+20
- _last_v = {}
- for i,k in enumerate(fix_list): #.items():
- _x=20
- key = str(i)
- on_color = [255,255,0,255]
- on_color = [200,200,50,255] # gold
- if key not in buttons: # insert
- v=fix_list[k]
- _last_v = v
- txt="ID:"+str(v["ID"])
- btn=BUTTON(None,txt,[_y,_x,H,60])
- btn.btn.btn1.color_on = on_color
- buttons[key+".ID"] = btn
- #print("ADD",key,btn)
- _x+=60+2
- txt=v["NAME"]
- btn=BUTTON(None,txt,[_y,_x,H,W])
- btn.btn.btn1.color_on = on_color
- buttons[key] = btn
- #print("ADD",key,btn)
- _x+=W+5
- key = str(i)+":dim"
- txt = ""
- btn=BUTTON(None,txt,[_y,_x,H,10])
- btn.btn.btn1.color = [0,0,0,255]
- btn.btn.btn1.color_on = on_color
- buttons[key] = btn
- _x+=10+1
- key = str(i)+":rgb"
- txt = ""
- btn=BUTTON(None,txt,[_y,_x,H,20])
- btn.btn.btn1.color = [0,0,0,255]
- btn.btn.btn1.color_on = on_color
- buttons[key] = btn
- _x+=20+5
- if "ATTRIBUT" in v:
- #print(txt)
- ATTR = v["ATTRIBUT"]
- if 1:
- ay2=_y
- ax2=_x
- for kk,vv in v["ATTRIBUT"].items():
- if "-FINE" in kk or kk.startswith("_"):
- continue
- key = str(i)+":" +kk
- VAL = vv["VALUE"]
- #print("-",kk,vv)
- txt = kk+" "+str(VAL)
- btn=BUTTON(None,txt,[ay2,ax2,H,W2])
- btn.btn.btn1.color_on = on_color
- #self.btn4.increment = 4.4
- #self.btn4.type = "fader"
- #self.btn4.nr_on = [4]
- #self.btn4.nr_off = [5]
- RGB = [255,255,255,255]
- if kk == "RED":
- RGB = [255,0,0,255]
- elif kk == "GREEN":
- RGB = [0,255,0,255]
- elif kk == "BLUE":
- RGB = [0,0,255,255]
- btn.btn.btn4.color = RGB
- #btn.btn.btn4.val._max = 100
- btn.val = 100
- #btn.btn.btn4.val.set(50)
-
- buttons[key] = btn
- add=1
- ax2+=W2+3
- _y+=23
- for i,k in enumerate(fix_list): #.items():
- key = str(i)
- v=fix_list[k]
- txt=v["NAME"]
- btn = buttons[key]
- btn1 = buttons[key+".ID"]
- if v["ATTRIBUT"]["_ACTIVE"]["ACTIVE"]:
- btn.btn.btn1.val.set(1)
- btn1.btn.btn1.val.set(1)
- else:
- btn.btn.btn1.val.set(0)
- btn1.btn.btn1.val.set(0)
- if key in buttons: # insert
- #print(v)
- txt="ID:"+str(v["ID"])
- btn = buttons[key+".ID"]
-
- key = str(i)+":rgb"
- txt = ""
- btn = buttons[key]
- if "ATTRIBUT" in v:
- ATTR = v["ATTRIBUT"]
- for kk,vv in v["ATTRIBUT"].items():
- if "-FINE" in kk or kk.startswith("_"):
- continue
- key = str(i)+":" +kk
- VAL = vv["VALUE"]
- txt = kk+" "+str(VAL)
- btn = buttons[key]
- btn.val = VAL
- if kk in ["RED","GREEN","BLUE"]:
- _key = str(i)+":rgb"
- if kk == "RED":
- buttons[_key].btn.btn1.color[0] = VAL
- if kk == "GREEN":
- buttons[_key].btn.btn1.color[1] = VAL
- if kk == "BLUE":
- buttons[_key].btn.btn1.color[2] = VAL
- if kk in ["DIM"]:
- _key = str(i)+":dim"
- _VAL = VAL
- if _VAL > 255:
- _VAL=255
- if _VAL < 0:
- _VAL = 0
- buttons[_key].btn.btn1.color = [_VAL,_VAL,_VAL,255] #_VAL]
- btn.btn.btn1.name = txt
- if vv["ACTIVE"]:
- btn.btn.btn1.val.set(1)
- else:
- btn.btn.btn1.val.set(0)
- if _last_v:
- print("init.button.ok",_last_v)
- def draw_buttons(buttons):
- mh = pyray.get_screen_height()
- for k,btn in buttons.items():
- btn.event(old_x,old_y,mouse_old)
- #print(btn)
- pos = btn.btn.pos
- if pos[0] > (mh-40):
- continue
- btn.draw()
- def event_loop():
- global RUN
- while RUN:
- try:
- _event_loop()
- time.sleep(0.0001)
- except Exception as e:
- print("EXC event:",e)
- #thread.start_new_thread(event_loop,())
- old_x = 0
- old_y = 0
- wheel = 0
- class _M():
- def __init__(self):
- self.x =0
- self.y=0
- m = _M() # {"x":0,"y":0}
- MOUSE_BTN = [0,0,0]
- def _event_loop():
- global RUN
- global old_x
- global old_y
- global wheel
- global mouse_old
- global m
- wheel = pyray.get_mouse_wheel_move()
- if wheel:
- print("wheel",wheel)
- m=pyray.get_mouse_position()
- #print(m)
- if m.x != old_x or m.y != old_y:
- old_x = m.x
- old_y = m.y
- mouse=[None,None,None]
- mouse_change=0
- #for i in dir(pyray):
- # if "gfwl_" not in i.lower():
- # print(i)
- #print(pyray.exit_window_requested())
- if pyray.window_should_close():
- print("sending QUIT ...")
- pyray.close_window()
- RUN=0
- time.sleep(1.3)
- exit()
- for i in range(3):
- #v=pyray.is_mouse_button_down(i)
- for ii in range(10):
- v=pyray.is_mouse_button_pressed(i)
- #print(v)
- if v:
- if not MOUSE_BTN[i]:
- MOUSE_BTN[i] = 1
- mouse_change=1
- #print("mouse",i,v)
- print(time.time(),"mouse",i,MOUSE_BTN)#i,v)
- for i in range(3):
- v=pyray.is_mouse_button_down(i)
- if not v:
- if MOUSE_BTN[i]:
- MOUSE_BTN[i] = 0
- mouse_change=1
- #print("mouse",i,v)
- print(time.time(),"mouse",i,MOUSE_BTN)#i,v)
- # KEYBOARD INPUT =========================
- _key_del = []
- for k in KEY_BUF:
- if not pyray.is_key_down(k):
- KEY_BUF[k] = [0,1] # release [val,change]
- _key_del.append(k)
- while RUN:
- x = pyray.get_key_pressed()
- if x:
- if x not in KEY_BUF:
- KEY_BUF[x] = [1,1] # press [val,change]
- else:
- break
- for i,k in enumerate(KEY_BUF):
- x = k
- val,change = KEY_BUF[k]
- KEY_BUF[k][1] = 0
- if not change:
- continue
- if x == 256:
- if val:
- msg=json.dumps([{"event":"ESC"}]).encode("utf-8")
- print("ESC",msg)
- cmd_client.send(msg)
- elif x == 269:
- if val:
- msg=json.dumps([{"event":"FX-OFF"}]).encode("utf-8")
- print("FX-OFF",msg)
- cmd_client.send(msg)
- elif x >= 290 and x <= 300:
- btn_nr = 290-x+81
- btn_nr_raw = 81
- msg=json.dumps([{"event":"EXEC","EXEC":btn_nr,"VAL":val,"NR-KEY":btn_nr_raw}]).encode("utf-8")
- print("SPCIAL-KEY",msg)
- cmd_client.send(msg)
- else:
- print("key",x)
- for d in _key_del:
- del KEY_BUF[d] # clear KEY BUFFER
- # ================================================
- if mouse != mouse_old and mouse != [None,None,None]:
- #print(mouse)
- mouse_old = mouse[:]
-
- check_scrollbar()
- MMM = 1
- def event_mouse_click():
- global MMM
- #{'event': 'FIXTURES', 'TYPE': 'ENCODERS', 'FIX': '13', 'VAL': 'click', 'ATTR': 'GREEN'}
- # jsbc.remote-key: {'event': 'FIXTURES', 'TYPE': 'ENCODERS', 'FIX': '12', 'VAL': 'click', 'ATTR': '_ACTIVE'}
- msg = json.dumps( {'event': 'FIXTURES', 'TYPE': 'ENCODERS', 'FIX': '13', 'VAL': 'click', 'ATTR': 'GREEN'} )
- cmd_client.send(msg)
- buttons={} #[]
- cur = None
- history = []
- KEY_BUF={}
- MOUSE_BUF={}
- FIRST_RUN = 1
- add=0
- core_tick_t = time.time()
- dmx_last = time.time()
- w = pyray.get_screen_width()
- h = pyray.get_screen_height()
- mw = w
- mh = h
- def check_scrollbar():
- w = pyray.get_screen_width()
- h = pyray.get_screen_height()
- mw = w
- mh = h
- key="scroll-bar"
- if key not in buttons:
- txt=""
- btn=BUTTON(None,txt,[30,mw-35,mh-75,30])
- #btn.btn.btn1.color_on = [255,255,0,255]
- buttons[key] = btn
- btn.btn.btn4.val.set(btn.btn.btn4.val._max*0.4)
- try:
- key="scroll-bar"
- buttons[key].btn.pos[1] = mw-35
- buttons[key].btn.pos[2] = mh-75
- except:pass
- while not pyray.window_should_close():
- if pyray.is_window_resized():
- print( "RESIZE WINDOW OK")
- #check_scrollbar()
- if dmx_last+1 < time.time():
- #print("dmx")
- dmx_last = time.time()
- dmx = read_dmx()
- read_fix(dmx)
- font_size = font12.baseSize
- try:
- #keys,fix_list = load_fix()
- keys,fix_list = get_fix()
- check_buttons(buttons,fix_list)
- for i in range(3): # hack fast event polling button and key
- pyray.begin_drawing()
- pyray.clear_background(pyray.BLACK)
- pyray.Color(255,0,0,0)
- pyray.rl_enable_smooth_lines()
- GREY = [122,122,122,255]
-
- k=keys[0]
- if cur is None:
- cur = k #k[3] #"xx123" # k
- #check_buttons(buttons,fix_list)
- pyray.draw_text_ex(font_l_22,"FIXTURE LIST",[20,2], 22, 0, pyray.GRAY)
- pyray.draw_text_ex(font12,"ACTIVE:{:0.1f} {:0.1f}".format(0,0),[220,5], 12, 0, pyray.YELLOW)
- pyray.draw_text_ex(font12,"ENCODER:{:0.2f}".format(5),[315,5], 12, 0, pyray.YELLOW)
- pyray.draw_text_ex(font12,"FPS:{}".format(fps_count) ,[420,5], 12, 0, pyray.BLUE)
- pyray.draw_text_ex(font12,"BTN:{}".format(len(buttons)) ,[460,5], 12, 0, pyray.BLUE)
- pyray.draw_text_ex(font12,"FIX:{}".format(len(fix_list)),[520,5], 12, 0, pyray.BLUE)
-
- txt="HELP"
- key="HELP"
- btn=BUTTON(None,txt,[4,160,16,40])
- btn.font = font10
- buttons[key] = btn
- draw_buttons(buttons)
-
- pyray.draw_text_ex(font12,"X:{}".format(int(m.x)),[590,5], 12, 0, pyray.VIOLET)
- pyray.draw_text_ex(font12,"Y:{}".format(int(m.y)),[620,5], 12, 0, pyray.VIOLET)
- pyray.draw_rectangle(int(old_x-10),int(old_y-1),20,2,[255,0,255,255])
- pyray.draw_rectangle(int(old_x-1),int(old_y-10),2,20,[255,0,255,255])
- aapos = draw_mouse_box(None,[old_x,old_y],mouse_old,color=[128,128,128],text=1)
- pyray.end_drawing()
-
- # frame tick speed, CPU LOAD. ------
- delta = 1/5
- if delta > (time.time()-core_tick_t):
- delta -= (time.time()-core_tick_t)
- #print(delta)
- for t in range(8):
- time.sleep(delta/8)
- _event_loop()
- pyray.begin_drawing()
- pyray.end_drawing()
- core_tick_t = time.time()
- # --------------------------------
- frame_count += 1
- if time.time()-start > 1:
- start = time.time()
- fps_count = frame_count
- frame_count = 0
- FIRST_RUN = 0
- except KeyboardInterrupt as e:
- raise e
- except Exception as e:# KeyInterupt
- print("err",e)
- import traceback
- print(traceback.format_exc())
- time.sleep(1)
- pyray.close_window()
|