diff options
Diffstat (limited to 'lib/python/Components/Converter')
| -rw-r--r-- | lib/python/Components/Converter/ClockToText.py | 39 | ||||
| -rw-r--r-- | lib/python/Components/Converter/Converter.py | 18 | ||||
| -rw-r--r-- | lib/python/Components/Converter/EventName.py | 29 | ||||
| -rw-r--r-- | lib/python/Components/Converter/EventTime.py | 72 | ||||
| -rw-r--r-- | lib/python/Components/Converter/Makefile.am | 5 | ||||
| -rw-r--r-- | lib/python/Components/Converter/Poll.py | 22 | ||||
| -rw-r--r-- | lib/python/Components/Converter/RemainingToText.py | 19 | ||||
| -rw-r--r-- | lib/python/Components/Converter/StaticText.py | 7 | ||||
| -rw-r--r-- | lib/python/Components/Converter/__init__.py | 0 |
9 files changed, 211 insertions, 0 deletions
diff --git a/lib/python/Components/Converter/ClockToText.py b/lib/python/Components/Converter/ClockToText.py new file mode 100644 index 00000000..085ebc1a --- /dev/null +++ b/lib/python/Components/Converter/ClockToText.py @@ -0,0 +1,39 @@ +from Components.Converter.Converter import Converter +from time import localtime + +class ClockToText(Converter, object): + DEFAULT = 0 + WITH_SECONDS = 1 + IN_MINUTES = 2 + + # add: date, date as string, weekday, ... + # (whatever you need!) + + def __init__(self, type, *args, **kwargs): + Converter.__init__(self) + if type == "WithSeconds": + self.type = self.WITH_SECONDS + elif type == "InMinutes": + self.type = self.IN_MINUTES + else: + self.type = self.DEFAULT + + def getText(self): + time = self.source.time + if time is None: + return "" + + # handle durations + if self.type == self.IN_MINUTES: + return "%d min" % (time / 60) + + t = localtime(time) + + if self.type == self.WITH_SECONDS: + return "%2d:%02d:%02d" % (t.tm_hour, t.tm_min, t.tm_sec) + elif self.type == self.DEFAULT: + return "%02d:%02d" % (t.tm_hour, t.tm_min) + else: + return "???" + + text = property(getText) diff --git a/lib/python/Components/Converter/Converter.py b/lib/python/Components/Converter/Converter.py new file mode 100644 index 00000000..b75d253f --- /dev/null +++ b/lib/python/Components/Converter/Converter.py @@ -0,0 +1,18 @@ +from Tools.Event import Event + +class Converter: + def __init__(self): + self.changed = Event(start = self.start, stop = self.stop) + + def connect(self, source): + source.changed.listen(self.changed) + self.source = source + + def disconnect(self): + self.source.changed.unlisten(self.changed) + + def start(self): + pass + + def stop(self): + pass diff --git a/lib/python/Components/Converter/EventName.py b/lib/python/Components/Converter/EventName.py new file mode 100644 index 00000000..e391b95f --- /dev/null +++ b/lib/python/Components/Converter/EventName.py @@ -0,0 +1,29 @@ +from Components.Converter.Converter import Converter + +class EventName(Converter, object): + NAME = 0 + SHORT_DESCRIPTION = 1 + EXTENDED_DESCRIPTION = 2 + + def __init__(self, type, *args, **kwargs): + Converter.__init__(self) + if type == "Description": + self.type = self.SHORT_DESCRIPTION + elif type == "ExtendedDescription": + self.type = self.EXTENDED_DESCRIPTION + else: + self.type = self.NAME + + def getText(self): + event = self.source.event + if event is None: + return "" + + if self.type == self.NAME: + return event.getEventName() + elif self.type == self.SHORT_DESCRIPTION: + return event.getShortDescription() + elif self.type == self.EXTENDED_DESCRIPTION: + return event.getExtendedDescription() + + text = property(getText) diff --git a/lib/python/Components/Converter/EventTime.py b/lib/python/Components/Converter/EventTime.py new file mode 100644 index 00000000..3c312a69 --- /dev/null +++ b/lib/python/Components/Converter/EventTime.py @@ -0,0 +1,72 @@ +from Converter import Converter +from Poll import Poll +from time import time + +class EventTime(Poll, Converter, object): + STARTTIME = 0 + ENDTIME = 1 + REMAINING = 2 + PROGRESS = 3 + DURATION = 4 + + def __init__(self, type, *args, **kwargs): + Converter.__init__(self) + Poll.__init__(self) + if type == "EndTime": + self.type = self.ENDTIME + elif type == "Remaining": + self.type = self.REMAINING + self.poll_interval = 60*1000 + self.poll_enabled = True + elif type == "StartTime": + self.type = self.STARTTIME + elif type == "Duration": + self.type = self.DURATION + elif type == "Progress": + self.type = self.PROGRESS + self.poll_interval = 30*1000 + self.poll_enabled = True + else: + raise str("'%s' is not <StartTime|EndTime|Remaining|Duration> for EventTime converter" % type) + + def getTime(self): + assert self.type != self.PROGRESS + + event = self.source.event + if event is None: + return None + + if self.type == self.STARTTIME: + return event.getBeginTime() + elif self.type == self.ENDTIME: + return event.getBeginTime() + event.getDuration() + elif self.type == self.DURATION: + return event.getDuration() + elif self.type == self.REMAINING: + now = int(time()) + start_time = event.getBeginTime() + duration = event.getDuration() + end_time = start_time + duration + if start_time <= now <= end_time: + return (duration, end_time - now) + else: + return (duration, None) + + def getValue(self): + assert self.type == self.PROGRESS + + event = self.source.event + if event is None: + return None + + now = int(time()) + start_time = event.getBeginTime() + duration = event.getDuration() + if start_time <= now <= (start_time + duration) and duration > 0: + return (now - start_time) * 1000 / duration + else: + return None + + time = property(getTime) + value = property(getValue) + range = 1000 diff --git a/lib/python/Components/Converter/Makefile.am b/lib/python/Components/Converter/Makefile.am new file mode 100644 index 00000000..c2e55eef --- /dev/null +++ b/lib/python/Components/Converter/Makefile.am @@ -0,0 +1,5 @@ +installdir = $(LIBDIR)/enigma2/python/Components/Converter + +install_PYTHON = \ + __init__.py ClockToText.py Converter.py EventName.py StaticText.py EventTime.py \ + Poll.py RemainingToText.py diff --git a/lib/python/Components/Converter/Poll.py b/lib/python/Components/Converter/Poll.py new file mode 100644 index 00000000..3ba5e87f --- /dev/null +++ b/lib/python/Components/Converter/Poll.py @@ -0,0 +1,22 @@ +from enigma import eTimer + +class Poll(object): + def __init__(self): + self.__poll_timer = eTimer() + self.__poll_timer.timeout.get().append(self.changed) + self.__interval = 1000 + self.__enabled = False + + def __setInterval(self, interval): + self.__interval = interval + if self.__enabled: + self.__poll_timer.start(self.__interval) + else: + self.__poll_timer.stop() + + def __setEnable(self, enabled): + self.__enabled = enabled + self.poll_interval = self.__interval + + poll_interval = property(lambda self: self.__interval, __setInterval) + poll_enabled = property(lambda self: self.__enabled, __setEnable) diff --git a/lib/python/Components/Converter/RemainingToText.py b/lib/python/Components/Converter/RemainingToText.py new file mode 100644 index 00000000..534fef18 --- /dev/null +++ b/lib/python/Components/Converter/RemainingToText.py @@ -0,0 +1,19 @@ +from Components.Converter.Converter import Converter + +class RemainingToText(Converter, object): + def __init__(self, type, *args, **kwargs): + Converter.__init__(self) + + def getText(self): + + r = self.source.time + if r is None: + return "" + + (duration, remaining) = self.source.time + if remaining is not None: + return "+%d min" % (remaining / 60) + else: + return "%d min" % (duration / 60) + + text = property(getText) diff --git a/lib/python/Components/Converter/StaticText.py b/lib/python/Components/Converter/StaticText.py new file mode 100644 index 00000000..12eb6ad5 --- /dev/null +++ b/lib/python/Components/Converter/StaticText.py @@ -0,0 +1,7 @@ +from Components.Converter.Converter import Converter + +class StaticText(Converter, object): + def __init__(self, text, *args, **kwargs): + Converter.__init__(self) + self.text = str(text) + diff --git a/lib/python/Components/Converter/__init__.py b/lib/python/Components/Converter/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/lib/python/Components/Converter/__init__.py |
