Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@member.fsf.org>2009-08-23 16:14:05 (GMT)
committer Aleksey Lim <alsroot@member.fsf.org>2009-08-25 15:50:13 (GMT)
commitb8f2287b75f983058af49cba2d41a0247df4e85d (patch)
treece05684d5e38d547dea51fb38809f7135c268140 /src
parent53c235078b83453b0ef32d5993bf74ddbce0caf8 (diff)
Reset model if count of objects was changed
Diffstat (limited to 'src')
-rw-r--r--src/jarabe/journal/lazymodel.py30
-rw-r--r--src/jarabe/journal/tableview.py11
2 files changed, 18 insertions, 23 deletions
diff --git a/src/jarabe/journal/lazymodel.py b/src/jarabe/journal/lazymodel.py
index 221a5d2..2243774 100644
--- a/src/jarabe/journal/lazymodel.py
+++ b/src/jarabe/journal/lazymodel.py
@@ -118,11 +118,7 @@ class LazyModel(gtk.GenericTreeModel):
if self._view is not None:
cursor = self._view.get_cursor()
- try:
- self._closing = True
- self._view.set_model(None)
- finally:
- self._closing = False
+ self._unset_view_model()
self._view = view
self._cache = {}
@@ -166,15 +162,6 @@ class LazyModel(gtk.GenericTreeModel):
self._update_columns()
- # TODO how to handle large update,
- # commented for now since in TableView
- # it works fine w/o these updates
- #
- #for i in range(self._last_count, count):
- # self.emit('row-inserted', (i, ), self.get_iter((i, )))
- #for i in reversed(range(count, self._last_count)):
- # self.emit('row-deleted', (i, ))
-
count = self._source.get_count()
if self._frame[0] >= count:
self._frame = (0, -1)
@@ -183,8 +170,12 @@ class LazyModel(gtk.GenericTreeModel):
self._cache = {}
- for i in range(self._frame[0], self._frame[1]+1):
- self.emit('row-changed', (i, ), self.get_iter((i, )))
+ if self._last_count != count:
+ self._unset_view_model()
+ self._view.set_model(self)
+ else:
+ for i in range(self._frame[0], self._frame[1]+1):
+ self.emit('row-changed', (i, ), self.get_iter((i, )))
self._last_count = count
@@ -202,6 +193,13 @@ class LazyModel(gtk.GenericTreeModel):
pos = self.get_path(pos)
return self._get_row(pos[0], frame or (pos, pos))
+ def _unset_view_model(self):
+ try:
+ self._closing = True
+ self._view.set_model(None)
+ finally:
+ self._closing = False
+
def __delayed_fetch_cb(self, source, offset, metadata):
if not offset in self._in_process:
logging.debug('__delayed_fetch_cb: no offset=%s' % offset)
diff --git a/src/jarabe/journal/tableview.py b/src/jarabe/journal/tableview.py
index 7e69928..b9c158b 100644
--- a/src/jarabe/journal/tableview.py
+++ b/src/jarabe/journal/tableview.py
@@ -61,7 +61,7 @@ class TableView(SmoothTable):
if self._model == model:
return
- if self._row_changed_id is not None:
+ if self._model is not None and self._row_changed_id is not None:
self._model.disconnect(self._row_changed_id)
self._model = model
@@ -70,7 +70,9 @@ class TableView(SmoothTable):
self._row_changed_id = \
self._model.connect('row-changed', self.__row_changed_cb)
- self._resize()
+ if model is not None:
+ rows = math.ceil(float(model.iter_n_children(None)) / self.columns)
+ self.bin_rows = int(rows)
model = gobject.property(type=object,
getter=get_model, setter=set_model)
@@ -109,11 +111,6 @@ class TableView(SmoothTable):
return canvas
- def _resize(self):
- rows = int(math.ceil(float(self._model.iter_n_children(None)) / \
- self.columns))
- self.bin_rows = rows
-
def _do_fill_in(self, canvas, y, x, prepared_row=None):
cell = canvas.table_view_cell