aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFelix Domke <tmbinc@elitedvb.net>2005-02-07 09:14:02 +0000
committerFelix Domke <tmbinc@elitedvb.net>2005-02-07 09:14:02 +0000
commitd9ee52e4f0fbe9a1ae00d0e66f9e6f0a07fa319f (patch)
treef1084b85919b5590615e281331cfe535c3a160c8
parent4bc08995411e21f3564f09e136809be68ddf96a8 (diff)
downloadenigma2-d9ee52e4f0fbe9a1ae00d0e66f9e6f0a07fa319f.tar.gz
enigma2-d9ee52e4f0fbe9a1ae00d0e66f9e6f0a07fa319f.zip
- added iStaticServiceInformation
- added service list interface for dvb - started work on queries (currently only "instr" on servicename) - started work on infobar - added listbox with service - fixed dvbdb - remove some debug output
-rw-r--r--components.py5
-rw-r--r--lamedb3255
-rw-r--r--lib/base/connection.cpp5
-rw-r--r--lib/dvb/db.cpp85
-rw-r--r--lib/dvb/db.h32
-rw-r--r--lib/dvb/idvb.h69
-rw-r--r--lib/dvb/stT1RVV70
-rw-r--r--lib/gdi/font.cpp2
-rw-r--r--lib/gui/elistbox.cpp69
-rw-r--r--lib/gui/elistbox.h18
-rw-r--r--lib/gui/elistboxcontent.cpp14
-rw-r--r--lib/gui/elistboxcontent.h2
-rw-r--r--lib/nav/core.cpp2
-rw-r--r--lib/python/enigma_python.i1
-rw-r--r--lib/service/iservice.h25
-rw-r--r--lib/service/listboxservice.cpp134
-rw-r--r--lib/service/listboxservice.h48
-rw-r--r--lib/service/service.cpp4
-rw-r--r--lib/service/service.h2
-rw-r--r--lib/service/servicedvb.cpp94
-rw-r--r--lib/service/servicedvb.h17
-rw-r--r--lib/service/servicefs.cpp10
-rw-r--r--lib/service/servicefs.h4
-rw-r--r--lib/service/servicemp3.cpp20
-rw-r--r--lib/service/servicemp3.h14
-rw-r--r--mytest.py35
-rw-r--r--screens.py78
-rw-r--r--skin.py33
28 files changed, 3928 insertions, 149 deletions
diff --git a/components.py b/components.py
index 8015621f..48bcdaf5 100644
--- a/components.py
+++ b/components.py
@@ -174,11 +174,11 @@ class Clock(HTMLComponent, GUIComponent, VariableText):
return self.getText()
class Button(HTMLComponent, GUIComponent, VariableText):
- def __init__(self, text=""):
+ def __init__(self, text="", onClick = [ ]):
GUIComponent.__init__(self)
VariableText.__init__(self)
self.setText(text)
- self.onClick = [ ]
+ self.onClick = onClick
def push(self):
for x in self.onClick:
@@ -224,7 +224,6 @@ class VolumeBar(HTMLComponent, GUIComponent, VariableValue):
g.setRange(0, 100)
return g
-
class MenuList(HTMLComponent, GUIComponent):
def __init__(self, list):
GUIComponent.__init__(self)
diff --git a/lamedb b/lamedb
new file mode 100644
index 00000000..83299f9a
--- /dev/null
+++ b/lamedb
@@ -0,0 +1,3255 @@
+eDVB services /3/
+transponders
+00c00000:03f0:0001
+ s 11317500:22000000:1:4:2:192
+/
+00c00000:03fa:0001
+ s 11479000:22000000:1:4:2:192
+/
+00c00000:03fc:0001
+ s 11508500:22000000:1:4:2:192
+/
+00c00000:0400:0001
+ s 11567500:22000000:1:4:2:192
+/
+00c00000:0402:0001
+ s 11597000:22000000:1:4:2:192
+/
+00c00000:0408:0001
+ s 11685500:22000000:1:4:2:192
+/
+00c00000:040a:0001
+ s 10979000:22000000:1:4:2:192
+/
+00c00000:040e:0001
+ s 11038000:22000000:1:4:2:192
+/
+00c00000:0412:0001
+ s 11097000:22000000:1:4:2:192
+/
+00c00000:0416:0001
+ s 11156000:22000000:1:4:2:192
+/
+00c00000:041d:0001
+ s 10773250:22000000:0:4:2:192
+/
+00c00000:041e:0001
+ s 10788000:22000000:1:4:2:192
+/
+00c00000:0420:0001
+ s 10817500:22000000:1:4:2:192
+/
+00c00000:0421:0001
+ s 10832250:22000000:0:4:2:192
+/
+00c00000:0422:0001
+ s 10847000:22000000:1:4:2:192
+/
+00c00000:0423:0001
+ s 10861750:22000000:0:4:2:192
+/
+00c00000:0424:0001
+ s 10876500:22000000:1:4:2:192
+/
+00c00000:042a:0001
+ s 11739000:27500000:1:3:2:192
+/
+00c00000:042c:0001
+ s 11778000:27500000:1:3:2:192
+/
+00c00000:042e:0001
+ s 11817000:27500000:1:3:2:192
+/
+00c00000:0430:0001
+ s 11856000:27500000:1:3:2:192
+/
+00c00000:0431:0001
+ s 12109500:27500000:0:3:2:192
+/
+00c00000:0432:0001
+ s 11895000:27500000:1:3:2:192
+/
+00c00000:0434:0001
+ s 11934000:27500000:1:3:2:192
+/
+00c00000:0436:0001
+ s 11973000:27500000:1:3:2:192
+/
+00c00000:0437:0001
+ s 11953500:27500000:0:3:2:192
+/
+00c00000:0438:0001
+ s 12012000:27500000:1:3:2:192
+/
+00c00000:043a:0001
+ s 12051000:27500000:1:3:2:192
+/
+00c00000:043c:0001
+ s 12090000:29900000:1:5:2:192
+/
+00c00000:043e:0001
+ s 12129000:27500000:1:3:2:192
+/
+00c00000:0440:0001
+ s 12168000:27500000:1:3:2:192
+/
+00c00000:0441:0001
+ s 12187500:27500000:0:3:2:192
+/
+00c00000:0442:0001
+ s 12207000:27500000:1:3:2:192
+/
+00c00000:0443:0001
+ s 12226500:27500000:0:3:2:192
+/
+00c00000:0444:0001
+ s 12246000:27500000:1:3:2:192
+/
+00c00000:0445:0001
+ s 12265500:27500000:0:3:2:192
+/
+00c00000:0446:0001
+ s 12285000:27500000:1:3:2:192
+/
+00c00000:0447:0001
+ s 12304500:27500000:0:3:2:192
+/
+00c00000:0448:0001
+ s 12324000:27500000:1:3:2:192
+/
+00c00000:044a:0001
+ s 12363050:27500000:1:3:2:192
+/
+00c00000:044b:0001
+ s 12382500:27500000:0:3:2:192
+/
+00c00000:044c:0001
+ s 12402000:27500000:1:3:2:192
+/
+00c00000:044d:0001
+ s 11836500:27500000:0:3:2:192
+/
+00c00000:044e:0001
+ s 12441000:27500000:1:3:2:192
+/
+00c00000:044f:0001
+ s 12460500:27500000:0:3:2:192
+/
+00c00000:0452:0001
+ s 12522000:22000000:1:4:2:192
+/
+00c00000:0453:0001
+ s 12544750:22000000:0:4:2:192
+/
+00c00000:0454:0001
+ s 12551500:22000000:1:4:2:192
+/
+00c00000:0456:0001
+ s 12581000:22000000:1:4:2:192
+/
+00c00000:0457:0001
+ s 12603750:22000000:0:4:2:192
+/
+00c00000:0458:0001
+ s 12610500:22000000:1:4:2:192
+/
+00c00000:0459:0001
+ s 12633250:22000000:0:4:2:192
+/
+00c00000:045a:0001
+ s 12640000:22000000:1:4:2:192
+/
+00c00000:045b:0001
+ s 12662750:22000000:0:4:2:192
+/
+00c00000:045c:0001
+ s 12669500:22000000:1:4:2:192
+/
+00c00000:045d:0001
+ s 12692250:22000000:0:4:2:192
+/
+00c00000:045e:0001
+ s 12699000:22000000:1:4:2:192
+/
+00c00000:045f:0001
+ s 12721750:22000000:0:4:2:192
+/
+00c00000:04b1:0001
+ s 12421500:27500000:0:3:2:192
+/
+00c00000:04f9:0001
+ s 11875500:27500000:0:3:2:192
+/
+00c00000:04ff:0001
+ s 11992500:27500000:0:3:2:192
+/
+00c00000:0423:0019
+ s 10861750:22000000:0:4:2:192
+/
+00c00000:043c:0019
+ s 12090000:27500000:1:3:2:192
+/
+00c00000:0445:0019
+ s 12265500:27500000:0:3:2:192
+/
+00c00000:0460:0019
+ s 12728500:22000000:1:4:2:192
+/
+00c00000:0449:0035
+ s 12343500:27500000:0:3:2:192
+/
+00c00000:0451:0035
+ s 12515250:22000000:0:4:2:192
+/
+00c00000:0455:0035
+ s 12574250:22000000:0:4:2:192
+/
+00c00000:0001:0085
+ s 12070500:27500000:0:3:2:192
+/
+00c00000:0002:0085
+ s 11797500:27500000:0:3:2:192
+/
+00c00000:0003:0085
+ s 11719500:27500000:0:3:2:192
+/
+00c00000:0004:0085
+ s 12031500:27500000:0:3:2:192
+/
+00c00000:0005:0085
+ s 12460500:27500000:0:3:2:192
+/
+00c00000:0007:0085
+ s 12148500:27500000:0:3:2:192
+/
+00c00000:0011:0085
+ s 11758500:27500000:0:3:2:192
+/
+00c00000:0021:0085
+ s 12480000:27500000:1:3:2:192
+/
+end
+services
+0300:00c00000:0007:0085:1:0
+†RNF‡plus
+p:BetaDigital
+7500:00c00000:0420:0001:1:0
+DCINE ESPAÑOL
+p:DIGITAL+
+0201:00c00000:0004:0085:1:0
+DIREKT †EROTIK‡
+p:PREMIERE,C:1702,C:1722,C:1801
+0301:00c00000:0007:0085:1:0
+TV †TRAVEL‡ SHOP
+p:BetaDigital
+2201:00c00000:044c:0001:1:0
+JETIX
+p:CSAT
+7501:00c00000:0420:0001:1:0
+CANAL COCINA
+p:DIGITAL+
+0202:00c00000:0007:0085:1:0
+†ONTV‡ Regional
+p:BetaDigital
+0302:00c00000:0007:0085:1:0
+†BD‡ Partner† TV‡
+p:BetaDigital,C:1702,C:1801
+2202:00c00000:044c:0001:1:0
+L'EQUIPE TV
+p:CSAT
+7502:00c00000:0420:0001:1:0
+CCVALENCIANA
+p:DIGITAL+
+7602:00c00000:0408:0001:1:0
+CNN+
+p:DIGITAL+
+0203:00c00000:0011:0085:1:0
+MGM
+p:PREMIERE,C:1702,C:1722,C:1801
+0303:00c00000:0007:0085:1:0
+BD 1
+p:BetaDigital,C:1702,C:1801
+2203:00c00000:044c:0001:1:0
+PLANETE CHOC
+p:CSAT
+7503:00c00000:0420:0001:1:0
+FOX
+p:DIGITAL+
+0204:00c00000:0004:0085:1:0
+PREMIERE †NOSTALGIE‡
+p:PREMIERE,C:1702,C:1722,C:1801
+0304:00c00000:0007:0085:1:0
+†TV.B‡ERLIN
+p:BetaDigital
+2204:00c00000:044c:0001:1:0
+NAT GEOGRAPHIC
+p:CSAT
+7504:00c00000:0420:0001:1:0
+AXN
+p:DIGITAL+
+0305:00c00000:0007:0085:1:0
+BD 4
+p:BetaDigital,C:1702,C:1801
+2205:00c00000:044c:0001:1:0
+C CINEMA CLASSIC
+p:CSAT
+0206:00c00000:0001:0085:1:0
+†GOLDSTAR‡ TV
+p:PREMIERE,C:1702,C:1722,C:1801
+0306:00c00000:0007:0085:1:0
+†GOD ‡Channel
+p:BetaDigital
+0307:00c00000:0007:0085:1:0
+†F‡ranken †SAT‡
+p:BetaDigital
+2207:00c00000:044c:0001:1:0
+C CINEMA FAMIZ
+p:CSAT
+0008:00c00000:0002:0085:1:0
+PREMIERE †START‡
+p:PREMIERE,C:1702,C:1722,C:1801
+2f08:00c00000:0441:0001:1:0
+†S‡uper† RTL‡
+p:RTL World
+0009:00c00000:0002:0085:1:0
+†PREM‡IERE† 4‡
+p:PREMIERE,C:1702,C:1722,C:1801
+2009:00c00000:0430:0001:1:0
+CANAL+
+p:CSAT
+000a:00c00000:0002:0085:1:0
+†PREM‡IERE† 1‡
+p:PREMIERE,C:1702,C:1722,C:1801
+200a:00c00000:0430:0001:1:0
+CANAL+ CONFORT
+p:CSAT
+000b:00c00000:0002:0085:1:0
+†PREM‡IERE† 2‡
+p:PREMIERE,C:1702,C:1722,C:1801
+200b:00c00000:0430:0001:1:0
+CANAL+ CINEMA
+p:CSAT
+f20b:00c00000:0421:0001:1:0
+RAZE TV
+p:Astra
+000c:00c00000:0011:0085:1:0
+†ANIMAL‡ PLANET
+p:PREMIERE,C:1702,C:1722,C:1801
+200c:00c00000:0430:0001:1:0
+CANAL+ 16/9
+p:CSAT
+300c:00c00000:0458:0001:1:0
+CLEAR TV
+p:ASTRA
+760c:00c00000:0408:0001:1:0
+CINEM. CLÁSICO
+p:DIGITAL+
+000d:00c00000:0011:0085:1:0
+†Neu‡er Kanal
+p:PREMIERE,C:1702,C:1722,C:1801
+200d:00c00000:0430:0001:1:0
+
+p:CSAT
+220d:00c00000:044c:0001:1:0
+GAME ONE
+p:CSAT
+300d:00c00000:0458:0001:1:0
+TV6
+p:X-Gate
+760d:00c00000:0408:0001:1:0
+FDF
+p:DIGITAL+
+000e:00c00000:0011:0085:1:0
+†DISCOVERY‡ CHANNEL
+p:PREMIERE,C:1702,C:1722,C:1801
+200e:00c00000:0430:0001:1:0
+C CINEMA PREMIER
+p:CSAT
+760e:00c00000:0408:0001:1:0
+TV GALICIA
+p:DIGITAL+
+000f:00c00000:0001:0085:1:0
+CLASSICA
+p:PREMIERE,C:1702,C:1722,C:1801
+200f:00c00000:0430:0001:1:0
+DISNEY CHANNEL
+p:CSAT
+0010:00c00000:0004:0085:1:0
+PREMIERE †SERIE‡
+p:PREMIERE,C:1702,C:1722,C:1801
+2010:00c00000:0430:0001:1:0
+CANAL+ SPORT
+p:CSAT
+0011:00c00000:0003:0085:1:0
+PREMIERE †SPORT 1‡
+p:PREMIERE,C:1702,C:1722,C:1801
+2011:00c00000:0430:0001:1:0
+EQUIDIA
+p:CSAT
+0012:00c00000:0004:0085:1:0
+PREMIERE †DIREKT‡
+p:PREMIERE,C:1702,C:1722,C:1801
+2712:00c00000:0402:0001:1:0
+RTM MAROC
+p:CANALSATELLITE
+0013:00c00000:0011:0085:1:0
+†JUNIOR‡
+p:PREMIERE,C:1702,C:1722,C:1801
+2013:00c00000:0430:0001:1:0
+PAD
+p:CSAT
+5013:00c00000:0447:0001:1:0
+UPC_EPG
+p:UPC Direct
+0014:00c00000:0002:0085:1:0
+†PREM‡IERE† 7‡
+p:PREMIERE,C:1702,C:1722,C:1801
+2014:00c00000:0430:0001:1:0
+PAD 2
+p:CSAT
+0015:00c00000:0001:0085:1:0
+†B‡EATE†-UHSE‡.TV
+p:PREMIERE,C:1702,C:1722,C:1801
+2015:00c00000:0430:0001:1:0
+CANAL+ 16/9.
+p:CSAT
+0016:00c00000:0001:0085:1:0
+†HEIMAT‡KANAL
+p:PREMIERE,C:1702,C:1722,C:1801
+0017:00c00000:0004:0085:1:0
+PREMIERE †KRIMI‡
+p:PREMIERE,C:1702,C:1722,C:1801
+271a:00c00000:0402:0001:1:0
+EUROSPORT
+p:Eurosport
+001b:00c00000:0004:0085:1:0
+PREMIERE †SPORT 2‡
+p:PREMIERE,C:1702,C:1722,C:1801
+001c:00c00000:0011:0085:1:0
+†FOX‡ †KIDS‡
+p:PREMIERE,C:1702,C:1722,C:1801
+2f1c:00c00000:0441:0001:1:0
+VOX
+p:RTL World
+f21c:00c00000:0421:0001:1:0
+Free-X TV
+p:RRSAT
+001d:00c00000:0002:0085:1:0
+†PREM‡IERE† 5‡
+p:PREMIERE,C:1702,C:1722,C:1801
+1c1f:00c00000:0451:0035:1:0
+EPG
+p:CANAL+
+0020:00c00000:0021:0085:1:0
+†Sonnen‡klar †TV‡
+p:PREMIERE
+1c20:00c00000:0451:0035:1:0
+Lunapark
+p:CANAL+
+0021:00c00000:0007:0085:1:0
+PFH
+p:,C:1810
+4e21:00c00000:043a:0001:1:0
+ProSieben Schweiz
+p:ProSiebenSat.1
+0022:00c00000:0011:0085:1:0
+†DISNEY‡ CHANNEL
+p:PREMIERE,C:1702,C:1722,C:1801
+4e22:00c00000:043a:0001:1:0
+ProSieben Austria
+p:ProSiebenSat.1
+4e23:00c00000:043a:0001:1:0
+Kabel 1 Schweiz
+p:ProSiebenSat.1
+7023:00c00000:0402:0001:1:0
+Sky News
+p:BSkyB
+0024:00c00000:0011:0085:1:0
+SCI FI
+p:PREMIERE,C:1702,C:1722,C:1801
+2724:00c00000:0402:0001:1:0
+DW-TV
+p:Deutsche Welle
+4e24:00c00000:043a:0001:1:0
+Kabel 1 Austria
+p:ProSiebenSat.1
+7724:00c00000:0416:0001:1:0
+CARTOON NET.
+p:DIGITAL+
+4e25:00c00000:043a:0001:1:0
+SAT.1 A
+p:ProSiebenSat.1
+f226:00c00000:0421:0001:1:0
+Ocko TV
+p:OCKO TV
+0028:00c00000:0021:0085:1:0
+†HSE24‡
+p:BetaDigital
+7728:00c00000:0416:0001:1:0
+PEOPLE+ARTS
+p:DIGITAL+
+f228:00c00000:0421:0001:1:0
+TV SHOP
+p:CLT-UFA
+0029:00c00000:0002:0085:1:0
+†PREM‡IERE† 6‡
+p:PREMIERE,C:1702,C:1722,C:1801
+6e29:00c00000:0431:0001:1:0
+EinsExtra
+p:ARD
+7729:00c00000:0416:0001:1:0
+VIAJAR
+p:DIGITAL+
+f229:00c00000:0421:0001:1:0
+24.CZ
+p:teresticky
+002a:00c00000:0011:0085:1:0
+†13 TH‡ STREET
+p:PREMIERE,C:1702,C:1722,C:1801
+6e2a:00c00000:0431:0001:1:0
+EinsFestival
+p:ARD
+772a:00c00000:0416:0001:1:0
+NICK-PARAMOUNT
+p:DIGITAL+
+002b:00c00000:0002:0085:1:0
+†PREM‡IERE† 3‡
+p:PREMIERE,C:1702,C:1722,C:1801
+6e2b:00c00000:0431:0001:1:0
+EinsMuXx
+p:ARD
+772b:00c00000:0416:0001:1:0
+CAZA Y PESCA
+p:DIGITAL+
+6e2c:00c00000:0431:0001:1:0
+MDR FERNSEHEN
+p:ARD
+332d:00c00000:045b:0001:1:0
+TW1
+p:ORF
+6e2d:00c00000:0431:0001:1:0
+rbb Brandenburg
+p:ARD
+002e:00c00000:0021:0085:1:0
+SAT.1
+p:ProSiebenSat.1
+272e:00c00000:0402:0001:1:0
+CNBC Europe
+p:CNBC
+332e:00c00000:045b:0001:1:0
+GoTV
+p:GoTV
+6e2e:00c00000:0431:0001:1:0
+rbb Berlin
+p:ARD
+772e:00c00000:0416:0001:1:0
+CALLE 13
+p:DIGITAL+
+002f:00c00000:0021:0085:1:0
+N24
+p:ProSiebenSat.1
+0030:00c00000:0007:0085:1:0
+SAT.1-CH
+p:ProSiebenSat.1
+2f30:00c00000:0441:0001:1:0
+RTL Shop
+p:RTL World
+7730:00c00000:0416:0001:1:0
+COSMOPOLITAN
+p:Digital+
+7731:00c00000:0416:0001:1:0
+BLOOMBERG
+p:Digital+
+0032:00c00000:0001:0085:1:0
+BIG †BROTHER‡
+p:PREMIERE,C:1702,C:1722,C:1801
+0033:00c00000:0021:0085:1:0
+TELE 5
+p:BetaDigital
+2333:00c00000:0400:0001:1:0
+CANAL ALGERIE
+p:CANALSATELLITE
+0034:00c00000:0007:0085:1:0
+†BLUE ‡MOVIE †A‡ustria
+p:PREMIERE,C:1702,C:1801
+2334:00c00000:0400:0001:1:0
+TV 5
+p:CANALSATELLITE
+0035:00c00000:0007:0085:1:0
+†PREM‡IERE† A‡ustria
+p:PREMIERE,C:1702,C:1801
+2135:00c00000:0442:0001:1:0
+FRANCE 5
+p:CSAT
+0036:00c00000:0007:0085:1:0
+DPC.TV 3
+p:BetaDigital
+2136:00c00000:0442:0001:1:0
+TV BREIZH
+p:CSAT
+2336:00c00000:0400:0001:1:0
+ESC1 - EGYPT
+p:CANALSATELLITE
+3336:00c00000:045b:0001:1:0
+OEC
+p:ORF
+2137:00c00000:0442:0001:1:0
+LIVE 1
+p:CSAT
+2337:00c00000:0400:0001:1:0
+RAI 1
+p:CANALSATELLITE
+3037:00c00000:0458:0001:1:0
+Montagne TV
+p:CANALSATELLITE
+2138:00c00000:0442:0001:1:0
+PLANETE THALASSA
+p:CSAT
+3138:00c00000:0459:0001:1:0
+Bahn TV
+p:T-Systems
+2139:00c00000:0442:0001:1:0
+BLOOMBERG TV
+p:CSAT
+2339:00c00000:0400:0001:1:0
+RTPI
+p:CANALSATELLITE
+3139:00c00000:0459:0001:1:0
+K-TV
+p:T-Systems
+213a:00c00000:0442:0001:1:0
+LCP
+p:CSAT
+233a:00c00000:0400:0001:1:0
+TV7
+p:CANALSATELLITE
+2f3a:00c00000:0441:0001:1:0
+n-tv
+p:RTL World
+313a:00c00000:0459:0001:1:0
+XXP
+p:T-Systems
+6e3a:00c00000:0431:0001:1:0
+ARD-Online-Kanal
+p:ARD
+233b:00c00000:0400:0001:1:0
+ARTE
+p:CANALSATELLITE
+313b:00c00000:0459:0001:1:0
+LifeStyle-TV
+p:T-Systems
+003c:00c00000:0005:0085:1:0
+VIC-Liebevoll.tv
+p:BetaDigital
+213c:00c00000:0442:0001:1:0
+RFO SAT
+p:CSAT
+003d:00c00000:0005:0085:1:0
+wellenlaenge.tv
+p:BetaDigital
+233d:00c00000:0400:0001:1:0
+Al Jazeera
+p:CANALSATELLITE
+6e3d:00c00000:0431:0001:1:0
+ARD-MHP-TEST-5
+p:ARD
+003e:00c00000:0005:0085:1:0
+NEULAND.tv
+p:BetaDigital
+233e:00c00000:0400:0001:1:0
+TVEi
+p:CANALSATELLITE
+6e3e:00c00000:0431:0001:1:0
+ARD-MHP-TEST-6
+p:ARD
+003f:00c00000:0005:0085:1:0
+Amio.tv
+p:BetaDigital
+2f3f:00c00000:0441:0001:1:0
+Traumpartner TV
+p:RTL World
+6e40:00c00000:0431:0001:1:0
+NDR FS MV
+p:ARD
+1f41:00c00000:042e:0001:1:0
+SEASONS
+p:CSAT
+6e41:00c00000:0431:0001:1:0
+NDR FS HH
+p:ARD
+1f42:00c00000:042e:0001:1:0
+C CINEMA EMOTION
+p:CSAT
+6e42:00c00000:0431:0001:1:0
+NDR FS NDS
+p:ARD
+1f43:00c00000:042e:0001:1:0
+C CINEMA FRISSON
+p:CSAT
+6e43:00c00000:0431:0001:1:0
+NDR FS SH
+p:ARD
+1f44:00c00000:042e:0001:1:0
+EURONEWS
+p:CSAT
+6e44:00c00000:0431:0001:1:0
+MDR SACHSEN
+p:ARD
+1c45:00c00000:0457:0001:1:0
+STB Wisplus
+p:SES Astra
+1f45:00c00000:042e:0001:1:0
+PARIS PREMIERE
+p:CSAT
+6e45:00c00000:0431:0001:1:0
+MDR S-ANHALT
+p:ARD
+1f46:00c00000:042e:0001:1:0
+JIMMY
+p:CSAT
+2346:00c00000:0400:0001:1:0
+2M Maroc
+p:CANALSATELLITE
+3146:00c00000:0459:0001:1:0
+rhein main tv
+p:T-Systems
+6e46:00c00000:0431:0001:1:0
+MDR THÜRINGEN
+p:ARD
+1f47:00c00000:042e:0001:1:0
+MEZZO
+p:CSAT
+6e47:00c00000:0431:0001:1:0
+SÜDWEST RP
+p:ARD
+1f48:00c00000:042e:0001:1:0
+LA CHAINE METEO
+p:CSAT
+3148:00c00000:0459:0001:1:0
+K1010
+p:T-Systems
+1f49:00c00000:042e:0001:1:0
+SPORT+
+p:CSAT
+1f4a:00c00000:042e:0001:1:0
+I>TELE
+p:CSAT
+314a:00c00000:0459:0001:1:0
+Spielekanal TV
+p:T-Systems
+314b:00c00000:0459:0001:1:0
+Quiz-des-Tages.de
+p:T-Systems
+1f4c:00c00000:042e:0001:1:0
+UFTU TJH
+p:CSAT
+1f4d:00c00000:042e:0001:1:0
+NCMESS
+p:CSAT
+4f4d:00c00000:0447:0001:1:0
+†Gal‡axie †Sport‡
+p:UPC Direct
+4f4e:00c00000:0447:0001:1:0
+†Animal‡ †Pl‡anet
+p:UPC Direct
+4f4f:00c00000:0447:0001:1:0
+†Disc‡overy CE
+p:UPC Direct
+4f51:00c00000:0447:0001:1:0
+†Jetix‡
+p:UPC Direct
+4f52:00c00000:0447:0001:1:0
+†Nat‡ †Geo‡
+p:UPC Direct
+4f53:00c00000:0447:0001:1:0
+†Eurosport 2‡
+p:UPC Direct
+4f54:00c00000:0447:0001:1:0
+†Hall‡mark
+p:UPC Direct
+2455:00c00000:0456:0001:1:0
+FESTIVAL
+p:CSAT
+4f55:00c00000:0447:0001:1:0
+†Pr‡ivate †Gold‡
+p:UPC Direct
+2456:00c00000:0456:0001:1:0
+HISTOIRE
+p:CSAT
+4f56:00c00000:0447:0001:1:0
+†Real‡ity †TV‡
+p:UPC Direct
+2457:00c00000:0456:0001:1:0
+TCHATCHE TV
+p:CSAT
+4f57:00c00000:0447:0001:1:0
+†Ex‡treme †Sports‡
+p:UPC Direct
+2458:00c00000:0456:0001:1:0
+
+p:CSAT
+4f58:00c00000:0447:0001:1:0
+†Club‡
+p:UPC Direct
+1b59:00c00000:03fc:0001:1:0
+full-X3
+p:GlobeCast
+2459:00c00000:0456:0001:1:0
+EXTREME SPORTS
+p:CSAT
+4f59:00c00000:0447:0001:1:0
+†M2‡
+p:UPC Direct
+1b5a:00c00000:03fc:0001:1:0
+full-X3 M
+p:
+4f5a:00c00000:0447:0001:1:0
+†Duna‡
+p:UPC Direct
+1b5b:00c00000:03fc:0001:1:0
+Infocast Mail Astra
+p:NEOTION
+4f5b:00c00000:044b:0001:1:0
+†Eurosport‡
+p:UPC Direct
+1b5c:00c00000:03fc:0001:1:0
+DEMAIN!
+p:GlobeCast
+245c:00c00000:0456:0001:1:0
+DISCOVERY
+p:CSAT
+4f5c:00c00000:044b:0001:1:0
+†MTV Europe‡
+p:UPC Direct
+1b5d:00c00000:03fc:0001:1:0
+TELIF
+p:GCE
+245d:00c00000:0456:0001:1:0
+PINK TV
+p:CSAT
+4f5d:00c00000:044b:0001:1:0
+†Hall‡mark
+p:UPC Direct
+245e:00c00000:0456:0001:1:0
+
+p:CSAT
+4f5e:00c00000:044b:0001:1:0
+†Viasat-3‡
+p:UPC Direct
+245f:00c00000:0456:0001:1:0
+
+p:CSAT
+4f5f:00c00000:044b:0001:1:0
+†TV Markiza†
+p:UPC Direct
+4f60:00c00000:044b:0001:1:0
+†TV JOJ†
+p:UPC Direct
+2261:00c00000:0438:0001:1:0
+FRANCE 2
+p:CSAT
+4f61:00c00000:044b:0001:1:0
+UPC Direct
+p:UPC Direct
+1c62:00c00000:0457:0001:1:0
+STB Comag
+p:SES Astra
+2262:00c00000:0438:0001:1:0
+FRANCE 3
+p:CSAT
+4f62:00c00000:044b:0001:1:0
+†BBC Prime‡
+p:UPC Direct
+7562:00c00000:0412:0001:1:0
+GALAVISIÓN
+p:DIGITAL+
+4f63:00c00000:044b:0001:1:0
+†Prima TV‡
+p:UPC Direct
+6d63:00c00000:042c:0001:1:0
+Travel
+p:Landmark Travel Channel Limited
+7563:00c00000:0412:0001:1:0
+REAL MADRID TV
+p:DIGITAL+
+1c64:00c00000:0457:0001:1:0
+OTTO MHP
+p:SES Astra
+4f64:00c00000:044b:0001:1:0
+†TA3‡
+p:UPC Direct
+7564:00c00000:0412:0001:1:0
+BARÇA TV
+p:DIGITAL+
+2265:00c00000:0438:0001:1:0
+RTL9
+p:CSAT
+4f65:00c00000:044b:0001:1:0
+†Magyar ATV†
+p:UPC Direct
+7565:00c00000:0412:0001:1:0
+TAQUILLA 5
+p:DIGITAL+
+6d66:00c00000:0437:0001:1:0
+ZDF
+p:ZDFvision
+7566:00c00000:0412:0001:1:0
+TAQUILLA 6
+p:DIGITAL+
+2267:00c00000:0438:0001:1:0
+TRACE TV
+p:CSAT
+6d67:00c00000:0437:0001:1:0
+3sat
+p:ZDFvision
+7567:00c00000:0412:0001:1:0
+TAQUILLA 7
+p:DIGITAL+
+2268:00c00000:0438:0001:1:0
+TELE MELODY
+p:CSAT
+6d68:00c00000:0437:0001:1:0
+KiKa
+p:ZDFvision
+7468:00c00000:03f0:0001:1:0
+DOCUMANÍA
+p:DIGITAL+
+7568:00c00000:0412:0001:1:0
+TAQUILLA X
+p:DIGITAL+
+6d69:00c00000:0437:0001:1:0
+Eurosport
+p:ZDFvision
+6f69:00c00000:042c:0001:1:0
+Cartoon Network
+p:TBS
+7469:00c00000:03f0:0001:1:0
+JETIX
+p:DIGITAL+
+7569:00c00000:0412:0001:1:0
+TAQUILLA X
+p:DIGITAL+
+6f6a:00c00000:042c:0001:1:0
+CNN Int.
+p:CNN
+746a:00c00000:03f0:0001:1:0
+DISNEY CH. +1
+p:DIGITAL+
+756a:00c00000:0412:0001:1:0
+TAQUILLA XX
+p:DIGITAL+
+6d6b:00c00000:0437:0001:1:0
+ZDFinfokanal
+p:ZDFvision
+746b:00c00000:03f0:0001:1:0
+PLAYHOUSE
+p:DIGITAL+
+756b:00c00000:0412:0001:1:0
+TAQUILLA 12
+p:DIGITAL+
+526c:00c00000:0440:0001:1:0
+Euro1080
+p:EURO1080
+756c:00c00000:0412:0001:1:0
+TAQUILLA 9
+p:DIGITAL+
+226d:00c00000:0438:0001:1:0
+ESPN CLASSIC
+p:CSAT
+6f6d:00c00000:042c:0001:1:0
+TCM
+p:TBS
+756d:00c00000:0412:0001:1:0
+TAQUILLA 8
+p:DIGITAL+
+226e:00c00000:0438:0001:1:0
+
+p:CSAT
+6d6e:00c00000:0437:0001:1:0
+ZDFdokukanal
+p:ZDFvision
+6f6e:00c00000:042c:0001:1:0
+TCM
+p:TBS.
+6d6f:00c00000:0437:0001:1:0
+EuroNews
+p:ZDFvision
+746f:00c00000:03f0:0001:1:0
+TOON DISNEY
+p:DIGITAL+
+1770:00c00000:0455:0035:1:0
+test
+p:canal+
+2270:00c00000:0438:0001:1:0
+CANAL EVENEMENT
+p:CSAT
+6d70:00c00000:0437:0001:1:0
+ZDFtheaterkanal
+p:ZDFvision
+7472:00c00000:03f0:0001:1:0
+C+ CINE 1
+p:DIGITAL+
+7473:00c00000:03f0:0001:1:0
+C+ CINE 2
+p:DIGITAL+
+7474:00c00000:03f0:0001:1:0
+C+ CINE 3
+p:DIGITAL+
+7475:00c00000:03f0:0001:1:0
+EXPANSIÓN TV
+p:DIGITAL+
+427c:00c00000:0446:0001:1:0
+AB MOTEURS
+p:AB SAT,C:0100,C:0500
+427d:00c00000:0446:0001:1:0
+AB1
+p:ABSAT,C:0100,C:0500
+427e:00c00000:0446:0001:1:0
+ANIMAUX
+p:ABSAT,C:0100
+427f:00c00000:0446:0001:1:0
+ENCYCLOPEDIA
+p:ABSAT,C:0100
+4280:00c00000:0446:0001:1:0
+ZIK/XXL
+p:ABSAT
+7080:00c00000:0443:0001:1:0
+RTL Austria
+p:RTL
+0381:00c00000:0021:0085:1:0
+†NEUN LIVE‡ Television
+p:BetaDigital
+0c81:00c00000:0444:0001:1:0
+NDS_VOTE
+p:Canal Satellite
+4281:00c00000:0446:0001:1:0
+ESCALES
+p:ABSAT,C:0100,C:0500
+0382:00c00000:0021:0085:1:0
+ProSieben
+p:ProSiebenSat.1
+0c82:00c00000:0444:0001:1:0
+NDS_RR
+p:Canal Satellite
+4282:00c00000:0446:0001:1:0
+toute L'HISTOIRE
+p:ABSAT,C:0100
+0383:00c00000:0021:0085:1:0
+KABEL1
+p:ProSiebenSat.1
+0c83:00c00000:0444:0001:1:0
+NDS_COD
+p:Canal Satellite
+4283:00c00000:0446:0001:1:0
+BBC WORLD
+p:ABSAT
+0384:00c00000:0021:0085:1:0
+DSF
+p:BetaDigital
+4284:00c00000:0446:0001:1:0
+RFM-TV
+p:ABSAT,C:0100
+7085:00c00000:0443:0001:1:0
+VOX Austria
+p:RTL
+4286:00c00000:0446:0001:1:0
+ACTION
+p:AB SAT,C:0100
+4287:00c00000:0446:0001:1:0
+MANGAS
+p:ABSAT,C:0100
+7788:00c00000:0424:0001:1:0
+40 LATINO
+p:DIGITAL+
+4289:00c00000:0446:0001:1:0
+TERRA NOVA
+p:ABSAT
+7789:00c00000:0424:0001:1:0
+GOLF+
+p:DIGITAL+
+0c8a:00c00000:0444:0001:1:0
+ASTRA Satmode EU 1
+p:SES ASTRA
+428a:00c00000:0446:0001:1:0
+CINE FX
+p:ABSAT,C:0100,C:0500
+708a:00c00000:0443:0001:1:0
+RTL2 Austria
+p:RTL
+778a:00c00000:0424:0001:1:0
+CANAL+...30
+p:DIGITAL+
+0c8b:00c00000:0444:0001:1:0
+ASTRA Satmode EU 2
+p:ASTRA
+778b:00c00000:0424:0001:1:0
+PLAYBOY TV
+p:DIGITAL+
+0c8c:00c00000:0444:0001:1:0
+ASTRA Satmode EU 3
+p:MGN
+138c:00c00000:0455:0035:1:0
+NET5
+p:CANAL+
+778c:00c00000:0424:0001:1:0
+MÉTEO
+p:DIGITAL+
+0c8d:00c00000:0444:0001:1:0
+ASTRA Satmode EU 4
+p:SES ASTRA
+138d:00c00000:0455:0035:1:0
+SBS6
+p:CANAL+
+238d:00c00000:044a:0001:1:0
+GUIDE TV
+p:C+
+778d:00c00000:0424:0001:1:0
+NAT GEOGRAPHIC
+p:DIGITAL+
+0c8e:00c00000:0444:0001:1:0
+ASTRA Satmode DEV 1
+p:SES ASTRA
+0f8e:00c00000:0458:0001:1:0
+RTBF SAT
+p:RTBF
+238e:00c00000:044a:0001:1:0
+CANALSAT JEUX
+p:C+
+768e:00c00000:041e:0001:1:0
+TAQUILLA 1
+p:DIGITAL+
+0c8f:00c00000:0444:0001:1:0
+ASTRA Satmode DEV 2
+p:SES ASTRA
+708f:00c00000:0443:0001:1:0
+Super RTL A
+p:RTL
+768f:00c00000:041e:0001:1:0
+TAQUILLA 2
+p:DIGITAL+
+0c90:00c00000:0444:0001:1:0
+ASTRA Satmode DEV 3
+p:SES ASTRA
+2390:00c00000:044a:0001:1:0
+C:DIRECT
+p:C+
+7690:00c00000:041e:0001:1:0
+TAQUILLA 3
+p:DIGITAL+
+2391:00c00000:044a:0001:1:0
+PLAYIN'TV
+p:CSAT
+6e91:00c00000:04b1:0001:1:0
+WDR Aachen
+p:ARD
+7691:00c00000:041e:0001:1:0
+TAQUILLA 4
+p:DIGITAL+
+0292:00c00000:0005:0085:1:0
+DPC.TV2
+p:BetaDigital
+1392:00c00000:0455:0035:1:0
+Yorin
+p:CANAL+
+2392:00c00000:044a:0001:1:0
+CASH TV
+p:CSAT
+6e92:00c00000:04b1:0001:1:0
+WDR Bielefeld
+p:ARD
+0293:00c00000:0005:0085:1:0
+tv.gusto
+p:BetaDigital
+2393:00c00000:044a:0001:1:0
+PRATIQUE LOISIRS
+p:CSAT
+6e93:00c00000:04b1:0001:1:0
+WDR Dortmund
+p:ARD
+7793:00c00000:0424:0001:1:0
+FOX NEWS
+p:DIGITAL+
+0294:00c00000:0007:0085:1:0
+DPC_DVB
+p:BetaDigital,C:1702
+2394:00c00000:044a:0001:1:0
+
+p:CSAT
+6e94:00c00000:04b1:0001:1:0
+WDR Düsseldorf
+p:ARD
+7594:00c00000:0422:0001:1:0
+MÚSICA DIGITAL
+p:DIGITAL+
+0295:00c00000:0021:0085:1:0
+AstroTV
+p:BetaDigital
+2395:00c00000:044a:0001:1:0
+
+p:CSAT
+6e95:00c00000:04b1:0001:1:0
+WDR Essen
+p:ARD
+7595:00c00000:0422:0001:1:0
+MÚSICA DIGITAL
+p:DIGITAL+
+7695:00c00000:041e:0001:1:0
+TAQUILLA XY
+p:DIGITAL+
+0296:00c00000:0005:0085:1:0
+1-2-3.tv
+p:BetaDigital
+6e96:00c00000:04b1:0001:1:0
+WDR Münster
+p:ARD
+7596:00c00000:0422:0001:1:0
+RADIOS
+p:DIGITAL+
+7696:00c00000:041e:0001:1:0
+TAQUILLA 10
+p:DIGITAL+
+0297:00c00000:0005:0085:1:0
+DPC.TV1
+p:BetaDigital
+1397:00c00000:0455:0035:1:0
+TMF
+p:CANAL+
+2397:00c00000:044a:0001:1:0
+EVENEMENT
+p:CSAT
+6e97:00c00000:04b1:0001:1:0
+WDR Siegen
+p:ARD
+7597:00c00000:0422:0001:1:0
+RADIOS
+p:DIGITAL+
+7697:00c00000:041e:0001:1:0
+TELECINCO
+p:DIGITAL+
+0298:00c00000:0004:0085:1:0
+†BLUE M‡OVIE
+p:PREMIERE,C:1702,C:1722,C:1801,C:1810
+2398:00c00000:044a:0001:1:0
+
+p:CSAT
+6e98:00c00000:04b1:0001:1:0
+WDR Wuppertal
+p:ARD
+7598:00c00000:0422:0001:1:0
+RADIOS ESP
+p:DIGITAL+
+2199:00c00000:0448:0001:1:0
+RFO SAT.
+p:CSAT
+2399:00c00000:044a:0001:1:0
+TIERCE N°1
+p:CSAT
+7699:00c00000:041e:0001:1:0
+BOOMERANG
+p:DIGITAL+
+219a:00c00000:0448:0001:1:0
+BANQUES
+p:CSAT
+239a:00c00000:044a:0001:1:0
+ESPACE CLIENT
+p:C+
+219b:00c00000:0448:0001:1:0
+MOSAIQUE
+p:CSAT
+439b:00c00000:045e:0001:1:0
+Trend Pro
+p:BT Broadcast Services
+139c:00c00000:0455:0035:1:0
+Veronica/FoxKids
+p:CANAL+
+779c:00c00000:0424:0001:1:0
+C+ DEPORTE 1
+p:DIGITAL+
+239d:00c00000:044a:0001:1:0
+
+p:CSAT
+779d:00c00000:0424:0001:1:0
+C+ DEPORTE 2
+p:DIGITAL+
+239e:00c00000:044a:0001:1:0
+
+p:CSAT
+209f:00c00000:0432:0001:1:0
+C CINEMA AUTEUR
+p:CSAT
+239f:00c00000:044a:0001:1:0
+
+p:CSAT
+20a0:00c00000:0432:0001:1:0
+MCM
+p:CSAT
+21a0:00c00000:0448:0001:1:0
+MOSAIQUE
+p:CSAT
+23a0:00c00000:044a:0001:1:0
+
+p:CSAT
+13a1:00c00000:0455:0035:1:0
+BVN
+p:CANAL+
+20a1:00c00000:0432:0001:1:0
+KTO
+p:CSAT
+21a1:00c00000:0448:0001:1:0
+MMD
+p:CSAT
+23a1:00c00000:044a:0001:1:0
+UNIVERSAL MOBILE
+p:CSAT
+20a2:00c00000:0432:0001:1:0
+MCM POP
+p:CSAT
+21a2:00c00000:0448:0001:1:0
+CA TV
+p:CSAT
+23a2:00c00000:044a:0001:1:0
+JEUX
+p:IMEDIA
+20a3:00c00000:0432:0001:1:0
+MATCH TV
+p:CSAT
+23a3:00c00000:044a:0001:1:0
+
+p:IMEDIA
+20a4:00c00000:0432:0001:1:0
+C CINEMA INFO
+p:CSAT
+21a4:00c00000:0448:0001:1:0
+Best of Shopping
+p:CSAT
+23a4:00c00000:044a:0001:1:0
+PLAYJAM
+p:C+
+0fa5:00c00000:0451:0035:1:0
+C+ Rood
+p:CANAL+
+21a5:00c00000:0448:0001:1:0
+
+p:CSAT
+23a5:00c00000:044a:0001:1:0
+RTL JEUX
+p:CSAT
+0fa6:00c00000:0451:0035:1:0
+C+ Blauw
+p:CANAL+
+0fa7:00c00000:0451:0035:1:0
+C+16/9
+p:CANAL+
+20a7:00c00000:0432:0001:1:0
+GOURMET TV
+p:CSAT
+21a7:00c00000:0448:0001:1:0
+
+p:CSAT
+2fa7:00c00000:0458:0001:1:0
+LibertyTV FR
+p:LibertyTV.com
+00a8:00c00000:0011:0085:1:0
+HIT24
+p:PREMIERE,C:1702,C:1722,C:1801
+20a8:00c00000:0432:0001:1:0
+TEST CDN 8
+p:CSAT
+21a8:00c00000:0448:0001:1:0
+CDN12
+p:CSAT
+23a8:00c00000:044a:0001:1:0
+ASTRALIA
+p:CSAT
+0fa9:00c00000:0451:0035:1:0
+SPICE PLATINUM
+p:CANAL+
+20a9:00c00000:0432:0001:1:0
+
+p:CSAT
+21a9:00c00000:0448:0001:1:0
+SFR La Carte
+p:CSAT
+23a9:00c00000:044a:0001:1:0
+SMS TV
+p:C+
+20aa:00c00000:0432:0001:1:0
+NBA+
+p:CSAT
+0fab:00c00000:0451:0035:1:0
+NED1
+p:CANAL+
+20ab:00c00000:0432:0001:1:0
+
+p:CSAT
+23ab:00c00000:044a:0001:1:0
+COMMUNIQUER
+p:CSAT
+0fac:00c00000:0451:0035:1:0
+NED2
+p:CANAL+
+20ac:00c00000:0432:0001:1:0
+
+p:CSAT
+23ac:00c00000:044a:0001:1:0
+SPORT
+p:C+
+0fad:00c00000:0451:0035:1:0
+NED3
+p:CANAL+
+20ad:00c00000:0432:0001:1:0
+MCM TOP
+p:CSAT
+23ae:00c00000:044a:0001:1:0
+A LA UNE
+p:IMEDIA
+0faf:00c00000:0451:0035:1:0
+Cartoon / TCM
+p:CANAL+
+23b1:00c00000:044a:0001:1:0
+
+p:CSAT
+23b2:00c00000:044a:0001:1:0
+JEUNESSE
+p:CSAT
+31b2:00c00000:042c:0001:1:0
+ntl1.068
+p:Bloomberg
+77ba:00c00000:040a:0001:1:0
+CINEMANÍA EXTRA
+p:DIGITAL+
+77bb:00c00000:040a:0001:1:0
+CLÁSICO
+p:DIGITAL+
+31bc:00c00000:045c:0001:1:0
+VIVA
+p:VIVA Fernsehen GmbH & Co. KG
+77bc:00c00000:040a:0001:1:0
+24 HORAS
+p:DIGITAL+
+77bd:00c00000:040a:0001:1:0
+CINEMANÍA...30
+p:DIGITAL+
+23be:00c00000:044a:0001:1:0
+DT1
+p:C+
+23bf:00c00000:044a:0001:1:0
+DT2
+p:C+
+76c0:00c00000:040e:0001:1:0
+CANAL+
+p:DIGITAL+
+77c0:00c00000:040a:0001:1:0
+TELENOVELAS
+p:DIGITAL+
+23c1:00c00000:044a:0001:1:0
+DT4
+p:C+
+77c1:00c00000:040a:0001:1:0
+HOLLYWOOD
+p:DIGITAL+
+23c2:00c00000:044a:0001:1:0
+DT5
+p:C+
+77c2:00c00000:040a:0001:1:0
+CANAL HISTORIA
+p:DIGITAL+
+23c3:00c00000:044a:0001:1:0
+DT6
+p:C+
+76c3:00c00000:040e:0001:1:0
+DISNEY CHANNEL
+p:DIGITAL+
+23c4:00c00000:044a:0001:1:0
+DT7
+p:C+
+76c4:00c00000:040e:0001:1:0
+SPORTMANÍA
+p:DIGITAL+
+22c5:00c00000:045a:0001:1:0
+C CINEMA 16/9
+p:CSAT
+23c5:00c00000:044a:0001:1:0
+DT8
+p:C+
+76c5:00c00000:040e:0001:1:0
+40 TV
+p:DIGITAL+
+77c5:00c00000:040a:0001:1:0
+TV CANARIA
+p:DIGITAL+
+22c6:00c00000:045a:0001:1:0
+CINE POLAR
+p:CSAT
+23c6:00c00000:044a:0001:1:0
+DT9
+p:C+
+75c6:00c00000:0422:0001:1:0
+OKplus
+p:DIGITAL+
+76c6:00c00000:040e:0001:1:0
+DISCOVERY
+p:DIGITAL+
+23c7:00c00000:044a:0001:1:0
+DT10
+p:C+
+75c7:00c00000:0422:0001:1:0
+TIENDAS
+p:DIGITAL+
+22c8:00c00000:045a:0001:1:0
+
+p:CSAT
+23c8:00c00000:044a:0001:1:0
+DT11
+p:C+
+75c8:00c00000:0422:0001:1:0
+EPG
+p:DIGITAL+
+22c9:00c00000:045a:0001:1:0
+TEVA
+p:CSAT
+23c9:00c00000:044a:0001:1:0
+DT12
+p:C+
+32c9:00c00000:045d:0001:1:0
+ORF1
+p:ORF,C:0d05,C:1702,C:1762,C:1801
+22ca:00c00000:045a:0001:1:0
+DISNEY CHANNEL+1
+p:CSAT
+23ca:00c00000:044a:0001:1:0
+DT13
+p:C+
+32ca:00c00000:045d:0001:1:0
+ORF2
+p:ORF,C:0d05,C:1702,C:1762,C:1801
+6dca:00c00000:044d:0001:1:0
+Das Erste
+p:ARD
+75ca:00c00000:0422:0001:1:0
+INFOBOLSA B.
+p:DIGITAL+
+76ca:00c00000:040e:0001:1:0
+CANAL+ 2
+p:DIGITAL+
+22cb:00c00000:045a:0001:1:0
+PLAYHOUSE DISNEY
+p:CSAT
+23cb:00c00000:044a:0001:1:0
+DT14
+p:C+
+32cb:00c00000:045d:0001:1:0
+ORF2 W
+p:ORF,C:0d05,C:1702,C:1762,C:1801
+6dcb:00c00000:044d:0001:1:0
+Bayerisches FS
+p:ARD
+75cb:00c00000:0422:0001:1:0
+LA CAIXA
+p:DIGITAL+
+76cb:00c00000:040e:0001:1:0
+C+ DEPORTE 3
+p:DIGITAL+
+22cc:00c00000:045a:0001:1:0
+TOON DISNEY
+p:CSAT
+23cc:00c00000:044a:0001:1:0
+DT15
+p:C+
+32cc:00c00000:045d:0001:1:0
+ORF2 N
+p:ORF,C:0d05,C:1702,C:1762,C:1801
+6dcc:00c00000:044d:0001:1:0
+hr-fernsehen
+p:ARD
+75cc:00c00000:0422:0001:1:0
+ONCEplus
+p:DIGITAL+
+76cc:00c00000:040e:0001:1:0
+TELEDEPORTE
+p:DIGITAL+
+f1cc:00c00000:0421:0001:1:0
+Bibel TV
+p:Astra
+22cd:00c00000:045a:0001:1:0
+BBC PRIME
+p:CSAT
+23cd:00c00000:044a:0001:1:0
+DT16
+p:C+
+32cd:00c00000:045d:0001:1:0
+ORF2 B
+p:ORF,C:0d05,C:1702,C:1762,C:1801
+6dcd:00c00000:044d:0001:1:0
+arte
+p:ARD
+22ce:00c00000:045a:0001:1:0
+MOTORS TV
+p:CSAT
+23ce:00c00000:044a:0001:1:0
+DT17
+p:C+
+31ce:00c00000:045c:0001:1:0
+HOERZU DIGITAL
+p:HOERZU
+32ce:00c00000:045d:0001:1:0
+ORF2 O
+p:ORF,C:0d05,C:1702,C:1762,C:1801
+6dce:00c00000:044d:0001:1:0
+SR Fernsehen Südwest
+p:ARD
+75ce:00c00000:0422:0001:1:0
+IBERDROLA
+p:DIGITAL+
+22cf:00c00000:045a:0001:1:0
+E! ENTERTAINMENT
+p:CSAT
+23cf:00c00000:044a:0001:1:0
+DT18
+p:C+
+32cf:00c00000:045d:0001:1:0
+ORF2 S
+p:ORF,C:0d05,C:1702,C:1762,C:1801
+6dcf:00c00000:044d:0001:1:0
+WDR Köln
+p:ARD
+75cf:00c00000:0422:0001:1:0
+DIGITAL+
+p:DIGITAL+
+23d0:00c00000:044a:0001:1:0
+DT19
+p:C+
+2fd0:00c00000:0458:0001:1:0
+TV5 Europe
+p:TV5
+32d0:00c00000:045d:0001:1:0
+ORF2 T
+p:ORF,C:0d05,C:1702,C:1762,C:1801
+6dd0:00c00000:044d:0001:1:0
+BR-alpha
+p:ARD
+75d0:00c00000:0422:0001:1:0
+CARTELERA
+p:DIGITAL+
+23d1:00c00000:044a:0001:1:0
+DT20
+p:C+
+32d1:00c00000:045d:0001:1:0
+ORF2 V
+p:ORF,C:0d05,C:1702,C:1762,C:1801
+6dd1:00c00000:044d:0001:1:0
+SÜDWEST BW
+p:ARD
+75d1:00c00000:0422:0001:1:0
+MOVISTAR
+p:DIGITAL+
+32d2:00c00000:045d:0001:1:0
+ORF2 St
+p:ORF,C:0d05,C:1702,C:1762,C:1801
+6dd2:00c00000:044d:0001:1:0
+Phoenix
+p:ARD
+75d2:00c00000:0422:0001:1:0
+TAQUILLA FÚTBOL
+p:DIGITAL+
+32d3:00c00000:045d:0001:1:0
+ORF2 K
+p:ORF,C:0d05,C:1702,C:1762,C:1801
+75d3:00c00000:0422:0001:1:0
+RECIBO
+p:DIGITAL+
+07d4:00c00000:0449:0035:1:0
+RTL4
+p:CANAL+
+32d4:00c00000:045d:0001:1:0
+ATV+
+p:ATV+,C:0d05,C:1702,C:1762,C:1801
+07d5:00c00000:0449:0035:1:0
+RTL5
+p:CANAL+
+32d5:00c00000:045d:0001:1:0
+TW1 - 28Feb05
+p:ORF
+32d6:00c00000:045d:0001:1:0
+ORF2E
+p:ORF
+75d6:00c00000:0422:0001:1:0
+AMENA
+p:DIGITAL+
+1fd7:00c00000:0434:0001:1:0
+EUROSPORT
+p:CSAT
+32d7:00c00000:045d:0001:1:0
+GoTV - 28Feb05
+p:ATV+
+f1d7:00c00000:0421:0001:1:0
+TV TRWAM
+p:Astra
+1fd8:00c00000:0434:0001:1:0
+TMC
+p:CSAT
+6fd8:00c00000:042c:0001:1:0
+TVBS
+p:Chinese Channel LTD.
+75d8:00c00000:0422:0001:1:0
+TELEPIZZA
+p:DIGITAL+
+1fd9:00c00000:0434:0001:1:0
+PLANETE
+p:CSAT
+07da:00c00000:0449:0035:1:0
+NGC
+p:CANAL+
+1fdb:00c00000:0434:0001:1:0
+VOYAGE
+p:CSAT
+1fdc:00c00000:0434:0001:1:0
+LCI
+p:CSAT
+75dc:00c00000:0422:0001:1:0
+COMPRA SMS
+p:DIGITAL+
+1fdd:00c00000:0434:0001:1:0
+CANAL J
+p:CSAT
+75dd:00c00000:0422:0001:1:0
+TEST TÉCNICO
+p:DIGITAL+
+20de:00c00000:043e:0001:1:0
+KIOSQUE
+p:CSAT
+75de:00c00000:0422:0001:1:0
+TEST_CSD1
+p:DIGITAL+
+07df:00c00000:0449:0035:1:0
+Discovery
+p:CANAL+
+1fdf:00c00000:0434:0001:1:0
+MA PLANETE
+p:CSAT
+75df:00c00000:0422:0001:1:0
+TEST_CSD2
+p:DIGITAL+
+1fe0:00c00000:0434:0001:1:0
+CUISINE.TV
+p:CSAT
+6fe0:00c00000:0443:0001:1:0
+MTV2 Pop Channel
+p:MTV Networks
+75e0:00c00000:0422:0001:1:0
+TEST_CSD3
+p:DIGITAL+
+f1e0:00c00000:0421:0001:1:0
+T.TV
+p:Tele 2
+1fe1:00c00000:0434:0001:1:0
+FILLES TV
+p:CSAT
+75e1:00c00000:0422:0001:1:0
+TEST_CSD4
+p:DIGITAL+
+1fe2:00c00000:0434:0001:1:0
+TiJi
+p:CSAT
+6de2:00c00000:044d:0001:1:0
+Test-R
+p:ARD
+75e2:00c00000:0422:0001:1:0
+TEST_CSD5
+p:DIGITAL+
+2ee3:00c00000:0441:0001:1:0
+†RTL‡ Television
+p:RTL World
+75e3:00c00000:0422:0001:1:0
+TEST_CSD6
+p:DIGITAL+
+07e4:00c00000:0449:0035:1:0
+Animal Planet
+p:CANAL+
+75e4:00c00000:0422:0001:1:0
+TEST_CSD7
+p:DIGITAL+
+75e5:00c00000:0422:0001:1:0
+TEST_CSD8
+p:DIGITAL+
+75e6:00c00000:0422:0001:1:0
+TEST_CSD9
+p:DIGITAL+
+75e7:00c00000:0422:0001:1:0
+TEST_CSD10
+p:DIGITAL+
+75e8:00c00000:0422:0001:1:0
+TEST_CSD11
+p:DIGITAL+
+07e9:00c00000:0449:0035:1:0
+Eurosport
+p:canal+
+75e9:00c00000:0422:0001:1:0
+TEST_CSD12
+p:DIGITAL+
+23ea:00c00000:044a:0001:1:0
+CDN1
+p:CSAT
+75ea:00c00000:0422:0001:1:0
+TEST_CSD13
+p:DIGITAL+
+23eb:00c00000:044a:0001:1:0
+CDN2
+p:CSAT
+6feb:00c00000:042a:0001:1:0
+MTV ESP
+p:MTV Networks
+75eb:00c00000:0422:0001:1:0
+TEST_CSD14
+p:DIGITAL+
+23ec:00c00000:044a:0001:1:0
+CDN6
+p:CSAT
+6fec:00c00000:042a:0001:1:0
+MTV F
+p:MTV Networks
+75ec:00c00000:0422:0001:1:0
+TEST_CSD15
+p:DIGITAL+
+23ed:00c00000:044a:0001:1:0
+CDN7
+p:CSAT
+6fed:00c00000:042a:0001:1:0
+MTV Central
+p:MTV Networks
+07ee:00c00000:0449:0035:1:0
+BBC Prime
+p:canal+
+23ee:00c00000:044a:0001:1:0
+CDN5
+p:CSAT
+2fee:00c00000:0458:0001:1:0
+M6 Boutique
+p:HSS
+6fee:00c00000:042a:0001:1:0
+MTV HITS
+p:
+6eef:00c00000:04b1:0001:1:0
+ARD MHP-Test
+p:ARD
+6fef:00c00000:042a:0001:1:0
+MTV Base
+p:
+6ff0:00c00000:042a:0001:1:0
+VH1
+p:
+23f1:00c00000:0452:0001:1:0
+walled garden
+p:C+
+6ff1:00c00000:042a:0001:1:0
+VH1 Classic
+p:MTV Networks
+6ff2:00c00000:042a:0001:1:0
+Nickelodeon NL
+p:MTV Networks
+07f3:00c00000:0449:0035:1:0
+Hallmark
+p:CANAL+
+6ff3:00c00000:042a:0001:1:0
+MTV 2
+p:
+23f4:00c00000:0452:0001:1:0
+ABO1
+p:IMEDIA
+2ef4:00c00000:0441:0001:1:0
+RTL2
+p:RTL World
+6ff4:00c00000:042a:0001:1:0
+NICKELODEON ESP
+p:MTV Networks
+23f5:00c00000:0452:0001:1:0
+ABO2
+p:IMEDIA
+6ff5:00c00000:042a:0001:1:0
+Service11
+p:MTV Networks
+75f5:00c00000:0422:0001:1:0
+PLAYIN'TV
+p:DIGITAL+
+23f6:00c00000:0452:0001:1:0
+testg2_1
+p:C+
+23f7:00c00000:0452:0001:1:0
+testg2_2
+p:C+
+23f8:00c00000:0452:0001:1:0
+testg2_3
+p:C+
+2ff8:00c00000:0458:0001:1:0
+LibertyTV FR
+p:LibertyTV.com
+6ff8:00c00000:042a:0001:1:0
+MTV HITS.
+p:
+6ff9:00c00000:042a:0001:1:0
+MTV Base.
+p:
+75f9:00c00000:0408:0001:1:0
+TVC INT.
+p:DIGITAL+
+23fa:00c00000:0452:0001:1:0
+MON CSAT
+p:IMEDIA
+6ffa:00c00000:042a:0001:1:0
+VH1.
+p:
+75fa:00c00000:0408:0001:1:0
+ANDALUCÍA TV
+p:DIGITAL+
+75fb:00c00000:0408:0001:1:0
+EUSKADI TV
+p:DIGITAL+
+23fc:00c00000:0452:0001:1:0
+GL CONSULTANTS.
+p:CSAT
+75fc:00c00000:0408:0001:1:0
+TM SAT/LAOTRA
+p:DIGITAL+
+02fd:00c00000:0007:0085:1:0
+iFoxKids
+p:BetaDigital
+23fd:00c00000:0452:0001:1:0
+
+p:CSAT
+6ffd:00c00000:042a:0001:1:0
+MTV 2.
+p:
+21fe:00c00000:044c:0001:1:0
+COMEDIE !
+p:CSAT
+74fe:00c00000:0420:0001:1:0
+CINEMANÍA
+p:DIGITAL+
+f1fe:00c00000:0421:0001:1:0
+ASTRA
+p:Astra
+02ff:00c00000:0007:0085:1:0
+LokalSAT
+p:BetaDigital
+21ff:00c00000:044c:0001:1:0
+13EME RUE
+p:CSAT
+74ff:00c00000:0420:0001:1:0
+CINEMANÍA 2
+p:DIGITAL+
+0803:00c00000:0449:0035:2:0
+RTL RADIO
+p:CANAL+
+7508:00c00000:0420:0001:2:0
+CADENA SER
+p:DIGITAL+
+f208:00c00000:0421:0001:2:0
+Radio Horeb
+p:Eurociel
+7509:00c00000:0420:0001:2:0
+M-80 RADIO
+p:DIGITAL+
+750a:00c00000:0420:0001:2:0
+40 PRINCIPALES
+p:DIGITAL+
+f20a:00c00000:0421:0001:2:0
+RDC
+p:Polskie Radio-Regionalna
+750b:00c00000:0420:0001:2:0
+CADENA DIAL
+p:DIGITAL+
+750c:00c00000:0420:0001:2:0
+RADIOLÉ
+p:DIGITAL+
+750d:00c00000:0420:0001:2:0
+MÁXIMA FM
+p:DIGITAL+
+f20d:00c00000:0421:0001:2:0
+Jazz Radio Berlin
+p:Deutsche Telekom AG
+750e:00c00000:0420:0001:2:0
+SINFO RADIO
+p:DIGITAL+
+f20e:00c00000:0421:0001:2:0
+Radio Caroline
+p:StreamTel net
+750f:00c00000:0420:0001:2:0
+EUSKADIRRATIA
+p:DIGITAL+
+7510:00c00000:0420:0001:2:0
+RADIO EUSKADI
+p:DIGITAL+
+7511:00c00000:0420:0001:2:0
+ANDALUCÍA RADIO
+p:DIGITAL+
+7512:00c00000:0420:0001:2:0
+CAT. CULTURA
+p:DIGITAL+
+7513:00c00000:0420:0001:2:0
+CAT. INFORM
+p:DIGITAL+
+7514:00c00000:0420:0001:2:0
+CAT. MÚSICA
+p:DIGITAL+
+7515:00c00000:0420:0001:2:0
+CAT. RADIO
+p:DIGITAL+
+0816:00c00000:0449:0035:2:0
+RVi1 (VRT)
+p:CANAL+
+081b:00c00000:0449:0035:2:0
+RVi2 (VRT)
+p:CANAL+
+2725:00c00000:0402:0001:2:0
+DW01
+p:DW
+2727:00c00000:0402:0001:2:0
+DW03
+p:Deutsche Telekom AG
+2728:00c00000:0402:0001:2:0
+DW04
+p:DW
+f22a:00c00000:0421:0001:2:0
+CFN/RFC
+p:Canadian Forces Europe
+f22b:00c00000:0421:0001:2:0
+Radio Neue Hoffnung
+p:RADIO Neue Hoffnung
+6e2f:00c00000:0431:0001:2:0
+NDR Kultur
+p:ARD
+6e30:00c00000:0431:0001:2:0
+MDR FIGARO
+p:ARD
+6e31:00c00000:0431:0001:2:0
+Fritz
+p:ARD
+6e32:00c00000:0431:0001:2:0
+MDR JUMP
+p:ARD
+6e33:00c00000:0431:0001:2:0
+MDR INFO
+p:ARD
+6e34:00c00000:0431:0001:2:0
+†SPUTNIK
+p:ARD
+3035:00c00000:0458:0001:2:0
+CFN/RFC
+p:Canadian Forces Europe
+6e35:00c00000:0431:0001:2:0
+RADIOmultikulti
+p:ARD
+3036:00c00000:0458:0001:2:0
+La Première Sat
+p:RTBF
+6e36:00c00000:0431:0001:2:0
+SWR2
+p:ARD
+6e37:00c00000:0431:0001:2:0
+WDR 3
+p:ARD
+6e38:00c00000:0431:0001:2:0
+WDR 5
+p:ARD
+213b:00c00000:0442:0001:2:0
+CSAT RADIOS
+p:CSAT
+2140:00c00000:0442:0001:2:0
+RADIO INT 2
+p:CSAT
+2141:00c00000:0442:0001:2:0
+RADIO INT
+p:CSAT
+3341:00c00000:045b:0001:2:0
+OE1
+p:ORF
+2142:00c00000:0442:0001:2:0
+RADIO INT 3
+p:CSAT
+3342:00c00000:045b:0001:2:0
+OE1 DD
+p:ORF
+3343:00c00000:045b:0001:2:0
+OE2 W
+p:ORF
+3344:00c00000:045b:0001:2:0
+OE2 N
+p:ORF
+3345:00c00000:045b:0001:2:0
+OE2 B
+p:ORF
+3346:00c00000:045b:0001:2:0
+OE2 O
+p:ORF
+2147:00c00000:0442:0001:2:0
+FRANCE MUSIQUES
+p:CSAT
+3347:00c00000:045b:0001:2:0
+OE2 S
+p:ORF
+2148:00c00000:0442:0001:2:0
+FIP
+p:CSAT
+3348:00c00000:045b:0001:2:0
+OE2 T
+p:ORF
+2149:00c00000:0442:0001:2:0
+France INFO
+p:CSAT
+3349:00c00000:045b:0001:2:0
+OE2 V
+p:ORF
+214a:00c00000:0442:0001:2:0
+France INTER
+p:CSAT
+334a:00c00000:045b:0001:2:0
+OE2 St
+p:ORF
+214b:00c00000:0442:0001:2:0
+LA CITY RADIO
+p:CSAT
+334b:00c00000:045b:0001:2:0
+OE2 K
+p:ORF
+214c:00c00000:0442:0001:2:0
+RFI INT
+p:CSAT
+214d:00c00000:0442:0001:2:0
+RADIO CLASSIQUE
+p:CSAT
+334d:00c00000:045b:0001:2:0
+OE3
+p:ORF
+1f4e:00c00000:0449:0035:2:0
+MM
+p:CANAL+
+214e:00c00000:0442:0001:2:0
+EUROPE 1
+p:CSAT
+334e:00c00000:045b:0001:2:0
+FM4
+p:ORF
+214f:00c00000:0442:0001:2:0
+RMC
+p:CSAT
+334f:00c00000:045b:0001:2:0
+ROI Wien
+p:ORF
+2150:00c00000:0442:0001:2:0
+RTL
+p:CSAT
+2151:00c00000:0442:0001:2:0
+RIRE ET CHANSONS
+p:CSAT
+2153:00c00000:0442:0001:2:0
+M FM
+p:CSAT
+2154:00c00000:0442:0001:2:0
+TSF
+p:CSAT
+3354:00c00000:045b:0001:2:0
+RADIO MARIA
+p:Radio Maria Österreich
+2155:00c00000:0442:0001:2:0
+NOSTALGIE
+p:CSAT
+2156:00c00000:0442:0001:2:0
+BFM
+p:CSAT
+2157:00c00000:0442:0001:2:0
+PARIS JAZZ
+p:CSAT
+2158:00c00000:0442:0001:2:0
+NRJ
+p:CSAT
+2159:00c00000:0442:0001:2:0
+EUROPE 2
+p:CSAT
+215a:00c00000:0442:0001:2:0
+RTL 2
+p:CSAT
+215b:00c00000:0442:0001:2:0
+SKYROCK
+p:CSAT
+215c:00c00000:0442:0001:2:0
+FUN RADIO
+p:CSAT
+215d:00c00000:0442:0001:2:0
+LE MOUV
+p:CSAT
+215e:00c00000:0442:0001:2:0
+RADIO NOVA
+p:CSAT
+215f:00c00000:0442:0001:2:0
+RADIO FG
+p:CSAT
+2160:00c00000:0442:0001:2:0
+VIBRATION
+p:CSAT
+2161:00c00000:0442:0001:2:0
+CONTACT FM
+p:CSAT
+2162:00c00000:0442:0001:2:0
+RADIO LATINA
+p:CSAT
+2163:00c00000:0442:0001:2:0
+RFM
+p:CSAT
+2164:00c00000:0442:0001:2:0
+CHERIE FM
+p:CSAT
+2165:00c00000:0442:0001:2:0
+ALOUETTE
+p:CSAT
+2166:00c00000:0442:0001:2:0
+VOLTAGE
+p:CSAT
+2167:00c00000:0442:0001:2:0
+OUI FM
+p:CSAT
+2168:00c00000:0442:0001:2:0
+ADO
+p:CSAT
+2169:00c00000:0442:0001:2:0
+COULEUR 3
+p:CSAT
+216a:00c00000:0442:0001:2:0
+RFI MUSIQUE
+p:CSAT
+316a:00c00000:0459:0001:2:0
+Radio Maria
+p:T-Systems
+216b:00c00000:0442:0001:2:0
+RADIO NOTRE-DAME
+p:CSAT
+316b:00c00000:0459:0001:2:0
+Inselradio
+p:T-Systems
+6f6b:00c00000:042c:0001:2:0
+CNN Radio
+p:CNN
+216c:00c00000:0442:0001:2:0
+RADIO ALPHA
+p:CSAT
+6d6c:00c00000:0437:0001:2:0
+DLR-Berlin
+p:ZDFvision
+216d:00c00000:0442:0001:2:0
+RCJ / SHALOM
+p:CSAT
+6d6d:00c00000:0437:0001:2:0
+DLF-Köln
+p:ZDFvision
+216e:00c00000:0442:0001:2:0
+BEUR FM
+p:CSAT
+216f:00c00000:0442:0001:2:0
+MEDIA TROPICAL
+p:CSAT
+2170:00c00000:0442:0001:2:0
+AFRICA N1
+p:CSAT
+2171:00c00000:0442:0001:2:0
+RCI SAT
+p:CSAT
+6d71:00c00000:0437:0001:2:0
+Österreich 1
+p:ZDFvision
+2172:00c00000:0442:0001:2:0
+MEDI 1
+p:CSAT
+2173:00c00000:0442:0001:2:0
+France CULTURE
+p:CSAT
+2174:00c00000:0442:0001:2:0
+WRN
+p:CSAT
+3174:00c00000:0459:0001:2:0
+HIT RADIO FFH
+p:T-Systems
+2175:00c00000:0442:0001:2:0
+RADIO DU VOYAGE
+p:CSAT
+3175:00c00000:0459:0001:2:0
+planet radio
+p:T-Systems
+2176:00c00000:0442:0001:2:0
+PARIS LIVE RADIO
+p:CSAT
+3176:00c00000:0459:0001:2:0
+harmony fm
+p:T-Systems
+4e85:00c00000:043a:0001:2:0
+Popular Classical
+p:XtraMusic
+4e86:00c00000:043a:0001:2:0
+Symphonic
+p:XtraMusic
+4e87:00c00000:043a:0001:2:0
+Opera
+p:XtraMusic
+4e88:00c00000:043a:0001:2:0
+Modern Country
+p:XtraMusic
+4e89:00c00000:043a:0001:2:0
+Traditional Country
+p:XtraMusic
+4e8a:00c00000:043a:0001:2:0
+Beautiful Instruments
+p:XtraMusic
+4e8b:00c00000:043a:0001:2:0
+New Age
+p:XtraMusic
+4e8c:00c00000:043a:0001:2:0
+Euro Hits
+p:XtraMusic
+4e8d:00c00000:043a:0001:2:0
+French Hits
+p:XtraMusic
+4e8e:00c00000:043a:0001:2:0
+German Folk
+p:XtraMusic
+4e8f:00c00000:043a:0001:2:0
+German Rock
+p:XtraMusic
+4e90:00c00000:043a:0001:2:0
+German Schlager
+p:XtraMusic
+0091:00c00000:0002:0085:2:0
+BLUES
+p:PREMIERE,C:1702,C:1722,C:1801
+4e91:00c00000:043a:0001:2:0
+German Hits
+p:XtraMusic
+0092:00c00000:0002:0085:2:0
+†DINNER‡ PARTY
+p:PREMIERE,C:1702,C:1722,C:1801
+4e92:00c00000:043a:0001:2:0
+Italian Contemporary
+p:XtraMusic
+0093:00c00000:0002:0085:2:0
+KLASSIK
+p:PREMIERE,C:1702,C:1722,C:1801
+4e93:00c00000:043a:0001:2:0
+UK Hits
+p:XtraMusic
+0094:00c00000:0002:0085:2:0
+JAZZ
+p:PREMIERE,C:1702,C:1722,C:1801
+4e94:00c00000:043a:0001:2:0
+Indian Pop
+p:XtraMusic
+0095:00c00000:0002:0085:2:0
+COUNTRY
+p:PREMIERE,C:1702,C:1722,C:1801
+4e95:00c00000:043a:0001:2:0
+Turkish Pop
+p:XtraMusic
+0096:00c00000:0002:0085:2:0
+UK HITS
+p:PREMIERE,C:1702,C:1722,C:1801
+4e96:00c00000:043a:0001:2:0
+Dutch Hits
+p:XtraMusic
+0097:00c00000:0002:0085:2:0
+†D‡EU†T‡SCHE† CHARTS‡
+p:PREMIERE,C:1702,C:1722,C:1801
+4e97:00c00000:043a:0001:2:0
+Acid Jazz
+p:XtraMusic
+0098:00c00000:0002:0085:2:0
+†HARD‡ †ROCK‡
+p:PREMIERE,C:1702,C:1722,C:1801
+4e98:00c00000:043a:0001:2:0
+Contemporary Jazz
+p:XtraMusic
+0099:00c00000:0002:0085:2:0
+†SOUL CL‡ASSICS
+p:PREMIERE,C:1702,C:1722,C:1801
+4e99:00c00000:043a:0001:2:0
+Classic Jazz
+p:XtraMusic
+009a:00c00000:0002:0085:2:0
+†A‡LTERNATIVE† ROCK‡
+p:PREMIERE,C:1702,C:1722,C:1801
+4e9a:00c00000:043a:0001:2:0
+Smooth Jazz
+p:XtraMusic
+009b:00c00000:0002:0085:2:0
+†SOFT‡ †ROCK‡
+p:PREMIERE,C:1702,C:1722,C:1801
+4e9b:00c00000:043a:0001:2:0
+Brazil Carnival
+p:XtraMusic
+009c:00c00000:0002:0085:2:0
+†LOVE‡ †SONG‡S
+p:PREMIERE,C:1702,C:1722,C:1801
+4e9c:00c00000:043a:0001:2:0
+Latin Contemporary
+p:XtraMusic
+009d:00c00000:0002:0085:2:0
+REGGAE
+p:PREMIERE,C:1702,C:1722,C:1801
+4e9d:00c00000:043a:0001:2:0
+Salsa
+p:XtraMusic
+009e:00c00000:0002:0085:2:0
+†SPECIAL‡ EVENT
+p:PREMIERE,C:1702,C:1722,C:1801
+4e9e:00c00000:043a:0001:2:0
+Rock en Espanol
+p:XtraMusic
+009f:00c00000:0002:0085:2:0
+†R&B‡/HIP HOP
+p:PREMIERE,C:1702,C:1722,C:1801
+4e9f:00c00000:043a:0001:2:0
+Rock n Roll Oldies
+p:XtraMusic
+00a0:00c00000:0007:0085:2:0
+†ROCK ANT‡ENNE
+p:BetaDigital
+4ea0:00c00000:043a:0001:2:0
+70's Hits
+p:XtraMusic
+00a1:00c00000:0007:0085:2:0
+†ERF‡ Radio
+p:BetaDigital
+4ea1:00c00000:043a:0001:2:0
+80's Hits
+p:XtraMusic
+00a2:00c00000:0002:0085:2:0
+SCHLAGER
+p:PREMIERE,C:1702,C:1722,C:1801
+4ea2:00c00000:043a:0001:2:0
+90's Hits
+p:XtraMusic
+00a3:00c00000:0002:0085:2:0
+†CL‡ASSIC† ROCK‡
+p:PREMIERE,C:1702,C:1722,C:1801
+4ea3:00c00000:043a:0001:2:0
+Great Standards
+p:XtraMusic
+00a4:00c00000:0002:0085:2:0
+†N‡EW† COUNT‡RY
+p:PREMIERE,C:1702,C:1722,C:1801
+4ea4:00c00000:043a:0001:2:0
+Big Band Swing
+p:XtraMusic
+00a5:00c00000:0002:0085:2:0
+DANCE
+p:PREMIERE,C:1702,C:1722,C:1801
+4ea5:00c00000:043a:0001:2:0
+Classic Rock
+p:XtraMusic
+00a6:00c00000:0002:0085:2:0
+70ER/80ER
+p:PREMIERE,C:1702,C:1722,C:1801
+4ea6:00c00000:043a:0001:2:0
+Metal
+p:XtraMusic
+00a7:00c00000:0002:0085:2:0
+50ER/60ER
+p:PREMIERE,C:1702,C:1722,C:1801
+13a7:00c00000:0455:0035:2:0
+NLR1
+p:CANAL+
+4ea7:00c00000:043a:0001:2:0
+Alternative
+p:XtraMusic
+13a8:00c00000:0455:0035:2:0
+NLR2
+p:CANAL+
+4ea8:00c00000:043a:0001:2:0
+Dance
+p:XtraMusic
+00a9:00c00000:0007:0085:2:0
+†sunshine‡ live
+p:BetaDigital
+13a9:00c00000:0455:0035:2:0
+NLR3
+p:CANAL+
+4ea9:00c00000:043a:0001:2:0
+Retro Dance
+p:XtraMusic
+00aa:00c00000:0007:0085:2:0
+†ANTENNE‡ BAYERN
+p:BetaDigital
+13aa:00c00000:0455:0035:2:0
+NLR4
+p:CANAL+
+4eaa:00c00000:043a:0001:2:0
+Trends
+p:XtraMusic
+00ab:00c00000:0005:0085:2:0
+domradio
+p:BetaDigital
+13ab:00c00000:0455:0035:2:0
+AM747
+p:CANAL+
+4eab:00c00000:043a:0001:2:0
+Contemporary Pop
+p:XtraMusic
+4eac:00c00000:043a:0001:2:0
+Hottest Hits
+p:XtraMusic
+4ead:00c00000:043a:0001:2:0
+Love Songs
+p:XtraMusic
+4eae:00c00000:043a:0001:2:0
+Power Hits
+p:XtraMusic
+4eaf:00c00000:043a:0001:2:0
+Blues
+p:XtraMusic
+4eb0:00c00000:043a:0001:2:0
+Classic R & B
+p:XtraMusic
+4eb1:00c00000:043a:0001:2:0
+R & B Hip Hop
+p:XtraMusic
+4eb2:00c00000:043a:0001:2:0
+Reggae
+p:XtraMusic
+4eb3:00c00000:043a:0001:2:0
+Rap
+p:XtraMusic
+0fb4:00c00000:0451:0035:2:0
+YAM FM
+p:Canal+
+13ba:00c00000:0455:0035:2:0
+Yorin FM
+p:CANAL+
+0fbe:00c00000:0451:0035:2:0
+RTL FM
+p:canal+
+13bf:00c00000:0455:0035:2:0
+KINK FM
+p:CANAL+
+0fc3:00c00000:0451:0035:2:0
+FunX .
+p:CANAL+
+13c4:00c00000:0455:0035:2:0
+RNW1
+p:CANAL+
+13c5:00c00000:0455:0035:2:0
+RNW2
+p:CANAL+
+13c6:00c00000:0455:0035:2:0
+RNW3
+p:CANAL+
+13ce:00c00000:0455:0035:2:0
+Sky Radio
+p:CANAL+
+13cf:00c00000:0455:0035:2:0
+Juize.FM
+p:CANAL+
+13d0:00c00000:0455:0035:2:0
+Radio538
+p:CANAL+
+13d8:00c00000:0455:0035:2:0
+Concertzender
+p:CANAL+
+6dd8:00c00000:044d:0001:2:0
+Bayern 4 Klassik
+p:ARD
+f1d8:00c00000:0421:0001:2:0
+Radio Maryja
+p:Astra
+6dd9:00c00000:044d:0001:2:0
+B5 aktuell
+p:ARD
+6dda:00c00000:044d:0001:2:0
+hr-info
+p:ARD
+6ddb:00c00000:044d:0001:2:0
+hr2
+p:ARD
+6ddc:00c00000:044d:0001:2:0
+hr-klassik
+p:ARD
+13dd:00c00000:0455:0035:2:0
+Radio10Gold
+p:Canal+
+32dd:00c00000:045d:0001:2:0
+OE1 - 28Feb05
+p:ORF
+6ddd:00c00000:044d:0001:2:0
+YOU FM
+p:ARD
+6dde:00c00000:044d:0001:2:0
+Bayern 1
+p:ARD
+32df:00c00000:045d:0001:2:0
+OE2 W - 28Feb05
+p:ORF
+6ddf:00c00000:044d:0001:2:0
+NDR Info
+p:ARD
+32e0:00c00000:045d:0001:2:0
+OE2 N - 28Feb05
+p:ORF
+6de0:00c00000:044d:0001:2:0
+NordwestRadio
+p:ARD
+32e1:00c00000:045d:0001:2:0
+OE2 B - 28Feb05
+p:ORF
+6de1:00c00000:044d:0001:2:0
+SR 1
+p:ARD
+32e2:00c00000:045d:0001:2:0
+OE2 O - 28Feb05
+p:ORF
+32e3:00c00000:045d:0001:2:0
+OE2 S - 28Feb05
+p:ORF
+32e4:00c00000:045d:0001:2:0
+OE2 T - 28Feb05
+p:ORF
+32e5:00c00000:045d:0001:2:0
+OE2 V - 28Feb05
+p:ORF
+32e6:00c00000:045d:0001:2:0
+OE2 St - 28Feb05
+p:ORF
+13e7:00c00000:0455:0035:2:0
+Radio Veronica
+p:CANAL+
+32e7:00c00000:045d:0001:2:0
+OE2 K - 28Feb05
+p:ORF
+32e9:00c00000:045d:0001:2:0
+OE3 - 28Feb05
+p:ORF
+32ea:00c00000:045d:0001:2:0
+FM4 - 28Feb05
+p:ORF
+32eb:00c00000:045d:0001:2:0
+ROI Wien - 28Feb05
+p:ORF
+6eed:00c00000:04b1:0001:2:0
+MEHRKANALTEST
+p:ARD
+6eee:00c00000:04b1:0001:2:0
+Mehrkanaltest
+p:ARD
+0c12:00c00000:045c:0001:12:0
+MMS01C
+p:SES Multimedia SA
+0c13:00c00000:0457:0001:12:0
+MMS02C
+p:SES Astra
+0c14:00c00000:041d:0001:12:0
+MMS03C
+p:Ses-Astra
+1d1b:00c00000:04f9:0001:12:0
+Net sys 01
+p:Netsystem
+1d1c:00c00000:04f9:0001:12:0
+AliceSat
+p:Netsystem
+1d1d:00c00000:04f9:0001:12:0
+Net sys 03
+p:Netsystem
+1d1e:00c00000:04f9:0001:12:0
+Net sys 04
+p:Netsystem
+1d1f:00c00000:04f9:0001:12:0
+Net sys 05
+p:Netsystem
+1d20:00c00000:04f9:0001:12:0
+Net sys 06
+p:Netsystem
+1d21:00c00000:04f9:0001:12:0
+Net sys 07
+p:Netsystem
+1c22:00c00000:0457:0001:12:0
+Lorcom
+p:SES Astra
+1d22:00c00000:04f9:0001:12:0
+Net sys 08
+p:Netsystem
+1c23:00c00000:0457:0001:12:0
+Euro-Service 1
+p:SES Astra
+1d23:00c00000:04f9:0001:12:0
+Net sys 09
+p:Netsystem
+1c24:00c00000:0457:0001:12:0
+Icomera
+p:OpenMux IP Gateway
+1d24:00c00000:04f9:0001:12:0
+Net sys 10
+p:Netsystem
+1c25:00c00000:0457:0001:12:0
+Demos Streams
+p:SES Astra
+1c27:00c00000:0457:0001:12:0
+MFTS Services
+p:SES Astra
+1c28:00c00000:0457:0001:12:0
+AN PTU-VS
+p:SES Astra
+1c29:00c00000:0457:0001:12:0
+AN PTU
+p:SES Astra
+1c32:00c00000:0457:0001:12:0
+CVCE
+p:SES Astra
+1c38:00c00000:0457:0001:12:0
+STB Skardin
+p:SES Astra
+1c3d:00c00000:0457:0001:12:0
+ASTON DOWNLOAD
+p:ASTON
+1c41:00c00000:0457:0001:12:0
+STB Won Ik
+p:SES Multimeda SA
+1c42:00c00000:0457:0001:12:0
+STB Loewe
+p:SES Astra
+3143:00c00000:0459:0001:12:0
+Wartezimmer TV
+p:T-Systems
+3145:00c00000:0459:0001:12:0
+RAPS
+p:T-Systems
+3149:00c00000:0459:0001:12:0
+b.i.s. AG
+p:T-Systems
+314c:00c00000:0459:0001:12:0
+InfomedTV
+p:T-Systems
+1c50:00c00000:0457:0001:12:0
+tvtv Digital
+p:SES Astra
+1c51:00c00000:0457:0001:12:0
+STB Bang-Olufsen
+p:SES Astra
+1c53:00c00000:0457:0001:12:0
+STB Pesi
+p:SES Astra
+1c54:00c00000:0457:0001:12:0
+FS Ecovision
+p:SES Astra
+1c57:00c00000:0457:0001:12:0
+Casablanca
+p:SES Astra
+6e5a:00c00000:0431:0001:12:0
+ARD-MHP-Data
+p:ARD
+185c:00c00000:0457:0001:12:0
+Proxy_txp2
+p:ses astra
+185d:00c00000:0457:0001:12:0
+VPN TXP-2
+p:ses astra
+1c5e:00c00000:0457:0001:12:0
+STB Seodu
+p:SES Astra
+1c60:00c00000:0457:0001:12:0
+STB Comag1
+p:SES Astra
+1c63:00c00000:0457:0001:12:0
+STB Panasonic
+p:SES Astra
+1c66:00c00000:0457:0001:12:0
+Datendienst T1M
+p:SES Astra
+1c6c:00c00000:0457:0001:12:0
+Datacargo
+p:SES Astra
+1c71:00c00000:045c:0001:12:0
+Canal Net
+p:OpenMux IP Gateway
+1773:00c00000:0460:0019:12:0
+MPE FL1 Service
+p:SES Astra
+1c73:00c00000:0457:0001:12:0
+VS Unique Promo
+p:SES-Astra
+1d74:00c00000:03fa:0001:12:0
+Proxy GAC 1018
+p:Ses-Astra
+0f77:00c00000:0005:0085:12:0
+BData6
+p:BetaDigital
+0f79:00c00000:0005:0085:12:0
+moreTV
+p:BetaDigital
+1d79:00c00000:03fa:0001:12:0
+Proxy_26
+p:Ses-Astra
+1e79:00c00000:043c:0001:12:0
+RBBS 1084 Chn1
+p:Ses Astra
+1c7a:00c00000:0457:0001:12:0
+FWD PATH NF
+p:SES Multimedia S.A.
+1e7a:00c00000:043c:0001:12:0
+RBBS 1084 Inst
+p:Ses Astra
+1d7c:00c00000:03fa:0001:12:0
+Proxy_12
+p:Ses-Astra
+1d7f:00c00000:041d:0001:12:0
+TDSL Proxy 1
+p:Ses-Astra
+0f80:00c00000:0002:0085:12:0
+
+p:betaresearch
+1d80:00c00000:041d:0001:12:0
+DSL-MCST_02
+p:Ses-Astra
+1d81:00c00000:041d:0001:12:0
+T-DSL VPN 1
+p:Ses-Astra
+0f82:00c00000:0021:0085:12:0
+BData1
+p:BetaDigital
+1d82:00c00000:041d:0001:12:0
+Proxy_02
+p:Ses-Astra
+0f83:00c00000:0007:0085:12:0
+BData2
+p:BetaDigital
+1d84:00c00000:041d:0001:12:0
+Sat@Once
+p:SES Astra
+0f86:00c00000:0007:0085:12:0
+BData3
+p:BetaDigital
+0f87:00c00000:0007:0085:12:0
+BData4
+p:BetaDigital
+0190:00c00000:0005:0085:12:0
+moreTVtest1
+p:
+3390:00c00000:045d:0001:12:0
+AlphaCrypt
+p:ORF
+0191:00c00000:0005:0085:12:0
+moreTVtest2
+p:
+0192:00c00000:0005:0085:12:0
+moreTVtest3
+p:
+0193:00c00000:0005:0085:12:0
+moreTVtest4
+p:
+0194:00c00000:0005:0085:12:0
+moreTVtest5
+p:
+0195:00c00000:0005:0085:12:0
+moreTVtest6
+p:
+0196:00c00000:0005:0085:12:0
+moreTVtest7
+p:
+0197:00c00000:0005:0085:12:0
+moreTVtest8
+p:
+0198:00c00000:0005:0085:12:0
+moreTVtest9
+p:
+0199:00c00000:0005:0085:12:0
+moreTVtest10
+p:
+019a:00c00000:0005:0085:12:0
+moreTVtest11
+p:
+1da0:00c00000:041d:0001:12:0
+MediaSat
+p:Ses-Astra
+0dac:00c00000:0002:0085:12:0
+CPT_TP69
+p:PREMIERE
+0dad:00c00000:0001:0085:12:0
+CPT_TP83
+p:PREMIERE
+0dae:00c00000:0003:0085:12:0
+CPT_TP65
+p:PREMIERE
+0daf:00c00000:0004:0085:12:0
+CPT_TP81
+p:PREMIERE
+0db0:00c00000:0011:0085:12:0
+CPT_TP67
+p:PREMIERE
+1cb7:00c00000:045f:0001:12:0
+HSI
+p:SES Astra
+0bb8:00c00000:045c:0001:12:0
+MMS1116A
+p:SES Multimedia SA
+1cb8:00c00000:045f:0001:12:0
+Zucchetti
+p:SES Astra
+1cb9:00c00000:045f:0001:12:0
+Demo
+p:SES Astra
+1edc:00c00000:041d:0001:12:0
+INT
+p:SES ASTRA (An SES GLOBAL Company)
+1edd:00c00000:0453:0001:12:0
+INT_1107
+p:SES ASTRA
+1cdf:00c00000:045f:0001:12:0
+SkyData
+p:SES Astra
+1ce8:00c00000:0453:0001:12:0
+Proxy Global AC 1107
+p:OpenMux IP Gateway
+1ce9:00c00000:0453:0001:12:0
+Servisys
+p:OpenMux IP Gateway
+1cea:00c00000:0453:0001:12:0
+ONET
+p:OpenMux IP Gateway
+1ceb:00c00000:0453:0001:12:0
+TVN24
+p:OpenMux IP Gateway
+1cec:00c00000:0453:0001:12:0
+sat_speed
+p:OpenMux IP Gateway
+1ced:00c00000:0453:0001:12:0
+EasyNet
+p:OpenMux IP Gateway
+1cee:00c00000:0453:0001:12:0
+Filiago
+p:OpenMux IP Gateway
+1cef:00c00000:0453:0001:12:0
+Proxy_19
+p:OpenMux IP Gateway
+1cf0:00c00000:0453:0001:12:0
+NetupSat
+p:OpenMux IP Gateway
+1cf4:00c00000:0453:0001:12:0
+File Push
+p:SES Astra
+1cf5:00c00000:0453:0001:12:0
+MT Tests
+p:OpenMux IP Gateway
+1cf6:00c00000:0453:0001:12:0
+IP4 Proxy
+p:OpenMux IP Gateway
+1cf7:00c00000:0453:0001:12:0
+EntrySat
+p:OpenMux IP Gateway
+1cf8:00c00000:0453:0001:12:0
+Sharp & Strong
+p:OpenMux IP Gateway
+1cfc:00c00000:0453:0001:12:0
+SGI
+p:SES Astra
+1771:00c00000:0460:0019:14:0
+RCS FL1 Service
+p:ASTRA
+7404:00c00000:044e:0001:128:0
+ASTRA HD
+p:Ses-Astra
+1c2a:00c00000:0457:0001:128:0
+STB Handan
+p:SES Astra
+1c2b:00c00000:0457:0001:128:0
+STB Hyundai
+p:SES Astra
+1c3a:00c00000:0457:0001:128:0
+STB Philips
+p:SES Astra
+1c3b:00c00000:0457:0001:128:0
+STB Opentech
+p:SES Astra
+1c48:00c00000:0457:0001:128:0
+STB Sony
+p:SES Multimedia SA
+1c49:00c00000:0457:0001:128:0
+STB GSS
+p:SES Astra
+1c4b:00c00000:0457:0001:128:0
+STB Inverto
+p:SES Astra
+1c4f:00c00000:0457:0001:128:0
+Topfield
+p:SES Astra
+1c58:00c00000:0457:0001:128:0
+GRUNDIG DVB
+p:SES Astra
+1c5b:00c00000:0457:0001:128:0
+Opentech
+p:SES Astra
+1c5c:00c00000:0457:0001:128:0
+SKYMASTER1
+p:SES Astra
+1c5d:00c00000:0457:0001:128:0
+STB DMT
+p:SES Astra
+1c5f:00c00000:0457:0001:128:0
+SKYMASTER2
+p:SES Astra
+1c65:00c00000:0457:0001:128:0
+STB Homecast
+p:SES Astra
+1c74:00c00000:0457:0001:128:0
+STB Eycos
+p:SES Astra
+0bba:00c00000:0457:0001:128:0
+MMS1111A
+p:SES Astra
+000d:00c00000:0457:0001:129:0
+ASTRA SDT
+p:ASTRA
+5014:00c00000:045c:0001:129:0
+ASTRA-NET GEN1
+p:ESM
+1c21:00c00000:045c:0001:129:0
+ASTRA NET Service 1
+p:SES Multimedia SA
+1c2e:00c00000:045c:0001:129:0
+Intersat
+p:SES Multimedia SA
+0065:00c00000:045c:0001:129:0
+Nokia SW Update1
+p:NOKIA
+0071:00c00000:045c:0001:129:0
+Nokia SW Update2
+p:SES Multimedia SA
+007a:00c00000:045c:0001:129:0
+Samsung2
+p:Samsung
+33a4:00c00000:045d:0001:129:0
+VESTEL OAD2
+p:ORF
+33ae:00c00000:045d:0001:129:0
+VESTEL DOWNLOAD
+p:ORF
+00e1:00c00000:0447:0001:129:0
+PHILIPS DOWNLOAD 1.1
+p:WIZJA 1
+00e2:00c00000:0447:0001:129:0
+PHILIPS DOWNLOAD 1.2
+p:UPC DIRECT
+0066:00c00000:045c:0001:130:0
+HUMAX DOWNLOAD SVC
+p:Humax
+1c70:00c00000:045c:0001:130:0
+Icomera
+p:NSAB
+1774:00c00000:0460:0019:130:0
+MMT FL1 Service
+p:ASTRA
+1c3f:00c00000:0457:0001:144:0
+THOMSON download
+p:SES Astra
+1c83:00c00000:0457:0001:170:0
+Kathrein Download
+p:SES Astra
+1c3c:00c00000:0457:0001:171:0
+STB Radix
+p:RADIXdownload
+1c40:00c00000:0457:0001:171:0
+STB SMEL
+p:SES Multimedia
+1c43:00c00000:0457:0001:171:0
+STB Echostar
+p:SES Astra
+1c44:00c00000:0457:0001:171:0
+STB Grob
+p:SES Astra
+1c46:00c00000:0457:0001:171:0
+STB Samsung Co.
+p:SES Astra
+1c4e:00c00000:0457:0001:171:0
+STB Aston2
+p:ASTON
+006a:00c00000:045c:0001:171:0
+GALAXIS DOWNLOAD
+p:Astra
+006b:00c00000:045c:0001:171:0
+FORCE DOWNLOAD
+p:Astra
+006c:00c00000:045c:0001:171:0
+SEMCO Download
+p:Astra
+006e:00c00000:045c:0001:171:0
+STB Galaxis 2
+p:Astra
+0070:00c00000:045c:0001:171:0
+STB Technisat
+p:SES Multimedia SA
+0a82:00c00000:0004:0085:178:0
+Videotext
+p:BetaResearch
+0a94:00c00000:0011:0085:178:0
+TM V1.0
+p:Premiere World,C:1702,C:1722,C:1801
+0f84:00c00000:0011:0085:179:0
+VCR-Setup
+p:BetaResearch
+0f85:00c00000:0011:0085:179:0
+Modem-Setup
+p:BetaResearch
+23f0:00c00000:0452:0001:192:0
+CODE DOWN1
+p:C+
+2007:00c00000:0434:0001:193:0
+DATA SYSTEM†76‡
+p:CSAT
+2327:00c00000:045a:0001:193:0
+DATASYSTEM †114‡
+p:CSAT
+2133:00c00000:043e:0001:193:0
+DATA SYSTEM[86]
+p:CSAT
+233c:00c00000:0400:0001:193:0
+DATASYSTEMS TR 24
+p:CANALSATELLITE
+2453:00c00000:0452:0001:193:0
+DATA SYS
+p:test
+1b58:00c00000:03fc:0001:193:0
+DATA SYSTEM
+p:CSAT
+225f:00c00000:044c:0001:193:0
+DATA SYSTEM[100]
+p:CSAT
+206b:00c00000:0430:0001:193:0
+DATA SYSTEM[72]
+p:CSAT
+6f71:00c00000:042c:0001:193:0
+DATA_SYS_68
+p:DT CSAT
+2773:00c00000:0402:0001:193:0
+DATA SYSTEM
+p:CSAT
+0c84:00c00000:0444:0001:193:0
+NDS_DATA
+p:Canal Satellite
+2197:00c00000:0442:0001:193:0
+DATA SYSTEM[90]
+p:CSAT
+1fa3:00c00000:042e:0001:193:0
+DATA SYSTEM[70]
+p:CSAT
+24b7:00c00000:0456:0001:193:0
+DATASYSTEM 110
+p:CSAT
+22c3:00c00000:0438:0001:193:0
+DATA SYSTEM†80‡
+p:CSAT
+42cb:00c00000:0446:0001:193:0
+DATA SYSTEM TR94
+p:AB SAT
+20cf:00c00000:0432:0001:193:0
+DATA SYSTEM†74‡
+p:CSAT
+6fea:00c00000:042a:0001:193:0
+DATA_SYSTEM_TR_66
+p:MTV Networks
+23ef:00c00000:044a:0001:193:0
+DATA SYSTEM[98]
+p:C+
+21fb:00c00000:0448:0001:193:0
+DATA SYSTEM[96]
+p:CSAT
+2143:00c00000:0442:0001:195:0
+KIOSQUE 13
+p:CSAT
+2144:00c00000:0442:0001:195:0
+OM'TV
+p:CSAT
+2263:00c00000:0438:0001:195:0
+CANAL EVENEMENT
+p:CSAT
+2266:00c00000:0438:0001:195:0
+
+p:CSAT
+2269:00c00000:0438:0001:195:0
+KIOSQUE 1
+p:CSAT
+226a:00c00000:0438:0001:195:0
+KIOSQUE
+p:CSAT
+226b:00c00000:0438:0001:195:0
+KIOSQUE 11
+p:CSAT
+226c:00c00000:0438:0001:195:0
+ESPACE KIOSQUE
+p:CSAT
+20d2:00c00000:043e:0001:195:0
+KIOSQUE 2
+p:CSAT
+20d3:00c00000:043e:0001:195:0
+KIOSQUE 3
+p:CSAT
+20d4:00c00000:043e:0001:195:0
+KIOSQUE 4
+p:CSAT
+20d5:00c00000:043e:0001:195:0
+KIOSQUE 5
+p:CSAT
+20d6:00c00000:043e:0001:195:0
+KIOSQUE 6
+p:CSAT
+20d7:00c00000:043e:0001:195:0
+KIOSQUE 7
+p:CSAT
+20d8:00c00000:043e:0001:195:0
+KIOSQUE 8
+p:CSAT
+20d9:00c00000:043e:0001:195:0
+KIOSQUE 9
+p:CSAT
+20da:00c00000:043e:0001:195:0
+KIOSQUE 10
+p:CSAT
+20db:00c00000:043e:0001:195:0
+KIOSQUE 14
+p:CSAT
+20dc:00c00000:043e:0001:195:0
+KIOSQUE 15
+p:CSAT
+20dd:00c00000:043e:0001:195:0
+KIOSQUE 12
+p:CSAT
+23f2:00c00000:0452:0001:195:0
+PPV1
+p:IMEDIA
+23f3:00c00000:0452:0001:195:0
+PPV2
+p:IMEDIA
+23f9:00c00000:0452:0001:195:0
+PPV3
+p:IMEDIA
+23fb:00c00000:0452:0001:195:0
+KIOSQUE
+p:IMEDIA
+2012:00c00000:0430:0001:197:0
+PMU sur Canal+
+p:CSAT
+219c:00c00000:0448:0001:197:0
+MOSA 2
+p:CSAT
+219d:00c00000:0448:0001:197:0
+MOSA 3
+p:CSAT
+21a6:00c00000:0448:0001:197:0
+MOSA 4
+p:CSAT
+23c0:00c00000:044a:0001:197:0
+DT3
+p:IMEDIA
+213d:00c00000:0442:0001:198:0
+CANALSAT RADIOS
+p:CSAT
+213e:00c00000:0442:0001:198:0
+RADIOS 2
+p:CSAT
+213f:00c00000:0442:0001:198:0
+RADIOS 3
+p:CSAT
+2146:00c00000:0442:0001:198:0
+RF
+p:CSAT
+end
+Have a lot of bugs!
diff --git a/lib/base/connection.cpp b/lib/base/connection.cpp
new file mode 100644
index 00000000..f6a398ca
--- /dev/null
+++ b/lib/base/connection.cpp
@@ -0,0 +1,5 @@
+#include <connection.h>
+
+DEFINE_REF(eConnection);
+
+
diff --git a/lib/dvb/db.cpp b/lib/dvb/db.cpp
index 810aba04..fe4bcc76 100644
--- a/lib/dvb/db.cpp
+++ b/lib/dvb/db.cpp
@@ -27,6 +27,52 @@ eDVBService &eDVBService::operator=(const eDVBService &s)
return *this;
}
+RESULT eDVBService::getName(const eServiceReference &ref, std::string &name)
+{
+ name = m_service_name;
+}
+
+int eDVBService::checkFilter(const eServiceReferenceDVB &ref, const eDVBChannelQuery &query)
+{
+ int res = 0;
+ switch (query.m_type)
+ {
+ case eDVBChannelQuery::tName:
+ res = m_service_name.find(query.m_string) != std::string::npos;
+ break;
+ case eDVBChannelQuery::tProvider:
+ res = m_provider_name.find(query.m_string) != std::string::npos;
+ break;
+ case eDVBChannelQuery::tType:
+ res = ref.getServiceType() == query.m_int;
+ break;
+ case eDVBChannelQuery::tBouquet:
+ res = 0;
+ break;
+ case eDVBChannelQuery::tSatellitePosition:
+ res = (ref.getDVBNamespace().get() >> 16) == query.m_int;
+ break;
+ case eDVBChannelQuery::tChannelID:
+ {
+ eDVBChannelID chid;
+ ref.getChannelID(chid);
+ res = chid == query.m_channelid;
+ break;
+ }
+ case eDVBChannelQuery::tAND:
+ res = checkFilter(ref, *query.m_p1) && checkFilter(ref, *query.m_p2);
+ break;
+ case eDVBChannelQuery::tOR:
+ res = checkFilter(ref, *query.m_p1) || checkFilter(ref, *query.m_p2);
+ break;
+ }
+
+ if (query.m_inverse)
+ return !res;
+ else
+ return res;
+}
+
DEFINE_REF(eDVBDB);
eDVBDB::eDVBDB()
@@ -282,3 +328,42 @@ RESULT eDVBDB::getService(const eServiceReferenceDVB &reference, ePtr<eDVBServic
return 0;
}
+RESULT eDVBDB::startQuery(ePtr<iDVBChannelListQuery> &query, eDVBChannelQuery *q)
+{
+ query = new eDVBDBQuery(this, q);
+ return 0;
+}
+
+DEFINE_REF(eDVBDBQuery);
+
+eDVBDBQuery::eDVBDBQuery(eDVBDB *db, eDVBChannelQuery *query): m_db(db), m_query(query)
+{
+ m_cursor = m_db->m_services.begin();
+}
+
+RESULT eDVBDBQuery::getNextResult(eServiceReferenceDVB &ref)
+{
+ while (m_cursor != m_db->m_services.end())
+ {
+ ref = m_cursor->first;
+
+ int res = (!m_query) || m_cursor->second->checkFilter(ref, *m_query);
+
+ ++m_cursor;
+
+ if (res)
+ return 0;
+ }
+ return 1;
+}
+
+RESULT eDVBChannelQuery::compile(ePtr<eDVBChannelQuery> &res, std::string query)
+{
+ res = new eDVBChannelQuery();
+ res->m_type = eDVBChannelQuery::tName;
+ res->m_inverse = 0;
+ res->m_string = query;
+ return 0;
+}
+
+DEFINE_REF(eDVBChannelQuery);
diff --git a/lib/dvb/db.h b/lib/dvb/db.h
index e673b9e6..55998ebf 100644
--- a/lib/dvb/db.h
+++ b/lib/dvb/db.h
@@ -4,27 +4,12 @@
#include <lib/dvb/idvb.h>
#include <set>
-class eDVBService: public iObject
-{
- DECLARE_REF;
-public:
- eDVBService();
- std::string m_service_name;
- std::string m_provider_name;
-
- int m_flags;
- std::set<int> m_ca;
- std::map<int,int> m_cache;
- virtual ~eDVBService();
-
- eDVBService &operator=(const eDVBService &);
-};
-
class ServiceDescriptionTable;
class eDVBDB: public iDVBChannelList
{
DECLARE_REF;
+ friend class eDVBDBQuery;
private:
struct channel
{
@@ -45,6 +30,21 @@ public:
RESULT addService(const eServiceReferenceDVB &service, eDVBService *service);
RESULT getService(const eServiceReferenceDVB &reference, ePtr<eDVBService> &service);
+
+ RESULT startQuery(ePtr<iDVBChannelListQuery> &query, eDVBChannelQuery *query);
+};
+
+ // we have to add a possibility to invalidate here.
+class eDVBDBQuery: public iDVBChannelListQuery
+{
+DECLARE_REF;
+private:
+ std::map<eServiceReferenceDVB, ePtr<eDVBService> >::iterator m_cursor;
+ ePtr<eDVBDB> m_db;
+ ePtr<eDVBChannelQuery> m_query;
+public:
+ eDVBDBQuery(eDVBDB *db, eDVBChannelQuery *query);
+ virtual RESULT getNextResult(eServiceReferenceDVB &ref);
};
#endif
diff --git a/lib/dvb/idvb.h b/lib/dvb/idvb.h
index c68ad940..15796166 100644
--- a/lib/dvb/idvb.h
+++ b/lib/dvb/idvb.h
@@ -139,7 +139,7 @@ struct eServiceReferenceDVB: public eServiceReference
setTransportStreamID(chid.transport_stream_id);
}
- void getChannelID(eDVBChannelID &chid)
+ void getChannelID(eDVBChannelID &chid) const
{
chid = eDVBChannelID(getDVBNamespace(), getTransportStreamID(), getOriginalNetworkID());
}
@@ -151,14 +151,81 @@ struct eServiceReferenceDVB: public eServiceReference
};
+////////////////// TODO: we need an interface here, but what exactly?
+
+#include <set>
+// btw, still implemented in db.cpp. FIX THIS, TOO.
+
+class eDVBChannelQuery;
+
+class eDVBService: public iStaticServiceInformation
+{
+ DECLARE_REF;
+public:
+ eDVBService();
+ std::string m_service_name;
+ std::string m_provider_name;
+
+ int m_flags;
+ std::set<int> m_ca;
+ std::map<int,int> m_cache;
+ virtual ~eDVBService();
+
+ eDVBService &operator=(const eDVBService &);
+
+ // iStaticServiceInformation
+ RESULT getName(const eServiceReference &ref, std::string &name);
+
+ // for filtering:
+ int checkFilter(const eServiceReferenceDVB &ref, const eDVBChannelQuery &query);
+};
+
+//////////////////
+
class iDVBChannel;
class iDVBDemux;
class iDVBFrontendParameters;
+class iDVBChannelListQuery: public iObject
+{
+public:
+ virtual RESULT getNextResult(eServiceReferenceDVB &ref)=0;
+};
+
+class eDVBChannelQuery: public iObject
+{
+ DECLARE_REF;
+public:
+ enum
+ {
+ tName,
+ tProvider,
+ tType,
+ tBouquet,
+ tSatellitePosition,
+ tChannelID,
+ tAND,
+ tOR
+ };
+
+ int m_type;
+ int m_inverse;
+
+ std::string m_string;
+ int m_int;
+ eDVBChannelID m_channelid;
+
+ static RESULT compile(ePtr<eDVBChannelQuery> &res, std::string query);
+
+ ePtr<eDVBChannelQuery> m_p1, m_p2;
+};
+
class iDVBChannelList: public iObject
{
public:
virtual RESULT getChannelFrontendData(const eDVBChannelID &id, ePtr<iDVBFrontendParameters> &parm)=0;
+ virtual RESULT getService(const eServiceReferenceDVB &reference, ePtr<eDVBService> &service)=0;
+ virtual RESULT startQuery(ePtr<iDVBChannelListQuery> &query, eDVBChannelQuery *query)=0;
};
class iDVBResourceManager: public iObject
diff --git a/lib/dvb/stT1RVV7 b/lib/dvb/stT1RVV7
deleted file mode 100644
index e69de29b..00000000
--- a/lib/dvb/stT1RVV7
+++ /dev/null
diff --git a/lib/gdi/font.cpp b/lib/gdi/font.cpp
index 187512d5..9a7ec069 100644
--- a/lib/gdi/font.cpp
+++ b/lib/gdi/font.cpp
@@ -467,7 +467,7 @@ int eTextPara::renderString(const std::string &string, int rflags)
while(p != string.end())
{
- unsigned int unicode=*p++;
+ unsigned int unicode=(unsigned char)*p++;
if (unicode & 0x80) // we have (hopefully) UTF8 here, and we assume that the encoding is VALID
{
diff --git a/lib/gui/elistbox.cpp b/lib/gui/elistbox.cpp
index 5a9ee4d6..f530019d 100644
--- a/lib/gui/elistbox.cpp
+++ b/lib/gui/elistbox.cpp
@@ -1,3 +1,4 @@
+ /* written by: Felix Domke <tmbinc@elitedvb.net> */
#include <lib/gui/elistbox.h>
#include <lib/gui/elistboxcontent.h>
@@ -9,11 +10,7 @@ eListbox::eListbox(eWidget *parent): eWidget(parent)
void eListbox::setContent(iListboxContent *content)
{
m_content = content;
- invalidate();
- if (m_content)
- m_content->cursorHome();
- m_top = 0;
- m_selected = 0;
+ entryReset();
}
void eListbox::moveSelection(int dir)
@@ -46,6 +43,8 @@ void eListbox::moveSelection(int dir)
if (m_top < 0)
m_top = 0;
break;
+ case justCheck:
+ break;
}
/* note that we could be on an invalid cursor position, but we don't
@@ -54,6 +53,7 @@ void eListbox::moveSelection(int dir)
/* now, look wether the current selection is out of screen */
m_selected = m_content->cursorGet();
+
if (m_selected < m_top)
{
m_top -= m_items_per_page;
@@ -64,11 +64,12 @@ void eListbox::moveSelection(int dir)
/* m_top should be always valid here as it's selected */
m_top += m_items_per_page;
}
-
+
if (m_top != oldtop)
invalidate();
- else
+ else if (m_selected != oldsel)
{
+
/* redraw the old and newly selected */
gRegion inv = eRect(0, m_itemheight * (m_selected-m_top), size().width(), m_itemheight);
inv |= eRect(0, m_itemheight * (oldsel-m_top), size().width(), m_itemheight);
@@ -119,3 +120,57 @@ void eListbox::recalcSize()
m_content->setSize(eSize(size().width(), m_itemheight));
m_items_per_page = size().height() / m_itemheight;
}
+
+void eListbox::entryAdded(int index)
+{
+ /* manage our local pointers. when the entry was added before the current position, we have to advance. */
+
+ /* we need to check <= - when the new entry has the (old) index of the cursor, the cursor was just moved down. */
+ if (index <= m_selected)
+ ++m_selected;
+ if (index <= m_top)
+ ++m_top;
+
+ /* we have to check wether our current cursor is gone out of the screen. */
+ /* moveSelection will check for this case */
+ moveSelection(justCheck);
+
+ /* now, check if the new index is visible. */
+ if ((m_top <= index) && (index < (m_top + m_items_per_page)))
+ {
+ /* todo, calc exact invalidation... */
+ invalidate();
+ }
+}
+
+void eListbox::entryRemoved(int index)
+{
+ if (index == m_selected)
+ m_selected = m_content->cursorGet();
+
+ moveSelection(justCheck);
+
+ if ((m_top <= index) && (index < (m_top + m_items_per_page)))
+ {
+ /* todo, calc exact invalidation... */
+ invalidate();
+ }
+}
+
+void eListbox::entryChanged(int index)
+{
+ if ((m_top <= index) && (index < (m_top + m_items_per_page)))
+ {
+ gRegion inv = eRect(0, m_itemheight * (index-m_top), size().width(), m_itemheight);
+ invalidate(inv);
+ }
+}
+
+void eListbox::entryReset()
+{
+ invalidate();
+ if (m_content)
+ m_content->cursorHome();
+ m_top = 0;
+ m_selected = 0;
+}
diff --git a/lib/gui/elistbox.h b/lib/gui/elistbox.h
index d5464868..9ec94665 100644
--- a/lib/gui/elistbox.h
+++ b/lib/gui/elistbox.h
@@ -34,13 +34,15 @@ protected:
virtual int size()=0;
- virtual RESULT connectItemChanged(const Slot0<void> &itemChanged, ePtr<eConnection> &connection)=0;
+ void setListbox(eListbox *lb);
// void setOutputDevice ? (for allocating colors, ...) .. requires some work, though
virtual void setSize(const eSize &size)=0;
/* the following functions always refer to the selected item */
virtual void paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected)=0;
+
+ eListbox *m_listbox;
#endif
};
@@ -55,12 +57,24 @@ public:
moveUp,
moveDown,
moveTop,
- moveEnd
+ moveEnd,
+ justCheck
};
protected:
int event(int event, void *data=0, void *data2=0);
void recalcSize();
private:
+ friend class iListboxContent;
+
+ /* entryAdded: an entry was added *before* the given index. it's index is the given number. */
+ void entryAdded(int index);
+ /* entryRemoved: an entry with the given index was removed. */
+ void entryRemoved(int index);
+ /* entryChanged: the entry with the given index was changed and should be redrawn. */
+ void entryChanged(int index);
+ /* the complete list changed. you should not attemp to keep the current index. */
+ void entryReset();
+
int m_top, m_selected;
int m_itemheight;
int m_items_per_page;
diff --git a/lib/gui/elistboxcontent.cpp b/lib/gui/elistboxcontent.cpp
index d3a2e77a..0a10b27a 100644
--- a/lib/gui/elistboxcontent.cpp
+++ b/lib/gui/elistboxcontent.cpp
@@ -29,6 +29,10 @@ iListboxContent::~iListboxContent()
{
}
+void iListboxContent::setListbox(eListbox *lb)
+{
+ m_listbox = lb;
+}
DEFINE_REF(eListboxTestContent);
@@ -203,11 +207,6 @@ int eListboxStringContent::size()
return m_size;
}
-RESULT eListboxStringContent::connectItemChanged(const Slot0<void> &itemChanged, ePtr<eConnection> &connection)
-{
- return 0;
-}
-
void eListboxStringContent::setSize(const eSize &size)
{
m_itemsize = size;
@@ -316,11 +315,6 @@ int eListboxPythonStringContent::size()
return PyList_Size(m_list);
}
-RESULT eListboxPythonStringContent::connectItemChanged(const Slot0<void> &itemChanged, ePtr<eConnection> &connection)
-{
- return 0;
-}
-
void eListboxPythonStringContent::setSize(const eSize &size)
{
m_itemsize = size;
diff --git a/lib/gui/elistboxcontent.h b/lib/gui/elistboxcontent.h
index 7ef60116..deea3000 100644
--- a/lib/gui/elistboxcontent.h
+++ b/lib/gui/elistboxcontent.h
@@ -55,8 +55,6 @@ protected:
void cursorRestore();
int size();
- RESULT connectItemChanged(const Slot0<void> &itemChanged, ePtr<eConnection> &connection);
-
// void setOutputDevice ? (for allocating colors, ...) .. requires some work, though
void setSize(const eSize &size);
diff --git a/lib/nav/core.cpp b/lib/nav/core.cpp
index 72d3fc52..10d18e32 100644
--- a/lib/nav/core.cpp
+++ b/lib/nav/core.cpp
@@ -102,7 +102,7 @@ RESULT eNavigation::pause(int dop)
if (!m_runningService)
return -1;
ePtr<iPauseableService> p;
- if (m_runningService->getIPausableService(p))
+ if (m_runningService->pause(p))
return -2;
if (dop)
return p->pause();
diff --git a/lib/python/enigma_python.i b/lib/python/enigma_python.i
index 8e55b74f..4bd0cdcb 100644
--- a/lib/python/enigma_python.i
+++ b/lib/python/enigma_python.i
@@ -66,6 +66,7 @@ extern PSignal1<void,int> &keyPressedSignal();
%}
RefCount(eListboxPythonStringContent)
+RefCount(eListboxServiceContent)
#define DEBUG
%include "stl.i"
diff --git a/lib/service/iservice.h b/lib/service/iservice.h
index 01c61fcc..5a8a0627 100644
--- a/lib/service/iservice.h
+++ b/lib/service/iservice.h
@@ -147,13 +147,21 @@ public:
large list, provided that no state information is nessesary to deliver
the required information. Anyway - ref *must* be the same as the argument
to the info() or getIServiceInformation call! */
-class iServiceInformation: public iObject
+class iStaticServiceInformation: public iObject
{
public:
virtual RESULT getName(const eServiceReference &ref, std::string &name)=0;
};
-typedef ePtr<iServiceInformation> iServiceInformationPtr;
+TEMPLATE_TYPEDEF(ePtr<iStaticServiceInformation>, iStaticServiceInformationPtr);
+
+class iServiceInformation: public iStaticServiceInformation
+{
+public:
+
+};
+
+TEMPLATE_TYPEDEF(ePtr<iServiceInformation>, iServiceInformationPtr);
class iPauseableService: public iObject
{
@@ -162,7 +170,7 @@ public:
virtual RESULT unpause()=0;
};
-typedef ePtr<iPauseableService> iPauseableServicePtr;
+TEMPLATE_TYPEDEF(ePtr<iPauseableService>, iPauseableServicePtr);
class iPlayableService: public iObject
{
@@ -176,8 +184,8 @@ public:
virtual RESULT connectEvent(const Slot2<void,iPlayableService*,int> &event, ePtr<eConnection> &connection)=0;
virtual RESULT start()=0;
virtual RESULT stop()=0;
- virtual RESULT getIPausableService(ePtr<iPauseableService> &ptr)=0;
- virtual RESULT getIServiceInformation(ePtr<iServiceInformation> &ptr)=0;
+ virtual RESULT pause(ePtr<iPauseableService> &ptr)=0;
+ virtual RESULT info(ePtr<iServiceInformation> &ptr)=0;
};
TEMPLATE_TYPEDEF(ePtr<iPlayableService>, iPlayableServicePtr);
@@ -189,10 +197,9 @@ public:
virtual RESULT stop()=0;
};
-typedef ePtr<iRecordableService> iRecordableServicePtr;
+TEMPLATE_TYPEDEF(ePtr<iRecordableService>, iRecordableServicePtr);
// TEMPLATE_TYPEDEF(std::list<eServiceReference>, eServiceReferenceList);
-typedef std::list<eServiceReference> eServiceReferenceList;
class iListableService: public iObject
{
@@ -208,9 +215,9 @@ public:
virtual RESULT play(const eServiceReference &, ePtr<iPlayableService> &ptr)=0;
virtual RESULT record(const eServiceReference &, ePtr<iRecordableService> &ptr)=0;
virtual RESULT list(const eServiceReference &, ePtr<iListableService> &ptr)=0;
- virtual RESULT info(const eServiceReference &, ePtr<iServiceInformation> &ptr);
+ virtual RESULT info(const eServiceReference &, ePtr<iStaticServiceInformation> &ptr);
};
-typedef ePtr<iServiceHandler> iServiceHandlerPtr;
+TEMPLATE_TYPEDEF(ePtr<iServiceHandler>, iServiceHandlerPtr);
#endif
diff --git a/lib/service/listboxservice.cpp b/lib/service/listboxservice.cpp
new file mode 100644
index 00000000..011c96ca
--- /dev/null
+++ b/lib/service/listboxservice.cpp
@@ -0,0 +1,134 @@
+#include <lib/service/listboxservice.h>
+#include <lib/service/service.h>
+
+void eListboxServiceContent::setRoot(const eServiceReference &root)
+{
+ m_root = root;
+
+ assert(m_service_center);
+
+ ePtr<iListableService> lst;
+ if (m_service_center->list(m_root, lst))
+ eDebug("no list available!");
+ else
+ if (lst->getContent(m_list))
+ eDebug("getContent failed");
+
+ m_size = m_list.size();
+ cursorHome();
+}
+
+DEFINE_REF(eListboxServiceContent);
+
+eListboxServiceContent::eListboxServiceContent()
+{
+ m_size = 0;
+ cursorHome();
+ eServiceCenter::getInstance(m_service_center);
+}
+
+void eListboxServiceContent::cursorHome()
+{
+ m_cursor = m_list.begin();
+ m_cursor_number = 0;
+}
+
+void eListboxServiceContent::cursorEnd()
+{
+ m_cursor = m_list.end();
+ m_cursor_number = m_size;
+}
+
+int eListboxServiceContent::cursorMove(int count)
+{
+ if (count > 0)
+ {
+ while (count && (m_cursor != m_list.end()))
+ {
+ ++m_cursor;
+ ++m_cursor_number;
+ --count;
+ }
+ } else if (count < 0)
+ {
+ while (count && (m_cursor != m_list.begin()))
+ {
+ --m_cursor;
+ --m_cursor_number;
+ ++count;
+ }
+ }
+
+ return 0;
+}
+
+int eListboxServiceContent::cursorValid()
+{
+ return m_cursor != m_list.end();
+}
+
+int eListboxServiceContent::cursorSet(int n)
+{
+ cursorHome();
+ cursorMove(n);
+
+ return 0;
+}
+
+int eListboxServiceContent::cursorGet()
+{
+ return m_cursor_number;
+}
+
+void eListboxServiceContent::cursorSave()
+{
+ m_saved_cursor = m_cursor;
+ m_saved_cursor_number = m_cursor_number;
+}
+
+void eListboxServiceContent::cursorRestore()
+{
+ m_cursor = m_saved_cursor;
+ m_cursor_number = m_saved_cursor_number;
+}
+
+int eListboxServiceContent::size()
+{
+ return m_size;
+}
+
+void eListboxServiceContent::setSize(const eSize &size)
+{
+ m_itemsize = size;
+}
+
+void eListboxServiceContent::paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected)
+{
+ ePtr<gFont> fnt = new gFont("Arial", 14);
+ painter.clip(eRect(offset, m_itemsize));
+ style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal);
+ painter.clear();
+
+ if (cursorValid())
+ {
+ painter.setFont(fnt);
+
+ ePoint text_offset = offset + (selected ? ePoint(2, 2) : ePoint(1, 1));
+
+ /* get name of service */
+ ePtr<iStaticServiceInformation> service_info;
+ m_service_center->info(*m_cursor, service_info);
+ std::string name = "<n/a>";
+
+ if (service_info)
+ service_info->getName(*m_cursor, name);
+
+ painter.renderText(eRect(text_offset, m_itemsize), name);
+
+ if (selected)
+ style.drawFrame(painter, eRect(offset, m_itemsize), eWindowStyle::frameListboxEntry);
+ }
+
+ painter.clippop();
+}
+
diff --git a/lib/service/listboxservice.h b/lib/service/listboxservice.h
new file mode 100644
index 00000000..45e5ba71
--- /dev/null
+++ b/lib/service/listboxservice.h
@@ -0,0 +1,48 @@
+#ifndef __lib_service_listboxservice_h
+#define __lib_service_listboxservice_h
+
+#include <lib/gui/elistbox.h>
+#include <lib/service/iservice.h>
+
+class eServiceCenter;
+
+class eListboxServiceContent: public virtual iListboxContent
+{
+ DECLARE_REF;
+public:
+ eListboxServiceContent();
+ void setRoot(const eServiceReference &ref);
+
+protected:
+ void cursorHome();
+ void cursorEnd();
+ int cursorMove(int count=1);
+ int cursorValid();
+ int cursorSet(int n);
+ int cursorGet();
+
+ void cursorSave();
+ void cursorRestore();
+ int size();
+
+ // void setOutputDevice ? (for allocating colors, ...) .. requires some work, though
+ void setSize(const eSize &size);
+
+ /* the following functions always refer to the selected item */
+ void paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected);
+private:
+ typedef std::list<eServiceReference> list;
+
+ list m_list;
+ list::iterator m_cursor, m_saved_cursor;
+
+ int m_cursor_number, m_saved_cursor_number;
+ int m_size;
+
+ eSize m_itemsize;
+ ePtr<eServiceCenter> m_service_center;
+
+ eServiceReference m_root;
+};
+
+#endif
diff --git a/lib/service/service.cpp b/lib/service/service.cpp
index 40cbf8df..75d4987b 100644
--- a/lib/service/service.cpp
+++ b/lib/service/service.cpp
@@ -90,7 +90,7 @@ RESULT eServiceCenter::list(const eServiceReference &ref, ePtr<iListableService>
return i->second->list(ref, ptr);
}
-RESULT eServiceCenter::info(const eServiceReference &ref, ePtr<iServiceInformation> &ptr)
+RESULT eServiceCenter::info(const eServiceReference &ref, ePtr<iStaticServiceInformation> &ptr)
{
std::map<int,ePtr<iServiceHandler> >::iterator i = handler.find(ref.type);
if (i == handler.end())
@@ -114,7 +114,7 @@ RESULT eServiceCenter::removeServiceFactory(int id)
}
/* default handlers */
-RESULT iServiceHandler::info(const eServiceReference &, ePtr<iServiceInformation> &ptr)
+RESULT iServiceHandler::info(const eServiceReference &, ePtr<iStaticServiceInformation> &ptr)
{
ptr = 0;
return -1;
diff --git a/lib/service/service.h b/lib/service/service.h
index c3f0c482..9f4b4560 100644
--- a/lib/service/service.h
+++ b/lib/service/service.h
@@ -23,7 +23,7 @@ public:
RESULT play(const eServiceReference &, iPlayableServicePtr &ptr);
RESULT record(const eServiceReference &, iRecordableServicePtr &ptr);
RESULT list(const eServiceReference &, iListableServicePtr &ptr);
- RESULT info(const eServiceReference &, ePtr<iServiceInformation> &ptr);
+ RESULT info(const eServiceReference &, ePtr<iStaticServiceInformation> &ptr);
// eServiceCenter
static RESULT getInstance(eServiceCenterPtr &ptr) { ptr = instance; return 0; }
diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp
index 0c6d72bd..d1ebeb30 100644
--- a/lib/service/servicedvb.cpp
+++ b/lib/service/servicedvb.cpp
@@ -6,6 +6,9 @@
#include <lib/base/init_num.h>
#include <lib/base/init.h>
+#include <lib/dvb/dvb.h>
+#include <lib/dvb/db.h>
+
DEFINE_REF(eServiceFactoryDVB)
eServiceFactoryDVB::eServiceFactoryDVB()
@@ -26,6 +29,53 @@ eServiceFactoryDVB::~eServiceFactoryDVB()
sc->removeServiceFactory(eServiceFactoryDVB::id);
}
+DEFINE_REF(eDVBServiceList);
+
+eDVBServiceList::eDVBServiceList(const eServiceReference &parent): m_parent(parent)
+{
+}
+
+eDVBServiceList::~eDVBServiceList()
+{
+}
+
+RESULT eDVBServiceList::getContent(std::list<eServiceReference> &list)
+{
+ ePtr<iDVBChannelList> db;
+ ePtr<eDVBResourceManager> res;
+
+ int err;
+ if ((err = eDVBResourceManager::getInstance(res)) != 0)
+ {
+ eDebug("no resource manager");
+ return err;
+ }
+ if ((err = res->getChannelList(db)) != 0)
+ {
+ eDebug("no channel list");
+ return err;
+ }
+
+ ePtr<iDVBChannelListQuery> query;
+
+ ePtr<eDVBChannelQuery> q;
+
+ if (m_parent.path.size())
+ eDVBChannelQuery::compile(q, m_parent.path);
+
+ if ((err = db->startQuery(query, q)) != 0)
+ {
+ eDebug("startQuery failed");
+ return err;
+ }
+
+ eServiceReferenceDVB ref;
+
+ while (!query->getNextResult(ref))
+ list.push_back(ref);
+ return 0;
+}
+
RESULT eServiceFactoryDVB::play(const eServiceReference &ref, ePtr<iPlayableService> &ptr)
{
// check resources...
@@ -39,10 +89,46 @@ RESULT eServiceFactoryDVB::record(const eServiceReference &, ePtr<iRecordableSer
return -1;
}
-RESULT eServiceFactoryDVB::list(const eServiceReference &, ePtr<iListableService> &ptr)
+RESULT eServiceFactoryDVB::list(const eServiceReference &ref, ePtr<iListableService> &ptr)
+{
+ ptr = new eDVBServiceList(ref);
+ return 0;
+}
+
+RESULT eServiceFactoryDVB::info(const eServiceReference &ref, ePtr<iStaticServiceInformation> &ptr)
{
ptr = 0;
- return -1;
+ // TODO: handle the listing itself
+ // if (ref.... == -1) .. return "... bouquets ...";
+ // could be also done in another serviceFactory (with seperate ID) to seperate actual services and lists
+ // TODO: cache
+ ePtr<iDVBChannelList> db;
+ ePtr<eDVBResourceManager> res;
+
+ int err;
+ if ((err = eDVBResourceManager::getInstance(res)) != 0)
+ {
+ eDebug("no resource manager");
+ return err;
+ }
+ if ((err = res->getChannelList(db)) != 0)
+ {
+ eDebug("no channel list");
+ return err;
+ }
+
+ ePtr<eDVBService> service;
+
+ /* we are sure to have a ..DVB reference as the info() call was forwarded here according to it's ID. */
+ if ((err = db->getService((eServiceReferenceDVB&)ref, service)) != 0)
+ {
+ eDebug("getService failed!");
+ return err;
+ }
+
+ /* eDVBService has the iStaticServiceInformation interface, so we pass it here. */
+ ptr = service;
+ return 0;
}
eDVBServicePlay::eDVBServicePlay(const eServiceReference &ref):
@@ -145,14 +231,14 @@ RESULT eDVBServicePlay::connectEvent(const Slot2<void,iPlayableService*,int> &ev
return -1;
}
-RESULT eDVBServicePlay::getIPausableService(ePtr<iPauseableService> &ptr)
+RESULT eDVBServicePlay::pause(ePtr<iPauseableService> &ptr)
{
// not yet possible, maybe later...
ptr = 0;
return -1;
}
-RESULT eDVBServicePlay::getIServiceInformation(ePtr<iServiceInformation> &ptr)
+RESULT eDVBServicePlay::info(ePtr<iServiceInformation> &ptr)
{
ptr = this;
return 0;
diff --git a/lib/service/servicedvb.h b/lib/service/servicedvb.h
index c54eb5c0..94659ed1 100644
--- a/lib/service/servicedvb.h
+++ b/lib/service/servicedvb.h
@@ -18,6 +18,19 @@ public:
RESULT play(const eServiceReference &, ePtr<iPlayableService> &ptr);
RESULT record(const eServiceReference &, ePtr<iRecordableService> &ptr);
RESULT list(const eServiceReference &, ePtr<iListableService> &ptr);
+ RESULT info(const eServiceReference &, ePtr<iStaticServiceInformation> &ptr);
+};
+
+class eDVBServiceList: public iListableService
+{
+DECLARE_REF;
+private:
+ eServiceReference m_parent;
+ friend class eServiceFactoryDVB;
+ eDVBServiceList(const eServiceReference &parent);
+public:
+ virtual ~eDVBServiceList();
+ RESULT getContent(std::list<eServiceReference> &list);
};
class eDVBServicePlay: public iPlayableService, public Object, public iServiceInformation
@@ -41,8 +54,8 @@ public:
RESULT connectEvent(const Slot2<void,iPlayableService*,int> &event, ePtr<eConnection> &connection);
RESULT start();
RESULT stop();
- RESULT getIPausableService(ePtr<iPauseableService> &ptr);
- RESULT getIServiceInformation(ePtr<iServiceInformation> &ptr);
+ RESULT pause(ePtr<iPauseableService> &ptr);
+ RESULT info(ePtr<iServiceInformation> &ptr);
// iServiceInformation
RESULT getName(const eServiceReference &ref, std::string &name);
diff --git a/lib/service/servicefs.cpp b/lib/service/servicefs.cpp
index de75cc67..5a945679 100644
--- a/lib/service/servicefs.cpp
+++ b/lib/service/servicefs.cpp
@@ -12,16 +12,16 @@
#include <unistd.h>
-class eServiceFSInformation: public iServiceInformation
+class eStaticServiceFSInformation: public iStaticServiceInformation
{
DECLARE_REF;
public:
RESULT getName(const eServiceReference &ref, std::string &name);
};
-DEFINE_REF(eServiceFSInformation);
+DEFINE_REF(eStaticServiceFSInformation);
-RESULT eServiceFSInformation::getName(const eServiceReference &ref, std::string &name)
+RESULT eStaticServiceFSInformation::getName(const eServiceReference &ref, std::string &name)
{
name = ref.path;
}
@@ -36,7 +36,7 @@ eServiceFactoryFS::eServiceFactoryFS()
if (sc)
sc->addServiceFactory(eServiceFactoryFS::id, this);
- m_service_information = new eServiceFSInformation();
+ m_service_information = new eStaticServiceFSInformation();
}
eServiceFactoryFS::~eServiceFactoryFS()
@@ -69,7 +69,7 @@ RESULT eServiceFactoryFS::list(const eServiceReference &ref, ePtr<iListableServi
return 0;
}
-RESULT eServiceFactoryFS::info(const eServiceReference &ref, ePtr<iServiceInformation> &ptr)
+RESULT eServiceFactoryFS::info(const eServiceReference &ref, ePtr<iStaticServiceInformation> &ptr)
{
ptr = m_service_information;
return 0;
diff --git a/lib/service/servicefs.h b/lib/service/servicefs.h
index d8e77609..337ff620 100644
--- a/lib/service/servicefs.h
+++ b/lib/service/servicefs.h
@@ -15,9 +15,9 @@ public:
RESULT play(const eServiceReference &, ePtr<iPlayableService> &ptr);
RESULT record(const eServiceReference &, ePtr<iRecordableService> &ptr);
RESULT list(const eServiceReference &, ePtr<iListableService> &ptr);
- RESULT info(const eServiceReference &, ePtr<iServiceInformation> &ptr);
+ RESULT info(const eServiceReference &, ePtr<iStaticServiceInformation> &ptr);
private:
- ePtr<iServiceInformation> m_service_information;
+ ePtr<iStaticServiceInformation> m_service_information;
};
class eServiceFS: public iListableService
diff --git a/lib/service/servicemp3.cpp b/lib/service/servicemp3.cpp
index 1f883f94..a5f1b773 100644
--- a/lib/service/servicemp3.cpp
+++ b/lib/service/servicemp3.cpp
@@ -17,7 +17,7 @@ eServiceFactoryMP3::eServiceFactoryMP3()
if (sc)
sc->addServiceFactory(eServiceFactoryMP3::id, this);
- m_service_info = new eServiceMP3Info();
+ m_service_info = new eStaticServiceMP3Info();
}
eServiceFactoryMP3::~eServiceFactoryMP3()
@@ -51,29 +51,29 @@ RESULT eServiceFactoryMP3::list(const eServiceReference &, ePtr<iListableService
return -1;
}
-RESULT eServiceFactoryMP3::info(const eServiceReference &ref, ePtr<iServiceInformation> &ptr)
+RESULT eServiceFactoryMP3::info(const eServiceReference &ref, ePtr<iStaticServiceInformation> &ptr)
{
ptr = m_service_info;
return 0;
}
-// eServiceMP3Info
+// eStaticServiceMP3Info
-// eServiceMP3Info is seperated from eServiceMP3 to give information
+// eStaticServiceMP3Info is seperated from eServiceMP3 to give information
// about unopened files.
-// probably eServiceMP3 should use this class as well, and eServiceMP3Info
+// probably eServiceMP3 should use this class as well, and eStaticServiceMP3Info
// should have a database backend where ID3-files etc. are cached.
// this would allow listing the mp3 database based on certain filters.
-DEFINE_REF(eServiceMP3Info)
+DEFINE_REF(eStaticServiceMP3Info)
-eServiceMP3Info::eServiceMP3Info()
+eStaticServiceMP3Info::eStaticServiceMP3Info()
{
}
-RESULT eServiceMP3Info::getName(const eServiceReference &ref, std::string &name)
+RESULT eStaticServiceMP3Info::getName(const eServiceReference &ref, std::string &name)
{
name = "MP3 file: " + ref.path;
return 0;
@@ -134,13 +134,13 @@ RESULT eServiceMP3::stop()
return 0;
}
-RESULT eServiceMP3::getIPausableService(ePtr<iPauseableService> &ptr) { ptr=this; return 0; }
+RESULT eServiceMP3::pause(ePtr<iPauseableService> &ptr) { ptr=this; return 0; }
// iPausableService
RESULT eServiceMP3::pause() { printf("mp3 pauses!\n"); return 0; }
RESULT eServiceMP3::unpause() { printf("mp3 unpauses!\n"); return 0; }
-RESULT eServiceMP3::getIServiceInformation(ePtr<iServiceInformation>&i) { i = this; return 0; }
+RESULT eServiceMP3::info(ePtr<iServiceInformation>&i) { i = this; return 0; }
RESULT eServiceMP3::getName(const eServiceReference &ref, std::string &name)
{
diff --git a/lib/service/servicemp3.h b/lib/service/servicemp3.h
index 7ef84025..40287ae5 100644
--- a/lib/service/servicemp3.h
+++ b/lib/service/servicemp3.h
@@ -3,7 +3,7 @@
#include <lib/service/iservice.h>
-class eServiceMP3Info ;
+class eStaticServiceMP3Info;
class eServiceFactoryMP3: public iServiceHandler
{
@@ -17,16 +17,16 @@ public:
RESULT play(const eServiceReference &, ePtr<iPlayableService> &ptr);
RESULT record(const eServiceReference &, ePtr<iRecordableService> &ptr);
RESULT list(const eServiceReference &, ePtr<iListableService> &ptr);
- RESULT info(const eServiceReference &, ePtr<iServiceInformation> &ptr);
+ RESULT info(const eServiceReference &, ePtr<iStaticServiceInformation> &ptr);
private:
- ePtr<eServiceMP3Info> m_service_info;
+ ePtr<eStaticServiceMP3Info> m_service_info;
};
-class eServiceMP3Info: public iServiceInformation
+class eStaticServiceMP3Info: public iServiceInformation
{
DECLARE_REF;
friend class eServiceFactoryMP3;
- eServiceMP3Info();
+ eStaticServiceMP3Info();
public:
RESULT getName(const eServiceReference &ref, std::string &name);
};
@@ -53,13 +53,13 @@ public:
RESULT connectEvent(const Slot2<void,iPlayableService*,int> &event, ePtr<eConnection> &connection);
RESULT start();
RESULT stop();
- RESULT getIPausableService(ePtr<iPauseableService> &ptr);
+ RESULT pause(ePtr<iPauseableService> &ptr);
// iPausableService
RESULT pause();
RESULT unpause();
- RESULT getIServiceInformation(ePtr<iServiceInformation>&);
+ RESULT info(ePtr<iServiceInformation>&);
// iServiceInformation
RESULT getName(const eServiceReference &ref, std::string &name);
diff --git a/mytest.py b/mytest.py
index e257f11a..2f6cecfd 100644
--- a/mytest.py
+++ b/mytest.py
@@ -32,7 +32,7 @@ def dump(dir, p = ""):
components = {}
# do global
-screens["global"](components)
+doGlobal(components)
# display
@@ -84,15 +84,15 @@ class Session:
if self.desktop != None:
self.currentWindow = wnd = eWindow(self.desktop)
- wnd.setTitle("Screen from python!")
- wnd.move(ePoint(300, 100))
- wnd.resize(eSize(300, 300))
+# wnd.setTitle("Screen from python!")
+# wnd.move(ePoint(300, 100))
+# wnd.resize(eSize(300, 300))
gui = GUIOutputDevice()
gui.parent = wnd
gui.create(self.currentDialog)
- applyGUIskin(self.currentDialog, None, screen.__class__.__name__)
+ applyGUIskin(self.currentDialog, wnd, None, screen.__class__.__name__)
wnd.show()
else:
@@ -102,9 +102,15 @@ class Session:
# print "code " + str(code)
if code == 32:
self.currentDialog.data["okbutton"]["instance"].push()
+
+ if code == 33:
+ self.currentDialog.data["channelSwitcher"]["instance"].push()
if code >= 0x30 and code <= 0x39:
- self.currentDialog.data["menu"]["instance"].moveSelection(code - 0x31)
+ try:
+ self.currentDialog.data["menu"]["instance"].moveSelection(code - 0x31)
+ except:
+ self.currentDialog.data["list"]["instance"].moveSelection(code - 0x31)
def close(self):
self.delayTimer.start(0, 1)
@@ -113,21 +119,8 @@ def runScreenTest():
session = Session()
session.desktop = getDesktop()
-# session.open(screens["clockDisplay"](components["clock"]))
- session.open(screens["testDialog"]())
-
- # simple reason for this helper function: we want to call the currently
- # active "okbutton", even when we changed the dialog
- #
- # more complicated reason: we don't want to hold a reference.
-# def blub():
-# session.currentDialog.data["okbutton"]["instance"].push()
-# session.currentDialog["okbutton"].setText("hello!")
-#
-# tmr = eTimer()
-# CONNECT(tmr.timeout, blub)
-# tmr.start(4000, 0)
-#
+ session.open(infoBar())
+
CONNECT(keyPressedSignal(), session.keyEvent)
runMainloop()
diff --git a/screens.py b/screens.py
index 6aa88e80..9148f25f 100644
--- a/screens.py
+++ b/screens.py
@@ -15,15 +15,8 @@ class Screen(dict, HTMLSkin, GUISkin):
def close(self, retval=None):
self.session.close()
-# a test dialog
-class testDialog(Screen):
- def testDialogClick(self):
- selection = self["menu"].getCurrent()
- selection[1]()
+class mainMenu(Screen):
- def goMain(self):
- self.session.open(screens["mainMenu"]())
-
def goEmu(self):
self["title"].setText("EMUs ARE ILLEGAL AND NOT SUPPORTED!")
@@ -34,35 +27,61 @@ class testDialog(Screen):
self["title"].setText("HDTV GREEN FLASHES: ENABLED")
def goClock(self):
- self.session.open(screens["clockDisplay"](Clock()))
+ self.session.open(clockDisplay(Clock()))
+
+ def okbuttonClick(self):
+ selection = self["menu"].getCurrent()
+ selection[1]()
def __init__(self):
GUISkin.__init__(self)
b = Button("ok")
- b.onClick = [ self.testDialogClick ]
+
+ b.onClick = [ self.okbuttonClick ]
self["okbutton"] = b
- self["title"] = Header("Test Dialog - press ok to leave!")
-# self["menu"] = MenuList(
-# [
-# ("MAIN MENU", self.goMain),
-# ("EMU SETUP", self.goEmu),
-# ("TIMESHIFT SETUP", self.goTimeshift),
-# ("HDTV PIP CONFIG", self.goHDTV),
-# ("wie spaet ists?!", self.goClock)
-# ])
- self["menu"] = ServiceList()
-
- self["menu"].setRoot(eServiceReference("2:0:1:0:0:0:0:0:0:0:/"))
+ self["title"] = Header("Main Menu! - press ok to leave!")
+ self["menu"] = MenuList(
+ [
+ ("EMU SETUP", self.goEmu),
+ ("TIMESHIFT SETUP", self.goTimeshift),
+ ("HDTV PIP CONFIG", self.goHDTV),
+ ("wie spaet ists?!", self.goClock)
+ ])
-class mainMenu(Screen):
+#class mainMenu(Screen):
+# def __init__(self):
+# GUISkin.__init__(self)
+#
+# self["title"] = Header("this is the\nMAIN MENU !!!");
+# self["okbutton"] = Button("ok")
+# self["okbutton"].onClick = [ self.close ]
+
+class channelSelection(Screen):
def __init__(self):
GUISkin.__init__(self)
- self["title"] = Header("this is the\nMAIN MENU !!!");
- self["okbutton"] = Button("ok")
- self["okbutton"].onClick = [ self.close ]
+ self["list"] = ServiceList()
+ self["list"].setRoot(eServiceReference("1:0:1:0:0:0:0:0:0:0:PREMIERE"))
+
+ self["okbutton"] = Button("ok", [self.channelSelected, self.close])
+
+ def channelSelected(self):
+# print "channel selected!"
+ pass
+class infoBar(Screen):
+ def __init__(self):
+ GUISkin.__init__(self)
+
+ self["channelSwitcher"] = Button("switch Channel", [self.switchChannel])
+ self["okbutton"] = Button("mainMenu", [self.mainMenu])
+ def mainMenu(self):
+ self.session.open(mainMenu())
+
+ def switchChannel(self):
+ self.session.open(channelSelection())
+
# a clock display dialog
class clockDisplay(Screen):
def okbutton(self):
@@ -76,10 +95,3 @@ class clockDisplay(Screen):
self["okbutton"] = b
self["title"] = Header("clock dialog: here you see the current uhrzeit!")
-# defined screens (evtl. kann man sich das sparen, ich seh den sinn gerade nicht mehr)
-screens = {
- "global": doGlobal,
- "testDialog": testDialog,
- "clockDisplay": clockDisplay ,
- "mainMenu": mainMenu }
-
diff --git a/skin.py b/skin.py
index 9fbdfeb4..687d8085 100644
--- a/skin.py
+++ b/skin.py
@@ -13,7 +13,7 @@ def dump(x, i=0):
dom = xml.dom.minidom.parseString(
"""
<skin>
- <screen name="testDialog">
+ <screen name="mainMenu" position="300,100" size="300,300" title="real main menu">
<widget name="okbutton" position="10,190" size="280,50" />
<widget name="title" position="10,10" size="280,20" />
<widget name="menu" position="10,30" size="280,140" />
@@ -23,9 +23,12 @@ dom = xml.dom.minidom.parseString(
<widget name="title" position="10,120" size="280,50" />
<widget name="theClock" position="10,60" size="280,50" />
</screen>
- <screen name="mainMenu" position="300,100" size="300,300">
- <widget name="title" position="10,10" size="280,80" />
+ <screen name="infoBar" position="100,100" size="500,400" title="InfoBar">
+ <widget name="channelSwitcher" position="10,190" size="280,50" />
+ </screen>
+ <screen name="channelSelection" position="300,100" size="300,300" title="Channel Selection">
<widget name="okbutton" position="10,190" size="280,50" />
+ <widget name="list" position="10,30" size="280,140" />
</screen>
</skin>
""")
@@ -45,15 +48,23 @@ def applyAttributes(guiObject, node):
for p in range(node.attributes.length):
a = node.attributes.item(p)
+ # convert to string (was: unicode)
+ attrib = str(a.name)
+ # TODO: proper UTF8 translation?! (for value)
+ # TODO: localization? as in e1?
+ value = str(a.value)
+
# and set attributes
- if a.name == 'position':
- guiObject.move(parsePosition(a.value))
- elif a.name == 'size':
- guiObject.resize(parseSize(a.value))
- elif a.name != 'name':
- print "unsupported attribute " + a.name
+ if attrib == 'position':
+ guiObject.move(parsePosition(value))
+ elif attrib == 'size':
+ guiObject.resize(parseSize(value))
+ elif attrib == 'title':
+ guiObject.setTitle(value)
+ elif attrib != 'name':
+ print "unsupported attribute " + attrib + "=" + value
-def applyGUIskin(screen, skin, name):
+def applyGUIskin(screen, parent, skin, name):
myscreen = None
@@ -67,6 +78,8 @@ def applyGUIskin(screen, skin, name):
assert myscreen != None, "no skin for screen '" + name + "' found!"
+ applyAttributes(parent, myscreen)
+
# now walk all widgets
for widget in myscreen.getElementsByTagName("widget"):
wname = widget.getAttribute('name')