Merge branch 'master' of /home/tmbinc/enigma2-git into tmbinc/FixTimingBugs
[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         filelist = [x.path for x in list]
51         session.open(IpkgInstaller, filelist) # list
52
53 def filescan(**kwargs):
54         from Components.Scanner import Scanner, ScanPath
55         return \
56                 Scanner(mimetypes = ["application/x-debian-package"], 
57                         paths_to_scan = 
58                                 [
59                                         ScanPath(path = "ipk", with_subdirs = True), 
60                                         ScanPath(path = "", with_subdirs = False), 
61                                 ], 
62                         name = "Ipkg", 
63                         description = "Install software updates...", 
64                         openfnc = filescan_open, )
65
66 def Plugins(**kwargs):
67         return [ PluginDescriptor(name="Ipkg", where = PluginDescriptor.WHERE_FILESCAN, fnc = filescan) ]