#
from Plugins.Plugin import PluginDescriptor
from Screens.Screen import Screen
from Screens.MessageBox import MessageBox
from Components.Button import Button
from Components.ActionMap import ActionMap
from Components.ConfigList import ConfigListScreen
from Components.config import config, ConfigDateTime, ConfigClock, getConfigListEntry
import enigma
from enigma import eTimer, iServiceInformation
from datetime import datetime
import gettext
import os
import time
import sys
def _(txt):
t = gettext.gettext(txt)
return t
def Plugins(**kwargs):
return [PluginDescriptor(name='SetClock', description='SetClock plug-in (c)2009 by SatCat', where=PluginDescriptor.WHERE_PLUGINMENU, icon='plugin.png', fnc=main), PluginDescriptor(name='SetClock', description='SetClock plug-in (c)2009 by SatCat', where=[PluginDescriptor.WHERE_SESSIONSTART, PluginDescriptor.WHERE_AUTOSTART], fnc=autostart)]
def main(session, servicereference = None, **kwargs):
try:
session.open(SetClockMain)
except:
print '[SetClock] Pluginexecution failed'
def autostart(reason, **kwargs):
pass
class AutoCorrTime(Screen):
skin = ' '
def __init__(self, session):
Screen.__init__(self, session)
self.session = session
if time.localtime().tm_year == 2000:
self.limit = 0
self.cursorTimer = eTimer()
self.cursorTimer_conn = self.cursorTimer.timeout.connect(self.timer)
self.cursorTimer.start(75, False)
def timer(self):
if time.localtime().tm_year > 2000:
refstr = dtt = 'n/a'
try:
service = self.session.nav.getCurrentService()
if service:
info = service.info()
if info:
refstr = info.getInfoString(iServiceInformation.sServiceref)
except:
refstr = 'ref error'
if refstr == '1:0:1:1:65:64:3840000:0:0:0:':
tc = time.time() - 13882
dtt = datetime.fromtimestamp(tc).strftime('%Y%m%d%H%M')
enigma.eDVBLocalTimeHandler.getInstance().setUseDVBTime(False)
try:
os.system('/bin/date -s %s' % dtt)
except:
pass
self.cursorTimer.stop()
self.limit = self.limit + 1
if self.limit > 800:
self.cursorTimer.stop()
class SetClockMain(ConfigListScreen, Screen):
skin = '\n\t\t\n\t\t\t\n\t\t\t \n\t\t\t\n\t\t\t \n\t\t\t\n\t\t'
def __init__(self, session, args = 0):
self.skin = SetClockMain.skin
self.session = session
Screen.__init__(self, session)
self.list = []
self.date_en = ConfigDateTime(default=time.time(), formatstring='%d.%m.%Y')
self.entryDate = getConfigListEntry(_('Date'), self.date_en)
self.time_en = ConfigClock(default=time.time())
self.entryTime = getConfigListEntry(_('Time'), self.time_en)
self.list.append(self.entryDate)
self.list.append(self.entryTime)
self['key_red'] = Button(_('Cancel'))
self['key_green'] = Button(_('SET!'))
ConfigListScreen.__init__(self, self.list, session=session)
self['setupActions'] = ActionMap(['SetupActions', 'ColorActions'], {'red': self.cancel,
'green': self.set,
'save': self.set,
'cancel': self.cancel,
'ok': self.set}, -2)
self['config'].list = self.list
def set(self, dtt = 0):
d = time.localtime(self.date_en.value)
dtt = '%d%02d%02d%02d%02d' % (d.tm_year,
d.tm_mon,
d.tm_mday,
self.time_en.value[0],
self.time_en.value[1])
enigma.eDVBLocalTimeHandler.getInstance().setUseDVBTime(False)
try:
os.system('/bin/date -s %s' % dtt)
except:
pass
self.close()
print '[SetClock] SET! ** %s' % time.strftime('%X %x (%Y) %Z')
def cancel(self):
self.close()