Don't install *.jpg files with the Plugin metadata to save space.
[enigma2.git] / lib / python / Plugins / SystemPlugins / SkinSelector / plugin.py
index 49156db48293fa2b0c49263b2e28ac271b47c699..060a4f35e03f68b2ccd51344959812883df98dde 100755 (executable)
@@ -1,26 +1,23 @@
+# -*- coding: iso-8859-1 -*-
 # (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 enigma import *
 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.GUIComponent import *
 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
-
-import os, sys
+from os import path, walk
 
 class SkinSelector(Screen):
+       # for i18n:
+       # _("Choose your Skin")
        skin = """
-               <screen position="75,138" size="600,300" title="Choose your Skin" >
-                       <widget name="SkinList" position="10,10" size="275,280" scrollbarMode="showOnDemand" />
+               <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>
                """
@@ -34,10 +31,9 @@ class SkinSelector(Screen):
                Screen.__init__(self, session)
 
                self.skinlist = []
-               self.session = session
                self.previewPath = ""
 
-               os.path.walk(self.root, self.find, "")
+               path.walk(self.root, self.find, "")
 
                self.skinlist.sort()
                self["SkinList"] = MenuList(self.skinlist)
@@ -54,7 +50,20 @@ class SkinSelector(Screen):
                        "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()
@@ -104,7 +113,7 @@ class SkinSelector(Screen):
                else:
                        pngpath = self.root+self["SkinList"].getCurrent()+"/prev.png"
 
-               if not os.path.exists(pngpath):
+               if not path.exists(pngpath):
                        # FIXME: don't use hardcoded path
                        pngpath = "/usr/lib/enigma2/python/Plugins/SystemPlugins/SkinSelector/noprev.png"
 
@@ -115,16 +124,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)