8000 Rewrote backend_gtk3 to use multiple toolbars. · fariza/matplotlib@9a6ae52 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9a6ae52

Browse files
committed
Rewrote backend_gtk3 to use multiple toolbars.
1 parent a872443 commit 9a6ae52

File tree

2 files changed

+25
-21
lines changed

2 files changed

+25
-21
lines changed

lib/matplotlib/backend_bases.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3612,6 +3612,8 @@ def _add_tool_cbk(self, event):
36123612
"""Captures 'tool_added_event' and adds the tool to the toolbar"""
36133613
tool, group, position = event.tool, event.data['group'], \
36143614
event.data['position']
3615+
if group is None:
3616+
return
36153617
image = self._get_image_filename(tool.image)
36163618
toggle = getattr(event.tool, 'toggled', None) is not None
36173619

lib/matplotlib/backends/backend_gtk3.py

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -758,10 +758,10 @@ def __init__(self, navigation):
758758
Gtk.Box.__init__(self)
759759
self.set_property("orientation", Gtk.Orientation.VERTICAL)
760760

761-
self._toolbar = Gtk.Toolbar()
762-
self._toolbar.set_style(Gtk.ToolbarStyle.ICONS)
763-
self.pack_start(self._toolbar, False, False, 0)
764-
self._toolbar.show_all()
761+
self._toolarea = Gtk.Box()
762+
self._toolarea.set_property('orientation', Gtk.Orientation.HORIZONTAL)
763+
self.pack_start(self._toolarea, False, False, 0)
764+
self._toolarea.show_all()
765765
self._toolitems = {}
766766
self._signals = {}
767767
self._setup_message_area()
@@ -784,12 +784,6 @@ def _setup_message_area(self):
784784

785785
def add_toolitem(self, name, group, position, image_file, description,
786786
toggle):
787-
if group is None:
788-
return
789-
790-
if group not in self._groups and len(self._groups) != 0:
791-
self.add_separator()
792-
793787
if toggle:
794788
tbutton = Gtk.ToggleToolButton()
795789
else:
@@ -801,17 +795,23 @@ def add_toolitem(self, name, group, position, image_file, description,
801795
image.set_from_file(image_file)
802796
tbutton.set_icon_widget(image)
803797

804-
self._toolbar.insert(tbutton, position)
798+
#self._toolbar.insert(tbutton, position)
805799
signal = tbutton.connect('clicked', self._call_tool, name)
806800
tbutton.set_tooltip_text(description)
807801
tbutton.show_all()
808802
self._toolitems[name] = tbutton
809803
self._signals[name] = signal
810804

811-
def get_group_count(self, name):
812-
index, group_count = ToolbarBase.get_group_count(self, name)
813-
814-
return index + group_count, group_count
805+
def add_tool_to_group(self, tool, group, position=-1):
806+
if not group in self._groups:
807+
if len(self._groups) != 0:
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(self._toolitems[tool.name], position)
815815

816816
def _call_tool(self, btn, name):
817817
self.trigger_tool(name)
@@ -832,14 +832,16 @@ def remove_toolitem(self, name):
832832
if name not in self._toolitems:
833833
self.set_message('%s Not in toolbar' % name)
834834
return
835-
self._toolbar.remove(self._toolitems[name])
835+
for group in self._groups:
836+
if self._toolitems[name] in self._groups[group]:
837+
self._groups[group].remove(self._toolitems[name])
836838
del self._toolitems[name]
837839

838-
def add_separator(self, pos=-1):
839-
toolitem = Gtk.SeparatorToolItem()
840-
self._toolbar.insert(toolitem, pos)
841-
toolitem.show()
842-
return toolitem
840+
def add_separator(self):
841+
sep = Gtk.Separator()
842+
sep.set_property("orientation", Gtk.Orientation.VERTICAL)
843+
self._toolarea.pack_start(sep, False, True, 0)
844+
sep.show_all()
843845

844846

845847
class SaveFigureGTK3(SaveFigureBase):

0 commit comments

Comments
 (0)
0