diff --git a/ChangeLog b/ChangeLog index 2c34f3ead..d218eadaf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-01-23 Don Allingham + * src/GrampsDb/_GrampsBSDDB.py: initialize the next gramps_id + indexes to the length of the tables to prevent a walk of the db + entries. + * src/DisplayModels/_BaseModel.py: handle row-insert properly + * src/PageView.py: handle row adding properly + 2007-01-22 Alex Roitman * src/ViewManager.py (vb_clicked): Put back the code that used to enforce the current view button; diff --git a/src/DisplayModels/_BaseModel.py b/src/DisplayModels/_BaseModel.py index 2649e6227..86588143b 100644 --- a/src/DisplayModels/_BaseModel.py +++ b/src/DisplayModels/_BaseModel.py @@ -95,18 +95,18 @@ class BaseModel(gtk.GenericTreeModel): def sort_keys(self): cursor = self.gen_cursor() - sarray = [] + self.sarray = [] data = cursor.next() while data: key = locale.strxfrm(self.sort_func(data[1])) - sarray.append((key,data[0])) + self.sarray.append((key,data[0])) data = cursor.next() cursor.close() - sarray.sort(reverse=self.reverse) + self.sarray.sort(reverse=self.reverse) - return [ x[1] for x in sarray ] + return [ x[1] for x in self.sarray ] def _rebuild_search(self,ignore=None): if self.db.is_open(): @@ -146,8 +146,26 @@ class BaseModel(gtk.GenericTreeModel): self.datalist = [] self.indexlist = {} -# def add_row_by_handle(self,handle): -# self.build_tree() + def add_row_by_handle(self,handle): + + if self.search and self.search.match(handle): + + data = self.map(handle) + key = locale.strxfrm(self.sort_func(data)) + self.sarray.append((key,handle)) + self.sarray.sort(reverse=self.reverse) + self.datalist = [ x[1] for x in self.sarray ] + + i = 0 + self.indexlist = {} + for key in self.datalist: + self.indexlist[key] = i + i += 1 + + index = self.indexlist.get(handle) + if index: + node = self.get_iter(index) + self.row_inserted(index, node) def delete_row_by_handle(self,handle): index = self.indexlist[handle] @@ -158,7 +176,6 @@ class BaseModel(gtk.GenericTreeModel): for key in self.indexlist: if self.indexlist[key] > index: self.indexlist[key] -= 1 - #self.rebuild_data(ignore=handle) self.row_deleted(index) def update_row_by_handle(self,handle): diff --git a/src/Editors/_EditEvent.py b/src/Editors/_EditEvent.py index 70d03dba8..bd86d0fa0 100644 --- a/src/Editors/_EditEvent.py +++ b/src/Editors/_EditEvent.py @@ -91,7 +91,8 @@ class EditEvent(EditPrimary): def _local_init(self): self.top = gtk.glade.XML(const.gladeFile, "event_edit","gramps") - self.set_window(self.top.get_widget("event_edit"), None, self.get_menu_title()) + self.set_window(self.top.get_widget("event_edit"), None, + self.get_menu_title()) self.place = self.top.get_widget('place') self.share_btn = self.top.get_widget('select_place') diff --git a/src/GrampsDb/_GrampsBSDDB.py b/src/GrampsDb/_GrampsBSDDB.py index 27dcaf385..801fc58e5 100644 --- a/src/GrampsDb/_GrampsBSDDB.py +++ b/src/GrampsDb/_GrampsBSDDB.py @@ -606,6 +606,14 @@ class GrampsBSDDB(GrampsDbBase,UpdateCallback): table_flags) self.secondary_connected = True + self.smap_index = len(self.source_map) + self.emap_index = len(self.event_map) + self.pmap_index = len(self.person_map) + self.fmap_index = len(self.family_map) + self.lmap_index = len(self.place_map) + self.omap_index = len(self.media_map) + self.rmap_index = len(self.repository_map) + def rebuild_secondary(self,callback): if self.readonly: diff --git a/src/PageView.py b/src/PageView.py index 759054a3c..b7657fb42 100644 --- a/src/PageView.py +++ b/src/PageView.py @@ -739,7 +739,8 @@ class ListView(BookMarkView): def row_add(self,handle_list): if self.active: - self.build_tree() + for handle in handle_list: + self.model.add_row_by_handle(handle) else: self.dirty = True