From 4a30985b50d2cf2647ccb05d87a42a77db728a36 Mon Sep 17 00:00:00 2001 From: Christian Weiske Date: Wed, 2 Dec 2009 18:20:14 +0100 Subject: [PATCH] update to enigma2-plugin-skins-avalon_3.0_mipsel --- CONTROL/control | 10 +-- .../python/Components/Renderer/SmartLabel.py | 71 ++++++++++++++++++ usr/share/enigma2/Avalon_II/skin.xml | 15 +--- .../enigma2/Avalon_II/window/ex_label.png | Bin 0 -> 646 bytes .../enigma2/Avalon_II/window/infobar.png | Bin 2693 -> 2926 bytes 5 files changed, 80 insertions(+), 16 deletions(-) create mode 100644 usr/lib/enigma2/python/Components/Renderer/SmartLabel.py create mode 100644 usr/share/enigma2/Avalon_II/window/ex_label.png diff --git a/CONTROL/control b/CONTROL/control index 158453a..0cc8280 100644 --- a/CONTROL/control +++ b/CONTROL/control @@ -1,11 +1,11 @@ Package: enigma2-plugin-skins-avalon -Version: 2.1-r0 -Description: Avalon II skin by vali +Version: 3.0 +Description: Avalon II skin by Vali Section: extra Priority: optional -Maintainer: vali +Maintainer: vali Architecture: mipsel -OE: avalon-2.1 +OE: avalon_II.3.0 Homepage: www.unknown.at Depends: -Source: ftp://7025/vali/Avalon_II_CVS_100.tar.gz +Source: ftp://7025/vali/Avalon_II_CVS.tar.gz diff --git a/usr/lib/enigma2/python/Components/Renderer/SmartLabel.py b/usr/lib/enigma2/python/Components/Renderer/SmartLabel.py new file mode 100644 index 0000000..2374a49 --- /dev/null +++ b/usr/lib/enigma2/python/Components/Renderer/SmartLabel.py @@ -0,0 +1,71 @@ +from Components.VariableText import VariableText +from enigma import eLabel, iServiceInformation +from Renderer import Renderer + + + +class SmartLabel(Renderer, VariableText): + def __init__(self): + Renderer.__init__(self) + VariableText.__init__(self) + + GUI_WIDGET = eLabel + + def changed(self, what): + service = self.source.service + info = service and service.info() + if info is not None: + if (info.getInfo(iServiceInformation.sIsCrypted) == 1): + decID = "" + decFrom = "" + xresol = 0 + yresol = 0 + try: + f = open("/tmp/ecm.info", "r") + flines = f.readlines() + f.close() + for cell in flines: + if ("caid" in cell)or("CAID" in cell)or("CaID" in cell)or("caID" in cell)or("Caid" in cell): + cellmembers = cell.split() + for x in range(len(cellmembers)): + if ("caid" in cellmembers[x])or("CAID" in cellmembers[x])or("CaID" in cellmembers[x])or("caID" in cellmembers[x])or("Caid" in cellmembers[x]): + if x<(len(cellmembers)-1): + if cellmembers[x+1] != "0x000": + decID = cellmembers[x+1] + decID = decID .lstrip("0x") + decID = decID.strip(",;.:-*_<>()[]{}") + if (len(decID)<4): + decID = decID + "0" + else: + decID = "" + if decID != "": + idnames = ("0100,01FF,SE","0500,05FF,VI","0600,06FF,IR","0900,09FF,NDS","0B00,0BFF,CO","0D00,0DFF,CW","1700,17FF,BC","1800,18FF,NA") + for idline in idnames: + IDlist = idline.split(",") + try: + if (int(decID,16)>=int(IDlist[0],16)) and (int(decID,16)<=int(IDlist[1],16)): + decID = IDlist[2] + " " + decID + break + except: + pass + for cell in flines: + if ("using:" in cell) or ("source:" in cell): + cellmembers = cell.split() + for x in range(len(cellmembers)): + if ("using:" in cellmembers[x]) or ("source:" in cellmembers[x]): + if x<(len(cellmembers)-1): + if cellmembers[x+1] != "fta": + decFrom = cellmembers[x+1] + else: + decFrom = "" + except: + pass + self.text = decFrom + " " + decID + else: + xresol = info.getInfo(iServiceInformation.sVideoWidth) + yresol = info.getInfo(iServiceInformation.sVideoHeight) + if xresol>0: + self.text = str(xresol) + " x " + str(yresol) + + + diff --git a/usr/share/enigma2/Avalon_II/skin.xml b/usr/share/enigma2/Avalon_II/skin.xml index dc31aa5..d7a69f6 100644 --- a/usr/share/enigma2/Avalon_II/skin.xml +++ b/usr/share/enigma2/Avalon_II/skin.xml @@ -34,7 +34,7 @@ - + @@ -157,9 +157,10 @@ <widget source="session.RecordState" render="Pixmap" pixmap="Avalon_II/icons/rec.png" position="187,440" zPosition="3" size="12,12" alphatest="on" transparent="1" > <convert type="ConditionalShowHide">Blink</convert> </widget> - <widget source="session.FrontendStatus" render="Label" position="587,437" zPosition="3" size="75,24" font="Regular;15" halign="right" foregroundColor="clText" transparent="1" backgroundColor="clBack"> + <widget source="session.FrontendStatus" render="Label" position="587,439" zPosition="3" size="75,24" font="Regular;15" halign="right" foregroundColor="clText" transparent="1" backgroundColor="clBack"> <convert type="FrontendInfo">SNRdB</convert> </widget> + <widget source="session.CurrentService" render="SmartLabel" position="572,419" zPosition="4" size="90,20" noWrap="1" halign="right" font="Regular;15" foregroundColor="clText" transparent="1" backgroundColor="clBack" /> </screen> @@ -779,7 +780,7 @@ </screen> <!-- Console --> <screen name="Console" position="80,87" size="560,430" title="Command execution..."> - <widget name="text" position="10,10" size="540,410" font="Regular;18" /> + <widget name="text" position="10,10" size="540,410" font="Console;20" /> </screen> <!-- Harddisk setup --> <screen name="HarddiskSetup" position="140,200" size="420,160" title="Harddisk"> @@ -796,14 +797,6 @@ <widget name="status" position="10,60" size="550,45" font="Regular;18" /> <widget name="slider" position="10,100" size="530,15" pixmap="Avalon_II/window/misc_p_bar_big.png" borderWidth="1" borderColor="#cccccc" /> </screen> - <!-- Nameserver --> - <screen name="NameserverSetup" position="130,140" size="460,330" title="Nameserver Setup"> - <ePixmap pixmap="Avalon_II/buttons/red.png" position="0,0" size="140,40" alphatest="on" /> - <ePixmap pixmap="Avalon_II/buttons/green.png" position="315,0" size="140,40" alphatest="on" /> - <widget name="red" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" transparent="1" /> - <widget name="green" position="315,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" transparent="1" /> - <widget name="config" position="10,50" size="440,175" scrollbarMode="showOnDemand" /> - </screen> <!-- Plugin browser --> <screen name="PluginBrowser" position="160,95" size="400,405" title="Plugin browser"> <ePixmap pixmap="Avalon_II/buttons/red-big.png" position="0,0" size="200,40" alphatest="on" /> diff --git a/usr/share/enigma2/Avalon_II/window/ex_label.png b/usr/share/enigma2/Avalon_II/window/ex_label.png new file mode 100644 index 0000000000000000000000000000000000000000..a74c7d865a0e038c8a75be35ac6b2150098a5275 GIT binary patch literal 646 zcmeAS@N?(olHy`uVBq!ia0y~yU_1k4OK~uRL`3Hp0V(EUC(jTL4vyOo{T~3i#sNMd zuK)l4=j4;dg}4P2fKmby`ut)#yuxY_?u|FU(}3CqOM?7@83dJ#T|(2!J7%t0wHpK) ze6O<uB{>T`B8wRqB0NBt(K))g04S(f;u=vBoS#-wo>-L1;G39Sl%JcLl9{OBmRXcq zo?nz*tYD&N@Jda+6zKW|o-U3d6?5LsI+%A@LBJ(hdUgQUkN^9(S)UfN?7i&G*Oqnf zCi{}*t`%i@+m$C9od3)u^HO-L@-&6l-`bvC+!=bqW50vIl2sRir)mj_?fqVU$@~$A zpW>IJ%U85`3Tn!;DNdT#s3ak}(C_)@$W+stChwNy`>f>nyEHg9NzM6k#HI-z%RA-- z`D7Z*O%v9;el}U{YO>e;6b6^9M*pifa}F)tzxtF<fAYkjz`0qMWAYvq>6=(8X};g^ zQmp5hiFK*x)WwsEc<M?e&T>xAc@oj*(`PixH?5<@(j?NYIMe9!)#Zxv6E!~n|Da+V zS1a{Nu;}crrF+wocmA??!W@*rzaY|m^7)&E6OXT1zw)4o;tXCxqkoc<zkL01_R2+< zGkR9s$u}>0L>|7mmCYed_@&OH$Y*a3H!S$O!z|N!L*#e0@~@Jw*?3k@Tix${ZiDQN zJn6H`d2b{yetG8k!qkGNzoyP9(vi-%{$OcVf~Z0^Lu7Hw7w@%<3r#+)`V@F>_0>JT z-my#Kw=Db~ZohtO+FGOClj2rBz4>$RiNyh5(x<k5X`4CIPx^v=o$AB4-!_KS03(*c M)78&qol`;+0J$v-f&c&j literal 0 HcmV?d00001 diff --git a/usr/share/enigma2/Avalon_II/window/infobar.png b/usr/share/enigma2/Avalon_II/window/infobar.png index ff5e1b4a8b2e8f55aba9c2dd7c1439ffa9f8b964..f62551075c36eb7cf27c5c1abd37205fbfb16b53 100644 GIT binary patch delta 2606 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 delta 2375 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 Q^9KT*x3;x<X6c^z7j;FNumAu6 -- 2.30.2