123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402 |
- #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()
|