From 8cdc6c5d6f8b6a492ccdbd2cc0df836ffc9191e8 Mon Sep 17 00:00:00 2001 From: ghost Date: Mon, 4 Oct 2010 10:23:07 +0200 Subject: permit also to record from service groups (services with associated alternative services) --- lib/python/Screens/TimerEntry.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/python/Screens/TimerEntry.py b/lib/python/Screens/TimerEntry.py index 62faf9bf..9885e700 100644 --- a/lib/python/Screens/TimerEntry.py +++ b/lib/python/Screens/TimerEntry.py @@ -278,7 +278,7 @@ class TimerEntry(Screen, ConfigListScreen): self.keyGo() def keyGo(self, result = None): - if self.timerentry_service_ref.getType() != eServiceReference.idDVB or self.timerentry_service_ref.getPath() != "": + if not self.timerentry_service_ref.isRecordable(): self.session.openWithCallback(self.selectChannelSelector, MessageBox, _("You didn't select a channel to record from."), MessageBox.TYPE_ERROR) return self.timer.name = self.timerentry_name.value -- cgit v1.2.3 From 828c8f82e39b6de6fc780513d8d4bf481053c1f9 Mon Sep 17 00:00:00 2001 From: Fraxinas Date: Mon, 4 Oct 2010 18:31:02 +0200 Subject: implement borders for ePixmap widgets (add feature #589) --- lib/gui/epixmap.cpp | 48 +++++++++++++++++++++++++++++++++++------------- lib/gui/epixmap.h | 21 +++++++++++++-------- 2 files changed, 48 insertions(+), 21 deletions(-) (limited to 'lib') diff --git a/lib/gui/epixmap.cpp b/lib/gui/epixmap.cpp index f20c1a9f..17686851 100644 --- a/lib/gui/epixmap.cpp +++ b/lib/gui/epixmap.cpp @@ -3,7 +3,7 @@ #include ePixmap::ePixmap(eWidget *parent) - :eWidget(parent), m_alphatest(false), m_scale(false) + :eWidget(parent), m_alphatest(false), m_scale(false), m_have_border_color(false), m_border_width(0) { } @@ -46,12 +46,25 @@ void ePixmap::setPixmapFromFile(const char *filename) // TODO: This only works for desktop 0 getDesktop(0)->makeCompatiblePixmap(*m_pixmap); - event(evtChangedPixmap); + event(evtChangedPixmap); +} + +void ePixmap::setBorderWidth(int pixel) +{ + m_border_width=pixel; + invalidate(); +} + +void ePixmap::setBorderColor(const gRGB &color) +{ + m_border_color=color; + m_have_border_color=true; + invalidate(); } void ePixmap::checkSize() { - /* when we have no pixmap, or a pixmap of different size, we need + /* when we have no pixmap, or a pixmap of different size, we need to enable transparency in any case. */ if (m_pixmap && m_pixmap->size() == size() && !m_alphatest) setTransparent(0); @@ -65,12 +78,13 @@ int ePixmap::event(int event, void *data, void *data2) switch (event) { case evtPaint: - { - ePtr style; - - getStyle(style); + { + ePtr style; + + eSize s(size()); + getStyle(style); -// we don't clear the background before because of performance reasons. +// we don't clear the background before because of performance reasons. // when the pixmap is too small to fit the whole widget area, the widget is // transparent anyway, so the background is already painted. // eWidget::event(event, data, data2); @@ -88,12 +102,20 @@ int ePixmap::event(int event, void *data, void *data2) if (m_scale) painter.blitScale(m_pixmap, eRect(ePoint(0, 0), size()), eRect(), flags); else - painter.blit(m_pixmap, ePoint(0, 0), eRect(), flags); - } + painter.blit(m_pixmap, ePoint(0, 0), eRect(), flags); + } - return 0; - } - case evtChangedPixmap: +// border + if (m_have_border_color) + painter.setForegroundColor(m_border_color); + painter.fill(eRect(0, 0, s.width(), m_border_width)); + painter.fill(eRect(0, m_border_width, m_border_width, s.height()-m_border_width)); + painter.fill(eRect(m_border_width, s.height()-m_border_width, s.width()-m_border_width, m_border_width)); + painter.fill(eRect(s.width()-m_border_width, m_border_width, m_border_width, s.height()-m_border_width)); + + return 0; + } + case evtChangedPixmap: checkSize(); invalidate(); return 0; diff --git a/lib/gui/epixmap.h b/lib/gui/epixmap.h index 6280fb34..9a6e20db 100644 --- a/lib/gui/epixmap.h +++ b/lib/gui/epixmap.h @@ -12,18 +12,23 @@ public: void setPixmap(gPixmap *pixmap); void setPixmap(ePtr &pixmap); - void setPixmapFromFile(const char *filename); - void setAlphatest(int alphatest); /* 1 for alphatest, 2 for alphablend */ - void setScale(int scale); + void setPixmapFromFile(const char *filename); + void setAlphatest(int alphatest); /* 1 for alphatest, 2 for alphablend */ + void setScale(int scale); + void setBorderWidth(int pixel); + void setBorderColor(const gRGB &color); protected: - ePtr m_pixmap; - int event(int event, void *data=0, void *data2=0); + ePtr m_pixmap; + int event(int event, void *data=0, void *data2=0); void checkSize(); private: enum eLabelEvent - { - evtChangedPixmap = evtUserWidget, - }; + { + evtChangedPixmap = evtUserWidget, + }; + bool m_have_border_color; + int m_border_width; + gRGB m_border_color; }; #endif -- cgit v1.2.3 From 0ffddc5916909206895777778b1ac99073ae1ca2 Mon Sep 17 00:00:00 2001 From: Stefan Pluecken Date: Wed, 6 Oct 2010 08:58:34 +0200 Subject: refs bug #593 get i2c device from /proc/bus/nim_sockets for automatic scans --- lib/python/Components/NimManager.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'lib') diff --git a/lib/python/Components/NimManager.py b/lib/python/Components/NimManager.py index 805be4df..2a1cbad3 100644 --- a/lib/python/Components/NimManager.py +++ b/lib/python/Components/NimManager.py @@ -471,7 +471,7 @@ class SecConfigure: self.update() class NIM(object): - def __init__(self, slot, type, description, has_outputs = True, internally_connectable = None, multi_type = {}): + def __init__(self, slot, type, description, has_outputs = True, internally_connectable = None, multi_type = {}, i2c = None): self.slot = slot if type not in ("DVB-S", "DVB-C", "DVB-T", "DVB-S2", None): @@ -483,6 +483,7 @@ class NIM(object): self.has_outputs = has_outputs self.internally_connectable = internally_connectable self.multi_type = multi_type + self.i2c = i2c def isCompatible(self, what): compatible = { @@ -517,6 +518,9 @@ class NIM(object): def getSlotID(self): return chr(ord('A') + self.slot) + def getI2C(self): + return self.i2c + def hasOutputs(self): return self.has_outputs @@ -683,6 +687,9 @@ class NimManager: modes = entries[current_slot].get("multi_type", {}) modes[split2[1]] = split[1].strip() entries[current_slot]["multi_type"] = modes + elif line.strip().startswith("I2C_Device:"): + input = int(line.strip()[len("I2C_Device:") + 1:]) + entries[current_slot]["i2c"] = input elif line.strip().startswith("empty"): entries[current_slot]["type"] = None entries[current_slot]["name"] = _("N/A") @@ -692,13 +699,15 @@ class NimManager: if not (entry.has_key("name") and entry.has_key("type")): entry["name"] = _("N/A") entry["type"] = None + if not (entry.has_key("i2c")): + entry["i2c"] = None if not (entry.has_key("has_outputs")): entry["has_outputs"] = True if not (entry.has_key("internally_connectable")): entry["internally_connectable"] = None if not (entry.has_key("multi_type")): entry["multi_type"] = {} - self.nim_slots.append(NIM(slot = id, description = entry["name"], type = entry["type"], has_outputs = entry["has_outputs"], internally_connectable = entry["internally_connectable"], multi_type = entry["multi_type"])) + self.nim_slots.append(NIM(slot = id, description = entry["name"], type = entry["type"], has_outputs = entry["has_outputs"], internally_connectable = entry["internally_connectable"], multi_type = entry["multi_type"], i2c = entry["i2c"])) def hasNimType(self, chktype): for slot in self.nim_slots: -- cgit v1.2.3 From fe72b7929c2f0b5dbac3040b303d195923735fc8 Mon Sep 17 00:00:00 2001 From: Stefan Pluecken Date: Wed, 6 Oct 2010 09:43:35 +0200 Subject: fixes bug #593 use i2c_device from /proc/bus/nim_sockets for automatic cable scan --- lib/python/Components/NimManager.py | 3 +++ lib/python/Screens/ScanSetup.py | 21 ++++++++------------- 2 files changed, 11 insertions(+), 13 deletions(-) (limited to 'lib') diff --git a/lib/python/Components/NimManager.py b/lib/python/Components/NimManager.py index f934ed50..67a1abc8 100644 --- a/lib/python/Components/NimManager.py +++ b/lib/python/Components/NimManager.py @@ -769,6 +769,9 @@ class NimManager: def getNim(self, slotid): return self.nim_slots[slotid] + + def getI2CDevice(self, slotid): + return self.nim_slots[slotid].getI2C() def getNimListOfType(self, type, exception = -1): # returns a list of indexes for NIMs compatible to the given type, except for 'exception' diff --git a/lib/python/Screens/ScanSetup.py b/lib/python/Screens/ScanSetup.py index f4828088..2e2f8364 100644 --- a/lib/python/Screens/ScanSetup.py +++ b/lib/python/Screens/ScanSetup.py @@ -192,21 +192,16 @@ class CableTransponderSearchSupport: self.cable_search_container.dataAvail.append(self.getCableTransponderData) cableConfig = config.Nims[nim_idx].cable tunername = nimmanager.getNimName(nim_idx) + bus = nimmanager.getI2CDevice(nim_idx) + if bus is None: + print "ERROR: could not get I2C device for nim", nim_idx, "for cable transponder search" + bus = 2 + if tunername == "CXD1981": - cmd = "cxd1978 --init --scan --verbose --wakeup --inv 2 --bus " - else: - cmd = "tda1002x --init --scan --verbose --wakeup --inv 2 --bus " - #FIXMEEEEEE hardcoded i2c devices for dm7025 and dm8000 - if nim_idx < 2: - if HardwareInfo().get_device_name() == "dm500hd": - cmd += "2" - else: - cmd += str(nim_idx) + cmd = "cxd1978 --init --scan --verbose --wakeup --inv 2 --bus %d" % bus else: - if nim_idx == 2: - cmd += "2" # first nim socket on DM8000 use /dev/i2c/2 - else: - cmd += "4" # second nim socket on DM8000 use /dev/i2c/4 + cmd = "tda1002x --init --scan --verbose --wakeup --inv 2 --bus %d" % bus + if cableConfig.scan_type.value == "bands": cmd += " --scan-bands " bands = 0 -- cgit v1.2.3