Przeglądaj źródła

add level master in colorpicker

micha 2 lat temu
rodzic
commit
fd9461df7e
2 zmienionych plików z 81 dodań i 26 usunięć
  1. 30 9
      _LibreLightDesk.py
  2. 51 17
      lib/colorpicker.py

+ 30 - 9
_LibreLightDesk.py

@@ -2539,43 +2539,64 @@ def draw_colorpicker(gui,xframe):
         def __init__(gui):
             gui.old_color = (0,0,0)
         def cb(gui,event,data):
+            print("CB.cb",gui,event,data)
             cprint("colorpicker CB")
             if "color" in data and gui.old_color != data["color"] or event.num==2:
                 gui.old_color = data["color"]
             else:
                 return 0
             color = data["color"]
-
+            
             print("e",event,data)
             print("e",dir(event))#.keys())
             try:
                 print("e.state",event.state)
             except:pass
             set_fade = FADE.val() #fade
-            
-            if "color" in data and (event.num == 1 or event.num == 3 or event.num==2 or event.state in [256,1024]):
+
+            event_ok = 0
+            event_num = 0
+            event_state = 0
+            if event is None:
+                event_ok = 1
+                event_num = 3
+            elif event.num == 1:
+                event_ok = 1
+                event_num = event.num 
+            elif event.num == 3:
+                event_ok = 1
+                event_num = event.num 
+            elif event.num==2:
+                event_ok = 1
+                event_num = event.num 
+            elif event.state in [256,1024]:
+                event_ok = 1
+                event_state = event.state
+
+
+            if "color" in data and event_ok:
                 cr=None
                 cg=None
                 cb=None
                 cw=0
                 ca=0
-                if event.num == 1: 
+                if event_num == 1: 
                     set_fade=FADE.val() #fade
                     cr = color[0]
                     cg = color[1]
                     cb = color[2]
-                elif event.num == 3: 
+                elif event_num == 3: 
                     cr = color[0]
                     cg = color[1]
                     cb = color[2]
                     set_fade=0
-                elif event.num == 2: 
+                elif event_num == 2: 
                     cr= "click"
                     cg= "click"
                     cb= "click"
                     cw= "click"
                     ca= "click"
-                elif event.state == 256:
+                elif event_state == 256:
                     cr = color[0]
                     cg = color[1]
                     cb = color[2]
@@ -2597,7 +2618,7 @@ def draw_colorpicker(gui,xframe):
                  
                 print("PICK COLOR:",data["color"])
     _cb=_CB()
-    colp.colorpicker(xframe,width=600,height=113, xcb=_cb.cb)
+    colp.colorpicker(xframe,width=580,height=113, xcb=_cb.cb)
     return 0
 
     canvas=tk.Canvas(xframe,width=600,height=113)
@@ -4105,7 +4126,7 @@ window_manager.new(w,name)
 
 #LibreLightDesk
 name="COLORPICKER"
-w = GUIWindow(name,master=0,width=580,height=113,left=L1,top=20+HTB*2+H1)
+w = GUIWindow(name,master=0,width=620,height=113,left=L1,top=20+HTB*2+H1)
 draw_colorpicker(master,w.tk)
 window_manager.new(w,name)
 

+ 51 - 17
lib/colorpicker.py

@@ -27,8 +27,10 @@ def _cb(event,data={}):
     print("dummy cb",event)
 
 class cb():
-    def __init__(self,win,cb=None):
+    def __init__(self,win,cb=None,scale=None):
+        self.scale=scale
         self.win = win
+        self.int_color = [255,255,255]
         if cb:
             self.cb = cb
         else:
@@ -40,23 +42,40 @@ class cb():
         print( "colorpicker._callback",repr(undermouse))
     def callback(self,event):
         cnv = self.win
-        item = cnv.find_closest(cnv.canvasx(event.x), cnv.canvasy(event.y))[0]
-        tags = cnv.gettags(item)
-        #cnv.itemconfigure(self.tag, text=tags[0])
-        print("colorpicker callback",tags,item)
-        color = cnv.itemcget(item, "fill")
-        cnv.itemconfig("all", width=1)#filla="green")
-        cnv.itemconfig(item, width=3)#filla="green")
-        print("picker",color)
-        int_color= hex_to_rgb(color[1:])
-        print("picker",int_color)
-        self.cb(event,{"canvas":cnv,"color":int_color})
-
-
-def colorpicker(xframe,width=600,height=100,xcb=None):
+
+        try:
+            item = cnv.find_closest(cnv.canvasx(event.x), cnv.canvasy(event.y))[0]
+            tags = cnv.gettags(item)
+            #cnv.itemconfigure(self.tag, text=tags[0])
+            print("colorpicker callback",tags,item)
+            color = cnv.itemcget(item, "fill")
+            cnv.itemconfig("all", width=1)#filla="green")
+            cnv.itemconfig(item, width=3)#filla="green")
+            print("picker",color)
+            self.int_color= hex_to_rgb(color[1:])
+        except AttributeError as e:
+            print("except colorpicker ",e)
+            print("take old last",self.int_color)
+        print("picker",self.int_color)
+        int_color2 = []
+        for c in self.int_color:
+            if self.scale is not None:
+                x = int(c *self.scale.get()/255)
+                print(c,x)
+                int_color2.append(x)
+            else:
+                int_color2.append(c)
+
+
+        self.cb(event,{"canvas":cnv,"color":int_color2})
+
+
+def colorpicker(xframe,width=500,height=100,xcb=None):
     canvas=tk.Canvas(xframe,width=width,height=height)
     canvas["bg"] = "grey" #"green"
-    _callback = cb(canvas,xcb)
+    _scale = tk.Scale(xframe,bg="lightblue", width=8,from_=255,to=0)##,command=self.event)
+    _scale.set(255)
+    _callback = cb(canvas,xcb,_scale)
 
     #canvas.bind("<Key>", key)
     canvas.bind("<Key>", _callback.callback)
@@ -70,7 +89,14 @@ def colorpicker(xframe,width=600,height=100,xcb=None):
     canvas.bind("<B3-Motion>", _callback.callback)
     canvas.bind("<B4-Motion>", _callback.callback)
     canvas.bind("<B5-Motion>", _callback.callback)
-    canvas.pack()
+    canvas.pack(side="left")
+    def scale_callback(data=[]):
+        #_last_scale = time.time()
+        print("scale_callback",data)
+        _callback.callback(None) #data)
+    #_scale.config(command=_callback.callback)
+    _scale.config(command=scale_callback) 
+    _scale.pack(side="left")
 
     x=2
     y=2
@@ -146,6 +172,14 @@ def colorpicker(xframe,width=600,height=100,xcb=None):
             g=0
         if b < 0:
             b=0
+
+    #print(dir(_b))
+    #input()
+    #b.configure(width = 10, activebackground = "#33B5E5", relief = FLAT)
+    #b = canvas.create_window(10, 10, anchor="nw", window=f)
+
+    #self.b.pack(fill=tk.Y, side=tk.TOP)
+    #self.elem.append(self.b)
     
 if __name__ == "__main__":
     xframe = tk.Tk()