SystemPlugins/SkinSelector: -Rework SkinSelector GUI a bit.
[vuplus_dvbapp] / lib / python / Plugins / SystemPlugins / SkinSelector / plugin.py
index 18ffd99..997b957 100755 (executable)
@@ -2,41 +2,33 @@
 # (c) 2006 Stephan Reichholf
 # This Software is Free, use it where you want, when you want for whatever you want and modify it if you want but don't remove my copyright!
 from Screens.Screen import Screen
+from Screens.Standby import TryQuitMainloop
 from Screens.MessageBox import MessageBox
 from Components.ActionMap import NumberActionMap
 from Components.Pixmap import Pixmap
+from Components.Sources.StaticText import StaticText
 from Components.MenuList import MenuList
 from Plugins.Plugin import PluginDescriptor
 from Components.config import config
-from Tools.Directories import SCOPE_SKIN
-from Components.config import config
-
+from Tools.Directories import resolveFilename, SCOPE_PLUGINS
 from os import path, walk
 
 class SkinSelector(Screen):
        # for i18n:
        # _("Choose your Skin")
-       skin = """
-               <screen position="75,138" size="600,320" title="Choose your Skin" >
-                       <widget name="SkinList" position="10,10" size="275,300" scrollbarMode="showOnDemand" />
-                       <widget name="Preview" position="305,45" size="280,210" alphatest="on"/>
-               </screen>
-               """
-
        skinlist = []
        root = "/usr/share/enigma2/"
 
        def __init__(self, session, args = None):
 
-               self.skin = SkinSelector.skin
                Screen.__init__(self, session)
 
                self.skinlist = []
-               self.session = session
                self.previewPath = ""
-
                path.walk(self.root, self.find, "")
 
+               self["key_red"] = StaticText(_("Close"))
+               self["introduction"] = StaticText(_("Press OK to activate the selected skin."))
                self.skinlist.sort()
                self["SkinList"] = MenuList(self.skinlist)
                self["Preview"] = Pixmap()
@@ -45,14 +37,28 @@ class SkinSelector(Screen):
                {
                        "ok": self.ok,
                        "back": self.close,
+                       "red": self.close,
                        "up": self.up,
                        "down": self.down,
                        "left": self.left,
                        "right": self.right,
                        "info": self.info,
                }, -1)
-               
-               self.onLayoutFinish.append(self.loadPreview)
+
+               self.onLayoutFinish.append(self.layoutFinished)
+
+       def layoutFinished(self):
+               tmp = config.skin.primary_skin.value.find('/skin.xml')
+               if tmp != -1:
+                       tmp = config.skin.primary_skin.value[:tmp]
+                       idx = 0
+                       for skin in self.skinlist:
+                               if skin == tmp:
+                                       break
+                               idx += 1
+                       if idx < len(self.skinlist):
+                               self["SkinList"].moveToIndex(idx)
+               self.loadPreview()
 
        def up(self):
                self["SkinList"].up()
@@ -71,7 +77,7 @@ class SkinSelector(Screen):
                self.loadPreview()
 
        def info(self):
-               aboutbox = self.session.open(MessageBox,_("Enigma2 Skinselector v0.5 BETA\n\nIf you experience any problems please contact\nstephan@reichholf.net\n\n\xA9 2006 - Stephan Reichholf"), MessageBox.TYPE_INFO)
+               aboutbox = self.session.open(MessageBox,_("Enigma2 Skinselector\n\nIf you experience any problems please contact\nstephan@reichholf.net\n\n\xA9 2006 - Stephan Reichholf"), MessageBox.TYPE_INFO)
                aboutbox.setTitle(_("About..."))
 
        def find(self, arg, dirname, names):
@@ -103,8 +109,7 @@ class SkinSelector(Screen):
                        pngpath = self.root+self["SkinList"].getCurrent()+"/prev.png"
 
                if not path.exists(pngpath):
-                       # FIXME: don't use hardcoded path
-                       pngpath = "/usr/lib/enigma2/python/Plugins/SystemPlugins/SkinSelector/noprev.png"
+                       pngpath = resolveFilename(SCOPE_PLUGINS, "SystemPlugins/SkinSelector/noprev.png")
 
                if self.previewPath != pngpath:
                        self.previewPath = pngpath
@@ -113,16 +118,16 @@ class SkinSelector(Screen):
 
        def restartGUI(self, answer):
                if answer is True:
-                       quitMainloop(3)
+                       self.session.open(TryQuitMainloop, 3)
 
 def SkinSelMain(session, **kwargs):
        session.open(SkinSelector)
 
-def SkinSelSetup(menuid):
+def SkinSelSetup(menuid, **kwargs):
        if menuid == "system":
-               return [("Skin...", SkinSelMain)]
+               return [(_("Skin"), SkinSelMain, "skin_selector", None)]
        else:
                return []
 
 def Plugins(**kwargs):
-       return PluginDescriptor(name="Skinselector", description="Select Your Skin", where = PluginDescriptor.WHERE_SETUP, fnc=SkinSelSetup)
+       return PluginDescriptor(name="Skinselector", description="Select Your Skin", where = PluginDescriptor.WHERE_MENU, fnc=SkinSelSetup)