* src/DbState.py: change_active_person now emits the signal, change_active_handle is only a wrapper for that.
* src/PageView.py (get_stock): Work around not existing definition of gtk.STOCK_MEDIA_MISSING by using gtk.STOCK_MISSING_IMAGE. * src/PedView.py: Start using new PageView logic. Unfinished. * src/gramps_main.py: Enable PedView svn: r5041
This commit is contained in:
parent
3e153e8f6e
commit
3a8f1f3039
@ -1,3 +1,11 @@
|
||||
2005-08-09 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
||||
* src/DbState.py: change_active_person now emits the signal,
|
||||
change_active_handle is only a wrapper for that.
|
||||
* src/PageView.py (get_stock): Work around not existing definition
|
||||
of gtk.STOCK_MEDIA_MISSING by using gtk.STOCK_MISSING_IMAGE.
|
||||
* src/PedView.py: Start using new PageView logic. Unfinished.
|
||||
* src/gramps_main.py: Enable PedView
|
||||
|
||||
2005-08-08 Don Allingham <don@gramps-project.org>
|
||||
* src/DbState.py: Added new class to keep track of database
|
||||
status
|
||||
|
@ -96,9 +96,13 @@ class DbState(GrampsDBCallback.GrampsDBCallback):
|
||||
|
||||
def change_active_person(self,person):
|
||||
self.active = person
|
||||
try:
|
||||
self.emit('active-changed',(person.handle,))
|
||||
except:
|
||||
self.emit('active-changed',(None,))
|
||||
|
||||
def change_active_handle(self,handle):
|
||||
self.emit('active-changed',(handle,))
|
||||
self.change_active_person(self.db.get_person_from_handle(handle))
|
||||
|
||||
def get_active_person(self):
|
||||
return self.active
|
||||
|
@ -34,7 +34,10 @@ class PageView:
|
||||
self.ui = ""
|
||||
|
||||
def get_stock(self):
|
||||
return gtk.STOCK_MEDIA_MISSING
|
||||
try:
|
||||
return gtk.STOCK_MEDIA_MISSING
|
||||
except AttributeError:
|
||||
return gtk.STOCK_MISSING_IMAGE
|
||||
|
||||
def get_ui(self):
|
||||
return self.ui
|
||||
|
112
src/PedView.py
112
src/PedView.py
@ -41,6 +41,7 @@ import gtk.gdk
|
||||
# Gramps Modules
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
import PageView
|
||||
import const
|
||||
import GrampsCfg
|
||||
import Relationship
|
||||
@ -70,48 +71,40 @@ _CREM = _('crem.')
|
||||
# PedigreeView
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
class PedigreeView:
|
||||
def __init__(self,parent,canvas,update,status_bar,edit_person):
|
||||
self.parent = parent
|
||||
class PedView(PageView.PageView):
|
||||
|
||||
self.relcalc = Relationship.RelationshipCalculator(self.parent.db)
|
||||
self.parent.connect('database-changed',self.change_db)
|
||||
self.parent.connect('active-changed',self.active_changed)
|
||||
def __init__(self,state):
|
||||
PageView.PageView.__init__(self,'Pedigree View',state)
|
||||
self.inactive = False
|
||||
state.connect('database-changed',self.change_db)
|
||||
state.connect('active-changed',self.goto_active_person)
|
||||
self.force_size = 0 # Automatic resize
|
||||
|
||||
# FIXME: Hack to avoid changing the glade file
|
||||
# Replace canvas by notebook
|
||||
self.parent_container = canvas.get_parent()
|
||||
canvas.destroy()
|
||||
def build_widget(self):
|
||||
self.notebook = gtk.Notebook()
|
||||
self.notebook.connect("button-press-event", self.on_show_option_menu_cb)
|
||||
self.notebook.set_show_border(False)
|
||||
self.notebook.set_show_tabs(False)
|
||||
self.parent_container.add_with_viewport(self.notebook)
|
||||
# ###
|
||||
|
||||
self.table_2 = gtk.Table(1,1,False)
|
||||
self.table_2.connect("button-press-event", self.on_show_option_menu_cb)
|
||||
self.add_table_to_notebook( self.table_2)
|
||||
|
||||
self.table_3 = gtk.Table(1,1,False)
|
||||
self.table_3.connect("button-press-event", self.on_show_option_menu_cb)
|
||||
self.add_table_to_notebook( self.table_3)
|
||||
|
||||
self.table_4 = gtk.Table(1,1,False)
|
||||
self.table_4.connect("button-press-event", self.on_show_option_menu_cb)
|
||||
self.add_table_to_notebook( self.table_4)
|
||||
|
||||
self.table_5 = gtk.Table(1,1,False)
|
||||
self.table_5.connect("button-press-event", self.on_show_option_menu_cb)
|
||||
self.add_table_to_notebook( self.table_5)
|
||||
|
||||
self.parent_container.connect("size-allocate", self.size_request_cb)
|
||||
#self.parent_container.connect("size-allocate", self.size_request_cb)
|
||||
|
||||
self.notebook.show_all()
|
||||
|
||||
self.update = update
|
||||
self.sb = status_bar
|
||||
self.edit_person = edit_person
|
||||
|
||||
self.change_db(self.parent.db)
|
||||
self.distance = self.relcalc.get_relationship_distance
|
||||
|
||||
self.force_size = 0 # Automatic resize
|
||||
return self.notebook
|
||||
|
||||
def add_table_to_notebook( self, table):
|
||||
frame = gtk.ScrolledWindow(None,None)
|
||||
@ -123,6 +116,34 @@ class PedigreeView:
|
||||
# for PyGtk < 2.4
|
||||
self.notebook.append_page(frame,gtk.Label(""))
|
||||
|
||||
def define_actions(self):
|
||||
#self.add_action('Add', gtk.STOCK_ADD, "_Add", callback=self.add)
|
||||
#self.add_action('Edit', gtk.STOCK_EDIT, "_Edit", callback=self.edit)
|
||||
#self.add_action('Remove', gtk.STOCK_REMOVE, "_Remove", callback=self.remove)
|
||||
#self.add_action('Forward',gtk.STOCK_GO_FORWARD,"_Forward", callback=self.fwd_clicked)
|
||||
#self.add_action('Back', gtk.STOCK_GO_BACK, "_Back", callback=self.back_clicked)
|
||||
self.add_action('HomePerson', gtk.STOCK_HOME, "_Home", callback=self.home)
|
||||
#self.add_toggle_action('Filter', None, '_Filter', callback=self.filter_toggle)
|
||||
|
||||
def ui_definition(self):
|
||||
return '''<ui>
|
||||
<menubar name="MenuBar">
|
||||
<menu action="GoMenu">
|
||||
<placeholder name="CommonGo">
|
||||
<menuitem action="HomePerson"/>
|
||||
</placeholder>
|
||||
</menu>
|
||||
</menubar>
|
||||
<toolbar name="ToolBar">
|
||||
<placeholder name="CommonNavigation">
|
||||
<toolitem action="HomePerson"/>
|
||||
</placeholder>
|
||||
</toolbar>
|
||||
</ui>'''
|
||||
|
||||
def get_stock(self):
|
||||
return 'gramps-pedigree'
|
||||
|
||||
def change_db(self,db):
|
||||
# Reconnect signals
|
||||
self.db = db
|
||||
@ -130,7 +151,6 @@ class PedigreeView:
|
||||
db.connect('person-update', self.person_updated_cb)
|
||||
db.connect('person-delete', self.person_updated_cb)
|
||||
db.connect('person-rebuild', self.person_rebuild)
|
||||
self.relcalc.set_db(db)
|
||||
self.active_person = None
|
||||
|
||||
def person_updated_cb(self,handle_list):
|
||||
@ -139,7 +159,8 @@ class PedigreeView:
|
||||
def person_rebuild(self):
|
||||
self.rebuild_trees(self.active_person)
|
||||
|
||||
def active_changed(self,handle):
|
||||
def goto_active_person(self,handle):
|
||||
print "PedView.goto_active_person"
|
||||
if handle:
|
||||
self.active_person = self.db.get_person_from_handle(handle)
|
||||
self.rebuild_trees(self.active_person)
|
||||
@ -147,7 +168,7 @@ class PedigreeView:
|
||||
self.rebuild_trees(None)
|
||||
|
||||
def request_resize(self):
|
||||
self.size_request_cb(self.parent_container,None,None)
|
||||
self.size_request_cb(self.notebook.parent,None,None)
|
||||
|
||||
def size_request_cb(self, widget, event, data=None):
|
||||
if self.force_size == 0:
|
||||
@ -227,6 +248,7 @@ class PedigreeView:
|
||||
gobject.idle_add(self.request_resize)
|
||||
|
||||
def rebuild( self, table_widget, positions, active_person):
|
||||
print "PedView.rebuild"
|
||||
# Build ancestor tree
|
||||
lst = [None]*31
|
||||
self.find_tree(self.active_person,0,1,lst)
|
||||
@ -354,6 +376,12 @@ class PedigreeView:
|
||||
else:
|
||||
area.window.draw_line(gc, alloc.width, alloc.height/2, alloc.width/2, alloc.height)
|
||||
|
||||
def home(self,obj):
|
||||
print "PedView.home"
|
||||
defperson = self.state.db.get_default_person()
|
||||
if defperson:
|
||||
self.state.change_active_person(defperson)
|
||||
|
||||
def edit_person_cb(self,obj):
|
||||
person_handle = obj.get_data(_PERSON)
|
||||
person = self.db.get_person_from_handle(person_handle)
|
||||
@ -362,6 +390,12 @@ class PedigreeView:
|
||||
return True
|
||||
return 0
|
||||
|
||||
def on_show_option_menu_cb(self,obj,data=None):
|
||||
myMenu = gtk.Menu()
|
||||
self.add_settings_to_menu(myMenu)
|
||||
myMenu.popup(None,None,None,0,0)
|
||||
return(True);
|
||||
|
||||
def on_show_child_menu(self,obj):
|
||||
"""User clicked button to move to child of active person"""
|
||||
|
||||
@ -403,14 +437,14 @@ class PedigreeView:
|
||||
|
||||
person_handle = obj.get_data(_PERSON)
|
||||
if person_handle:
|
||||
self.parent.emit("active-changed", (person_handle,))
|
||||
return 1
|
||||
return 0
|
||||
self.state.change_active_handle(person_handle)
|
||||
return True
|
||||
return False
|
||||
|
||||
def change_force_size_cb(self,event,data):
|
||||
if data in [0,2,3,4,5]:
|
||||
self.force_size = data
|
||||
self.size_request_cb(self.parent_container,None) # switch to matching size
|
||||
self.size_request_cb(self.notebook.parent,None) # switch to matching size
|
||||
|
||||
def find_tree(self,person,index,depth,lst,val=0):
|
||||
"""Recursively build a list of ancestors"""
|
||||
@ -446,14 +480,14 @@ class PedigreeView:
|
||||
to the context menu. Used by both build_nav_menu() and
|
||||
build_full_nav_menu() methods.
|
||||
"""
|
||||
back_sensitivity = self.parent.hindex > 0
|
||||
fwd_sensitivity = self.parent.hindex + 1 < len(self.parent.history)
|
||||
#back_sensitivity = self.parent.hindex > 0
|
||||
#fwd_sensitivity = self.parent.hindex + 1 < len(self.parent.history)
|
||||
entries = [
|
||||
(gtk.STOCK_GO_BACK,self.parent.back_clicked,back_sensitivity),
|
||||
(gtk.STOCK_GO_FORWARD,self.parent.fwd_clicked,fwd_sensitivity),
|
||||
#(gtk.STOCK_GO_BACK,self.parent.back_clicked,back_sensitivity),
|
||||
#(gtk.STOCK_GO_FORWARD,self.parent.fwd_clicked,fwd_sensitivity),
|
||||
#FIXME: revert to stock item when German gtk translation is fixed
|
||||
#(gtk.STOCK_HOME,self.parent.on_home_clicked,1),
|
||||
(_("Home"),self.parent.on_home_clicked,1),
|
||||
(_("Home"),self.home,1),
|
||||
(None,None,0),
|
||||
#(_("Set anchor"),self.on_anchor_set,1),
|
||||
#(_("Remove anchor"),self.on_anchor_removed,1),
|
||||
@ -813,10 +847,10 @@ def build_detail_string(db,person):
|
||||
else:
|
||||
for event_ref in person.get_event_ref_list():
|
||||
event = db.get_event_from_handle(event_ref.ref)
|
||||
if event and event.get_name() == "Baptism":
|
||||
if event and event.get_type()[0] == RelLib.Event.BAPTISM:
|
||||
detail_text += format_event(db, _BAPT, event)
|
||||
break
|
||||
if event and event.get_name() == "Christening":
|
||||
if event and event.get_type()[0] == RelLib.Event.CHRISTEN:
|
||||
detail_text += format_event(db, _CHRI, event)
|
||||
break
|
||||
|
||||
@ -827,10 +861,10 @@ def build_detail_string(db,person):
|
||||
else:
|
||||
for event_ref in person.get_event_ref_list():
|
||||
event = db.get_event_from_handle(event_ref.ref)
|
||||
if event and event.get_name() == "Burial":
|
||||
if event and event.get_type()[0] == RelLib.Event.BURIAL:
|
||||
detail_text += format_event(db, _BURI, event)
|
||||
break
|
||||
if event and event.get_name() == "Cremation":
|
||||
if event and event.get_type()[0] == RelLib.Event.CREMATION:
|
||||
detail_text += format_event(db, _CREM, event)
|
||||
break
|
||||
|
||||
|
@ -23,6 +23,7 @@
|
||||
import gtk
|
||||
import ViewManager
|
||||
import PersonView
|
||||
import PedView
|
||||
import ArgHandler
|
||||
import DisplayTrace
|
||||
import GrampsKeys
|
||||
@ -30,6 +31,7 @@ import GrampsCfg
|
||||
import const
|
||||
import Errors
|
||||
import PluginMgr
|
||||
import TipOfDay
|
||||
|
||||
from GrampsMime import mime_type_is_defined
|
||||
from QuestionDialog import ErrorDialog
|
||||
@ -37,13 +39,14 @@ from QuestionDialog import ErrorDialog
|
||||
import gnome
|
||||
|
||||
|
||||
iconpaths = ["/usr/share/gramps","~/devel/srcx"]
|
||||
iconpaths = [".","/usr/share/gramps","~/devel/srcx"]
|
||||
|
||||
def register_stock_icons ():
|
||||
import os
|
||||
items = {
|
||||
'people48.png': ('gramps-person', 'Person', gtk.gdk.CONTROL_MASK, 0, ''),
|
||||
'family48.png': ('gramps-family', 'Family', gtk.gdk.CONTROL_MASK, 0, ''),
|
||||
'ped24.png' : ('gramps-pedigree', 'Pedigree', gtk.gdk.CONTROL_MASK, 0, ''),
|
||||
'repos.png' : ('gramps-repository', 'Repositories', gtk.gdk.CONTROL_MASK, 0, ''),
|
||||
'sources.png' : ('gramps-source', 'Sources', gtk.gdk.CONTROL_MASK, 0, ''),
|
||||
'events.png' : ('gramps-event', 'Events', gtk.gdk.CONTROL_MASK, 0, ''),
|
||||
@ -182,6 +185,7 @@ class Gramps:
|
||||
register_stock_icons()
|
||||
a = ViewManager.ViewManager()
|
||||
a.register_view(PersonView.PersonView)
|
||||
a.register_view(PedView.PedView)
|
||||
a.init_interface()
|
||||
|
||||
if GrampsKeys.get_usetips():
|
||||
@ -249,8 +253,3 @@ class Gramps:
|
||||
self.toolbar.unset_style()
|
||||
else:
|
||||
self.toolbar.set_style(the_style)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user