from Converter import Converter from time import localtime, strftime from Components.Element import cached import os # Patched by pcd for infobar date translation October 2008 # class ClockToText(Converter, object): DEFAULT = 0 WITH_SECONDS = 1 IN_MINUTES = 2 DATE = 3 FORMAT = 4 AS_LENGTH = 5 # add: date, date as string, weekday, ... # (whatever you need!) 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 type == "AsLength": self.type = self.AS_LENGTH elif str(type).find("Format") != -1: self.type = self.FORMAT self.fmt_string = type[7:] else: self.type = self.DEFAULT self.getMonth() @cached 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) elif self.type == self.AS_LENGTH: return "%d:%02d" % (time / 60, 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) elif self.type == self.DATE: if os.path.isfile("/etc/months.list")is True : count = t[1]*2 - 1 day = strftime("%A", t) ndate = strftime("%d", t) month = self.ebuf[count] year = strftime("%Y", t) a = day and _(day) full = a +" "+ month +" "+ ndate +" "+ year return full else: 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 "???" text = property(getText) def getMonth(self): if os.path.isfile("/etc/months.list")is True : myfile = file(r"/etc/months.list") icount = 0 data = [] self.ebuf = [] for line in myfile.readlines(): data.append(icount) num = len(line) data[icount] = line[:-1] self.ebuf.append(data[icount]) else: return