From 9015ce354743d7a3a73400c8b91cd85a6ceaeb96 Mon Sep 17 00:00:00 2001 From: acid-burn Date: Fri, 13 Feb 2009 08:13:40 +0100 Subject: [PATCH] remove IPKGInstaller and ConfigurationBackup start working on Softwaremanager --- configure.ac | 2 - .../Extensions/IpkgInstaller/.cvsignore | 4 - .../Extensions/IpkgInstaller/Makefile.am | 5 - .../Extensions/IpkgInstaller/__init__.py | 0 .../Extensions/IpkgInstaller/plugin.py | 67 ------ lib/python/Plugins/Extensions/Makefile.am | 2 +- .../ConfigurationBackup/.cvsignore | 4 - .../SystemPlugins/ConfigurationBackup/LICENSE | 12 - .../ConfigurationBackup/Makefile.am | 8 - .../ConfigurationBackup/__init__.py | 0 .../ConfigurationBackup/backup.png | Bin 3711 -> 0 bytes .../ConfigurationBackup/blue.png | Bin 3495 -> 0 bytes .../ConfigurationBackup/green.png | Bin 3454 -> 0 bytes .../ConfigurationBackup/plugin.py | 221 ------------------ .../SystemPlugins/ConfigurationBackup/red.png | Bin 3742 -> 0 bytes .../ConfigurationBackup/yellow.png | Bin 3732 -> 0 bytes lib/python/Plugins/SystemPlugins/Makefile.am | 2 +- 17 files changed, 2 insertions(+), 325 deletions(-) mode change 100644 => 100755 configure.ac delete mode 100644 lib/python/Plugins/Extensions/IpkgInstaller/.cvsignore delete mode 100644 lib/python/Plugins/Extensions/IpkgInstaller/Makefile.am delete mode 100644 lib/python/Plugins/Extensions/IpkgInstaller/__init__.py delete mode 100644 lib/python/Plugins/Extensions/IpkgInstaller/plugin.py mode change 100644 => 100755 lib/python/Plugins/Extensions/Makefile.am delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/.cvsignore delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/LICENSE delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/Makefile.am delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/__init__.py delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/backup.png delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/blue.png delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/green.png delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/plugin.py delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/red.png delete mode 100644 lib/python/Plugins/SystemPlugins/ConfigurationBackup/yellow.png mode change 100644 => 100755 lib/python/Plugins/SystemPlugins/Makefile.am diff --git a/configure.ac b/configure.ac old mode 100644 new mode 100755 index 719baa11..89ab3f06 --- a/configure.ac +++ b/configure.ac @@ -112,7 +112,6 @@ lib/python/Plugins/SystemPlugins/SoftwareUpdate/Makefile lib/python/Plugins/SystemPlugins/FrontprocessorUpgrade/Makefile lib/python/Plugins/SystemPlugins/PositionerSetup/Makefile lib/python/Plugins/SystemPlugins/Hotplug/Makefile -lib/python/Plugins/SystemPlugins/ConfigurationBackup/Makefile lib/python/Plugins/SystemPlugins/DefaultServicesScanner/Makefile lib/python/Plugins/SystemPlugins/NFIFlash/Makefile lib/python/Plugins/SystemPlugins/Satfinder/Makefile @@ -124,7 +123,6 @@ lib/python/Plugins/SystemPlugins/DiseqcTester/Makefile lib/python/Plugins/DemoPlugins/Makefile lib/python/Plugins/DemoPlugins/TestPlugin/Makefile lib/python/Plugins/Extensions/Makefile -lib/python/Plugins/Extensions/IpkgInstaller/Makefile lib/python/Plugins/Extensions/TuxboxPlugins/Makefile lib/python/Plugins/Extensions/FileManager/Makefile lib/python/Plugins/Extensions/CutListEditor/Makefile diff --git a/lib/python/Plugins/Extensions/IpkgInstaller/.cvsignore b/lib/python/Plugins/Extensions/IpkgInstaller/.cvsignore deleted file mode 100644 index 138b9cc2..00000000 --- a/lib/python/Plugins/Extensions/IpkgInstaller/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -*.pyc -*.pyo -Makefile -Makefile.in diff --git a/lib/python/Plugins/Extensions/IpkgInstaller/Makefile.am b/lib/python/Plugins/Extensions/IpkgInstaller/Makefile.am deleted file mode 100644 index ece0698f..00000000 --- a/lib/python/Plugins/Extensions/IpkgInstaller/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ -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 deleted file mode 100644 index e69de29b..00000000 diff --git a/lib/python/Plugins/Extensions/IpkgInstaller/plugin.py b/lib/python/Plugins/Extensions/IpkgInstaller/plugin.py deleted file mode 100644 index 4893dc47..00000000 --- a/lib/python/Plugins/Extensions/IpkgInstaller/plugin.py +++ /dev/null @@ -1,67 +0,0 @@ -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 = """ - - - - - - - - """ - - 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): - filelist = [x.path for x in list] - session.open(IpkgInstaller, filelist) # list - -def filescan(**kwargs): - from Components.Scanner import Scanner, ScanPath - return \ - Scanner(mimetypes = ["application/x-debian-package"], - 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) ] diff --git a/lib/python/Plugins/Extensions/Makefile.am b/lib/python/Plugins/Extensions/Makefile.am old mode 100644 new mode 100755 index 9f3737aa..edbd2084 --- a/lib/python/Plugins/Extensions/Makefile.am +++ b/lib/python/Plugins/Extensions/Makefile.am @@ -1 +1 @@ -SUBDIRS = TuxboxPlugins FileManager CutListEditor PicturePlayer MediaScanner MediaPlayer IpkgInstaller GraphMultiEPG SocketMMI DVDPlayer DVDBurn +SUBDIRS = TuxboxPlugins FileManager CutListEditor PicturePlayer MediaScanner MediaPlayer GraphMultiEPG SocketMMI DVDPlayer DVDBurn diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/.cvsignore b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/.cvsignore deleted file mode 100644 index 138b9cc2..00000000 --- a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/.cvsignore +++ /dev/null @@ -1,4 +0,0 @@ -*.pyc -*.pyo -Makefile -Makefile.in diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/LICENSE b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/LICENSE deleted file mode 100644 index 99700593..00000000 --- a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/LICENSE +++ /dev/null @@ -1,12 +0,0 @@ -This plugin is licensed under the Creative Commons -Attribution-NonCommercial-ShareAlike 3.0 Unported -License. To view a copy of this license, visit -http://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative -Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. - -Alternatively, this plugin may be distributed and executed on hardware which -is licensed by Dream Multimedia GmbH. - -This plugin is NOT free software. It is open source, you are allowed to -modify it (if you keep the license), but it may not be commercially -distributed other than under the conditions noted above. diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/Makefile.am b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/Makefile.am deleted file mode 100644 index d50236d8..00000000 --- a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -installdir = $(LIBDIR)/enigma2/python/Plugins/SystemPlugins/ConfigurationBackup - -install_PYTHON = \ - __init__.py \ - plugin.py red.png yellow.png green.png blue.png backup.png - -install_DATA = LICENSE - diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/__init__.py b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/backup.png b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/backup.png deleted file mode 100644 index 4962a0581491afeedb6bb1c30a699ee0feed1714..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3711 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

