diff --git a/src/plugins/view/grampletview.py b/src/plugins/view/grampletview.py
index 3703e1a8c..fde565731 100644
--- a/src/plugins/view/grampletview.py
+++ b/src/plugins/view/grampletview.py
@@ -152,12 +152,12 @@ def get_gramplet_options_by_tname(name):
print ("Unknown gramplet name: '%s'" % name)
return None
-def make_requested_gramplet(viewpage, name, opts, dbstate, uistate):
+def make_requested_gramplet(pane, name, opts, dbstate, uistate):
"""
Make a GUI gramplet given its name.
"""
if name in AVAILABLE_GRAMPLETS():
- gui = GuiGramplet(viewpage, dbstate, uistate, **opts)
+ gui = GuiGramplet(pane, dbstate, uistate, **opts)
if opts.get("content", None):
pdata = PLUGMAN.get_plugin(opts["name"])
module = PLUGMAN.load_plugin(pdata)
@@ -272,32 +272,32 @@ class GrampletWindow(ManagedWindow.ManagedWindow):
Dock the detached GrampletWindow back in the column from where it came.
"""
self.gramplet.gvoptions.hide()
- self.gramplet.viewpage.detached_gramplets.remove(self.gramplet)
+ self.gramplet.pane.detached_gramplets.remove(self.gramplet)
if self.docked_state == "minimized":
self.gramplet.set_state("minimized")
else:
self.gramplet.set_state("maximized")
- viewpage = self.gramplet.viewpage
+ pane = self.gramplet.pane
col = self.gramplet.column
stack = []
- for gframe in viewpage.columns[col]:
- gramplet = viewpage.frame_map[str(gframe)]
+ for gframe in pane.columns[col]:
+ gramplet = pane.frame_map[str(gframe)]
if gramplet.row > self.gramplet.row:
- viewpage.columns[col].remove(gframe)
+ pane.columns[col].remove(gframe)
stack.append(gframe)
expand = self.gramplet.state == "maximized" and self.gramplet.expand
- column = viewpage.columns[col]
- parent = self.gramplet.viewpage.get_column_frame(self.gramplet.column)
+ column = pane.columns[col]
+ parent = self.gramplet.pane.get_column_frame(self.gramplet.column)
self.gramplet.mainframe.reparent(parent)
if self.gramplet.pui:
- self.gramplet.pui.active = self.gramplet.viewpage.active
+ self.gramplet.pui.active = self.gramplet.pane.pageview.active
for gframe in stack:
- gramplet = viewpage.frame_map[str(gframe)]
+ gramplet = pane.frame_map[str(gframe)]
expand = gramplet.state == "maximized" and gramplet.expand
- viewpage.columns[col].pack_start(gframe, expand=expand)
+ pane.columns[col].pack_start(gframe, expand=expand)
# Now make sure they all have the correct expand:
- for gframe in viewpage.columns[col]:
- gramplet = viewpage.frame_map[str(gframe)]
+ for gframe in pane.columns[col]:
+ gramplet = pane.frame_map[str(gframe)]
expand, fill, padding, pack = column.query_child_packing(gramplet.mainframe)
expand = gramplet.state == "maximized" and gramplet.expand
column.set_child_packing(gramplet.mainframe, expand, fill, padding, pack)
@@ -315,11 +315,11 @@ class GuiGramplet(object):
TARGET_TYPE_FRAME = 80
LOCAL_DRAG_TYPE = 'GRAMPLET'
LOCAL_DRAG_TARGET = (LOCAL_DRAG_TYPE, 0, TARGET_TYPE_FRAME)
- def __init__(self, viewpage, dbstate, uistate, title, **kwargs):
+ def __init__(self, pane, dbstate, uistate, title, **kwargs):
"""
Internal constructor for GUI portion of a gramplet.
"""
- self.viewpage = viewpage
+ self.pane = pane
self.dbstate = dbstate
self.uistate = uistate
self.title = title
@@ -387,7 +387,7 @@ class GuiGramplet(object):
if self.state == "detached":
return
self.state = "closed"
- self.viewpage.closed_gramplets.append(self)
+ self.pane.closed_gramplets.append(self)
self.mainframe.get_parent().remove(self.mainframe)
def detach(self):
@@ -396,7 +396,7 @@ class GuiGramplet(object):
"""
# hide buttons:
#self.set_state("detached")
- self.viewpage.detached_gramplets.append(self)
+ self.pane.detached_gramplets.append(self)
# make a window, and attach it there
self.detached_window = GrampletWindow(self)
@@ -771,57 +771,44 @@ class GuiGramplet(object):
return True
return False # did not handle event
-class MyScrolledWindow(gtk.ScrolledWindow):
+class GrampletPane(gtk.ScrolledWindow):
def show_all(self):
# first show them all:
gtk.ScrolledWindow.show_all(self)
# Hack to get around show_all that shows hidden items
# do once, the first time showing
- if self.viewpage:
- gramplets = (g for g in self.viewpage.gramplet_map.itervalues()
+ if self.pane:
+ gramplets = (g for g in self.pane.gramplet_map.itervalues()
if g is not None)
- self.viewpage = None
+ self.pane = None
for gramplet in gramplets:
gramplet.gvoptions.hide()
if gramplet.state == "minimized":
gramplet.set_state("minimized")
-class GrampletView(PageView):
- """
- GrampletView interface
- """
-
- def __init__(self, dbstate, uistate):
- """
- Create a GrampletView, with the current dbstate and uistate
- """
- PageView.__init__(self, _('Gramplets'), dbstate, uistate)
+ def __init__(self, pageview, dbstate, uistate):
+ gtk.ScrolledWindow.__init__(self)
+ self.dbstate = dbstate
+ self.uistate = uistate
+ self.pageview = pageview
+ self.pane = self
self._popup_xy = None
-
- def build_widget(self):
- """
- Builds the container widget for the interface. Must be overridden by the
- the base class. Returns a gtk container widget.
- """
- # load the user's gramplets and set columns, etc
user_gramplets = self.load_gramplets()
# build the GUI:
- frame = MyScrolledWindow()
msg = _("Right click to add gramplets")
- frame.set_tooltip_text(msg)
- frame.viewpage = self
- frame.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+ self.set_tooltip_text(msg)
+ self.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
self.hbox = gtk.HBox(homogeneous=True)
# Set up drag and drop
- frame.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
+ self.drag_dest_set(gtk.DEST_DEFAULT_MOTION |
gtk.DEST_DEFAULT_HIGHLIGHT |
gtk.DEST_DEFAULT_DROP,
[('GRAMPLET', 0, 80)],
gtk.gdk.ACTION_COPY)
- frame.connect('drag_drop', self.drop_widget)
- frame.connect('button-press-event', self._button_press)
+ self.connect('drag_drop', self.drop_widget)
+ self.connect('button-press-event', self._button_press)
- frame.add_with_viewport(self.hbox)
+ self.add_with_viewport(self.hbox)
# Create the columns:
self.columns = []
for i in range(self.column_count):
@@ -860,7 +847,6 @@ class GrampletView(PageView):
else:
print "Can't make gramplet of type '%s'." % name
self.place_gramplets()
- return frame
def get_column_frame(self, column_num):
if column_num < len(self.columns):
@@ -950,7 +936,7 @@ class GrampletView(PageView):
retval.append((name, GET_AVAILABLE_GRAMPLETS(name)))
return retval
- def save(self, *args):
+ def save(self):
if debug: print "saving"
if len(self.frame_map) + len(self.detached_gramplets) == 0:
return # something is the matter
@@ -1066,27 +1052,6 @@ class GrampletView(PageView):
self.columns[col].pack_start(gframe, expand=expand)
return True
- def define_actions(self):
- """
- Defines the UIManager actions. Called by the ViewManager to set up the
- View. The user typically defines self.action_list and
- self.action_toggle_list in this function.
- """
- self.action = gtk.ActionGroup(self.title + "/Gramplets")
- self.action.add_actions([('AddGramplet',gtk.STOCK_ADD,_("_Add a gramplet")),
- ('RestoreGramplet',None,_("_Undelete gramplet")),
- ('Columns1',None,_("Set Columns to _1"),
- None,None,
- lambda obj:self.set_columns(1)),
- ('Columns2',None,_("Set Columns to _2"),
- None,None,
- lambda obj:self.set_columns(2)),
- ('Columns3',None,_("Set Columns to _3"),
- None,None,
- lambda obj:self.set_columns(3)),
- ])
- self._add_action_group(self.action)
-
def set_columns(self, num):
# clear the gramplets:
self.clear_gramplets()
@@ -1104,7 +1069,7 @@ class GrampletView(PageView):
self.hbox.pack_start(self.columns[-1],expand=True)
# place the gramplets back in the new columns
self.place_gramplets(recolumn=True)
- self.widget.show()
+ self.show()
def restore_gramplet(self, obj):
name = obj.get_child().get_label()
@@ -1114,10 +1079,10 @@ class GrampletView(PageView):
#gramplet.state = "maximized"
self.closed_gramplets.remove(gramplet)
if self._popup_xy is not None:
- self.drop_widget(self.widget, gramplet,
+ self.drop_widget(self, gramplet,
self._popup_xy[0], self._popup_xy[1], 0)
else:
- self.drop_widget(self.widget, gramplet, 0, 0, 0)
+ self.drop_widget(self, gramplet, 0, 0, 0)
gramplet.set_state("maximized")
return
################ Second kind: from options
@@ -1143,10 +1108,10 @@ class GrampletView(PageView):
gramplet.scrolledwindow.set_size_request(-1, gramplet.height)
## now drop it in right place
if self._popup_xy is not None:
- self.drop_widget(self.widget, gramplet,
+ self.drop_widget(self, gramplet,
self._popup_xy[0], self._popup_xy[1], 0)
else:
- self.drop_widget(self.widget, gramplet, 0, 0, 0)
+ self.drop_widget(self, gramplet, 0, 0, 0)
def add_gramplet(self, obj):
tname = obj.get_child().get_label()
@@ -1180,65 +1145,16 @@ class GrampletView(PageView):
gramplet.scrolledwindow.set_size_request(-1, gramplet.height)
## now drop it in right place
if self._popup_xy is not None:
- self.drop_widget(self.widget, gramplet,
+ self.drop_widget(self, gramplet,
self._popup_xy[0], self._popup_xy[1], 0)
else:
- self.drop_widget(self.widget, gramplet, 0, 0, 0)
+ self.drop_widget(self, gramplet, 0, 0, 0)
if gramplet.pui:
gramplet.pui.active = True
gramplet.pui.update()
else:
print "Can't make gramplet of type '%s'." % name
- def get_stock(self):
- """
- Return image associated with the view, which is used for the
- icon for the button.
- """
- return 'gramps-gramplet'
-
- def get_viewtype_stock(self):
- """Type of view in category
- """
- return 'gramps-gramplet'
-
- def set_inactive(self):
- self.active = False
- for title in self.gramplet_map:
- if self.gramplet_map[title].pui:
- if self.gramplet_map[title].state != "detached":
- self.gramplet_map[title].pui.active = False
-
- def set_active(self):
- self.active = True
- for title in self.gramplet_map:
- if self.gramplet_map[title].pui:
- self.gramplet_map[title].pui.active = True
- if self.gramplet_map[title].pui.dirty:
- if self.gramplet_map[title].state == "maximized":
- self.gramplet_map[title].pui.update()
-
- def ui_definition(self):
- return """
-
-
-
-
-
-
-
-
-
-
-
-
-
- """
-
def _button_press(self, obj, event):
if event.type == gtk.gdk.BUTTON_PRESS and event.button == 3:
self._popup_xy = (event.x, event.y)
@@ -1273,6 +1189,20 @@ class GrampletView(PageView):
return True
return False
+ def set_inactive(self):
+ for title in self.gramplet_map:
+ if self.gramplet_map[title].pui:
+ if self.gramplet_map[title].state != "detached":
+ self.gramplet_map[title].pui.active = False
+
+ def set_active(self):
+ for title in self.gramplet_map:
+ if self.gramplet_map[title].pui:
+ self.gramplet_map[title].pui.active = True
+ if self.gramplet_map[title].pui.dirty:
+ if self.gramplet_map[title].state == "maximized":
+ self.gramplet_map[title].pui.update()
+
def on_delete(self):
gramplets = (g for g in self.gramplet_map.itervalues()
if g is not None)
@@ -1281,3 +1211,87 @@ class GrampletView(PageView):
if gramplet.pui:
gramplet.pui.on_save()
self.save()
+
+class GrampletView(PageView):
+ """
+ GrampletView interface
+ """
+
+ def __init__(self, dbstate, uistate):
+ """
+ Create a GrampletView, with the current dbstate and uistate
+ """
+ PageView.__init__(self, _('Gramplets'), dbstate, uistate)
+
+ def build_widget(self):
+ """
+ Builds the container widget for the interface. Must be overridden by the
+ the base class. Returns a gtk container widget.
+ """
+ # load the user's gramplets and set columns, etc
+ return GrampletPane(self, self.dbstate, self.uistate)
+
+ def define_actions(self):
+ """
+ Defines the UIManager actions. Called by the ViewManager to set up the
+ View. The user typically defines self.action_list and
+ self.action_toggle_list in this function.
+ """
+ self.action = gtk.ActionGroup(self.title + "/Gramplets")
+ self.action.add_actions([('AddGramplet',gtk.STOCK_ADD,_("_Add a gramplet")),
+ ('RestoreGramplet',None,_("_Undelete gramplet")),
+ ('Columns1',None,_("Set Columns to _1"),
+ None,None,
+ lambda obj:self.widget.set_columns(1)),
+ ('Columns2',None,_("Set Columns to _2"),
+ None,None,
+ lambda obj:self.widget.set_columns(2)),
+ ('Columns3',None,_("Set Columns to _3"),
+ None,None,
+ lambda obj:self.widget.set_columns(3)),
+ ])
+ self._add_action_group(self.action)
+
+ def get_stock(self):
+ """
+ Return image associated with the view, which is used for the
+ icon for the button.
+ """
+ return 'gramps-gramplet'
+
+ def get_viewtype_stock(self):
+ """Type of view in category
+ """
+ return 'gramps-gramplet'
+
+ def set_inactive(self):
+ self.active = False
+ self.widget.set_inactive()
+
+ def set_active(self):
+ self.active = True
+ self.widget.set_active()
+
+ def ui_definition(self):
+ return """
+
+
+
+
+
+
+
+
+
+
+
+
+
+ """
+
+ def on_delete(self):
+ self.widget.on_delete()