|
|
@@ -4,7 +4,7 @@ import sys
|
|
|
sys.path.insert(0,"/opt/LibreLight/Xdesk/")
|
|
|
|
|
|
|
|
|
-CAPTION = 'R-FIX-LIST'
|
|
|
+CAPTION = 'RAY-FIX-LIST'
|
|
|
import tool.movewin as movewin
|
|
|
|
|
|
import pathlib
|
|
|
@@ -67,13 +67,20 @@ a = "/usr/share/fonts/truetype/freefont/FreeSansBold.ttf"
|
|
|
|
|
|
k=200
|
|
|
a = "/usr/share/fonts/truetype/freefont/FreeSans.ttf"
|
|
|
-font10l = pyray.load_font_ex(a, 10, None, 0);
|
|
|
+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, 12, None, 0);
|
|
|
-print(dir(font10))
|
|
|
-print(font10.baseSize)
|
|
|
-##exit()
|
|
|
+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"
|
|
|
@@ -104,12 +111,14 @@ class BUTTON():
|
|
|
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):
|
|
|
- font_size = font10.baseSize
|
|
|
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)
|
|
|
@@ -117,12 +126,19 @@ class BUTTON():
|
|
|
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(110*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
|
|
|
- pyray.draw_text_ex(font10,str(x), [pos[1]+4,pos[0]+4], font_size, 0, [0,0,0,255])#pyray.YELLOW)#[0,255,0,255]) #pyray.YELLOW)
|
|
|
+
|
|
|
+ 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:
|
|
|
@@ -201,11 +217,11 @@ def draw_mouse_box(window,pos1,mouse=[None,None,None],color=[128,128,128],text=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 = font10l.baseSize
|
|
|
- pyray.draw_text_ex(font10l,str(pos1[0])+" "+str(pos1[1]), [pos1[0],pos1[1]-10], font_size, 0, pyray.WHITE)
|
|
|
- pyray.draw_text_ex(font10l,str(pos2[0])+" "+str(pos2[1]), [pos2[0]+5,pos2[1]+10], font_size, 0, pyray.WHITE)
|
|
|
- pyray.draw_text_ex(font10l,str(w), [pos2[0]+5+w/2*wd,pos2[1]], font_size, 0, pyray.WHITE)
|
|
|
- pyray.draw_text_ex(font10l,str(h), [pos2[0]+5,pos2[1]+h/2*hd], font_size, 0, pyray.WHITE)
|
|
|
+ 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]
|
|
|
@@ -225,13 +241,197 @@ def check_area(pos,event_pos):
|
|
|
if x and y:
|
|
|
return 1
|
|
|
|
|
|
+_load_fix_DATA = {}
|
|
|
+_load_fix_host_list = {}
|
|
|
+_load_fix_last = time.time()
|
|
|
+_load_fix_keys = 0
|
|
|
+_load_fix_init = 0
|
|
|
+_load_fix_keys = []
|
|
|
+def load_fix():
|
|
|
+ global _load_fix_DATA
|
|
|
+ global _load_fix_host_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():
|
|
|
+ return _load_fix_keys.copy(), _load_fix_host_list.copy()
|
|
|
+
|
|
|
+ print("load_fix update")
|
|
|
+ _load_fix_last = time.time()
|
|
|
+ _load_fix_init = 1
|
|
|
+
|
|
|
+ DATA=mc.get("fix")#cmd)
|
|
|
+ keys = []
|
|
|
+ host_list = {}
|
|
|
+ if not DATA:
|
|
|
+ DATA = {}
|
|
|
+ print("mc.get ist NONE")
|
|
|
+ #continue
|
|
|
+
|
|
|
+ for k in DATA:
|
|
|
+ keys.append(k)
|
|
|
+ host_list[k] = DATA[k] #[0]).ljust(" ",18) #,0,"=",0]
|
|
|
+ keys.sort()
|
|
|
+
|
|
|
+ _load_fix_keys = keys
|
|
|
+ _load_fix_host_list = host_list
|
|
|
+
|
|
|
+ return _load_fix_keys.copy(), _load_fix_host_list.copy()
|
|
|
+
|
|
|
+def check_buttons(buttons,host_list):
|
|
|
+ _x=20
|
|
|
+ _y=30
|
|
|
+
|
|
|
+ H = 22
|
|
|
+ W = 100
|
|
|
+ W2 = W+20
|
|
|
+
|
|
|
+ _last_v = {}
|
|
|
+ for i,k in enumerate(host_list): #.items():
|
|
|
+ _x=20
|
|
|
+ key = str(i)
|
|
|
+ if key not in buttons: # insert
|
|
|
+ v=host_list[k]
|
|
|
+ _last_v = v
|
|
|
+ txt="ID:"+str(v["ID"])
|
|
|
+ btn=BUTTON(None,txt,[_y,_x,H,60])
|
|
|
+ btn.btn.btn1.color_on = [255,255,0,255]
|
|
|
+ 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 = [255,255,0,255]
|
|
|
+ buttons[key] = btn
|
|
|
+ #print("ADD",key,btn)
|
|
|
+
|
|
|
+ _x+=W+2
|
|
|
+ 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 = [255,255,0,255]
|
|
|
+ buttons[key] = btn
|
|
|
+ _x+=20+2
|
|
|
+
|
|
|
+ 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 = [255,255,0,255]
|
|
|
+
|
|
|
+
|
|
|
+ #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(host_list): #.items():
|
|
|
+ key = str(i)
|
|
|
+ v=host_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
|
|
|
+
|
|
|
+
|
|
|
+ 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()
|
|
|
|
|
|
buttons={} #[]
|
|
|
cur = None
|
|
|
history = []
|
|
|
KEY_BUF={}
|
|
|
-
|
|
|
+FIRST_RUN = 1
|
|
|
add=0
|
|
|
+
|
|
|
+core_tick_t = time.time()
|
|
|
+
|
|
|
while not pyray.window_should_close():
|
|
|
pyray.begin_drawing()
|
|
|
|
|
|
@@ -241,78 +441,35 @@ while not pyray.window_should_close():
|
|
|
|
|
|
|
|
|
|
|
|
- font_size = font10.baseSize
|
|
|
+ font_size = font12.baseSize
|
|
|
try:
|
|
|
- DATA=mc.get("fix")#cmd)
|
|
|
- GREY = [122,122,122,255]
|
|
|
- p=0
|
|
|
- keys = []
|
|
|
- host_list = {}
|
|
|
- if not DATA:
|
|
|
- DATA = {}
|
|
|
- print("mc.get ist NONE")
|
|
|
- pyray.draw_text_ex(font25,"ERR:{NO DATA}",[10,5], 25, 0, pyray.VIOLET)
|
|
|
- pyray.end_drawing()
|
|
|
- time.sleep(0.5)
|
|
|
- continue
|
|
|
+ mw = pyray.get_screen_width()
|
|
|
+ mh = pyray.get_screen_height()
|
|
|
|
|
|
- for k in DATA:
|
|
|
- #print(k,DATA[k])
|
|
|
- #print(k)
|
|
|
- keys.append(k)
|
|
|
- host_list[k] = DATA[k] #[0]).ljust(" ",18) #,0,"=",0]
|
|
|
- keys.sort()
|
|
|
+ keys,host_list = load_fix()
|
|
|
+
|
|
|
+ GREY = [122,122,122,255]
|
|
|
|
|
|
k=keys[0]
|
|
|
|
|
|
if cur is None:
|
|
|
cur = k #k[3] #"xx123" # k
|
|
|
|
|
|
-
|
|
|
- p=0
|
|
|
- start = 0
|
|
|
- end = start+10
|
|
|
- i=0
|
|
|
- for k,v in host_list.items():
|
|
|
- if i > end:
|
|
|
- break
|
|
|
- if i < start:
|
|
|
- continue
|
|
|
-
|
|
|
- x2 = 30
|
|
|
- y2 = 60+p #grid_y+p
|
|
|
- v = str(v).replace(" ","").replace("[","").replace("]","")
|
|
|
- txt = str(k)+" "+str(v)
|
|
|
-
|
|
|
- key = txt.split(" ")[0]
|
|
|
- p+=32
|
|
|
- if key in buttons:
|
|
|
- btn = buttons[key]
|
|
|
- else:
|
|
|
- btn=BUTTON(None,txt,[y2,x2,30,690])
|
|
|
- buttons[key] = btn
|
|
|
- print("ADD",key,btn)
|
|
|
- add=1
|
|
|
- btn.btn.btn1.name = txt
|
|
|
- btn.btn.btn1.color_on = [255,255,0,255]
|
|
|
- #btn.btn.btn1.val.set(0)
|
|
|
- #if cur in btn.btn.btn1.name:
|
|
|
- # btn.btn.btn1.val.set(255)
|
|
|
- # #btn.btn.btn1.press() #val.set(255)
|
|
|
- i+=1
|
|
|
+ check_buttons(buttons,host_list)
|
|
|
|
|
|
|
|
|
- if add:
|
|
|
- add=0
|
|
|
- print()
|
|
|
- w=200
|
|
|
- h=50
|
|
|
+ pyray.draw_text_ex(font_l_22,"FIXTURE LIST",[20,2], 22, 0, pyray.GRAY)
|
|
|
|
|
|
- x=200
|
|
|
- y=200
|
|
|
+ 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(font25,"FPS:{}".format(fps_count),[10,5], 25, 0, pyray.VIOLET)
|
|
|
+ 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(host_list)),[520,5], 12, 0, pyray.BLUE)
|
|
|
|
|
|
+ wheel = pyray.get_mouse_wheel_move()
|
|
|
+ if wheel:
|
|
|
+ print(wheel)
|
|
|
m=pyray.get_mouse_position()
|
|
|
#print(m)
|
|
|
if m.x != old_x or m.y != old_y:
|
|
|
@@ -357,12 +514,24 @@ while not pyray.window_should_close():
|
|
|
#print(mouse)
|
|
|
mouse_old = mouse[:]
|
|
|
|
|
|
-
|
|
|
- for k,btn in buttons.items():
|
|
|
- btn.event(old_x,old_y,mouse_old)
|
|
|
- btn.draw()
|
|
|
+ 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)
|
|
|
+
|
|
|
+ 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(font20,"POS:{}:{}".format(int(m.x),int(m.y)),[10,34], 20, 0, pyray.VIOLET)
|
|
|
+ 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])
|
|
|
@@ -371,7 +540,16 @@ while not pyray.window_should_close():
|
|
|
|
|
|
pyray.end_drawing()
|
|
|
|
|
|
- time.sleep(1/11)
|
|
|
+ # frame tick speed, CPU LOAD. ------
|
|
|
+ delta = 1/5
|
|
|
+ if delta > (time.time()-core_tick_t):
|
|
|
+ delta -= (time.time()-core_tick_t)
|
|
|
+ #print(delta)
|
|
|
+ time.sleep(delta)
|
|
|
+ core_tick_t = time.time()
|
|
|
+ # --------------------------------
|
|
|
+
|
|
|
+
|
|
|
|
|
|
for i,v in enumerate(mouse_old):
|
|
|
if v == "release":
|
|
|
@@ -389,8 +567,15 @@ while not pyray.window_should_close():
|
|
|
#POS[0]+=1
|
|
|
if pyray.is_window_resized():
|
|
|
print( "RESIZE WINDOW OK")
|
|
|
+ #for i in dir(pyray):
|
|
|
+ # if "height" in i.lower():
|
|
|
+ # print(i)
|
|
|
+ w = pyray.get_screen_width()
|
|
|
+ h = pyray.get_screen_height()
|
|
|
+ print(h,w)
|
|
|
#print(pyray.FLAG_WINDOW_RESIZABLE )
|
|
|
#print("E",pyray.is_window_focused() )
|
|
|
+ FIRST_RUN = 0
|
|
|
except KeyboardInterrupt as e:
|
|
|
raise e
|
|
|
except Exception as e:# KeyInterupt
|