* src/DataViews/_PersonView.py: handle unsetting of rows changing

the active person when the model is rebuilt.


svn: r6922
This commit is contained in:
Don Allingham 2006-06-20 04:25:44 +00:00
parent 859b158aec
commit 7103f9156f
3 changed files with 28 additions and 27 deletions

View File

@ -2,6 +2,8 @@
* src/Mime/_WinMime.py: Get application description from registry * src/Mime/_WinMime.py: Get application description from registry
2006-06-19 Don Allingham <don@gramps-project.org> 2006-06-19 Don Allingham <don@gramps-project.org>
* src/DataViews/_PersonView.py: handle unsetting of rows changing
the active person when the model is rebuilt.
* src/DataViews/_Relationship.py: handle person set to None * src/DataViews/_Relationship.py: handle person set to None
* src/ViewManger.py: try tabs on the side * src/ViewManger.py: try tabs on the side
* src/DisplayTabs/_PersonRefEmbedList.py: change Relationships to * src/DisplayTabs/_PersonRefEmbedList.py: change Relationships to

View File

@ -95,6 +95,7 @@ class PersonView(PageView.PersonNavView):
'F2' : self.key_goto_home_person, 'F2' : self.key_goto_home_person,
'F3' : self.key_edit_selected_person, 'F3' : self.key_edit_selected_person,
} }
self.dirty = True
def change_page(self): def change_page(self):
pass pass
@ -163,11 +164,12 @@ class PersonView(PageView.PersonNavView):
if p1 and p2: if p1 and p2:
Merge.PersonCompare(self.dbstate, self.uistate, p1, p2) Merge.PersonCompare(self.dbstate, self.uistate, p1, p2)
else: else:
msg = _("Cannot merge people") ErrorDialog(
msg2 = _("Exactly two people must be selected to perform a merge. " _("Cannot merge people"),
"A second person can be selected by holding down the " _("Exactly two people must be selected to perform a "
"control key while clicking on the desired person.") "merge. A second person can be selected by holding "
ErrorDialog(msg,msg2) "down the control key while clicking on the desired "
"person."))
def fast_merge(self, obj): def fast_merge(self, obj):
mlist = self.get_selected_objects() mlist = self.get_selected_objects()
@ -368,7 +370,6 @@ class PersonView(PageView.PersonNavView):
db.connect('person-delete', self.person_removed) db.connect('person-delete', self.person_removed)
db.connect('person-rebuild', self.build_tree) db.connect('person-rebuild', self.build_tree)
self.build_tree() self.build_tree()
self.goto_active_person()
self.bookmarks.update_bookmarks(db.get_bookmarks()) self.bookmarks.update_bookmarks(db.get_bookmarks())
if self.active: if self.active:
self.bookmarks.redraw() self.bookmarks.redraw()
@ -400,10 +401,20 @@ class PersonView(PageView.PersonNavView):
# mark inactive to prevent recusion # mark inactive to prevent recusion
self.inactive = True self.inactive = True
self._goto()
# disable the inactive flag
self.inactive = False
# update history
self.handle_history(self.dbstate.active.handle)
def _goto(self):
# select the active person in the person view # select the active person in the person view
p = self.dbstate.active p = self.dbstate.active
try: try:
if self.model: if self.model and p:
path = self.model.on_get_path(p.get_handle()) path = self.model.on_get_path(p.get_handle())
group_name = p.get_primary_name().get_group_name() group_name = p.get_primary_name().get_group_name()
top_name = self.dbstate.db.get_name_group_mapping(group_name) top_name = self.dbstate.db.get_name_group_mapping(group_name)
@ -420,12 +431,6 @@ class PersonView(PageView.PersonNavView):
self.selection.unselect_all() self.selection.unselect_all()
self.uistate.push_message(_("Active person not visible")) self.uistate.push_message(_("Active person not visible"))
self.dbstate.active = p self.dbstate.active = p
# disable the inactive flag
self.inactive = False
# update history
self.handle_history(p.handle)
def setup_filter(self): def setup_filter(self):
""" """
@ -444,7 +449,8 @@ class PersonView(PageView.PersonNavView):
def build_tree(self): def build_tree(self):
""" """
Creates a new PeopleModel instance. Essentially creates a complete Creates a new PeopleModel instance. Essentially creates a complete
rebuild of the data. rebuild of the data. We need to temporarily store the active person,
since it can change when rows are unselected when the model is set.
""" """
if self.active: if self.active:
@ -452,18 +458,21 @@ class PersonView(PageView.PersonNavView):
filter_info = (PeopleModel.GENERIC, self.generic_filter) filter_info = (PeopleModel.GENERIC, self.generic_filter)
else: else:
filter_info = (PeopleModel.SEARCH, self.search_bar.get_value()) filter_info = (PeopleModel.SEARCH, self.search_bar.get_value())
self.model = PeopleModel(self.dbstate.db, filter_info) self.model = PeopleModel(self.dbstate.db, filter_info)
active = self.dbstate.active
self.tree.set_model(self.model) self.tree.set_model(self.model)
if const.use_tips and self.model.tooltip_column != None: if const.use_tips and self.model.tooltip_column != None:
self.tooltips = TreeTips.TreeTips(self.tree, self.tooltips = TreeTips.TreeTips(self.tree,
self.model.tooltip_column, self.model.tooltip_column,
True) True)
self.build_columns() self.build_columns()
self.setup_filter() self.setup_filter()
self.goto_active_person() self.dbstate.change_active_person(active)
self._goto()
self.dirty = False self.dirty = False
else: else:
self.dirty = True self.dirty = True

View File

@ -103,11 +103,7 @@ class RelationshipView(PageView.PersonNavView):
self.redraw() self.redraw()
def build_tree(self): def build_tree(self):
if self.active: self.redraw()
self.redraw()
self.dirty = False
else:
self.dirty = True
def connect_to_db(self, db): def connect_to_db(self, db):
db.connect('person-update', self.person_update) db.connect('person-update', self.person_update)
@ -123,7 +119,6 @@ class RelationshipView(PageView.PersonNavView):
pass pass
else: else:
self.change_person(None) self.change_person(None)
self.dirty = False
def person_rebuild(self): def person_rebuild(self):
if self.dbstate.active: if self.dbstate.active:
@ -131,7 +126,6 @@ class RelationshipView(PageView.PersonNavView):
pass pass
else: else:
self.change_person(None) self.change_person(None)
self.dirty = False
def family_update(self, handle_list): def family_update(self, handle_list):
if self.dbstate.active: if self.dbstate.active:
@ -139,7 +133,6 @@ class RelationshipView(PageView.PersonNavView):
pass pass
else: else:
self.change_person(None) self.change_person(None)
self.dirty = False
def family_add(self, handle_list): def family_add(self, handle_list):
if self.dbstate.active: if self.dbstate.active:
@ -147,7 +140,6 @@ class RelationshipView(PageView.PersonNavView):
pass pass
else: else:
self.change_person(None) self.change_person(None)
self.dirty = False
def family_delete(self, handle_list): def family_delete(self, handle_list):
if self.dbstate.active: if self.dbstate.active:
@ -155,7 +147,6 @@ class RelationshipView(PageView.PersonNavView):
pass pass
else: else:
self.change_person(None) self.change_person(None)
self.dirty = False
def family_rebuild(self): def family_rebuild(self):
if self.dbstate.active: if self.dbstate.active:
@ -163,7 +154,6 @@ class RelationshipView(PageView.PersonNavView):
pass pass
else: else:
self.change_person(None) self.change_person(None)
self.dirty = False
def get_stock(self): def get_stock(self):
""" """