CDInfo/plugin.py: -replace Buttons and Lables through StaticText
[vuplus_dvbapp-plugin] / cdinfo / src / plugin.py
index 267eaf4..b68aac1 100644 (file)
@@ -3,8 +3,7 @@ from Components.MediaPlayer import PlayList
 import xml.dom.minidom
 from Plugins.Plugin import PluginDescriptor
 from Components.ActionMap import ActionMap
-from Components.Label import Label
-from Components.Button import Button
+from Components.Sources.StaticText import StaticText
 from Screens.Screen import Screen
 from Components.config import config, ConfigSubsection, ConfigInteger, ConfigYesNo, ConfigText, getConfigListEntry
 from Components.ConfigList import ConfigListScreen
@@ -21,16 +20,17 @@ config.plugins.CDInfo.CDDB_cache = ConfigYesNo(default = True)
 
 class CDInfo(ConfigListScreen,Screen):
        skin = """
-               <screen position="90,95" size="560,430" title="CDInfo" >
-                   <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
-                   <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
-                   <ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
-                   <widget name="key_red" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
-                   <widget name="key_green" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
-                   <widget name="key_blue" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
-                   <widget name="info" position="20,50" size="520,40" font="Regular;20" transparent="1" />
-                   <widget name="config" position="20,120" size="520,200" scrollbarMode="showOnDemand" />
-                   <widget name="info2" position="20,340" size="520,80" font="Regular;20" transparent="1" />
+               <screen name="CDInfo" position="center,center" size="560,440" title="CDInfo" >
+                       <ePixmap pixmap="skin_default/buttons/red.png" position="0,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/green.png" position="140,0" size="140,40" alphatest="on" />
+                       <ePixmap pixmap="skin_default/buttons/blue.png" position="420,0" size="140,40" alphatest="on" />
+                       <widget source="key_red" render="Label" position="0,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#9f1313" transparent="1" />
+                       <widget source="key_green" render="Label" position="140,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#1f771f" transparent="1" />
+                       <widget source="key_blue" render="Label" position="420,0" zPosition="1" size="140,40" font="Regular;20" halign="center" valign="center" backgroundColor="#18188b" transparent="1" />
+                       <widget source="info" render="Label" position="5,50" size="550,40" font="Regular;20" backgroundColor="#25062748" transparent="1" />
+                       <widget name="config" position="5,115" size="550,200" scrollbarMode="showOnDemand" />
+                       <ePixmap pixmap="skin_default/div-h.png" position="0,330" zPosition="1" size="560,2" />
+                       <widget source="info2" render="Label" position="5,350" size="520,80" font="Regular;20" backgroundColor="#25062748" transparent="1" />
                </screen>
                """
        
@@ -38,9 +38,9 @@ class CDInfo(ConfigListScreen,Screen):
                self.skin = CDInfo.skin
                Screen.__init__(self, session)
 
-               self["info"] = Label("Gather audio cd album information and track listing from CDDB (online database) and / or CD-Text (from medium).")
+               self["info"] = StaticText("Gather audio cd album information and track listing from CDDB (online database) and / or CD-Text (from medium).")
 
-               self["info2"] = Label("Playlist string variables: $i=track, $t=title, $a=artist\nCDDB query will not delay start of audio CD playback. The request will be sent asynchronously and playlist text will be updated when match was found.")
+               self["info2"] = StaticText("Playlist string variables: $i=track, $t=title, $a=artist\nCDDB query will not delay start of audio CD playback. The request will be sent asynchronously and playlist text will be updated when match was found.")
 
                self.list = []
                self.list.append(getConfigListEntry("Try to extract CDTEXT", config.plugins.CDInfo.useCDTEXT))
@@ -53,9 +53,9 @@ class CDInfo(ConfigListScreen,Screen):
                self.list.append(getConfigListEntry("store local CDDB cache", config.plugins.CDInfo.CDDB_cache))
 
                ConfigListScreen.__init__(self, self.list)
-               self["key_red"] = Button(_("cancel"))
-               self["key_green"] = Button(_("ok"))
-               self["key_blue"] = Button(_("defaults"))
+               self["key_red"] = StaticText(_("Cancel"))
+               self["key_green"] = StaticText(_("OK"))
+               self["key_blue"] = StaticText(_("Defaults"))
 
                self["setupActions"] = ActionMap(["SetupActions", "ColorActions"],
                {
@@ -67,6 +67,11 @@ class CDInfo(ConfigListScreen,Screen):
                    "ok": self.save,
                }, -2)
 
+               self.onLayoutFinish.append(self.layoutFinished)
+
+       def layoutFinished(self):
+               self.setTitle(_("CDInfo"))
+
        def save(self):
                for x in self["config"].list:
                        x[1].save()
@@ -102,11 +107,11 @@ class Query:
                self.albuminfo = {}
 
        def getText(self, nodelist):
-           rc = ""
-           for node in nodelist:
-               if node.nodeType == node.TEXT_NODE:
-                   rc = rc + node.data
-           return rc.encode("utf-8")
+               rc = ""
+               for node in nodelist:
+                       if node.nodeType == node.TEXT_NODE:
+                               rc = rc + node.data
+               return rc.encode("utf-8")
 
        def xml_parse_output(self,string):
                data = string.decode("utf-8","replace").replace('&',"&amp;").encode("ascii",'xmlcharrefreplace')
@@ -123,53 +128,53 @@ class Query:
                return True
 
        def xml_parse_query(self, queries_xml):
