@@ -939,25 +939,41 @@ def __init__(self, navigation, window):
939
939
borderwidth = 2 )
940
940
self ._toolitems = {}
941
941
self .pack (side = Tk .TOP , fill = Tk .X )
942
+ self ._groups = {}
942
943
943
944
def add_toolitem (self , name , group , position , image_file , description ,
944
945
toggle ):
945
- button = self ._Button (name , image_file , toggle )
946
+ frame = self ._get_groupframe (group )
947
+ button = self ._Button (name , image_file , toggle , frame )
946
948
if description is not None :
947
949
ToolTip .createToolTip (button , description )
948
- self ._toolitems [name ] = button
949
-
950
- def _Button (self , text , image_file , toggle ):
950
+ self ._toolitems .setdefault (name , [])
951
+ self ._toolitems [name ].append (button )
952
+
953
+ def _get_groupframe (self , group ):
954
+ if group not in self ._groups :
955
+ if self ._groups :
956
+ self ._add_separator ()
957
+ frame = Tk .Frame (master = self , borderwidth = 0 )
958
+ frame .pack (side = Tk .LEFT , fill = Tk .Y )
959
+ self ._groups [group ] = frame
960
+ return self ._groups [group ]
961
+
962
+ def _add_separator (self ):
963
+ separator = Tk .Frame (master = self , bd = 5 , width = 1 , bg = 'black' )
964
+ separator .pack (side = Tk .LEFT , fill = Tk .Y , padx = 2 )
965
+
966
+ def _Button (self , text , image_file , toggle , frame ):
951
967
if image_file is not None :
952
968
im = Tk .PhotoImage (master = self , file = image_file )
953
969
else :
954
970
im = None
955
971
956
972
if not toggle :
957
- b = Tk .Button (master = self , text = text , padx = 2 , pady = 2 , image = im ,
973
+ b = Tk .Button (master = frame , text = text , padx = 2 , pady = 2 , image = im ,
958
974
command = lambda : self ._button_click (text ))
959
975
else :
960
- b = Tk .Checkbutton (master = self , text = text , padx = 2 , pady = 2 ,
976
+ b = Tk .Checkbutton (master = frame , text = text , padx = 2 , pady = 2 ,
961
977
image = im , indicatoron = False ,
962
978
command = lambda : self ._button_click (text ))
963
979
b ._ntimage = im
@@ -970,13 +986,15 @@ def _button_click(self, name):
970
986
def toggle_toolitem (self , name , toggled ):
971
987
if name not in self ._toolitems :
972
988
return
973
- if toggled :
974
- self ._toolitems [name ].select ()
975
- else :
976
- self ._toolitems [name ].deselect ()
989
+ for toolitem in self ._toolitems [name ]:
990
+ if toggled :
991
+ toolitem .select ()
992
+ else :
993
+ toolitem .deselect ()
977
994
978
995
def remove_toolitem (self , name ):
979
- self ._toolitems [name ].pack_forget ()
996
+ for toolitem in self ._toolitems [name ]:
997
+ toolitem .pack_forget ()
980
998
del self ._toolitems [name ]
981
999
982
1000
0 commit comments