[mousetrap/gnome3-wip: 104/240] Parts are now identified by fully qualified class name.



commit 86331e55a5ed2193ba1ec0f7e078ecfca8613565
Author: Stoney Jackson <dr stoney gmail com>
Date:   Thu Jun 19 22:29:28 2014 -0400

    Parts are now identified by fully qualified class name.

 src/mousetrap/main.py                |   22 +++++++++++-----------
 src/mousetrap/parts/camera.py        |    2 +-
 src/mousetrap/parts/display.py       |    2 +-
 src/mousetrap/parts/eyes.py          |    2 +-
 src/mousetrap/parts/nose.py          |    2 +-
 src/mousetrap/parts/nose_joystick.py |    2 +-
 6 files changed, 16 insertions(+), 16 deletions(-)
---
diff --git a/src/mousetrap/main.py b/src/mousetrap/main.py
index ca62ad6..cb13053 100644
--- a/src/mousetrap/main.py
+++ b/src/mousetrap/main.py
@@ -13,10 +13,10 @@ LOGGER = log.getLogger('mousetrap.main')
 
 #TODO: Should be a configuration file.
 DEFAULT_PARTS = [
-        ('camera', 'mousetrap.parts.camera'),
-        ('display', 'mousetrap.parts.display'),
-        ('nose_joystick', 'mousetrap.parts.nose_joystick'),
-        ('eye_click', 'mousetrap.parts.eyes'),
+        ('camera', 'mousetrap.parts.camera.CameraPart'),
+        ('display', 'mousetrap.parts.display.DisplayPart'),
+        ('nose_joystick', 'mousetrap.parts.nose_joystick.NoseJoystickPart'),
+        ('eye_click', 'mousetrap.parts.eyes.EyesPart'),
         ]
 DEFAULT_LOOPS_PER_SECOND = 10
 
@@ -36,15 +36,15 @@ class App(object):
         self._register_parts_with_loop()
 
     def _load_parts(self, part_descriptors):
-        for name, module in part_descriptors:
-            self.parts.append(self._load_part(module))
+        for name, class_ in part_descriptors:
+            self.parts.append(self._load_part(class_))
 
     @staticmethod
-    def _load_part(module):
-        LOGGER.debug('loading %s', module)
-        module = __import__(module, globals(), locals(), ['Part'])
-        part = module.Part()
-        return part
+    def _load_part(class_):
+        LOGGER.debug('loading %s', class_)
+        class_path = class_.split('.')
+        module = __import__('.'.join(class_path[:-1]), {}, {}, class_path[-1])
+        return getattr(module, class_path[-1])()
 
     def _register_parts_with_loop(self):
         for part in self.parts:
diff --git a/src/mousetrap/parts/camera.py b/src/mousetrap/parts/camera.py
index 11f2346..987a3da 100644
--- a/src/mousetrap/parts/camera.py
+++ b/src/mousetrap/parts/camera.py
@@ -1,6 +1,6 @@
 import mousetrap.parts.interface as interface
 
 
-class Part(interface.Part):
+class CameraPart(interface.Part):
     def run(self, app):
         app.image = app.camera.read_image()
diff --git a/src/mousetrap/parts/display.py b/src/mousetrap/parts/display.py
index 2c39f36..15fa0d1 100644
--- a/src/mousetrap/parts/display.py
+++ b/src/mousetrap/parts/display.py
@@ -2,6 +2,6 @@ import mousetrap.parts.interface as interface
 import logging
 
 
-class Part(interface.Part):
+class DisplayPart(interface.Part):
     def run(self, app):
         app.gui.show_image('MouseTrap', app.image)
diff --git a/src/mousetrap/parts/eyes.py b/src/mousetrap/parts/eyes.py
index 8e929be..c061685 100644
--- a/src/mousetrap/parts/eyes.py
+++ b/src/mousetrap/parts/eyes.py
@@ -6,7 +6,7 @@ import mousetrap.log as log
 LOGGER = log.getLogger(__name__)
 
 
-class Part(interface.Part):
+class EyesPart(interface.Part):
     def __init__(self):
         self._left_locator = LeftEyeLocator()
         self._history = []
diff --git a/src/mousetrap/parts/nose.py b/src/mousetrap/parts/nose.py
index 55bb5c4..4bf1c61 100644
--- a/src/mousetrap/parts/nose.py
+++ b/src/mousetrap/parts/nose.py
@@ -3,7 +3,7 @@ from mousetrap.vision import FeatureDetector, FeatureNotFoundException
 from mousetrap.gui import Gui
 
 
-class Part(interface.Part):
+class NosePart(interface.Part):
     def __init__(self):
         self._nose_locator = NoseLocator()
         self._gui = Gui()
diff --git a/src/mousetrap/parts/nose_joystick.py b/src/mousetrap/parts/nose_joystick.py
index 4162cac..4200309 100644
--- a/src/mousetrap/parts/nose_joystick.py
+++ b/src/mousetrap/parts/nose_joystick.py
@@ -3,7 +3,7 @@ from mousetrap.vision import FeatureDetector, FeatureNotFoundException
 from mousetrap.parts.nose import NoseLocator
 
 
-class Part(interface.Part):
+class NoseJoystickPart(interface.Part):
     THRESHOLD = 5
 
     def __init__(self):


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