#from pyray import * import pyray import sys sys.path.insert(0,"/opt/LibreLight/Xdesk/") CAPTION = 'R-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]] 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) 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" font10l = 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() font20 = pyray.load_font_ex(a, 20, 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.btn.btn1.name=txt #x=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) 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.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) 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 = 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) 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 buttons={} #[] cur = None history = [] KEY_BUF={} add=0 while not pyray.window_should_close(): pyray.begin_drawing() pyray.clear_background(pyray.BLACK) pyray.Color(255,0,0,0) pyray.rl_enable_smooth_lines() font_size = font10.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 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() 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 if add: add=0 print() w=200 h=50 x=200 y=200 pyray.draw_text_ex(font25,"FPS:{}".format(fps_count),[10,5], 25, 0, pyray.VIOLET) 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 range(3): ev = "" if pyray.is_mouse_button_released(i): ev = "release" if pyray.is_mouse_button_pressed(i): ev = "click" #"press" if ev and ev != mouse[i]: mouse[i] = ev mouse_change=1 if mouse_change: print("MOUSE:",mouse,old_x,old_y) #=[None,None,None] for i in range(1,12+1): _KEY = "KEY_F{}".format(i) x = pyray.KeyboardKey[_KEY] #k_val=pyray.is_key_pressed(x) k_val=pyray.is_key_down(x) if _KEY not in KEY_BUF: KEY_BUF[_KEY] = k_val if KEY_BUF[_KEY] != k_val: print("KEY_CHANGE",_KEY,k_val) KEY_BUF[_KEY] = k_val x=pyray.get_key_pressed() if x: print("key",x) x=pyray.is_key_pressed(pyray.KEY_F1) if x: print("key",x) if mouse != mouse_old and mouse != [None,None,None]: #print(mouse) mouse_old = mouse[:] for k,btn in buttons.items(): btn.event(old_x,old_y,mouse_old) btn.draw() pyray.draw_text_ex(font20,"POS:{}:{}".format(int(m.x),int(m.y)),[10,34], 20, 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() time.sleep(1/11) for i,v in enumerate(mouse_old): if v == "release": mouse_old[i] = None if v == "click": mouse_old[i] = "press" #print(mouse_old) frame_count += 1 if time.time()-start > 1: start = time.time() fps_count = frame_count frame_count = 0 #pyray.set_window_size(POS[0],POS[1]) #POS[0]+=1 if pyray.is_window_resized(): print( "RESIZE WINDOW OK") #print(pyray.FLAG_WINDOW_RESIZABLE ) #print("E",pyray.is_window_focused() ) 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()