diff options
author | Tomeu Vizoso <tomeu@sugarlabs.org> | 2009-01-10 18:28:32 (GMT) |
---|---|---|
committer | Tomeu Vizoso <tomeu@sugarlabs.org> | 2009-01-10 18:28:32 (GMT) |
commit | 08929195e21f55977af6946d4f673affb5cc7e45 (patch) | |
tree | 16d76e3b357b1f8bc1886dbec2d24c29d7333ee1 /src | |
parent | 3ae6d51ebc0af3298fe058b7ed6acca60d168f22 (diff) |
Abort previous ResultSet operations
Diffstat (limited to 'src')
-rw-r--r-- | src/jarabe/journal/listview.py | 5 | ||||
-rw-r--r-- | src/jarabe/journal/model.py | 13 |
2 files changed, 18 insertions, 0 deletions
diff --git a/src/jarabe/journal/listview.py b/src/jarabe/journal/listview.py index e609c8c..70f720e 100644 --- a/src/jarabe/journal/listview.py +++ b/src/jarabe/journal/listview.py @@ -190,6 +190,8 @@ class BaseListView(gtk.HBox): logging.debug('ListView.refresh query %r' % self._query) self._stop_progress_bar() self._start_progress_bar() + if self._result_set is not None: + self._result_set.stop() self._result_set = model.find(self._query) self._result_set.ready.connect(self.__result_set_ready_cb) @@ -197,6 +199,9 @@ class BaseListView(gtk.HBox): self._result_set.setup() def __result_set_ready_cb(self, **kwargs): + if kwargs['sender'] != self._result_set: + return + self._stop_progress_bar() self._vadjustment.props.upper = self._result_set.length diff --git a/src/jarabe/journal/model.py b/src/jarabe/journal/model.py index 71d0534..5123f8e 100644 --- a/src/jarabe/journal/model.py +++ b/src/jarabe/journal/model.py @@ -95,6 +95,9 @@ class BaseResultSet(object): def setup(self): self.ready.send(self) + def stop(self): + pass + def get_length(self): if self._total_count == -1: query = self._query.copy() @@ -223,11 +226,15 @@ class InplaceResultSet(BaseResultSet): self._mount_point = mount_point self._file_list = None self._pending_directories = 0 + self._stopped = False def setup(self): self._file_list = [] self._recurse_dir(self._mount_point) + def stop(self): + self._stopped = True + def setup_ready(self): self._file_list.sort(lambda a, b: b[2] - a[2]) self.ready.send(self) @@ -236,6 +243,9 @@ class InplaceResultSet(BaseResultSet): if self._file_list is None: raise ValueError('Need to call setup() first') + if self._stopped: + raise ValueError('InplaceResultSet already stopped') + t = time.time() offset = int(query.get('offset', 0)) @@ -255,6 +265,9 @@ class InplaceResultSet(BaseResultSet): return entries, total_count def _recurse_dir(self, dir_path): + if self._stopped: + return + for entry in os.listdir(dir_path): full_path = dir_path + '/' + entry try: |