Forráskód Böngészése

add: tkray/fix.py

micha 4 hónapja
szülő
commit
bad8fd11ad
1 módosított fájl, 379 hozzáadás és 0 törlés
  1. 379 0
      tkray/fix.py

+ 379 - 0
tkray/fix.py

@@ -0,0 +1,379 @@
+#from pyray import *
+import pyray 
+import sys
+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]
+if store:
+    POS=[store[-2],store[-1]]
+
+#pyray.glfw_window_hint(4,1)
+#glfw_init_hint
+
+for i in dir(pyray):
+    if "hint" in i.lower():
+        print(i)
+
+#pyray.SetConfigFlags(FLAG_WINDOW_RESIZABLE); 
+#pyray.ConfigFlags(pyray.FLAG_WINDOW_RESIZABLE  )
+#for i in range(1,20):
+#    try:
+#        pyray.ConfigFlags(i) #pyray.FLAG_WINDOW_RESIZABLE  )
+#    except Exception as e:
+#        print(e)
+pyray.init_window(760, 450, CAPTION) #"RAY-DMX")#,10,10,10,10)
+#pyray.init_window(0, 0, CAPTION) #"RAY-DMX")#,10,10,10,10)
+pyray.ConfigFlags(pyray.FLAG_WINDOW_RESIZABLE  )
+#pyray.SetWindowMaxSize(2000,2000)
+pyray.set_window_min_size(200,200)
+pyray.set_window_max_size(1000,1000)
+#pyray.set_window_state()
+#pyray.TextureFilter(font10,1)
+#FLAG_RESIZABLE_WINDOW
+
+#POS=[100,200]
+#pyray.set_window_size(POS[0],POS[1])
+#POS=[200,100]
+#pyray.set_window_size(POS[0],POS[1])
+
+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:
+            #print("POS:",old_x,old_y,mouse,xevent.type)
+            xevent.dict={"pos":[old_y,old_x],"button":1,"buttons":[0,0,0]}
+            #xevent.type=3
+            for i,v in enumerate(mouse):
+                if i==0:
+                    if v == "release":
+                        xevent.type=6
+                        xevent.dict["button"] = 1
+                        #self.btn.btn1.val.set(0)
+                    if v == "press":
+                        xevent.type=5
+                        xevent.dict["button"] = 1
+                        #self.btn.btn1.val.set(255)
+            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 = []
+
+
+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 = {}
+        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 != 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)
+            #if "press" == mouse_old[0]:
+            if "release" == mouse_old[0]:
+                btn.button = 1
+                #if check_area(btn.btn.pos,[old_x,old_y]):#event_pos):
+                if check_area(btn.btn.pos,[old_y,old_x]):#event_pos):
+                    #print(k,btn.btn.pos)
+                    #btn.btn.btn1.val.set(255)
+                    #cur = k
+                    cur = k # btn.btn.btn1.name
+            btn.draw()
+            aapos = draw_mouse_box(None,[old_x,old_y],mouse_old,color=[128,128,128],text=1)
+
+        
+        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])
+
+        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  )
+
+    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()
+