Author: duncan
Date: Thu Nov 30 07:11:30 2006
New Revision: 8678

Modified:
   branches/rel-1/freevo/src/plugins/home_automation.py

Log:
[ 1605817 ] home_automation plugin crashes
Patch from Ryan Roth applied


Modified: branches/rel-1/freevo/src/plugins/home_automation.py
==============================================================================
--- branches/rel-1/freevo/src/plugins/home_automation.py        (original)
+++ branches/rel-1/freevo/src/plugins/home_automation.py        Thu Nov 30 
07:11:30 2006
@@ -1,153 +1,154 @@
-import os  
-import plugin
-import config
-
-from item import Item
-
-class PluginInterface(plugin.MainMenuPlugin):
-    """
-    Home Automation Plugin
-    
-    Activate:
-    plugin.activate('home_automation')
-    
-    This plugin is for controlling home automation items, such as X10 devices.
-    It uses external programs to control the hardware.
-    
-    Configuration is as follows:
-    ('ROOM NAME/LOCATION'('FUNCTION','COMMAND TO RUN'))
-
-    In the following example I demonstrate using this plugin with the heyu 
application.
-
-    Example local_conf.py configuration:
-
-     AUTOMATION_ITEMS = [('Living Room',
-                         (
-                         ('Lights',('On','heyu on a2','Off','heyu off 
a2','Brighten','heyu bright a2 1','Dim','heyu dim a2 1')),
-                         ('TV',('On','heyu','Off','heyu'))
-                         )),
-                         ('Porch',
-                         (
-                         ('Light',('On','heyu','Off','heyu'))
-                         ))]
-    
- 
-    """
-
-    def __init__(self):
-        if not hasattr(config, 'AUTOMATION_ITEMS'):
-            self.reason = 'AUTOMATION_ITEMS not defined'
-            return
-        plugin.MainMenuPlugin.__init__(self)
-
-
-    def items(self, parent):
-        return [ HomeAutomationMainMenu(parent) ]
-
-class AutomationItem(Item):
-    """
-    Item for the menu for one room
-    """
-    def __init__(self, parent):
-        Item.__init__(self, parent)
-    
-    def actions(self):
-        """
-        return a list of actions for this item
-        """
-        items = [ ( self.getroomdevices, _('Room Items') ) ]
-        return items
-
-    def getroomdevices(self, arg=None, menuw=None):
-        room_devices = []
-        for device in self.room_items:
-            room_device = RoomDevice(self)
-            room_device.name = device[0]            
-            room_device.functions = device[1]
-            room_devices += [ room_device ]
-        room_devices_menu = menu.Menu(_('Home Automation Devices'), 
room_devices)
-        menuw.pushmenu(room_devices_menu)
-        menuw.refresh()
-
-class RoomDevice(Item):
-    """
-    Item for the menu for one room
-    """
-    def __init__(self, parent):
-        Item.__init__(self, parent)
-
-    def actions(self):
-        """
-        return a list of actions for this item
-        """
-        items = [ ( self.getdeviceoptions, _('Device Options') ) ]
-        return items
-
-    def getdeviceoptions(self, arg=None, menuw=None):
-        device_options = []
-        device_name = []
-        device_index = 0
-        for option in self.functions:
-            device_option = DeviceOptions(self)
-            device_index = device_index + 1
-            if device_index % 2:
-                device_name = option
-            else: 
-                device_option.name = device_name
-                device_option.cmd = option
-                device_options += [ device_option ]
-        device_options_menu = menu.Menu(_('Device Options'), device_options)
-        menuw.pushmenu(device_options_menu)
-        menuw.refresh()
-
-class DeviceOptions(Item):
-    """
-    Item for the menu for one room
-    """
-    def __init__(self, parent):
-        Item.__init__(self, parent)
-
-    def actions(self):
-        """
-        return a list of actions for this item
-        """
-        return [ ( self.runcmd , _('Run Command') ) ]
-        
-    def runcmd(self, arg=None, menuw=None):
-        """
-        Run Command
-        """
-        os.system(self.cmd)
-
-class HomeAutomationMainMenu(Item):
-    """
-    this is the item for the main menu and creates the list of rooms.
-    """
-    def __init__(self, parent):
-        Item.__init__(self, parent, skin_type='homeautomation')
-        self.name = _('Home Automation')
-    
-
-    def actions(self):
-        """
-        return a list of actions for this item
-        """
-        items = [ ( self.create_automation_items_menu , _('Home Automation' )) 
]
-        return items
-
-    def create_automation_items_menu(self, arg=None, menuw=None):
-        automation_items = []
-        for room in config.AUTOMATION_ITEMS:
-            automation_item = AutomationItem(self)
-            automation_item.name = room[0]
-            automation_item.room_items = room[1]
-            automation_items += [ automation_item ]
-        if (len(automation_items) == 0):
-            automation_items += [menu.MenuItem(_('No Home Automation items 
found'), menuw.goto_prev_page, 0)]
-        automation_items_menu = menu.Menu(_('Home Automation'), 
automation_items)
-        menuw.pushmenu(automation_items_menu)
-        menuw.refresh()
-
-
+import os
+import plugin
+import config
+
+from item import Item
+import config, menu, rc, plugin, skin, osd, util
+
+class PluginInterface(plugin.MainMenuPlugin):
+    """
+    Home Automation Plugin
+    
+    Activate:
+    plugin.activate('home_automation')
+    
+    This plugin is for controlling home automation items, such as X10 devices.
+    It uses external programs to control the hardware.
+    
+    Configuration is as follows:
+    ('ROOM NAME/LOCATION'('FUNCTION','COMMAND TO RUN'))
+
+    In the following example I demonstrate using this plugin with the heyu 
application.
+
+    Example local_conf.py configuration:
+
+     AUTOMATION_ITEMS = [('Living Room',
+                         (
+                         ('Lights',('On','heyu on a2','Off','heyu off 
a2','Brighten','heyu bright a2 1','Dim','heyu dim a2 1')),
+                         ('TV',('On','heyu','Off','heyu'))
+                         )),
+                         ('Porch',
+                         (
+                         ('Light',('On','heyu','Off','heyu'))
+                         ))]
+    
+ 
+    """
+
+    def __init__(self):
+        if not hasattr(config, 'AUTOMATION_ITEMS'):
+            self.reason = 'AUTOMATION_ITEMS not defined'
+            return
+        plugin.MainMenuPlugin.__init__(self)
+
+
+    def items(self, parent):
+        return [ HomeAutomationMainMenu(parent) ]
+
+class AutomationItem(Item):
+    """
+    Item for the menu for one room
+    """
+    def __init__(self, parent):
+        Item.__init__(self, parent)
+    
+    def actions(self):
+        """
+        return a list of actions for this item
+        """
+        items = [ ( self.getroomdevices, _('Room Items') ) ]
+        return items
+
+    def getroomdevices(self, arg=None, menuw=None):
+        room_devices = []
+        for device in self.room_items:
+            room_device = RoomDevice(self)
+            room_device.name = device[0]            
+            room_device.functions = device[1]
+            room_devices += [ room_device ]
+        room_devices_menu = menu.Menu(_('Home Automation Devices'), 
room_devices)
+        menuw.pushmenu(room_devices_menu)
+        menuw.refresh()
+
+class RoomDevice(Item):
+    """
+    Item for the menu for one room
+    """
+    def __init__(self, parent):
+        Item.__init__(self, parent)
+
+    def actions(self):
+        """
+        return a list of actions for this item
+        """
+        items = [ ( self.getdeviceoptions, _('Device Options') ) ]
+        return items
+
+    def getdeviceoptions(self, arg=None, menuw=None):
+        device_options = []
+        device_name = []
+        device_index = 0
+        for option in self.functions:
+            device_option = DeviceOptions(self)
+            device_index = device_index + 1
+            if device_index % 2:
+                device_name = option
+            else: 
+                device_option.name = device_name
+                device_option.cmd = option
+                device_options += [ device_option ]
+        device_options_menu = menu.Menu(_('Device Options'), device_options)
+        menuw.pushmenu(device_options_menu)
+        menuw.refresh()
+
+class DeviceOptions(Item):
+    """
+    Item for the menu for one room
+    """
+    def __init__(self, parent):
+        Item.__init__(self, parent)
+
+    def actions(self):
+        """
+        return a list of actions for this item
+        """
+        return [ ( self.runcmd , _('Run Command') ) ]
+        
+    def runcmd(self, arg=None, menuw=None):
+        """
+        Run Command
+        """
+        os.system(self.cmd)
+
+class HomeAutomationMainMenu(Item):
+    """
+    this is the item for the main menu and creates the list of rooms.
+    """
+    def __init__(self, parent):
+        Item.__init__(self, parent, skin_type='homeautomation')
+        self.name = _('Home Automation')
+    
+
+    def actions(self):
+        """
+        return a list of actions for this item
+        """
+        items = [ ( self.create_automation_items_menu , _('Home Automation' )) 
]
+        return items
+
+    def create_automation_items_menu(self, arg=None, menuw=None):
+        automation_items = []
+        for room in config.AUTOMATION_ITEMS:
+            automation_item = AutomationItem(self)
+            automation_item.name = room[0]
+            automation_item.room_items = room[1]
+            automation_items += [ automation_item ]
+        if (len(automation_items) == 0):
+            automation_items += [menu.MenuItem(_('No Home Automation items 
found'), menuw.goto_prev_page, 0)]
+        automation_items_menu = menu.Menu(_('Home Automation'), 
automation_items)
+        menuw.pushmenu(automation_items_menu)
+        menuw.refresh()
+
+
 
                 

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Freevo-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freevo-cvslog

Reply via email to