* src/DisplayModels.py: simplify internal iter handling.
Move to a single list instead of multiple dictionaries. svn: r3439
This commit is contained in:
parent
376924ab95
commit
d9a18f1aa8
@ -2,6 +2,8 @@
|
|||||||
* src/gramps_main.py (import_tool_callback): Set home person.
|
* src/gramps_main.py (import_tool_callback): Set home person.
|
||||||
|
|
||||||
2004-08-19 Don Allingham <dallingham@users.sourceforge.net>
|
2004-08-19 Don Allingham <dallingham@users.sourceforge.net>
|
||||||
|
* src/DisplayModels.py: simplify internal iter handling.
|
||||||
|
Move to a single list instead of multiple dictionaries.
|
||||||
* src/ChooseParents.py: use get_family_from_handle instead
|
* src/ChooseParents.py: use get_family_from_handle instead
|
||||||
of find_family_from_handle
|
of find_family_from_handle
|
||||||
|
|
||||||
|
@ -44,18 +44,12 @@ class BaseModel(gtk.GenericTreeModel):
|
|||||||
self.connect('row-deleted',self.on_row_deleted)
|
self.connect('row-deleted',self.on_row_deleted)
|
||||||
|
|
||||||
def rebuild_data(self):
|
def rebuild_data(self):
|
||||||
self.iter2path = {}
|
self.datalist = []
|
||||||
self.path2iter = {}
|
|
||||||
|
|
||||||
if not self.db.is_open():
|
if not self.db.is_open():
|
||||||
return
|
return
|
||||||
|
|
||||||
val = 0
|
self.datalist = self.sort_keys()
|
||||||
keys = self.sort_keys()
|
|
||||||
for place_handle in keys:
|
|
||||||
self.iter2path[place_handle] = (val,)
|
|
||||||
self.path2iter[(val,)] = place_handle
|
|
||||||
val += 1
|
|
||||||
|
|
||||||
def on_row_inserted(self,obj,path,iter):
|
def on_row_inserted(self,obj,path,iter):
|
||||||
self.rebuild_data()
|
self.rebuild_data()
|
||||||
@ -65,7 +59,7 @@ class BaseModel(gtk.GenericTreeModel):
|
|||||||
|
|
||||||
def on_get_flags(self):
|
def on_get_flags(self):
|
||||||
'''returns the GtkTreeModelFlags for this particular type of model'''
|
'''returns the GtkTreeModelFlags for this particular type of model'''
|
||||||
return gtk.TREE_MODEL_LIST_ONLY
|
return gtk.TREE_MODEL_LIST_ONLY | gtk.TREE_MODEL_ITERS_PERSIST
|
||||||
|
|
||||||
def on_get_n_columns(self):
|
def on_get_n_columns(self):
|
||||||
return 10
|
return 10
|
||||||
@ -73,42 +67,47 @@ class BaseModel(gtk.GenericTreeModel):
|
|||||||
def on_get_path(self, node):
|
def on_get_path(self, node):
|
||||||
'''returns the tree path (a tuple of indices at the various
|
'''returns the tree path (a tuple of indices at the various
|
||||||
levels) for a particular node.'''
|
levels) for a particular node.'''
|
||||||
return self.iter2path[node]
|
return self.datalist.index(node[0])
|
||||||
|
|
||||||
def on_get_column_type(self,index):
|
def on_get_column_type(self,index):
|
||||||
return gobject.TYPE_STRING
|
return gobject.TYPE_STRING
|
||||||
|
|
||||||
def on_get_iter(self, path):
|
def on_get_iter(self, path):
|
||||||
return self.path2iter.get(path)
|
try:
|
||||||
|
return self.datalist[path[0]]
|
||||||
|
except IndexError:
|
||||||
|
return None
|
||||||
|
|
||||||
def on_get_value(self,iter,col):
|
def on_get_value(self,iter,col):
|
||||||
return self.fmap[col](self.map[str(iter)])
|
return self.fmap[col](self.map[str(iter)])
|
||||||
|
|
||||||
def on_iter_next(self, node):
|
def on_iter_next(self, node):
|
||||||
'''returns the next node at this level of the tree'''
|
'''returns the next node at this level of the tree'''
|
||||||
path = self.iter2path.get(node)
|
try:
|
||||||
return self.path2iter.get((path[0]+1,))
|
return self.datalist[self.datalist.index(node)+1]
|
||||||
|
except IndexError:
|
||||||
|
return None
|
||||||
|
|
||||||
def on_iter_children(self,node):
|
def on_iter_children(self,node):
|
||||||
"""Return the first child of the node"""
|
"""Return the first child of the node"""
|
||||||
if node == None:
|
if node == None:
|
||||||
return self.path2iter[(0,)]
|
return self.datalist[0]
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def on_iter_has_child(self, node):
|
def on_iter_has_child(self, node):
|
||||||
'''returns true if this node has children'''
|
'''returns true if this node has children'''
|
||||||
if node == None:
|
if node == None:
|
||||||
return len(self.iter2path) > 0
|
return len(self.datalist) > 0
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def on_iter_n_children(self,node):
|
def on_iter_n_children(self,node):
|
||||||
if node == None:
|
if node == None:
|
||||||
return len(self.iter2path)
|
return len(self.datalist)
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def on_iter_nth_child(self,node,n):
|
def on_iter_nth_child(self,node,n):
|
||||||
if node == None:
|
if node == None:
|
||||||
return self.path2iter.get((n,))
|
return self.datalist[n]
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def on_iter_parent(self, node):
|
def on_iter_parent(self, node):
|
||||||
|
Loading…
Reference in New Issue
Block a user