@@ -771,14 +771,16 @@ def __init__(self, navigation):
771
771
Gtk .Box .__init__ (self )
772
772
self .set_property ("orientation" , Gtk .Orientation .VERTICAL )
773
773
774
- self ._toolbar = Gtk .Toolbar ()
775
- self ._toolbar .set_style (Gtk .ToolbarStyle .ICONS )
776
- self .pack_start (self ._toolbar , False , False , 0 )
777
- self ._toolbar .show_all ()
774
+ self ._toolarea = Gtk .Box ()
775
+ self ._toolarea .set_property ('orientation' , Gtk .Orientation .HORIZONTAL )
776
+ self .pack_start (self ._toolarea , False , False , 0 )
777
+ self ._toolarea .show_all ()
778
+ self ._groups = {}
778
779
self ._toolitems = {}
779
780
780
781
def add_toolitem (self , name , group , position , image_file , description ,
781
782
toggle ):
783
+
782
784
if toggle :
783
785
tbutton = Gtk .ToggleToolButton ()
784
786
else :
@@ -792,14 +794,25 @@ def add_toolitem(self, name, group, position, image_file, description,
792
794
793
795
if position is None :
794
796
position = - 1
795
- # TODO implement groups positions
796
- self ._toolbar . insert (tbutton , - 1 )
797
+
798
+ self ._add_button (tbutton , group , position )
797
799
signal = tbutton .connect ('clicked' , self ._call_tool , name )
798
800
tbutton .set_tooltip_text (description )
799
801
tbutton .show_all ()
800
802
self ._toolitems .setdefault (name , [])
801
803
self ._toolitems [name ].append ((tbutton , signal ))
802
804
805
+ def _add_button (self , button , group , position ):
806
+ if group not in self ._groups :
807
+ if self ._groups :
808
+ self ._add_separator ()
809
+ toolbar = Gtk .Toolbar ()
810
+ toolbar .set_style (Gtk .ToolbarStyle .ICONS )
811
+ self ._toolarea .pack_start (toolbar , False , False , 0 )
812
+ toolbar .show_all ()
813
+ self ._groups [group ] = toolbar
814
+ self ._groups [group ].insert (button , position )
815
+
803
816
def _call_tool (self , btn , name ):
804
817
self .trigger_tool (name )
805
818
@@ -815,15 +828,18 @@ def remove_toolitem(self, name):
815
828
if name not in self ._toolitems :
816
829
self .navigation .message_event ('%s Not in toolbar' % name , self )
817
830
return
818
- for toolitem , _signal in self ._toolitems [name ]:
819
- self ._toolbar .remove (toolitem )
831
+
832
+ for group in self ._groups :
833
+ for toolitem , _signal in self ._toolitems [name ]:
834
+ if toolitem in self ._groups [group ]:
835
+ self ._groups [group ].remove (toolitem )
820
836
del self ._toolitems [name ]
821
837
822
- def add_separator (self , pos = - 1 ):
823
- toolitem = Gtk .SeparatorToolItem ()
824
- self . _toolbar . insert ( toolitem , pos )
825
- toolitem . show ( )
826
- return toolitem
838
+ def _add_separator (self ):
839
+ sep = Gtk .Separator ()
840
+ sep . set_property ( "orientation" , Gtk . Orientation . VERTICAL )
841
+ self . _toolarea . pack_start ( sep , False , True , 0 )
842
+ sep . show_all ()
827
843
828
844
829
845
class StatusbarGTK3 (StatusbarBase , Gtk .Statusbar ):
0 commit comments