small fix
[enigma2.git] / lib / python / Components / Converter / ClockToText.py
index 61c176e..6623f24 100644 (file)
@@ -1,26 +1,32 @@
-from Components.Converter.Converter import Converter
+from Converter import Converter
 from time import localtime, strftime
+from Components.Element import cached
 
 class ClockToText(Converter, object):
        DEFAULT = 0
        WITH_SECONDS = 1
        IN_MINUTES = 2
        DATE = 3
+       FORMAT = 4
        
        # add: date, date as string, weekday, ... 
        # (whatever you need!)
        
-       def __init__(self, type, *args, **kwargs):
-               Converter.__init__(self)
+       def __init__(self, type):
+               Converter.__init__(self, type)
                if type == "WithSeconds":
                        self.type = self.WITH_SECONDS
                elif type == "InMinutes":
                        self.type = self.IN_MINUTES
                elif type == "Date":
                        self.type = self.DATE
+               elif str(type).find("Format") != -1:
+                       self.type = self.FORMAT
+                       self.fmt_string = type[7:]
                else:
                        self.type = self.DEFAULT
 
+       @cached
        def getText(self):
                time = self.source.time
                if time is None:
@@ -38,6 +44,14 @@ class ClockToText(Converter, object):
                        return "%02d:%02d" % (t.tm_hour, t.tm_min)
                elif self.type == self.DATE:
                        return strftime("%A %B %d, %Y", t)
+               elif self.type == self.FORMAT:
+                       spos = self.fmt_string.find('%')
+                       if spos > 0:
+                               s1 = self.fmt_string[:spos]
+                               s2 = strftime(self.fmt_string[spos:], t)
+                               return str(s1+s2)
+                       else:
+                               return strftime(self.fmt_string, t)
                else:
                        return "???"