gramps/gramps2/src/FamilyView.py

144 lines
4.6 KiB
Python
Raw Normal View History

#-------------------------------------------------------------------------
#
# Python modules
#
#-------------------------------------------------------------------------
from gettext import gettext as _
import gc
import re
2002-10-20 19:55:16 +05:30
#-------------------------------------------------------------------------
#
# GTK/Gnome modules
#
#-------------------------------------------------------------------------
import gobject
2002-10-20 19:55:16 +05:30
import gtk
#-------------------------------------------------------------------------
#
# Gramps Modules
2002-10-20 19:55:16 +05:30
#
#-------------------------------------------------------------------------
import RelLib
import PageView
import DisplayTrace
import DisplayModels
2003-05-24 09:10:58 +05:30
class Gbutton(gtk.Button):
def __init__(self,stock_name):
gtk.Button.__init__(self)
image = gtk.Image()
image.set_from_stock(stock_name,gtk.ICON_SIZE_BUTTON)
self.add(image)
class Glabel(gtk.Label):
def __init__(self,val):
gtk.Label.__init__(self,'<b>%s</b>' % val)
self.set_use_markup(True)
self.set_use_underline(True)
self.set_alignment(0,0.5)
class FamilyView(PageView.PageView):
def __init__(self,dbstate,uistate):
PageView.PageView.__init__(self,'Pedigree View',dbstate,uistate)
dbstate.connect('database-changed',self.change_db)
def get_stock(self):
"""
Returns the name of the stock icon to use for the display.
This assumes that this icon has already been registered with
GNOME as a stock icon.
"""
return 'gramps-family'
def build_widget(self):
fill = gtk.EXPAND|gtk.FILL
self.father_box = gtk.ComboBox()
self.mother_box = gtk.ComboBox()
self.spouse_box = gtk.ComboBox()
self.person_name = gtk.Entry()
self.person_birth = gtk.Label()
self.person_death = gtk.Label()
self.marriage_type = gtk.Label()
self.marriage_info = gtk.Entry()
scrollwindow = gtk.ScrolledWindow()
scrollwindow.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
scrollwindow.set_shadow_type(gtk.SHADOW_IN)
self.child_list = gtk.TreeView()
self.child_model = DisplayModels.ChildModel([],self.dbstate.db)
scrollwindow.add(self.child_list)
switch = Gbutton(gtk.STOCK_GO_BACK)
edit_active = Gbutton(gtk.STOCK_EDIT)
new_spouse = Gbutton(gtk.STOCK_NEW)
spouse_select = Gbutton(gtk.STOCK_INDEX)
table = gtk.Table(9,10)
table.set_col_spacings(12)
table.set_row_spacings(6)
table.set_border_width(12)
table.attach(Glabel(_('_Father')),0,3, 0,1, fill, 0,0,0)
table.attach(self.father_box, 1,3, 1,2, fill, 0,0,0)
table.attach(Glabel(_('_Mother')),5,9, 0,1, fill, 0,0,0)
table.attach(self.mother_box, 6,9, 1,2, fill, 0,0,0)
table.attach(Glabel(_('_Active person')), 0,3, 3,4, fill,0,0,0)
table.attach(self.person_name, 1,3, 4,5, fill,0,0,0)
table.attach(gtk.Label(_('b.')), 1,2, 5,6, 0,0,0,0)
table.attach(gtk.Label(_('d.')), 1,2, 6,7, 0,0,0,0)
table.attach(self.person_birth, 2,3, 5,6, fill,0,0,0)
table.attach(self.person_death, 2,3, 6,7, fill,0,0,0)
table.attach(switch, 4,5, 4,5, 0,0,0,0)
table.attach(edit_active, 4,5, 5,6, 0,0,0,0)
table.attach(new_spouse, 9,10, 4,5, 0,0,0,0)
table.attach(spouse_select, 9,10, 5,6, 0,0,0,0)
table.attach(Glabel(_('_Spouse/partner')), 5,9, 3,4, fill,0,0,0)
table.attach(self.spouse_box, 6,9, 4,5, fill, 0,0,0)
table.attach(gtk.Label(_('Type:')), 7,8, 5,6, 0, 0,0,0)
table.attach(self.marriage_type, 8,9, 5,6, fill, 0,0,0)
table.attach(self.marriage_info, 8,9, 5,6, fill, 0,0,0)
table.attach(Glabel(_('_Children')), 0,8, 7,8, fill, 0,0,0)
table.attach(scrollwindow, 1,9, 8,9, fill, fill, 0,0)
bbox = gtk.VBox()
bbox.set_spacing(6)
child_up = Gbutton(gtk.STOCK_GO_UP)
child_new = Gbutton(gtk.STOCK_NEW)
child_sel = Gbutton(gtk.STOCK_INDEX)
child_del = Gbutton(gtk.STOCK_REMOVE)
bbox.add(child_up)
bbox.add(child_new)
bbox.add(child_sel)
bbox.add(child_del)
table.attach(bbox, 9, 10, 8,9, 0, 0, 0, 0)
return table
def navigation_type(self):
return PageView.NAVIGATION_PERSON
def define_actions(self):
pass
def ui_definition(self):
"""
Specifies the UIManager XML code that defines the menus and buttons
associated with the interface.
"""
return '''<ui>
</ui>'''
def change_db(self,db):
return