4nu#jiXp-3 zoGz2ekVecDaHeq$1C+asnZEW?JeseM4|Mc>mbVJAy_sK{j?di%6fY#y}4^bXL|aEdU|_@hWe1< z9)K*b$#cWL1V{RkXncv|Otepv!>NFh<>hbic68P~sRW;2_VjGWlRQoRzj|lH(_$DP zi;G(qkxX050o?xftqft^|Mp*}nRvS#7%!WS zK(E07XR~JIvaUmOL-*=JW z!dGy~#l?k*uDLs(Z~@5gp`QZeemOq>AXJ7Qc)egYu(l6f0Epv~zqY=uqSjtiZK@dFQtzMl-^?t{blyyz36*IR&mkB&eOO$NGA zFX!&=kC8F-m&iC`GzyHM{{9gou}2%YX%2ZZXPn2~q|#wLV5|m=^^4r+MaE$`FKCD7 z7P#ZXg0^{FGe-0`j+lfD3J5dEIQrBYF_}gZAON8HjU#Qu;|FNw;EAPUMmHR9Gu9xd zWNmW<#Fzly8QTI-uLP;-p)3NM0>KD+Ucm!kz=!F_&>k7-U-P0L5U?AQN_R+i%o#`C zNay=+yQ_Z<4b856*V=bS(wFq*BPgAt;+3W$ID d6FU(I{|C6>f@rTG_>=$u002ovPDHLkV1nx+xGMkv diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/blue.png b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/blue.png deleted file mode 100644 index a392bbe6caf7a74e15b4948bec5c4333652c76e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3495 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 diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/plugin.py b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/plugin.py deleted file mode 100644 index 7a918da6..00000000 --- a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/plugin.py +++ /dev/null @@ -1,221 +0,0 @@ -from Screens.Screen import Screen -from Screens.MessageBox import MessageBox -from Screens.Console import Console -from Components.ActionMap import ActionMap, NumberActionMap -from Components.Pixmap import Pixmap -from Components.Label import Label -from Components.MenuList import MenuList -from Components.config import ConfigSelection, ConfigSubsection, KEY_LEFT, KEY_RIGHT, KEY_0, getConfigListEntry -from Components.ConfigList import ConfigList -from Plugins.Plugin import PluginDescriptor - -from Tools.Directories import * -from os import path, makedirs, listdir -from time import localtime -from datetime import date - -plugin_path = "" - -# FIXME: harddiskmanager has a better overview about available mointpoints! -BackupPath = { - "hdd" : "/media/hdd/backup", - "usb" : "/media/usb/backup", - "cf" : "/media/cf/backup" - } - -MountPoints = { - "hdd" : "/media/hdd", - "usb" : "/media/usb", - "cf" : "/media/cf" - } - -class BackupSetup(Screen): - skin = """ - - - - - - - - - - - """ - - def keyLeft(self): - self["config"].handleKey(KEY_LEFT) - - def keyRight(self): - self["config"].handleKey(KEY_RIGHT) - - def keyNumberGlobal(self, number): - print "You pressed number", number - if (self["config"].getCurrent()[1].parent.enabled == True): - self["config"].handleKey(KEY_0+number) - - def keyCancel(self): - for x in self["config"].list: - x[1].cancel() - self.close() - - def keySave(self): - for x in self["config"].list: - x[1].save() - self.close() - - def __init__(self, session, args = None): - Screen.__init__(self, session) - self.skin_path = plugin_path - - self["oktext"] = Label(_("OK")) - self["canceltext"] = Label(_("Cancel")) - self["backuptext"] = Label(_("Backup")) - self["restoretext"] = Label(_("Restore")) - self["restore"] = Pixmap() - self["backup"] = Pixmap() - self["ok"] = Pixmap() - self["cancel"] = Pixmap() - - self.path = "" - self.list = [] - self["config"] = ConfigList(self.list) - self.createSetup() - - self["actions"] = NumberActionMap(["SetupActions"], - { - "ok": self.keySave, - "cancel": self.keyCancel, - "left": self.keyLeft, - "right": self.keyRight - }, -1) - - self["shortcuts"] = ActionMap(["ShortcutActions"], - { - "red": self.keyCancel, - "green": self.keySave, - "blue": self.Backup, - "yellow": self.Restore, - }) - - - def createSetup(self): - print "Creating BackupSetup" - self.list = [ ] - self["config"] = ConfigList(self.list) - self.backup = ConfigSubsection() - self.backup.type = ConfigSelection(choices = [("settings", _("enigma2 and network")), ("var", _("/var directory")), ("skin", _("/usr/share/enigma2 directory"))], default="settings") - self.backup.location = ConfigSelection(choices = [("hdd", _("Harddisk")), ("usb", _("USB Stick")), ("cf", _("CF Drive"))]) - self.list.append(getConfigListEntry(_("Backup Mode"), self.backup.type)) - self.list.append(getConfigListEntry(_("Backup Location"), self.backup.location)) - - def createBackupfolders(self): - self.path = BackupPath[self.backup.location.value] - print "Creating Backup Folder if not already there..." - if (path.exists(self.path) == False): - makedirs(self.path) - - def Backup(self): - print "this will start the backup now!" - self.session.openWithCallback(self.runBackup, MessageBox, _("Do you want to backup now?\nAfter pressing OK, please wait!")) - - def Restore(self): - print "this will start the restore now!" - self.session.open(RestoreMenu, self.backup) - - def runBackup(self, result): - if result: - if path.ismount(MountPoints[self.backup.location.value]): - self.createBackupfolders() - d = localtime() - dt = date(d.tm_year, d.tm_mon, d.tm_mday) - self.path = BackupPath[self.backup.location.value] - if self.backup.type.value == "settings": - print "Backup Mode: Settings" - self.session.open(Console, title = "Backup running", cmdlist = ["tar -czvf " + self.path + "/" + str(dt) + "_settings_backup.tar.gz /etc/enigma2/ /etc/network/interfaces /etc/wpa_supplicant.conf"]) - elif self.backup.type.value == "var": - print "Backup Mode: var" - self.session.open(Console, title = "Backup running", cmdlist = [ "tar -czvf " + self.path + "/" + str(dt) + "_var_backup.tar.gz /var/"]) - elif self.backup.type.value == "skin": - print "Backup Mode: skin" - self.session.open(Console, title ="Backup running", cmdlist = [ "tar -czvf " + self.path + "/" + str(dt) + "_skin_backup.tar.gz /usr/share/enigma2/"]) - else: - self.session.open(MessageBox, _("Sorry your Backup destination does not exist\n\nPlease choose an other one."), MessageBox.TYPE_INFO) - -class RestoreMenu(Screen): - skin = """ - - - - - - - """ - - def __init__(self, session, backup): - Screen.__init__(self, session) - self.skin_path = plugin_path - self.backup = backup - - self["canceltext"] = Label(_("Cancel")) - self["restoretext"] = Label(_("Restore")) - self["restore"] = Pixmap() - self["cancel"] = Pixmap() - - self.sel = [] - self.val = [] - self.entry = False - self.exe = False - - self.path = "" - - self["actions"] = NumberActionMap(["SetupActions"], - { - "ok": self.KeyOk, - "cancel": self.keyCancel - }, -1) - - self["shortcuts"] = ActionMap(["ShortcutActions"], - { - "red": self.keyCancel, - "yellow": self.KeyOk, - }) - self.flist = [] - self["filelist"] = MenuList(self.flist) - self.fill_list() - - def fill_list(self): - self.flist = [] - self.path = BackupPath[self.backup.location.value] - if (path.exists(self.path) == False): - makedirs(self.path) - for file in listdir(self.path): - if (file.endswith(".tar.gz")): - self.flist.append((file)) - self.entry = True - self["filelist"].l.setList(self.flist) - - def KeyOk(self): - if (self.exe == False) and (self.entry == True): - self.sel = self["filelist"].getCurrent() - self.val = self.path + self.sel - self.session.openWithCallback(self.startRestore, MessageBox, _("are you sure you want to restore\nfollowing backup:\n" + self.sel + "\nEnigma2 will restart after the restore")) - - def keyCancel(self): - self.close() - - def startRestore(self, ret = False): - if (ret == True): - self.exe = True - self.session.open(Console, title = "Restore running", cmdlist = ["tar -xzvf " + self.path + "/" + self.sel + " -C /", "killall -9 enigma2"]) - - def Exit(self): - self.close() - -def BackupMain(session, **kwargs): - session.open(BackupSetup) - -def Plugins(path, **kwargs): - global plugin_path - plugin_path = path - return PluginDescriptor(name="Backup/Restore", description="Backup and Restore your Settings", icon="backup.png", where = PluginDescriptor.WHERE_PLUGINMENU, fnc=BackupMain) diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/red.png b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/red.png deleted file mode 100644 index 8096045f3df0c20461f5cc5099a388093407f493..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3742 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 IM6N<$f)Rm|umAu6 diff --git a/lib/python/Plugins/SystemPlugins/ConfigurationBackup/yellow.png b/lib/python/Plugins/SystemPlugins/ConfigurationBackup/yellow.png deleted file mode 100644 index dacb80e688f03198a7c2a1ec6cc4c54f1c00c4a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3732 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