Added config value interface.treemodel-cache-size to control size of cache
Default size set to 1k for paths and other items.
This commit is contained in:
parent
de61d7158b
commit
269a1ab6f5
@ -271,6 +271,7 @@ register('interface.url-width', 600)
|
|||||||
register('interface.view', True)
|
register('interface.view', True)
|
||||||
register('interface.width', 775)
|
register('interface.width', 775)
|
||||||
register('interface.surname-box-height', 150)
|
register('interface.surname-box-height', 150)
|
||||||
|
register('interface.treemodel-cache-size', 1000)
|
||||||
|
|
||||||
register('paths.recent-export-dir', '')
|
register('paths.recent-export-dir', '')
|
||||||
register('paths.recent-file', '')
|
register('paths.recent-file', '')
|
||||||
|
@ -26,11 +26,12 @@
|
|||||||
#
|
#
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
from .lru import LRU
|
from .lru import LRU
|
||||||
|
from gramps.gen.config import config
|
||||||
|
|
||||||
class BaseModel(object):
|
class BaseModel(object):
|
||||||
|
|
||||||
# LRU cache size
|
# LRU cache size
|
||||||
_CACHE_SIZE = 10000 # 250
|
_CACHE_SIZE = config.get('interface.treemodel-cache-size')
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.lru_data = LRU(BaseModel._CACHE_SIZE)
|
self.lru_data = LRU(BaseModel._CACHE_SIZE)
|
||||||
@ -38,13 +39,15 @@ class BaseModel(object):
|
|||||||
|
|
||||||
def destroy(self):
|
def destroy(self):
|
||||||
"""
|
"""
|
||||||
|
Destroy the items in memory.
|
||||||
"""
|
"""
|
||||||
self.lru_data = None
|
self.lru_data = None
|
||||||
self.lru_path = None
|
self.lru_path = None
|
||||||
|
|
||||||
def clear_cache(self, handle=None):
|
def clear_cache(self, handle=None):
|
||||||
"""
|
"""
|
||||||
Clear the LRU cache.
|
Clear the LRU cache. Always clear lru_path, because paths may have
|
||||||
|
changed.
|
||||||
"""
|
"""
|
||||||
if handle:
|
if handle:
|
||||||
if handle in self.lru_data:
|
if handle in self.lru_data:
|
||||||
@ -56,6 +59,8 @@ class BaseModel(object):
|
|||||||
|
|
||||||
def get_cached_value(self, handle, col):
|
def get_cached_value(self, handle, col):
|
||||||
"""
|
"""
|
||||||
|
Get the value of a "col". col may be a number (position in a model)
|
||||||
|
or a name (special value used by view).
|
||||||
"""
|
"""
|
||||||
if handle in self.lru_data and col in self.lru_data[handle]:
|
if handle in self.lru_data and col in self.lru_data[handle]:
|
||||||
return (True, self.lru_data[handle][col])
|
return (True, self.lru_data[handle][col])
|
||||||
@ -63,6 +68,7 @@ class BaseModel(object):
|
|||||||
|
|
||||||
def set_cached_value(self, handle, col, data):
|
def set_cached_value(self, handle, col, data):
|
||||||
"""
|
"""
|
||||||
|
Set the data associated with handle + col.
|
||||||
"""
|
"""
|
||||||
if not self._in_build:
|
if not self._in_build:
|
||||||
if handle not in self.lru_data:
|
if handle not in self.lru_data:
|
||||||
@ -72,6 +78,7 @@ class BaseModel(object):
|
|||||||
## Cached Path's for TreeView:
|
## Cached Path's for TreeView:
|
||||||
def get_cached_path(self, handle):
|
def get_cached_path(self, handle):
|
||||||
"""
|
"""
|
||||||
|
Saves the Gtk iter path.
|
||||||
"""
|
"""
|
||||||
if handle in self.lru_path:
|
if handle in self.lru_path:
|
||||||
return (True, self.lru_path[handle])
|
return (True, self.lru_path[handle])
|
||||||
@ -79,6 +86,7 @@ class BaseModel(object):
|
|||||||
|
|
||||||
def set_cached_path(self, handle, path):
|
def set_cached_path(self, handle, path):
|
||||||
"""
|
"""
|
||||||
|
Set the Gtk iter path value.
|
||||||
"""
|
"""
|
||||||
if not self._in_build:
|
if not self._in_build:
|
||||||
self.lru_path[handle] = path
|
self.lru_path[handle] = path
|
||||||
|
Loading…
x
Reference in New Issue
Block a user