deskbar-applet r2055 - in trunk: . deskbar/core deskbar/interfaces



Author: sebp
Date: Sun Mar 30 17:44:27 2008
New Revision: 2055
URL: http://svn.gnome.org/viewvc/deskbar-applet?rev=2055&view=rev

Log:
Added sanity checks

Modified:
   trunk/ChangeLog
   trunk/deskbar/core/CoreImpl.py
   trunk/deskbar/core/ModuleLoader.py
   trunk/deskbar/interfaces/Match.py

Modified: trunk/deskbar/core/CoreImpl.py
==============================================================================
--- trunk/deskbar/core/CoreImpl.py	(original)
+++ trunk/deskbar/core/CoreImpl.py	Sun Mar 30 17:44:27 2008
@@ -3,6 +3,7 @@
 import gobject
 import gtk
 import deskbar
+import deskbar.interfaces.Match
 from deskbar.core.GconfStore import GconfStore
 from deskbar.core.ModuleInstaller import ModuleInstaller
 from deskbar.core.ModuleLoader import ModuleLoader
@@ -354,6 +355,9 @@
             
     def forward_query_ready(self, handler, query, matches):
         if query == self._last_query and matches != None and len(matches) > 0 and not self._stop_queries:
+            for match in matches:
+                if not isinstance(match, deskbar.interfaces.Match):
+                    raise TypeError("Handler %r returned an invalid match: %r", handler,  match)
             self._emit_query_ready(matches)
     
     def update_gconf(self):

Modified: trunk/deskbar/core/ModuleLoader.py
==============================================================================
--- trunk/deskbar/core/ModuleLoader.py	(original)
+++ trunk/deskbar/core/ModuleLoader.py	Sun Mar 30 17:44:27 2008
@@ -2,6 +2,7 @@
 from os.path import abspath, expanduser, join, basename
 import deskbar
 import deskbar.core.Categories
+import deskbar.interfaces.Module
 import gobject
 import gtk
 import logging
@@ -138,6 +139,8 @@
         for mod in modules:
             LOGGER.info("Loading module '%s' from file %s.", mod.INFOS["name"], filename)
             mod_instance = mod ()
+            if not isinstance(mod_instance, deskbar.interfaces.Module):
+                raise TypeError("Module %s in %s is not a sub-class of deskbar.interfaces.Module" % (mod, filename))
             mod_instance.set_filename( filename )
             mod_instance.set_id( os.path.basename(filename) )
                     

Modified: trunk/deskbar/interfaces/Match.py
==============================================================================
--- trunk/deskbar/interfaces/Match.py	(original)
+++ trunk/deskbar/interfaces/Match.py	Sun Mar 30 17:44:27 2008
@@ -1,6 +1,7 @@
+from deskbar.core.Categories import CATEGORIES 
 import deskbar.core.Utils
+import deskbar.interfaces.Action
 import gtk.gdk
-from deskbar.core.Categories import CATEGORIES 
 import logging
 
 LOGGER = logging.getLogger(__name__)
@@ -163,6 +164,9 @@
         @return: Returns False if the action hasn't been added,
         beacause it's not valid  
         """
+        if not isinstance(action, deskbar.interfaces.Action):
+            raise TypeError("Expected deskbar.interfaces.Action but got %r" % action)
+        
         if not action.is_valid():
             LOGGER.warning("Action %r is not valid, not adding it" % action)
             return False



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