Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@sugarlabs.org>2009-01-10 18:28:32 (GMT)
committer Tomeu Vizoso <tomeu@sugarlabs.org>2009-01-10 18:28:32 (GMT)
commit08929195e21f55977af6946d4f673affb5cc7e45 (patch)
tree16d76e3b357b1f8bc1886dbec2d24c29d7333ee1 /src
parent3ae6d51ebc0af3298fe058b7ed6acca60d168f22 (diff)
Abort previous ResultSet operations
Diffstat (limited to 'src')
-rw-r--r--src/jarabe/journal/listview.py5
-rw-r--r--src/jarabe/journal/model.py13
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: