From 94fe5b323a9f4705d3c943204acd6695242df625 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Tue, 10 Oct 2006 02:08:38 +0000 Subject: [PATCH 1/1] add reichi's skin selector --- lib/python/Plugins/SystemPlugins/Makefile.am | 3 +- .../SystemPlugins/SkinSelector/__init__.py | 0 .../SystemPlugins/SkinSelector/noprev.png | Bin 0 -> 8091 bytes .../SystemPlugins/SkinSelector/plugin.py | 130 ++++++++++++++++++ 4 files changed, 131 insertions(+), 2 deletions(-) create mode 100755 lib/python/Plugins/SystemPlugins/SkinSelector/__init__.py create mode 100755 lib/python/Plugins/SystemPlugins/SkinSelector/noprev.png create mode 100755 lib/python/Plugins/SystemPlugins/SkinSelector/plugin.py diff --git a/lib/python/Plugins/SystemPlugins/Makefile.am b/lib/python/Plugins/SystemPlugins/Makefile.am index 62d15369..246f38b5 100644 --- a/lib/python/Plugins/SystemPlugins/Makefile.am +++ b/lib/python/Plugins/SystemPlugins/Makefile.am @@ -1,2 +1 @@ -SUBDIRS = SoftwareUpdate FrontprocessorUpgrade PositionerSetup ConfigurationBackup Satfinder - +SUBDIRS = SoftwareUpdate FrontprocessorUpgrade PositionerSetup ConfigurationBackup Satfinder SkinSelector diff --git a/lib/python/Plugins/SystemPlugins/SkinSelector/__init__.py b/lib/python/Plugins/SystemPlugins/SkinSelector/__init__.py new file mode 100755 index 00000000..e69de29b diff --git a/lib/python/Plugins/SystemPlugins/SkinSelector/noprev.png b/lib/python/Plugins/SystemPlugins/SkinSelector/noprev.png new file mode 100755 index 0000000000000000000000000000000000000000..e349d326e3e2231d8ddd1f95f66c24fcf8af8292 GIT binary patch literal 8091 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 literal 0 HcmV?d00001 diff --git a/lib/python/Plugins/SystemPlugins/SkinSelector/plugin.py b/lib/python/Plugins/SystemPlugins/SkinSelector/plugin.py new file mode 100755 index 00000000..49156db4 --- /dev/null +++ b/lib/python/Plugins/SystemPlugins/SkinSelector/plugin.py @@ -0,0 +1,130 @@ +# (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.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 + +class SkinSelector(Screen): + skin = """ + + + + + """ + + 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 = "" + + os.path.walk(self.root, self.find, "") + + self.skinlist.sort() + self["SkinList"] = MenuList(self.skinlist) + self["Preview"] = Pixmap() + + self["actions"] = NumberActionMap(["WizardActions", "InputActions", "EPGSelectActions"], + { + "ok": self.ok, + "back": self.close, + "up": self.up, + "down": self.down, + "left": self.left, + "right": self.right, + "info": self.info, + }, -1) + + self.onLayoutFinish.append(self.loadPreview) + + def up(self): + self["SkinList"].up() + self.loadPreview() + + def down(self): + self["SkinList"].down() + self.loadPreview() + + def left(self): + self["SkinList"].pageUp() + self.loadPreview() + + def right(self): + self["SkinList"].pageDown() + 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.setTitle(_("About...")) + + def find(self, arg, dirname, names): + for x in names: + if x == "skin.xml": + if dirname <> self.root: + subdir = dirname[19:] + self.skinlist.append(subdir) + else: + subdir = "Default Skin" + self.skinlist.append(subdir) + + def ok(self): + if self["SkinList"].getCurrent() == "Default Skin": + skinfile = "skin.xml" + else: + skinfile = self["SkinList"].getCurrent()+"/skin.xml" + + print "Skinselector: Selected Skin: "+self.root+skinfile + config.skin.primary_skin.value = skinfile + config.skin.primary_skin.save() + restartbox = self.session.openWithCallback(self.restartGUI,MessageBox,_("GUI needs a restart to apply a new skin\nDo you want to Restart the GUI now?"), MessageBox.TYPE_YESNO) + restartbox.setTitle(_("Restart GUI now?")) + + def loadPreview(self): + if self["SkinList"].getCurrent() == "Default Skin": + pngpath = self.root+"/prev.png" + else: + pngpath = self.root+self["SkinList"].getCurrent()+"/prev.png" + + if not os.path.exists(pngpath): + # FIXME: don't use hardcoded path + pngpath = "/usr/lib/enigma2/python/Plugins/SystemPlugins/SkinSelector/noprev.png" + + if self.previewPath != pngpath: + self.previewPath = pngpath + + self["Preview"].instance.setPixmapFromFile(self.previewPath) + + def restartGUI(self, answer): + if answer is True: + quitMainloop(3) + +def SkinSelMain(session, **kwargs): + session.open(SkinSelector) + +def SkinSelSetup(menuid): + if menuid == "system": + return [("Skin...", SkinSelMain)] + else: + return [] + +def Plugins(**kwargs): + return PluginDescriptor(name="Skinselector", description="Select Your Skin", where = PluginDescriptor.WHERE_SETUP, fnc=SkinSelSetup) -- 2.30.2