I written enough in other languages to be able to BS my way through others :)
Duncan Webb wrote: > Ryan Roth wrote: > > If you want this to go into the rel-1 you need to add a feature request. > http://sourceforge.net/tracker/?func=add&group_id=46652&atid=446898 > > For somebody who claims that they don't know Python, you do a pretty > good job :-) > > Duncan > > >> Fixed some typos >> >> >> ------------------------------------------------------------------------ >> >> 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() >> > > > ------------------------------------------------------------------------- > 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-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/freevo-devel > > ------------------------------------------------------------------------- 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-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/freevo-devel
