diff --git a/src/gui/grampsbar.py b/src/gui/grampsbar.py
index 6135b1272..3ba466acf 100644
--- a/src/gui/grampsbar.py
+++ b/src/gui/grampsbar.py
@@ -319,7 +319,6 @@ class GrampsBar(gtk.Notebook):
"""
Create a tab label consisting of a label and a close button.
"""
- hbox = gtk.HBox(False, 4)
label = gtk.Label()
if gramplet.pui.has_data:
label.set_text("%s" % gramplet.title)
@@ -327,23 +326,8 @@ class GrampsBar(gtk.Notebook):
label.set_text(gramplet.title)
label.set_use_markup(True)
label.set_tooltip_text(gramplet.tname)
- closebtn = gtk.Button()
- image = gtk.Image()
- image.set_from_stock(gtk.STOCK_CLOSE, gtk.ICON_SIZE_MENU)
- closebtn.connect("clicked", self.__delete_clicked, gramplet)
- closebtn.set_image(image)
- closebtn.set_relief(gtk.RELIEF_NONE)
-
- # The next three lines adjust the close button to the correct size.
- closebtn.set_name('tab-button')
- size = gtk.icon_size_lookup_for_settings(closebtn.get_settings(),
- gtk.ICON_SIZE_MENU)
- closebtn.set_size_request(size[0] + 2, size[1] + 2)
-
- hbox.pack_start(label, True, True)
- hbox.pack_end(closebtn, False, False)
- hbox.show_all()
- return hbox
+ label.show_all()
+ return label
def __delete_clicked(self, button, gramplet):
"""
@@ -424,20 +408,24 @@ class GrampsBar(gtk.Notebook):
if event.type == gtk.gdk.BUTTON_PRESS and event.button == 3:
uiman = self.uistate.uimanager
ag_menu = uiman.get_widget('/GrampsBarPopup/AddGramplet')
- if ag_menu:
- submenu = ag_menu.get_submenu()
- submenu = gtk.Menu()
- skip = self.all_gramplets()
- gramplet_list = [(GET_AVAILABLE_GRAMPLETS(name)["tname"], name)
- for name in AVAILABLE_GRAMPLETS()
- if name not in skip]
+ skip = self.all_gramplets()
+ gramplet_list = [(GET_AVAILABLE_GRAMPLETS(name)["tname"], name)
+ for name in AVAILABLE_GRAMPLETS()
+ if name not in skip]
+ gramplet_list.sort()
+ self.__create_submenu(ag_menu, gramplet_list, self.__add_clicked)
+
+ rg_menu = uiman.get_widget('/GrampsBarPopup/RemoveGramplet')
+ if self.empty:
+ rg_menu.hide()
+ else:
+ gramplet_list = [(gramplet.title, gramplet.gname)
+ for gramplet in self.get_children() +
+ self.detached_gramplets]
gramplet_list.sort()
- for entry in gramplet_list:
- item = gtk.MenuItem(entry[0])
- item.connect("activate", self.__add_clicked, entry[1])
- item.show()
- submenu.append(item)
- ag_menu.set_submenu(submenu)
+ self.__create_submenu(rg_menu, gramplet_list,
+ self.__remove_clicked)
+ rg_menu.show()
menu = uiman.get_widget('/GrampsBarPopup')
if menu:
@@ -445,12 +433,32 @@ class GrampsBar(gtk.Notebook):
return True
return False
+ def __create_submenu(self, main_menu, gramplet_list, callback_func):
+ """
+ Create a submenu of the context menu.
+ """
+ if main_menu:
+ submenu = main_menu.get_submenu()
+ submenu = gtk.Menu()
+ for entry in gramplet_list:
+ item = gtk.MenuItem(entry[0])
+ item.connect("activate", callback_func, entry[1])
+ item.show()
+ submenu.append(item)
+ main_menu.set_submenu(submenu)
+
def __add_clicked(self, menu, gname):
"""
Called when a gramplet is added from the context menu.
"""
self.add_gramplet(gname)
+ def __remove_clicked(self, menu, gname):
+ """
+ Called when a gramplet is removed from the context menu.
+ """
+ self.remove_gramplet(gname)
+
def get_config_funcs(self):
"""
Return a list of configuration functions.
diff --git a/src/gui/views/pageview.py b/src/gui/views/pageview.py
index 26d5000f7..48c2cb1f4 100644
--- a/src/gui/views/pageview.py
+++ b/src/gui/views/pageview.py
@@ -113,6 +113,7 @@ class PageView(DbGUIElement):
+
'''
self.dirty = True
@@ -413,6 +414,8 @@ class PageView(DbGUIElement):
None, None, self.__bottombar_toggled,
self.bottombar.get_property('visible'))
self._add_action("AddGramplet", gtk.STOCK_ADD, _("Add a gramplet"))
+ self._add_action("RemoveGramplet", gtk.STOCK_REMOVE,
+ _("Remove a gramplet"))
def __build_action_group(self):
"""
diff --git a/src/gui/widgets/grampletpane.py b/src/gui/widgets/grampletpane.py
index 594567920..6176822b6 100644
--- a/src/gui/widgets/grampletpane.py
+++ b/src/gui/widgets/grampletpane.py
@@ -687,7 +687,7 @@ class GuiGramplet(object):
def set_has_data(self, value):
if isinstance(self.pane, gtk.Notebook):
if self.pane.get_tab_label(self):
- label = self.pane.get_tab_label(self).get_children()[0]
+ label = self.pane.get_tab_label(self)
if value:
label.set_text("%s" % self.title)
label.set_use_markup(True)