-           for queries in queries_xml:
-               if queries.nodeType == xml.dom.minidom.Element.nodeType:
-                   if queries.tagName == 'query':
-                       print "[xml_parse_query] cdinfo source is %s, hit %s of %s" % (queries.getAttribute("source"),queries.getAttribute("match"),queries.getAttribute("num_matches"))
-                       for query in queries.childNodes:
-                           if query.nodeType == xml.dom.minidom.Element.nodeType:
-                               if query.tagName == 'albuminfo':
-                                   self.xml_parse_albuminfo(query.childNodes)
-                               elif query.tagName == 'tracklisting':
-                                   self.xml_parse_tracklisting(query.childNodes)
+               for queries in queries_xml:
+                       if queries.nodeType == xml.dom.minidom.Element.nodeType:
+                               if queries.tagName == 'query':
+                                       print "[xml_parse_query] cdinfo source is %s, hit %s of %s" % (queries.getAttribute("source"),queries.getAttribute("match"),queries.getAttribute("num_matches"))
+                                       for query in queries.childNodes:
+                                               if query.nodeType == xml.dom.minidom.Element.nodeType:
+                                                       if query.tagName == 'albuminfo':
+                                                               self.xml_parse_albuminfo(query.childNodes)
+                                                       elif query.tagName == 'tracklisting':
+                                                               self.xml_parse_tracklisting(query.childNodes)
 
        def xml_parse_albuminfo(self, albuminfo_xml):
-           for albuminfo in albuminfo_xml:
-               if albuminfo.nodeType == xml.dom.minidom.Element.nodeType:
-                   if albuminfo.tagName == 'PERFORMER' or albuminfo.tagName == 'artist':
-                       artist = self.getText(albuminfo.childNodes)
-                       self.albuminfo["artist"] = artist
-                   elif albuminfo.tagName.upper() == 'TITLE':
-                       title = self.getText(albuminfo.childNodes)
-                       self.albuminfo["title"] = title
-                   elif albuminfo.tagName.upper() == 'YEAR':
-                       year = self.getText(albuminfo.childNodes)
-                       self.albuminfo["year"] = year
-                   elif albuminfo.tagName.upper() == 'GENRE':
-                       genre = self.getText(albuminfo.childNodes)
-                       self.albuminfo["genre"] = genre
-                   elif albuminfo.tagName == 'category' and not "GENRE" in self.albuminfo:
-                       category = self.getText(albuminfo.childNodes)
-                       self.albuminfo["genre"] = category
+               for albuminfo in albuminfo_xml:
+                       if albuminfo.nodeType == xml.dom.minidom.Element.nodeType:
+                               if albuminfo.tagName == 'PERFORMER' or albuminfo.tagName == 'artist':
+                                       artist = self.getText(albuminfo.childNodes)
+                                       self.albuminfo["artist"] = artist
+                               elif albuminfo.tagName.upper() == 'TITLE':
+                                       title = self.getText(albuminfo.childNodes)
+                                       self.albuminfo["title"] = title
+                               elif albuminfo.tagName.upper() == 'YEAR':
+                                       year = self.getText(albuminfo.childNodes)
+                                       self.albuminfo["year"] = year
+                               elif albuminfo.tagName.upper() == 'GENRE':
+                                       genre = self.getText(albuminfo.childNodes)
+                                       self.albuminfo["genre"] = genre
+                               elif albuminfo.tagName == 'category' and not "GENRE" in self.albuminfo:
+                                       category = self.getText(albuminfo.childNodes)
+                                       self.albuminfo["genre"] = category
 
        def xml_parse_tracklisting(self, tracklisting_xml):
-           for tracklist in tracklisting_xml:
-               if tracklist.nodeType == xml.dom.minidom.Element.nodeType:
-                   if tracklist.tagName == 'track':
-                       index = int(tracklist.getAttribute("number"))
-                       trackinfo = {}
-                       for track in tracklist.childNodes:
-                           if track.nodeType == xml.dom.minidom.Element.nodeType:
-                               if track.tagName == 'PERFORMER' or track.tagName == 'artist':
-                                   artist = self.getText(track.childNodes)
-                                   trackinfo["artist"] = artist
-                               if track.tagName.upper() == 'TITLE':
-                                   title = self.getText(track.childNodes)
-                                   trackinfo["title"] = title
-                               #elif track.tagName == 'length':
-                                   #tracktext += "Dauer=%ss " % self.getText(track.childNodes)
-                       self.tracklisting[index]=trackinfo
+               for tracklist in tracklisting_xml:
+                       if tracklist.nodeType == xml.dom.minidom.Element.nodeType:
+                               if tracklist.tagName == 'track':
+                                       index = int(tracklist.getAttribute("number"))
+                                       trackinfo = {}
+                                       for track in tracklist.childNodes:
+                                               if track.nodeType == xml.dom.minidom.Element.nodeType:
+                                                       if track.tagName == 'PERFORMER' or track.tagName == 'artist':
+                                                               artist = self.getText(track.childNodes)
+                                                               trackinfo["artist"] = artist
+                                                       if track.tagName.upper() == 'TITLE':
+                                                               title = self.getText(track.childNodes)
+                                                               trackinfo["title"] = title
+                                                       #elif track.tagName == 'length':
+                                                               #tracktext += "Dauer=%ss " % self.getText(track.childNodes)
+                                       self.tracklisting[index]=trackinfo
 
        def updateAlbuminfo(self, replace = False):
                for tag in self.albuminfo: