aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Plugins
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python/Plugins')
-rw-r--r--lib/python/Plugins/Extensions/IpkgInstaller/Makefile.am5
-rw-r--r--lib/python/Plugins/Extensions/IpkgInstaller/__init__.py0
-rw-r--r--lib/python/Plugins/Extensions/IpkgInstaller/plugin.py69
-rw-r--r--lib/python/Plugins/Extensions/Makefile.am2
-rw-r--r--lib/python/Plugins/SystemPlugins/SoftwareUpdate/plugin.py42
5 files changed, 96 insertions, 22 deletions
diff --git a/lib/python/Plugins/Extensions/IpkgInstaller/Makefile.am b/lib/python/Plugins/Extensions/IpkgInstaller/Makefile.am
new file mode 100644
index 00000000..ece0698f
--- /dev/null
+++ b/lib/python/Plugins/Extensions/IpkgInstaller/Makefile.am
@@ -0,0 +1,5 @@
+installdir = $(LIBDIR)/enigma2/python/Plugins/Extensions/IpkgInstaller
+
+install_PYTHON = \
+ __init__.py \
+ plugin.py
diff --git a/lib/python/Plugins/Extensions/IpkgInstaller/__init__.py b/lib/python/Plugins/Extensions/IpkgInstaller/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/lib/python/Plugins/Extensions/IpkgInstaller/__init__.py
diff --git a/lib/python/Plugins/Extensions/IpkgInstaller/plugin.py b/lib/python/Plugins/Extensions/IpkgInstaller/plugin.py
new file mode 100644
index 00000000..f6dfc965
--- /dev/null
+++ b/lib/python/Plugins/Extensions/IpkgInstaller/plugin.py
@@ -0,0 +1,69 @@
+from Components.ActionMap import ActionMap
+from Components.Ipkg import IpkgComponent
+from Components.Label import Label
+from Components.SelectionList import SelectionList
+from Plugins.Plugin import PluginDescriptor
+from Screens.Ipkg import Ipkg
+from Screens.Screen import Screen
+
+class IpkgInstaller(Screen):
+ skin = """
+ <screen position="100,100" size="550,400" title="..." >
+ <widget name="red" halign="center" valign="center" position="0,0" size="140,60" backgroundColor="red" font="Regular;21" />
+ <widget name="green" halign="center" valign="center" position="140,0" text="Install selected" size="140,60" backgroundColor="green" font="Regular;21" />
+ <widget name="yellow" halign="center" valign="center" position="280,0" size="140,60" backgroundColor="yellow" font="Regular;21" />
+ <widget name="blue" halign="center" valign="center" position="420,0" size="140,60" backgroundColor="blue" font="Regular;21" />
+ <widget name="list" position="0,60" size="550,360" />
+ </screen>
+ """
+
+ def __init__(self, session, list):
+ self.skin = IpkgInstaller.skin
+ Screen.__init__(self, session)
+
+ self.list = SelectionList()
+ self["list"] = self.list
+ for listindex in range(len(list)):
+ self.list.addSelection(list[listindex], list[listindex], listindex, True)
+
+ self["red"] = Label()
+ self["green"] = Label()
+ self["yellow"] = Label()
+ self["blue"] = Label()
+
+ self["actions"] = ActionMap(["OkCancelActions", "ColorActions"],
+ {
+ "ok": self.list.toggleSelection,
+ "cancel": self.close,
+ "green": self.install
+ }, -1)
+
+ def install(self):
+ list = self.list.getSelectionsList()
+ cmdList = []
+ for item in list:
+ cmdList.append((IpkgComponent.CMD_INSTALL, { "package": item[1] }))
+ print cmdList
+ self.session.open(Ipkg, cmdList = cmdList)
+
+def filescan_open(list, session, **kwargs):
+ session.open(IpkgInstaller, list) # list
+
+def filescan():
+ # we expect not to be called if the MediaScanner plugin is not available,
+ # thus we don't catch an ImportError exception here
+ from Plugins.Extensions.MediaScanner.plugin import Scanner, ScanPath
+ return \
+ Scanner(extensions = ["ipk"],
+ paths_to_scan =
+ [
+ ScanPath(path = "ipk", with_subdirs = True),
+ ScanPath(path = "", with_subdirs = False),
+ ],
+ name = "Ipkg",
+ description = "Install software updates...",
+ openfnc = filescan_open,
+ )
+
+def Plugins(**kwargs):
+ return [ PluginDescriptor(name="Ipkg", where = PluginDescriptor.WHERE_FILESCAN, fnc = filescan) ] \ No newline at end of file
diff --git a/lib/python/Plugins/Extensions/Makefile.am b/lib/python/Plugins/Extensions/Makefile.am
index 92251841..86834701 100644
--- a/lib/python/Plugins/Extensions/Makefile.am
+++ b/lib/python/Plugins/Extensions/Makefile.am
@@ -1,2 +1,2 @@
-SUBDIRS = TuxboxPlugins WebInterface FileManager CutListEditor FritzCall PicturePlayer MediaScanner
+SUBDIRS = TuxboxPlugins WebInterface FileManager CutListEditor FritzCall PicturePlayer MediaScanner IpkgInstaller
# SimpleRSS is still not finished
diff --git a/lib/python/Plugins/SystemPlugins/SoftwareUpdate/plugin.py b/lib/python/Plugins/SystemPlugins/SoftwareUpdate/plugin.py
index b5034b63..2a7bf655 100644
--- a/lib/python/Plugins/SystemPlugins/SoftwareUpdate/plugin.py
+++ b/lib/python/Plugins/SystemPlugins/SoftwareUpdate/plugin.py
@@ -1,21 +1,21 @@
-from enigma import eTimer, quitMainloop, RT_HALIGN_LEFT, RT_VALIGN_CENTER, eListboxPythonMultiContent, eListbox, gFont
-from Screens.Screen import Screen
-from Screens.MessageBox import MessageBox
from Components.ActionMap import ActionMap, NumberActionMap
-from Components.ScrollLabel import ScrollLabel
-from Components.GUIComponent import *
-from Components.MenuList import MenuList
+from Components.GUIComponent import GUIComponent
from Components.Input import Input
-from Screens.Console import Console
-from Screens.MessageBox import MessageBox
+from Components.Ipkg import IpkgComponent
+from Components.Label import Label
+from Components.MenuList import MenuList
+from Components.ScrollLabel import ScrollLabel
+from Components.Slider import Slider
from Plugins.Plugin import PluginDescriptor
+from Screens.Console import Console
from Screens.ImageWizard import ImageWizard
-from Components.Ipkg import Ipkg
-from Components.Slider import Slider
-from Components.Label import Label
-
+from Screens.MessageBox import MessageBox
+from Screens.MessageBox import MessageBox
+from Screens.Screen import Screen
+from enigma import eTimer, quitMainloop, RT_HALIGN_LEFT, RT_VALIGN_CENTER, eListboxPythonMultiContent, eListbox, gFont
from os import popen
+
class UpdatePluginMenu(Screen):
skin = """
<screen position="200,100" size="300,250" title="Update..." >
@@ -256,12 +256,12 @@ class UpdatePlugin(Screen):
self.activityTimer.timeout.get().append(self.doActivityTimer)
self.activityTimer.start(100, False)
- self.ipkg = Ipkg()
+ self.ipkg = IpkgComponent()
self.ipkg.addCallback(self.ipkgCallback)
self.updating = True
self.package.setText(_("Package list update"))
- self.ipkg.cmdUpdate()
+ self.ipkg.startCmd(IpkgComponent.CMD_UPDATE)
self["actions"] = ActionMap(["WizardActions"],
{
@@ -276,27 +276,27 @@ class UpdatePlugin(Screen):
self.activityslider.setValue(self.activity)
def ipkgCallback(self, event, param):
- if event == Ipkg.EVENT_DOWNLOAD:
+ if event == IpkgComponent.EVENT_DOWNLOAD:
self.status.setText(_("Downloading"))
- elif event == Ipkg.EVENT_UPGRADE:
+ elif event == IpkgComponent.EVENT_UPGRADE:
if self.sliderPackages.has_key(param):
self.slider.setValue(self.sliderPackages[param])
self.package.setText(param)
self.status.setText(_("Upgrading"))
self.packages += 1
- elif event == Ipkg.EVENT_INSTALL:
+ elif event == IpkgComponent.EVENT_INSTALL:
self.package.setText(param)
self.status.setText(_("Installing"))
self.packages += 1
- elif event == Ipkg.EVENT_CONFIGURING:
+ elif event == IpkgComponent.EVENT_CONFIGURING:
self.package.setText(param)
self.status.setText(_("Configuring"))
- elif event == Ipkg.EVENT_ERROR:
+ elif event == IpkgComponent.EVENT_ERROR:
self.error += 1
- elif event == Ipkg.EVENT_DONE:
+ elif event == IpkgComponent.EVENT_DONE:
if self.updating:
self.updating = False
- self.ipkg.cmdUpgrade(test_only = False)
+ self.ipkg.startCmd(Ipkg.CMD_UPGRADE, args = {'test_only': False})
elif self.error == 0:
self.slider.setValue(4)