[kupfer] core: Make it possible to incrementally add decorators



commit 08a611dbf43ed18d7bb00d31bdf58fa173a830fc
Author: Ulrik Sverdrup <ulrik sverdrup gmail com>
Date:   Wed Feb 3 23:48:38 2010 +0100

    core: Make it possible to incrementally add decorators

 kupfer/core/data.py    |    4 ++--
 kupfer/core/sources.py |   14 ++++++++------
 2 files changed, 10 insertions(+), 8 deletions(-)
---
diff --git a/kupfer/core/data.py b/kupfer/core/data.py
index a8cc34f..6cf48e0 100644
--- a/kupfer/core/data.py
+++ b/kupfer/core/data.py
@@ -445,7 +445,7 @@ class DataController (gobject.GObject, pretty.OutputMixin):
 			for appl_type in action.item_types():
 				decorate_types.setdefault(appl_type, []).append(action)
 		sc = GetSourceController()
-		sc.set_action_decorators(decorate_types)
+		sc.add_action_decorators(decorate_types)
 		self.output_debug("Action decorators:")
 		for typ in decorate_types:
 			self.output_debug(typ.__name__)
@@ -469,7 +469,7 @@ class DataController (gobject.GObject, pretty.OutputMixin):
 				continue
 			decorate_item_types.setdefault(applies, set()).add(c)
 		sc = GetSourceController()
-		sc.set_content_decorators(decorate_item_types)
+		sc.add_content_decorators(decorate_item_types)
 		self.output_debug("Content decorators:")
 		for typ in decorate_item_types:
 			self.output_debug(typ.__name__)
diff --git a/kupfer/core/sources.py b/kupfer/core/sources.py
index a857f68..9707dac 100644
--- a/kupfer/core/sources.py
+++ b/kupfer/core/sources.py
@@ -241,8 +241,8 @@ class SourceController (pretty.OutputMixin):
 		self.sources = set()
 		self.toplevel_sources = set()
 		self.text_sources = set()
-		self.content_decorators = set()
-		self.action_decorators = set()
+		self.content_decorators = {}
+		self.action_decorators = {}
 		self.loaded_successfully = False
 		self._restored_sources = set()
 
@@ -259,10 +259,12 @@ class SourceController (pretty.OutputMixin):
 		self.text_sources.update(srcs)
 	def get_text_sources(self):
 		return self.text_sources
-	def set_content_decorators(self, decos):
-		self.content_decorators = decos
-	def set_action_decorators(self, decos):
-		self.action_decorators = decos
+	def add_content_decorators(self, decos):
+		for typ in decos:
+			self.content_decorators.setdefault(typ, set()).update(decos[typ])
+	def add_action_decorators(self, decos):
+		for typ in decos:
+			self.action_decorators.setdefault(typ, set()).update(decos[typ])
 		for typ in self.action_decorators:
 			self._disambiguate_actions(self.action_decorators[typ])
 	def _disambiguate_actions(self, actions):



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]