fix *required* kwargs. plugins not having **kwargs will probably not run with newer...
[enigma2.git] / lib / python / Plugins / Extensions / IpkgInstaller / plugin.py
1 from Components.ActionMap import ActionMap
2 from Components.Ipkg import IpkgComponent
3 from Components.Label import Label
4 from Components.SelectionList import SelectionList
5 from Plugins.Plugin import PluginDescriptor
6 from Screens.Ipkg import Ipkg
7 from Screens.Screen import Screen
8
9 class IpkgInstaller(Screen):
10         skin = """
11                 <screen position="100,100" size="550,400" title="..." >
12                         <widget name="red" halign="center" valign="center" position="0,0" size="140,60" backgroundColor="red" font="Regular;21" />
13                         <widget name="green" halign="center" valign="center" position="140,0" text="Install selected" size="140,60" backgroundColor="green" font="Regular;21" />
14                         <widget name="yellow" halign="center" valign="center" position="280,0" size="140,60" backgroundColor="yellow" font="Regular;21" />
15                         <widget name="blue" halign="center" valign="center" position="420,0" size="140,60" backgroundColor="blue" font="Regular;21" />
16                         <widget name="list" position="0,60" size="550,360" />
17                 </screen>
18                 """
19         
20         def __init__(self, session, list):
21                 self.skin = IpkgInstaller.skin
22                 Screen.__init__(self, session)
23                 
24                 self.list = SelectionList()
25                 self["list"] = self.list
26                 for listindex in range(len(list)):
27                         self.list.addSelection(list[listindex], list[listindex], listindex, True)
28
29                 self["red"] = Label()
30                 self["green"] = Label()
31                 self["yellow"] = Label()
32                 self["blue"] = Label()
33                 
34                 self["actions"] = ActionMap(["OkCancelActions", "ColorActions"], 
35                 {
36                         "ok": self.list.toggleSelection, 
37                         "cancel": self.close, 
38                         "green": self.install
39                 }, -1)
40                 
41         def install(self):
42                 list = self.list.getSelectionsList()
43                 cmdList = []
44                 for item in list:
45                         cmdList.append((IpkgComponent.CMD_INSTALL, { "package": item[1] }))
46                 print cmdList
47                 self.session.open(Ipkg, cmdList = cmdList)
48
49 def filescan_open(list, session, **kwargs):
50         session.open(IpkgInstaller, list) # list
51
52 def filescan(**kwargs):
53         # we expect not to be called if the MediaScanner plugin is not available,
54         # thus we don't catch an ImportError exception here
55         from Plugins.Extensions.MediaScanner.plugin import Scanner, ScanPath
56         return \
57                 Scanner(extensions = ["ipk"], 
58                         paths_to_scan = 
59                                 [
60                                         ScanPath(path = "ipk", with_subdirs = True), 
61                                         ScanPath(path = "", with_subdirs = False), 
62                                 ], 
63                         name = "Ipkg", 
64                         description = "Install software updates...", 
65                         openfnc = filescan_open, )
66
67 def Plugins(**kwargs):
68         return [ PluginDescriptor(name="Ipkg", where = PluginDescriptor.WHERE_FILESCAN, fnc = filescan) ]