X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/b4a8712280e79e52de422a48f247202a934ac576..becf6d478299223be066226557d9912fa4a5e3de:/lib/python/Plugins/Extensions/GraphMultiEPG/GraphMultiEpg.py diff --git a/lib/python/Plugins/Extensions/GraphMultiEPG/GraphMultiEpg.py b/lib/python/Plugins/Extensions/GraphMultiEPG/GraphMultiEpg.py index e1481276..45a5139b 100644 --- a/lib/python/Plugins/Extensions/GraphMultiEPG/GraphMultiEpg.py +++ b/lib/python/Plugins/Extensions/GraphMultiEPG/GraphMultiEpg.py @@ -1,4 +1,4 @@ -from skin import queryColor +from skin import parseColor from Components.config import config, ConfigClock, ConfigInteger from Components.Pixmap import Pixmap from Components.Button import Button @@ -7,7 +7,8 @@ from Components.HTMLComponent import HTMLComponent from Components.GUIComponent import GUIComponent from Components.EpgList import Rect from Components.Sources.Event import Event -from Components.Sources.Clock import Clock +from Components.Sources.Source import ObsoleteSource +from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest from Screens.Screen import Screen from Screens.EventView import EventViewSimple from Screens.TimeDateInput import TimeDateInput @@ -16,7 +17,7 @@ from Screens.EpgSelection import EPGSelection from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE from RecordTimer import RecordTimerEntry, parseEvent from ServiceReference import ServiceReference -from enigma import eEPGCache, eListbox, eListboxPythonMultiContent, gFont, loadPNG, \ +from enigma import eEPGCache, eListbox, gFont, loadPNG, eListboxPythonMultiContent, \ RT_HALIGN_LEFT, RT_HALIGN_CENTER, RT_VALIGN_CENTER, RT_WRAP, eRect, eTimer from time import localtime, time, strftime @@ -43,24 +44,30 @@ class EPGList(HTMLComponent, GUIComponent): self.list = None self.event_rect = None - #query skin colors - col = queryColor("GraphEpg.Foreground") - self.foreColor = col and col.argb() - - col = queryColor("GraphEpg.Border") - self.borderColor = col and col.argb() - - col = queryColor("GraphEpg.Background") - if col is None: - self.backColor = 0x586d88 - else: - self.backColor = col.argb() - - col = queryColor("GraphEpg.BackgroundSelected") - if col is None: - self.backColorSelected = 0x808080 - else: - self.backColorSelected = col.argb() + self.foreColor = None + self.foreColorSelected = None + self.borderColor = None + self.backColor = 0x586d88 + self.backColorSelected = 0x808080 + + def applySkin(self, desktop): + if self.skinAttributes is not None: + attribs = [ ] + for (attrib, value) in self.skinAttributes: + if attrib == "EntryForegroundColor": + self.foreColor = parseColor(value).argb() + elif attrib == "EntryForegroundColorSelected": + self.foreColorSelected = parseColor(value).argb() + elif attrib == "EntryBorderColor": + self.borderColor = parseColor(value).argb() + elif attrib == "EntryBackgroundColor": + self.backColor = parseColor(value).argb() + elif attrib == "EntryBackgroundColorSelected": + self.backColorSelected = parseColor(value).argb() + else: + attribs.append((attrib,value)) + self.skinAttributes = attribs + return GUIComponent.applySkin(self, desktop) def isSelectable(self, service, sname, event_list): return (event_list and len(event_list) and True) or False @@ -107,10 +114,13 @@ class EPGList(HTMLComponent, GUIComponent): old_service = self.cur_service #(service, service_name, events) cur_service = self.cur_service = self.l.getCurrentSelection() last_time = 0; + time_base = self.getTimeBase() if old_service and self.cur_event is not None: events = old_service[2] cur_event = events[self.cur_event] #(event_id, event_title, begin_time, duration) last_time = cur_event[2] + if last_time < time_base: + last_time = time_base if cur_service: self.cur_event = 0 events = cur_service[2] @@ -120,7 +130,10 @@ class EPGList(HTMLComponent, GUIComponent): best = len(events) #set invalid idx = 0 for event in events: #iterate all events - diff = abs(event[2]-last_time) + ev_time = event[2] + if ev_time < time_base: + ev_time = time_base + diff = abs(ev_time-last_time) if (best == len(events)) or (diff < best_diff): best = idx best_diff = diff @@ -159,7 +172,7 @@ class EPGList(HTMLComponent, GUIComponent): xpos += w; w = width/10*8; self.event_rect = Rect(xpos, 0, w, height) - self.l.setSelectionClip(eRect(xpos, 0, w, height), False) + self.l.setSelectionClip(eRect(0,0,0,0), False) def calcEntryPosAndWidthHelper(self, stime, duration, start, end, width): xpos = (stime - start) * width / (end - start) @@ -179,8 +192,7 @@ class EPGList(HTMLComponent, GUIComponent): def buildEntry(self, service, service_name, events): r1=self.service_rect r2=self.event_rect - res = [ None ] # no private data needed - res.append((eListboxPythonMultiContent.TYPE_TEXT, r1.left(), r1.top(), r1.width(), r1.height(), 0, RT_HALIGN_LEFT|RT_VALIGN_CENTER, service_name)) + res = [ None, MultiContentEntryText(pos = (r1.left(),r1.top()), size = (r1.width(), r1.height()), font = 0, flags = RT_HALIGN_LEFT | RT_VALIGN_CENTER, text = service_name) ] if events: start = self.time_base+self.offs*self.time_epoch*60 @@ -190,6 +202,7 @@ class EPGList(HTMLComponent, GUIComponent): width = r2.width() height = r2.height() foreColor = self.foreColor + foreColorSelected = self.foreColorSelected backColor = self.backColor backColorSelected = self.backColorSelected borderColor = self.borderColor @@ -197,12 +210,9 @@ class EPGList(HTMLComponent, GUIComponent): for ev in events: #(event_id, event_title, begin_time, duration) rec=self.timer.isInTimer(ev[0], ev[2], ev[3], service) > ((ev[3]/10)*8) xpos, ewidth = self.calcEntryPosAndWidthHelper(ev[2], ev[3], start, end, width) - if self.borderColor is None: - res.append((eListboxPythonMultiContent.TYPE_TEXT, left+xpos, top, ewidth, height, 1, RT_HALIGN_CENTER|RT_VALIGN_CENTER|RT_WRAP, ev[1], foreColor, backColor, backColorSelected, 1)) - else: - res.append((eListboxPythonMultiContent.TYPE_TEXT, left+xpos, top, ewidth, height, 1, RT_HALIGN_CENTER|RT_VALIGN_CENTER|RT_WRAP, ev[1], foreColor, backColor, backColorSelected, 1, borderColor)) + res.append(MultiContentEntryText(pos = (left+xpos, top), size = (ewidth, height), font = 1, flags = RT_HALIGN_CENTER | RT_VALIGN_CENTER | RT_WRAP, text = ev[1], color = foreColor, color_sel = foreColorSelected, backcolor = backColor, backcolor_sel = backColorSelected, border_width = 1, border_color = borderColor)) if rec and ewidth > 23: - res.append((eListboxPythonMultiContent.TYPE_PIXMAP_ALPHATEST, left+xpos+ewidth-22, top+height-22, 21, 21, self.clock_pixmap, backColor, backColorSelected)) + res.append(MultiContentEntryPixmapAlphaTest(pos = (left+xpos+ewidth-22, top+height-22), size = (21, 21), png = self.clock_pixmap, backcolor = backColor, backcolor_selected = backColorSelected)) return res def selEntry(self, dir, visible=True): @@ -325,7 +335,7 @@ class GraphMultiEPG(Screen): self["key_green"] = Button(_("Add timer")) self["timeline_text"] = TimelineText() self["Event"] = Event() - self["Clock"] = Clock() + self["Clock"] = ObsoleteSource(new_source = "global.CurrentTime", removal_date = "2008-01") self.time_lines = [ ] for x in (0,1,2,3,4,5): pm = Pixmap()