I have a very simple plugin I wrote for freevo. below is the plugin. it will shutdown your computer after your avi file has finished playing, kind of like a sleep timer.
#!/usr/bin/env python
import os
import time
import commands
import thread
import plugin
from gui.PopupBox import PopupBox
from gui.ConfirmBox import ConfirmBox
class PluginInterface(plugin.ItemPlugin):
"""
this plugin will power down your system using the command
"shutdown -h now" after your avi file has finished.
you can enable it by adding this to your local conf file
plugin.activate('video.autoshutdown')
"""
def __init__(self):
plugin.ItemPlugin.__init__(self)
def actions(self, item):
self.item = item
if item.type == 'video':
return [ (self.confirm_start_timer, 'engage autoshutoff') ]
else:
return []
def confirm_start_timer(self, arg=None, menuw=None):
ConfirmBox(text=_('engage autoshutoff for the following avi file\n\
"%s"') % self.item.name,
handler=self.start_timer, default_choice=1).show()
def start_timer(self, arg=None, menuw=None):
box = PopupBox(text=_('you must start your avi file within ' \
'one minute to prevent the shutdown' \
' to begin' ))
box.show()
time.sleep(6)
box.destroy()
thread.start_new_thread(self.run_timer,())
def run_timer(self):
while True:
time.sleep(60)
if commands.getoutput('ps -ewf').__contains__(self.item.filename)== False:
os.system('shutdown -h now')
break
the run_timer method is started as a new thread using this line of code
thread.start_new_thread(self.run_timer,())
the run timer_method checks at an interval of every minute to see if an avi file is playing, if the avi is no longer playing, it will send the computer the shutdown command. I would like to be able to abort the shutdown if possible. Is their a way to kill the thread that I started, maybe some sort of kill method?