@@ -39,9 +39,24 @@ def __init__(self, switchboard, parent=None):
3939 # Hex/Dec
4040 self .__hex = Checkbutton (self .__frame ,
4141 text = 'Hexadecimal' ,
42- variable = self .__hexp )
42+ variable = self .__hexp ,
43+ command = self .__togglehex )
4344 self .__hex .grid (row = 4 , column = 0 , columnspan = 2 , sticky = W )
4445
46+ def __togglehex (self , event = None ):
47+ rstr = self .__x .get ()
48+ gstr = self .__y .get ()
49+ bstr = self .__z .get ()
50+ if self .__hexp .get ():
51+ # it was decimal and is now hex
52+ apply (self .update_yourself , tuple (map (int , (rstr , gstr , bstr ))))
53+ else :
54+ # it was hex and is now decimal
55+ red = string .atoi (rstr , 16 )
56+ green = string .atoi (gstr , 16 )
57+ blue = string .atoi (bstr , 16 )
58+ self .update_yourself (red , green , blue )
59+
4560 def __normalize (self , event = None ):
4661 ew = event .widget
4762 contents = ew .get ()
@@ -55,9 +70,11 @@ def __normalize(self, event=None):
5570 v = string .atoi (contents )
5671 except ValueError :
5772 v = None
58- # if value is not legal, delete the last character and ring the bell
73+ # if value is not legal, delete the last character inserted and ring
74+ # the bell
5975 if v is None or v < 0 or v > 255 :
60- contents = contents [:- 1 ]
76+ i = ew .index (INSERT )
77+ contents = contents [:i - 1 ] + contents [i :]
6178 ew .bell ()
6279 elif self .__hexp .get ():
6380 contents = hex (v )
@@ -86,7 +103,7 @@ def update_yourself(self, red, green, blue):
86103 if self .__hexp .get ():
87104 redstr , greenstr , bluestr = map (hex , (red , green , blue ))
88105 else :
89- redstr , greenstr , bluestr = map ( int , ( red , green , blue ))
106+ redstr , greenstr , bluestr = red , green , blue
90107 self .__x .delete (0 , END )
91108 self .__y .delete (0 , END )
92109 self .__z .delete (0 , END )
0 commit comments