summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Vogt <michael.vogt@ubuntu.com>2005-06-03 08:45:44 +0000
committerMichael Vogt <michael.vogt@ubuntu.com>2005-06-03 08:45:44 +0000
commit64ac76c04670fdf45da3c0ccab69d6427fd391e4 (patch)
tree84300148510e0552368b71eb8ee8458fdd3f1d34
parent2f5f5bf3157ef3e35cad7607b744cfbaa650e207 (diff)
downloadpython-apt-64ac76c04670fdf45da3c0ccab69d6427fd391e4.tar.gz
* add the "cache_{pre,post}_change" signals
-rw-r--r--apt/cache.py36
-rw-r--r--apt/package.py9
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):