diff options
| author | Michael Vogt <michael.vogt@ubuntu.com> | 2005-06-03 08:45:44 +0000 |
|---|---|---|
| committer | Michael Vogt <michael.vogt@ubuntu.com> | 2005-06-03 08:45:44 +0000 |
| commit | 64ac76c04670fdf45da3c0ccab69d6427fd391e4 (patch) | |
| tree | 84300148510e0552368b71eb8ee8458fdd3f1d34 | |
| parent | 2f5f5bf3157ef3e35cad7607b744cfbaa650e207 (diff) | |
| download | python-apt-64ac76c04670fdf45da3c0ccab69d6427fd391e4.tar.gz | |
* add the "cache_{pre,post}_change" signals
| -rw-r--r-- | apt/cache.py | 36 | ||||
| -rw-r--r-- | apt/package.py | 9 |
2 files changed, 31 insertions, 14 deletions
diff --git a/apt/cache.py b/apt/cache.py index 6b974905..1390e145 100644 --- a/apt/cache.py +++ b/apt/cache.py @@ -57,22 +57,32 @@ class Cache(object): return changes def Upgrade(self, DistUpgrade=False): + self.CachePreChange() self._depcache.Upgrade(DistUpgrade) - self.CacheChange() + self.CachePostChange() def Commit(self, fprogress, iprogress): self._depcache.Commit(fprogress, iprogress) # cache changes - def CacheChange(self): - " called internally if the cache changes, emit a signal then " - if not self._callbacks.has_key("cache_changed"): + def CachePostChange(self): + " called internally if the cache has changed, emit a signal then " + if not self._callbacks.has_key("cache_post_change"): return - for callback in self._callbacks["cache_changed"]: + for callback in self._callbacks["cache_post_change"]: + apply(callback) + + def CachePreChange(self): + """ called internally if the cache is about to change, emit + a signal then """ + if not self._callbacks.has_key("cache_pre_change"): + return + for callback in self._callbacks["cache_pre_change"]: apply(callback) def connect(self, name, callback): - " connect to a signal, currently only used for cache_changed " + """ connect to a signal, currently only used for + cache_{post,pre}_changed """ if not self._callbacks.has_key(name): self._callbacks[name] = [] self._callbacks[name].append(callback) @@ -122,19 +132,23 @@ class FilteredCache(Cache): self._filters.append(filter) self._reapplyFilter() - def CacheChange(self): - Cache.CacheChange(self) + def CachePostChange(self): + Cache.CachePostChange(self) " called internally if the cache changes, emit a signal then " self._reapplyFilter() -def cache_changed(): - print "cache changed" +def cache_pre_changed(): + print "cache pre changed" + +def cache_post_changed(): + print "cache post changed" if __name__ == "__main__": print "Cache self test" apt_pkg.init() c = Cache(OpTextProgress()) - c.connect("cache_changed", cache_changed) + c.connect("cache_pre_change", cache_pre_changed) + c.connect("cache_post_change", cache_post_changed) print c.has_key("aptitude") p = c["aptitude"] print p.Name() diff --git a/apt/package.py b/apt/package.py index 8f1d00a0..fb4a85a2 100644 --- a/apt/package.py +++ b/apt/package.py @@ -116,14 +116,17 @@ class Package(object): # depcache action def MarkKeep(self): + self._pcache.CachePreChange() self._depcache.MarkKeep(self._pkg) - self._pcache.CacheChange() + self._pcache.CachePostChange() def MarkDelete(self): + self._pcache.CachePreChange() self._depcache.MarkDelete(self._pkg) - self._pcache.CacheChange() + self._pcache.CachePostChange() def MarkInstall(self): + self._pcache.CachePreChange() return self._depcache.MarkInstall(self._pkg) - self._pcache.CacheChange() + self._pcache.CachePostChange() # size def PackageSize(self, UseCandidate=True): |
