Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
from __future__ import print_function
from __future__ import division
#
pauli_pluginversion = "8.3-r4"
#
from struct import pack
from enigma import *
from Screens.Screen import Screen
from Screens.MessageBox import MessageBox
from Screens.InputBox import InputBox
from Screens.ChoiceBox import ChoiceBox
from Components.ActionMap import ActionMap, NumberActionMap
from Components.ScrollLabel import ScrollLabel
from Components.GUIComponent import *
from Components.MenuList import MenuList
from Components.Input import Input
from Components.ConfigList import ConfigList
from Screens.Console import Console
from Plugins.Plugin import PluginDescriptor
from Screens.ServiceInfo import *
from Plugins.Plugin import PluginDescriptor
from Tools import Notifications
from Components.config import *
from os import path as os_path
import keymapparser
session = None

from time import *
import time
import datetime
pauli_readme = "/usr/share/doc/enigma2-plugin-extensions-pauli/README"
pauli_keymap = "/usr/share/enigma2/keymap.xml"
pauli_mytest = "/usr/lib/enigma2/python/mytest.py"
pauli_recordinfo = "/usr/lib/enigma2/python/RecordTimer.py"
pauli_pluginlist = "/usr/lib/enigma2/python/Screens/PluginBrowser.py"
pauli_infobar = "/usr/lib/enigma2/python/Screens/InfoBarGenerics.py"
pauli_pvrstate = "/usr/lib/enigma2/python/Screens/PVRState.py"
pauli_timerentry = "/usr/lib/enigma2/python/Screens/TimerEntry.py"
YELLOWC =  '\033[33m'                                                                
ENDC = '\033[m'                                                                      
                                                                                     
def cprint(text):                                                                    
        print(YELLOWC+"[PAULI] "+text+ENDC)    

def main(session, **kwargs):
    session.open(PauliRemoteControl)

def Plugins(**kwargs):
    return [PluginDescriptor(name="Pauli Neutrino Keymap", description="Switch Keymap & other usefull things", where = PluginDescriptor.WHERE_PLUGINMENU, icon="pauli.png", fnc=main)]

sz_w = getDesktop(0).size().width() 
##
## PauliRemoteControl
##
## By AliAbdul 
##
## He was so friendly to allow this code piece from LT Image to be used by Pauli
##
## Thank You !!!
##
class PauliRemoteControl(Screen):
        if sz_w == 2560:         
		skin = """
		<screen position="center,240" size="1640,1120" title="Pauli Remote Control Setup" >
		<eLabel backgroundColor="grey" position="20,110" size="1600,2" />
		<widget name="config" position="20,140" size="1600,790" scrollbarMode="showOnDemand" />
		<eLabel backgroundColor="grey" position="20,940" size="1600,2" />
		<ePixmap position="20,30" size="120,60" pixmap="/usr/share/enigma2/skin_default/buttons/red.png" transparent="1" alphatest="on" />
		<ePixmap position="400,30" size="120,60" pixmap="/usr/share/enigma2/skin_default/buttons/green.png" transparent="1" alphatest="on" />
		<ePixmap position="820,30" size="120,60" pixmap="/usr/share/enigma2/skin_default/buttons/yellow.png" transparent="1" alphatest="on" />
		<ePixmap position="1240,30" size="120,60" pixmap="/usr/share/enigma2/skin_default/buttons/blue.png" transparent="1" alphatest="on" />
		<ePixmap position="20,960" size="120,60" pixmap="/usr/share/enigma2/skin_default/buttons/key_1.png" transparent="1" alphatest="on" />
		<ePixmap position="400,960" size="120,60" pixmap="/usr/share/enigma2/skin_default/buttons/key_2.png" transparent="1" alphatest="on" />
		<ePixmap position="820,960" size="120,60" pixmap="/usr/share/enigma2/skin_default/buttons/key_3.png" transparent="1" alphatest="on" />
		<ePixmap position="1240,960" size="120,60" pixmap="/usr/share/enigma2/skin_default/buttons/key_4.png" transparent="1" alphatest="on" />
		<ePixmap position="20,1044" size="120,48" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Pauli/pauli.png" transparent="1" alphatest="on" />
		<ePixmap position="400,1040" size="120,60" pixmap="/usr/share/enigma2/skin_default/buttons/key_0.png" transparent="1" alphatest="on" />
		<ePixmap position="820,1040" size="120,60" pixmap="/usr/share/enigma2/skin_default/icons/help.png" transparent="1" alphatest="on" />
		<ePixmap position="1240,1040" size="120,60" pixmap="/usr/share/enigma2/skin_default/icons/info.png" transparent="1" alphatest="on" />
		<eLabel text="Exit" position="160,30" size="240,50" font="Regular;44" transparent="1" />
		<eLabel text="Enigma2" position="540,30" size="240,50" font="Regular;44" transparent="1" />
		<eLabel text="Neutrino" position="960,30" size="240,50" font="Regular;44" transparent="1" />
		<eLabel text="User" position="1380,30" size="240,50" font="Regular;44" transparent="1" />
		<eLabel text="Short Power" position="160,970" size="400,50" font="Regular;32" transparent="1" />
		<eLabel text="Listbox Left/Right" position="540,970" size="400,50" font="Regular;32" transparent="1" />
		<eLabel text="EPG OK zap" position="960,970" size="400,50" font="Regular;32" transparent="1" />
		<eLabel text="Info Long/Short" position="1380,970" size="400,50" font="Regular;32" transparent="1" />
		<eLabel text="Original" position="540,1050" size="400,50" font="Regular;32" transparent="1" />
		<eLabel text="Help" position="960,1050" size="400,50" font="Regular;32" transparent="1" />
		<eLabel text="About" position="1380,1050" size="400,50" font="Regular;32" transparent="1" />
		</screen>""" 
        elif sz_w == 1920:         
		skin = """
		<screen position="center,170" size="1200,720" title="Pauli Remote Control Setup" >
		<eLabel backgroundColor="grey" position="10,80" size="1180,1" />
		<widget name="config" position="20,90" size="1160,500" scrollbarMode="showOnDemand" />
		<eLabel backgroundColor="grey" position="10,600" size="1180,1" />
		<ePixmap position="20,20" size="80,40" pixmap="/usr/share/enigma2/skin_default/buttons/red.png" transparent="1" alphatest="on" />
		<ePixmap position="300,20" size="80,40" pixmap="/usr/share/enigma2/skin_default/buttons/green.png" transparent="1" alphatest="on" />
		<ePixmap position="620,20" size="80,40" pixmap="/usr/share/enigma2/skin_default/buttons/yellow.png" transparent="1" alphatest="on" />
		<ePixmap position="920,20" size="80,40" pixmap="/usr/share/enigma2/skin_default/buttons/blue.png" transparent="1" alphatest="on" />
		<ePixmap position="20,610" size="80,40" pixmap="/usr/share/enigma2/skin_default/buttons/key_1.png" transparent="1" alphatest="on" />
		<ePixmap position="300,610" size="80,40" pixmap="/usr/share/enigma2/skin_default/buttons/key_2.png" transparent="1" alphatest="on" />
		<ePixmap position="620,610" size="80,40" pixmap="/usr/share/enigma2/skin_default/buttons/key_3.png" transparent="1" alphatest="on" />
		<ePixmap position="920,610" size="80,40" pixmap="/usr/share/enigma2/skin_default/buttons/key_4.png" transparent="1" alphatest="on" />
		<ePixmap position="20,670" size="80,32" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Pauli/pauli.png" transparent="1" alphatest="on" />
		<ePixmap position="300,670" size="80,40" pixmap="/usr/share/enigma2/skin_default/buttons/key_0.png" transparent="1" alphatest="on" />
		<ePixmap position="620,670" size="80,40" pixmap="/usr/share/enigma2/skin_default/icons/help.png" transparent="1" alphatest="on" />
		<ePixmap position="920,670" size="80,40" pixmap="/usr/share/enigma2/skin_default/icons/info.png" transparent="1" alphatest="on" />
		<eLabel text="Exit" position="110,20" size="180,40" font="Regular;36" transparent="1" />
		<eLabel text="Enigma2" position="400,20" size="180,40" font="Regular;36" transparent="1" />
		<eLabel text="Neutrino" position="710,20" size="180,40" font="Regular;36" transparent="1" />
		<eLabel text="User" position="1010,20" size="180,40" font="Regular;36" transparent="1" />
		<eLabel text="Short Power" position="110,615" size="400,50" font="Regular;24" transparent="1" />
		<eLabel text="Listbox Left/Right" position="390,615" size="400,50" font="Regular;24" transparent="1" />
		<eLabel text="EPG OK zap" position="710,615" size="400,50" font="Regular;24" transparent="1" />
		<eLabel text="Info Long/Short" position="1010,615" size="400,50" font="Regular;24" transparent="1" />
		<eLabel text="Original" position="390,675" size="400,50" font="Regular;24" transparent="1" />
		<eLabel text="Help" position="710,675" size="400,50" font="Regular;24" transparent="1" />
		<eLabel text="About" position="1010,675" size="400,50" font="Regular;24" transparent="1" />
		</screen>"""
	else:
		skin = """
		<screen position="center,120" size="820,500" title="Pauli Remote Control Setup" >
		<eLabel backgroundColor="grey" position="10,55" size="800,1" />
		<widget name="config" position="10,70" size="800,330" scrollbarMode="showOnDemand" />
		<eLabel backgroundColor="grey" position="10,410" size="800,1" />
		<ePixmap position="10,15" size="60,30" pixmap="/usr/share/enigma2/skin_default/buttons/red.png" transparent="1" alphatest="on" />
		<ePixmap position="200,15" size="60,30" pixmap="/usr/share/enigma2/skin_default/buttons/green.png" transparent="1" alphatest="on" />
		<ePixmap position="410,15" size="60,30" pixmap="/usr/share/enigma2/skin_default/buttons/yellow.png" transparent="1" alphatest="on" />
		<ePixmap position="620,15" size="60,30" pixmap="/usr/share/enigma2/skin_default/buttons/blue.png" transparent="1" alphatest="on" />
		<ePixmap position="10,420" size="60,30" pixmap="/usr/share/enigma2/skin_default/buttons/key_1.png" transparent="1" alphatest="on" />
		<ePixmap position="200,420" size="60,30" pixmap="/usr/share/enigma2/skin_default/buttons/key_2.png" transparent="1" alphatest="on" />
		<ePixmap position="410,420" size="60,30" pixmap="/usr/share/enigma2/skin_default/buttons/key_3.png" transparent="1" alphatest="on" />
		<ePixmap position="620,420" size="60,30" pixmap="/usr/share/enigma2/skin_default/buttons/key_4.png" transparent="1" alphatest="on" />
		<ePixmap position="10,462" size="60,24" pixmap="/usr/lib/enigma2/python/Plugins/Extensions/Pauli/pauli.png" transparent="1" alphatest="on" />
		<ePixmap position="200,460" size="60,30" pixmap="/usr/share/enigma2/skin_default/buttons/key_0.png" transparent="1" alphatest="on" />
		<ePixmap position="410,460" size="60,30" pixmap="/usr/share/enigma2/skin_default/icons/help.png" transparent="1" alphatest="on" />
		<ePixmap position="620,460" size="60,30" pixmap="/usr/share/enigma2/skin_default/icons/info.png" transparent="1" alphatest="on" />
		<eLabel text="Exit" position="80,15" size="120,25" font="Regular;22" transparent="1" />
		<eLabel text="Enigma2" position="270,15" size="120,25" font="Regular;22" transparent="1" />
		<eLabel text="Neutrino" position="480,15" size="120,25" font="Regular;22" transparent="1" />
		<eLabel text="User" position="690,15" size="120,25" font="Regular;22" transparent="1" />
		<eLabel text="Short Power" position="80,425" size="200,25" font="Regular;16" transparent="1" />
		<eLabel text="Listbox Left/Right" position="270,425" size="200,25" font="Regular;16" transparent="1" />
		<eLabel text="EPG OK zap" position="480,425" size="200,25" font="Regular;16" transparent="1" />
		<eLabel text="Info Long/Short" position="690,425" size="200,25" font="Regular;16" transparent="1" />
		<eLabel text="Original" position="270,465" size="200,25" font="Regular;16" transparent="1" />
		<eLabel text="Help" position="480,465" size="200,25" font="Regular;16" transparent="1" />
		<eLabel text="About" position="690,465" size="200,25" font="Regular;16" transparent="1" />
		</screen>""" 

	def __init__(self, session, args = 0):
		self.skin = PauliRemoteControl.skin
		self.session = session
		Screen.__init__(self, session)
		if not os_path.exists("/usr/share/enigma2/keymap.xml.pauli.ori"):                     
			cmd="cp /usr/share/enigma2/keymap.xml /usr/share/enigma2/keymap.xml.pauli.ori"
			self.container = eConsoleAppContainer()                                       
			self.container.execute(cmd)     
		functionKeyLeft = "DoNothing"
		functionKeyRight = "DoNothing"
		functionKeyUp = "DoNothing"
		functionKeyDown = "DoNothing"
		functionKeyOK = "DoNothing"
		functionKeyPrevious = "DoNothing"
		functionKeyNext = "DoNothing"
		functionKeyChannelUp = "DoNothing"
		functionKeyChannelDown = "DoNothing"
		functionKeyButton0 = "DoNothing"
		functionKeyButton1 = "DoNothing"
		buttonList = ["zapUp", "zapDown", "pageUp", "pageDown", "switchChannelUp", "switchChannelDown", "openServiceList", "historyBack", "historyNext"]
		try:
			endRead = False
			endRead2 = False
			xmlFile = open(pauli_keymap, 'r')
			while endRead == False:
				line = xmlFile.readline()
				if line.__contains__('<'):
					position = line.index('<')
					line = line[position:999]
					if line.startswith('<map context="InfobarChannelSelection">'):
						while endRead2 == False:
							line = xmlFile.readline()
							position = line.index('<')
							line = line[position:999]
							if line.startswith('</map>'):
								endRead = True
								endRead2 = True
							elif line.startswith('<key id="'):
								completeLine = line
								position = line.index('mapto')
								line = line[position+7:999]
								position = line.index('"')
								line = line[0:position]
								if buttonList.__contains__(line):
									if completeLine.startswith('<key id="KEY_LEFT"'):
										functionKeyLeft = line
									elif completeLine.startswith('<key id="KEY_RIGHT"'):
										functionKeyRight = line
									elif completeLine.startswith('<key id="KEY_UP"'):
										functionKeyUp = line
									elif completeLine.startswith('<key id="KEY_DOWN"'):
										functionKeyDown = line
									elif completeLine.startswith('<key id="KEY_OK"'):
										functionKeyOK = line
									elif completeLine.startswith('<key id="KEY_PREVIOUS"'):
										functionKeyPrevious = line
									elif completeLine.startswith('<key id="KEY_NEXT"'):
										functionKeyNext = line
									elif completeLine.startswith('<key id="KEY_CHANNELUP"'):
										functionKeyChannelUp = line
									elif completeLine.startswith('<key id="KEY_CHANNELDOWN"'):
										functionKeyChannelDown = line
									elif completeLine.startswith('<key id="BTN_0"'):
										functionKeyButton0 = line
									elif completeLine.startswith('<key id="BTN_1"'):
										functionKeyButton1 = line
							else:
								DoNothing = True
			xmlFile.close()
		except:
			cprint("could not read the file /usr/share/enigma2/keymap.xml")
		list = []
		self["config"] = ConfigList(list)
		self.buttons = ConfigSubsection()
		self.buttons.keyLeft = ConfigSelection(choices = [("zapUp", _("zapUp")), ("zapDown", _("zapDown")), ("pageUp", _("pageUp")), ("pageDown", _("pageDown")), ("switchChannelUp", _("switchChannelUp")), ("switchChannelDown", _("switchChannelDown")), ("openServiceList", _("openServiceList")), ("historyBack", _("historyBack")), ("historyNext", _("historyNext")), ("DoNothing", _("DoNothing"))], default = (functionKeyLeft))
		self.buttons.keyRight = ConfigSelection(choices = [("zapUp", _("zapUp")), ("zapDown", _("zapDown")), ("pageUp", _("pageUp")), ("pageDown", _("pageDown")), ("switchChannelUp", _("switchChannelUp")), ("switchChannelDown", _("switchChannelDown")), ("openServiceList", _("openServiceList")), ("historyBack", _("historyBack")), ("historyNext", _("historyNext")), ("DoNothing", _("DoNothing"))], default = (functionKeyRight))
		self.buttons.keyUp = ConfigSelection(choices = [("zapUp", _("zapUp")), ("zapDown", _("zapDown")), ("pageUp", _("pageUp")), ("pageDown", _("pageDown")), ("switchChannelUp", _("switchChannelUp")), ("switchChannelDown", _("switchChannelDown")), ("openServiceList", _("openServiceList")), ("historyBack", _("historyBack")), ("historyNext", _("historyNext")), ("DoNothing", _("DoNothing"))], default = (functionKeyUp))
		self.buttons.keyDown = ConfigSelection(choices = [("zapUp", _("zapUp")), ("zapDown", _("zapDown")), ("pageUp", _("pageUp")), ("pageDown", _("pageDown")), ("switchChannelUp", _("switchChannelUp")), ("switchChannelDown", _("switchChannelDown")), ("openServiceList", _("openServiceList")), ("historyBack", _("historyBack")), ("historyNext", _("historyNext")), ("DoNothing", _("DoNothing"))], default = (functionKeyDown))
		self.buttons.keyOK = ConfigSelection(choices = [("zapUp", _("zapUp")), ("zapDown", _("zapDown")), ("pageUp", _("pageUp")), ("pageDown", _("pageDown")), ("switchChannelUp", _("switchChannelUp")), ("switchChannelDown", _("switchChannelDown")), ("openServiceList", _("openServiceList")), ("historyBack", _("historyBack")), ("historyNext", _("historyNext")), ("DoNothing", _("DoNothing"))], default = (functionKeyOK))
		self.buttons.keyPrevious = ConfigSelection(choices = [("zapUp", _("zapUp")), ("zapDown", _("zapDown")), ("pageUp", _("pageUp")), ("pageDown", _("pageDown")), ("switchChannelUp", _("switchChannelUp")), ("switchChannelDown", _("switchChannelDown")), ("openServiceList", _("openServiceList")), ("historyBack", _("historyBack")), ("historyNext", _("historyNext")), ("DoNothing", _("DoNothing"))], default = (functionKeyPrevious))
		self.buttons.keyNext = ConfigSelection(choices = [("zapUp", _("zapUp")), ("zapDown", _("zapDown")), ("pageUp", _("pageUp")), ("pageDown", _("pageDown")), ("switchChannelUp", _("switchChannelUp")), ("switchChannelDown", _("switchChannelDown")), ("openServiceList", _("openServiceList")), ("historyBack", _("historyBack")), ("historyNext", _("historyNext")), ("DoNothing", _("DoNothing"))], default = (functionKeyNext))
		self.buttons.keyChannelUp = ConfigSelection(choices = [("zapUp", _("zapUp")), ("zapDown", _("zapDown")), ("pageUp", _("pageUp")), ("pageDown", _("pageDown")), ("switchChannelUp", _("switchChannelUp")), ("switchChannelDown", _("switchChannelDown")), ("openServiceList", _("openServiceList")), ("historyBack", _("historyBack")), ("historyNext", _("historyNext")), ("DoNothing", _("DoNothing"))], default = (functionKeyChannelUp))
		self.buttons.keyChannelDown = ConfigSelection(choices = [("zapUp", _("zapUp")), ("zapDown", _("zapDown")), ("pageUp", _("pageUp")), ("pageDown", _("pageDown")), ("switchChannelUp", _("switchChannelUp")), ("switchChannelDown", _("switchChannelDown")), ("openServiceList", _("openServiceList")), ("historyBack", _("historyBack")), ("historyNext", _("historyNext")), ("DoNothing", _("DoNothing"))], default = (functionKeyChannelDown))
		self.buttons.keyButton0 = ConfigSelection(choices = [("zapUp", _("zapUp")), ("zapDown", _("zapDown")), ("pageUp", _("pageUp")), ("pageDown", _("pageDown")), ("switchChannelUp", _("switchChannelUp")), ("switchChannelDown", _("switchChannelDown")), ("openServiceList", _("openServiceList")), ("historyBack", _("historyBack")), ("historyNext", _("historyNext")), ("DoNothing", _("DoNothing"))], default = (functionKeyButton0))
		self.buttons.keyButton1 = ConfigSelection(choices = [("zapUp", _("zapUp")), ("zapDown", _("zapDown")), ("pageUp", _("pageUp")), ("pageDown", _("pageDown")), ("switchChannelUp", _("switchChannelUp")), ("switchChannelDown", _("switchChannelDown")), ("openServiceList", _("openServiceList")), ("historyBack", _("historyBack")), ("historyNext", _("historyNext")), ("DoNothing", _("DoNothing"))], default = (functionKeyButton1))
		list.append(getConfigListEntry(_("KEY_LEFT"), self.buttons.keyLeft))
		list.append(getConfigListEntry(_("KEY_RIGHT"), self.buttons.keyRight))
		list.append(getConfigListEntry(_("KEY_UP"), self.buttons.keyUp))
		list.append(getConfigListEntry(_("KEY_DOWN"), self.buttons.keyDown))
		list.append(getConfigListEntry(_("KEY_OK"), self.buttons.keyOK))
		list.append(getConfigListEntry(_("KEY_PREVIOUS"), self.buttons.keyPrevious))
		list.append(getConfigListEntry(_("KEY_NEXT"), self.buttons.keyNext))
		list.append(getConfigListEntry(_("KEY_CHANNELUP"), self.buttons.keyChannelUp))
		list.append(getConfigListEntry(_("KEY_CHANNELDOWN"), self.buttons.keyChannelDown))
		list.append(getConfigListEntry(_("BTN_0"), self.buttons.keyButton0))
		list.append(getConfigListEntry(_("BTN_1"), self.buttons.keyButton1))
 		self["shortcuts"] = ActionMap(["ShortcutActions","HelpActions","EPGSelectActions","InfobarAudioSelectionActions"],
		{
			"green": self.setEnigma,
			"yellow": self.setNeutrino,
			"blue": self.setUser,
			"red": self.close,
			"displayHelp": self.readme,
			"info": self.about,
			"audioSelection": self.audioPressed
		})
		self["actions"] = NumberActionMap(["SetupActions"],
		{
			"0": self.setOriginal,
			"1": self.setDeepstandby,
			"2": self.setLeftRight,
			"3": self.setOKzap,
			"4": self.setInfoLongShort,
			"cancel": self.close,
			"left": self.keyLeft,
			"right": self.keyRight
		}, -1)

	def audioPressed(self):                                                     
	        cprint("AUDIO pressed")                                                 
	        #Device Types                                                           
	        TYPE_STANDARD = "dreambox remote control (native)"                      
	        TYPE_ADVANCED = "dreambox advanced remote control (native)"             
	        TYPE_KEYBOARD = "dreambox ir keyboard"                                  
                                                                                
	        #Advanced remote or standard?                                           
	        if config.misc.rcused.value == 0:                                       
	            self.remotetype = TYPE_ADVANCED                                     
	        else:                                                                   
	            self.remotetype = TYPE_STANDARD                                     
	        self.eam = eActionMap.getInstance()                                     
	        # press the key with the desired flag                                   
	        keycode=138 # HELP key                                                  
	        cprint("NOW WRITES OUT: %i = HELP" % (keycode))                         
	        self.eam.keyPressed(self.remotetype, keycode, 0)                        
	        # release the key                                                       
	        self.eam.keyPressed(self.remotetype, keycode, 1)                        

 	def readme(self):
              self.session.open(Console,_("Pauli Neutrino Keymap readme.txt"),["cat %s" % pauli_readme])

 	def about(self):
              self.session.open(MessageBox,_("Pauli Neutrino Keymap Plugin Version %s\npowerd by gutemine and AliAbdul\n\nWolfgang Pauli was an Austrian physicist and\nNobel price winner and postulated the Neutrino particle" % pauli_pluginversion), MessageBox.TYPE_INFO)

 	def keyLeft(self):
		self["config"].handleKey(KEY_LEFT)

	def keyRight(self):
		self["config"].handleKey(KEY_RIGHT)

	def setOriginal(self,number):
                if os_path.exists("/usr/share/enigma2/keymap.xml.pauli.ori"):
                	cmd="cp /usr/share/enigma2/keymap.xml.pauli.ori /usr/share/enigma2/keymap.xml"
			self.container = eConsoleAppContainer() 
			self.container_appClosed_conn = self.container.appClosed.connect(self.runFinished)
			self.container.execute(cmd)
                else:
                	self.session.open(MessageBox,_("Pauli could not find original Keymap"), MessageBox.TYPE_ERROR)
	
	def runFinished(self,retval):
                keymapparser.removeKeymap(pauli_keymap)
                keymapparser.readKeymap(pauli_keymap)
                self.session.open(MessageBox,_("Pauli restored original Keymap"), MessageBox.TYPE_INFO)
                   
	def setOKzap(self,number):
                keymapfile = open(pauli_keymap, "r")
                text=keymapfile.read()
                keymapfile.close()
	        if text.find("<key id=\"KEY_OK\" mapto=\"red\" flags=\"m\" />") is -1:
	           text=text.replace("<key id=\"KEY_MENU\" mapto=\"input_date_time\" flags=\"m\" />","<key id=\"KEY_MENU\" mapto=\"input_date_time\" flags=\"m\" />\n		<key id=\"KEY_OK\" mapto=\"red\" flags=\"m\" />")
                   keymapfile = open(pauli_keymap, "w")
                   keymapfile.write(text)
                   keymapfile.close()
                   keymapparser.removeKeymap(pauli_keymap)
                   keymapparser.readKeymap(pauli_keymap)
                   self.session.open(MessageBox,_("Pauli enabled zapping with OK in EPG"), MessageBox.TYPE_INFO)
                else:
	           text=text.replace("<key id=\"KEY_MENU\" mapto=\"input_date_time\" flags=\"m\" />\n		<key id=\"KEY_OK\" mapto=\"red\" flags=\"m\" />","<key id=\"KEY_MENU\" mapto=\"input_date_time\" flags=\"m\" />")
                   keymapfile = open(pauli_keymap, "w")
                   keymapfile.write(text)
                   keymapfile.close()
                   keymapparser.removeKeymap(pauli_keymap)
                   keymapparser.readKeymap(pauli_keymap)
                   self.session.open(MessageBox,_("Pauli disabled zapping with OK in EPG"), MessageBox.TYPE_INFO)

	def setInfoLongShort(self,number):
                keymapfile = open(pauli_keymap, "r")
                text=keymapfile.read()
                keymapfile.close()
	        if text.find("<key id=\"KEY_INFO\" mapto=\"showEventInfo\" flags=\"l\" />") is -1 and text.find("<key id=\"KEY_INFO\" mapto=\"showEventView\" flags=\"l\" />") is -1:
	           text=text.replace("<key id=\"KEY_INFO\" mapto=\"showEventView\" flags=\"b\" />","<key id=\"KEY_INFO\" mapto=\"showEventView\" flags=\"l\" />")
	           text=text.replace("<key id=\"KEY_INFO\" mapto=\"showEventInfo\" flags=\"b\" />","<key id=\"KEY_INFO\" mapto=\"showEventInfo\" flags=\"l\" />")
	           text=text.replace("<key id=\"KEY_INFO\" mapto=\"showEventInfoPlugin\" flags=\"l\" />","<key id=\"KEY_INFO\" mapto=\"showEventInfoPlugin\" flags=\"b\" />")
	           text=text.replace("<key id=\"KEY_INFO\" mapto=\"showSingleServiceEPG\" flags=\"l\" />","<key id=\"KEY_INFO\" mapto=\"showSingleServiceEPG\" flags=\"b\" />")
                   keymapfile = open(pauli_keymap, "w")
                   keymapfile.write(text)
                   keymapfile.close()
                   keymapparser.removeKeymap(pauli_keymap)
                   keymapparser.readKeymap(pauli_keymap)
                   self.session.open(MessageBox,_("Pauli enabled Simple EPG on short Info"), MessageBox.TYPE_INFO)
                else:
	           text=text.replace("<key id=\"KEY_INFO\" mapto=\"showEventView\" flags=\"l\" />","<key id=\"KEY_INFO\" mapto=\"showEventView\" flags=\"b\" />")
	           text=text.replace("<key id=\"KEY_INFO\" mapto=\"showEventInfo\" flags=\"l\" />","<key id=\"KEY_INFO\" mapto=\"showEventInfo\" flags=\"b\" />")
	           text=text.replace("<key id=\"KEY_INFO\" mapto=\"showEventInfoPlugin\" flags=\"b\" />","<key id=\"KEY_INFO\" mapto=\"showEventInfoPlugin\" flags=\"l\" />")
	           text=text.replace("<key id=\"KEY_INFO\" mapto=\"showSingleServiceEPG\" flags=\"b\" />","<key id=\"KEY_INFO\" mapto=\"showSingleServiceEPG\" flags=\"l\" />")
                   keymapfile = open(pauli_keymap, "w")
                   keymapfile.write(text)
                   keymapfile.close()
                   keymapparser.removeKeymap(pauli_keymap)
                   keymapparser.readKeymap(pauli_keymap)
                   self.session.open(MessageBox,_("Pauli enabled Simple EPG on long Info"), MessageBox.TYPE_INFO)

	def setLeftRight(self,number):
                # toggle Left/Right enable in ListboxActions to make romeo-golf happy
                keymapfile = open(pauli_keymap, "r")
                text=keymapfile.read()
                keymapfile.close()
	        if text.find("<!-- key id=\"KEY_REWIND\" mapto=\"prevBouquet\" flags=\"mr\" />") is -1:			   
	           text=text.replace("<key id=\"KEY_REWIND\" mapto=\"prevBouquet\" flags=\"m\" />","<key id=\"KEY_LEFT\" mapto=\"prevBouquet\" flags=\"m\" />")
	           text=text.replace("<key id=\"KEY_FASTFORWARD\" mapto=\"nextBouquet\" flags=\"m\" />","<key id=\"KEY_RIGHT\" mapto=\"nextBouquet\" flags=\"m\" />")
	        if text.find("<!-- key id=\"KEY_LEFT\" mapto=\"pageUp\" flags=\"mr\" />") is -1:			   
	           text=text.replace("<key id=\"KEY_LEFT\" mapto=\"pageUp\" flags=\"mr\" />","<!-- key id=\"KEY_LEFT\" mapto=\"pageUp\" flags=\"mr\" />")
	           text=text.replace("<key id=\"KEY_RIGHT\" mapto=\"pageDown\" flags=\"mr\" />","<key id=\"KEY_RIGHT\" mapto=\"pageDown\" flags=\"mr\" /-->")			   
			   
                   keymapfile = open(pauli_keymap, "w")
                   keymapfile.write(text)
                   keymapfile.close()
                   keymapparser.removeKeymap(pauli_keymap)
                   keymapparser.readKeymap(pauli_keymap)
                   self.session.open(MessageBox,_("LEFT/RIGHT = switch Bouquets"), MessageBox.TYPE_INFO)
                else:
	           text=text.replace("<!-- key id=\"KEY_LEFT\" mapto=\"pageUp\" flags=\"mr\" />","<key id=\"KEY_LEFT\" mapto=\"pageUp\" flags=\"mr\" />")
	           text=text.replace("<key id=\"KEY_RIGHT\" mapto=\"pageDown\" flags=\"mr\" /-->","<key id=\"KEY_RIGHT\" mapto=\"pageDown\" flags=\"mr\" />")
	           text=text.replace("<key id=\"KEY_LEFT\" mapto=\"prevBouquet\" flags=\"m\" />","<key id=\"KEY_REWIND\" mapto=\"prevBouquet\" flags=\"m\" />")
	           text=text.replace("<key id=\"KEY_RIGHT\" mapto=\"nextBouquet\" flags=\"m\" />","<key id=\"KEY_FASTFORWARD\" mapto=\"nextBouquet\" flags=\"m\" />")
			   
                   keymapfile = open(pauli_keymap, "w")
                   keymapfile.write(text)
                   keymapfile.close()
                   keymapparser.removeKeymap(pauli_keymap)
                   keymapparser.readKeymap(pauli_keymap)
                   self.session.open(MessageBox,_("LEFT/RIGHT = Page Up/Down"), MessageBox.TYPE_INFO)

	def setNeutrino(self):
	        # do the stuff AliAbdul ignores
                keymapfile = open(pauli_keymap, "r")
                text=keymapfile.read()
                keymapfile.close()
                # for ListboxActions
 	        if text.find("<key id=\"KEY_CHANNELUP\" mapto=\"pageUp\" flags=\"mr\" />") is -1:
	           text=text.replace("<key id=\"KEY_PAGEDOWN\" mapto=\"pageDown\" flags=\"mr\" />","<key id=\"KEY_PAGEDOWN\" mapto=\"pageDown\" flags=\"mr\" />\n		<key id=\"KEY_CHANNELUP\" mapto=\"pageUp\" flags=\"mr\" />\n		<key id=\"KEY_CHANNELDOWN\" mapto=\"pageDown\" flags=\"mr\" />")
 	        if text.find("<key id=\"KEY_PREVIOUS\" mapto=\"pageUp\" flags=\"mr\" />") is -1:
	           text=text.replace("<key id=\"KEY_PAGEDOWN\" mapto=\"pageDown\" flags=\"mr\" />","<key id=\"KEY_PAGEDOWN\" mapto=\"pageDown\" flags=\"mr\" />\n		<key id=\"KEY_PREVIOUS\" mapto=\"pageUp\" flags=\"mr\" />\n		<key id=\"KEY_NEXT\" mapto=\"pageDown\" flags=\"mr\" />")
	        if text.find("<!-- key id=\"KEY_LEFT\" mapto=\"pageUp\" flags=\"mr\" />") is -1:
	           text=text.replace("<key id=\"KEY_LEFT\" mapto=\"pageUp\" flags=\"mr\" />","<!-- key id=\"KEY_LEFT\" mapto=\"pageUp\" flags=\"mr\" />")
	           text=text.replace("<key id=\"KEY_RIGHT\" mapto=\"pageDown\" flags=\"mr\" />","<key id=\"KEY_RIGHT\" mapto=\"pageDown\" flags=\"mr\" /-->")
                # for InfobarShowHideActions
 	        if text.find("<key id=\"KEY_EXIT\" mapto=\"toggleShow\" flags=\"m\" />") is -1:
                   text=text.replace("<key id=\"KEY_EXIT\" mapto=\"hide\" flags=\"m\" />","<key id=\"KEY_EXIT\" mapto=\"toggleShow\" flags=\"m\" />")
                # for InfobarSubserviceSelectionActions
 	        if text.find("<key id=\"KEY_LEFT\" mapto=\"subserviceSelection\" flags=\"mr\" />") is -1:
	           text=text.replace("<key id=\"KEY_GREEN\" mapto=\"subserviceSelection\" flags=\"m\" />","<key id=\"KEY_GREEN\" mapto=\"subserviceSelection\" flags=\"m\" />\n		<key id=\"KEY_LEFT\" mapto=\"subserviceSelection\" flags=\"mr\" />\n		<key id=\"KEY_RIGHT\" mapto=\"subserviceSelection\" flags=\"mr\" />")
	           # for Green Quickbutton in GP
	           text=text.replace("<key id=\"KEY_GREEN\" mapto=\"subserviceSelection\" flags=\"b\" />","<key id=\"KEY_GREEN\" mapto=\"subserviceSelection\" flags=\"b\" />\n		<key id=\"KEY_LEFT\" mapto=\"subserviceSelection\" flags=\"mr\" />\n		<key id=\"KEY_RIGHT\" mapto=\"subserviceSelection\" flags=\"mr\" />")
	        # for InfobarSubserviceQuickzapActions
 	        if text.find("<key id=\"KEY_LEFT\" mapto=\"prevSubservice\" flags=\"m\" />") is -1:
                   text=text.replace("<key id=\"KEY_BACK\" mapto=\"prevSubservice\" flags=\"m\" />","<key id=\"KEY_LEFT\" mapto=\"prevSubservice\" flags=\"m\" />")
                   text=text.replace("<key id=\"KEY_FORWARD\" mapto=\"nextSubservice\" flags=\"m\" />","<key id=\"KEY_RIGHT\" mapto=\"nextSubservice\" flags=\"m\" />")
	        # for ChannelSelectBaseActions
 	        if text.find("<key id=\"KEY_RIGHT\" mapto=\"nextBouquet\" flags=\"m\" />") is -1:
                   text=text.replace("<key id=\"KEY_CHANNELDOWN\" mapto=\"prevBouquet\" flags=\"m\" />","<key id=\"KEY_LEFT\" mapto=\"prevBouquet\" flags=\"m\" />")
                   text=text.replace("<key id=\"KEY_CHANNELUP\" mapto=\"nextBouquet\" flags=\"m\" />","<key id=\"KEY_RIGHT\" mapto=\"nextBouquet\" flags=\"m\" />")
                   # fix MediaPlayerActions
                   text=text.replace("<key id=\"KEY_8\" mapto=\"skipListend\" flags=\"m\" />\n		<key id=\"KEY_RIGHT\" mapto=\"nextBouquet\" flags=\"m\" />\n		<key id=\"KEY_LEFT\" mapto=\"prevBouquet\" flags=\"m\" />","<key id=\"KEY_8\" mapto=\"skipListend\" flags=\"m\" />\n		<key id=\"KEY_CHANNELUP\" mapto=\"nextBouquet\" flags=\"m\" />\n		<key id=\"KEY_CHANNELDOWN\" mapto=\"prevBouquet\" flags=\"m\" />")
		# for latest iCVS
		restart=False
                ibgfile = open(pauli_infobar, "r")
       	        text2=ibgfile.read()
      	 	ibgfile.close()
 	        if text2.find("\"openServiceList\": ") is -1:
		   	restart=True
                   	text2=text2.replace("\"historyNext\": (self.historyNext, _(\"next channel in history\")),","\"historyNext\": (self.historyNext, _(\"next channel in history\")),\n				\"openServiceList\": (self.openServiceList, _(\"open servicelist\")),")
	                ibgfile = open(pauli_infobar, "w")
        	        ibgfile.write(text2)
               	 	ibgfile.close()

                keymapfile = open(pauli_keymap, "w")
                keymapfile.write(text)
                keymapfile.close()
		list = ["DoNothing", "DoNothing", "zapDown", "zapUp", "openServiceList", "historyBack", "historyNext", "openServiceList", "openServiceList", "zapUp", "zapDown"]
		self.writeConfigs(list)
		if restart:
			self.session.openWithCallback(self.DoEnigma2Restart,MessageBox,_("Pauli changed Keymap to Neutrino\nrestarting Enigma2 to activate - OK ?"), MessageBox.TYPE_YESNO)
		else:
			self.session.openWithCallback(self.close,MessageBox,_("Pauli changed Keymap to Neutrino"), MessageBox.TYPE_INFO)

	def DoEnigma2Restart(self,answer):
	        if answer is None:
        		self.skipEnigma2Restart("answer is None, restart later")
       	 	if answer is False:
            		self.skipEnigma2Restart("you were not confirming, restart later")
        	else:
            		quitMainloop(3)
            
	def skipEnigma2Restart(self,reason):
        	self.session.open(MessageBox,_("Enigma2 restart was canceled, because %s" % reason), MessageBox.TYPE_WARNING)


	def setEnigma(self):
                keymapfile = open(pauli_keymap, "r")
                text=keymapfile.read()
                keymapfile.close()
                #for ListboxActions
	        text=text.replace("<key id=\"KEY_PAGEDOWN\" mapto=\"pageDown\" flags=\"mr\" />\n		<key id=\"KEY_PREVIOUS\" mapto=\"pageUp\" flags=\"mr\" />\n		<key id=\"KEY_NEXT\" mapto=\"pageDown\" flags=\"mr\" />","<key id=\"KEY_PAGEDOWN\" mapto=\"pageDown\" flags=\"mr\" />")
	        text=text.replace("<key id=\"KEY_PAGEDOWN\" mapto=\"pageDown\" flags=\"mr\" />\n		<key id=\"KEY_CHANNELUP\" mapto=\"pageUp\" flags=\"mr\" />\n		<key id=\"KEY_CHANNELDOWN\" mapto=\"pageDown\" flags=\"mr\" />","<key id=\"KEY_PAGEDOWN\" mapto=\"pageDown\" flags=\"mr\" />")
	        text=text.replace("<!-- key id=\"KEY_LEFT\" mapto=\"pageUp\" flags=\"mr\" />","<key id=\"KEY_LEFT\" mapto=\"pageUp\" flags=\"mr\" />")
	        text=text.replace("<key id=\"KEY_RIGHT\" mapto=\"pageDown\" flags=\"mr\" /-->","<key id=\"KEY_RIGHT\" mapto=\"pageDown\" flags=\"mr\" />")
                # for InfobarShowHideActions
	        text=text.replace("<key id=\"KEY_EXIT\" mapto=\"toggleShow\" flags=\"m\" />","<key id=\"KEY_EXIT\" mapto=\"hide\" flags=\"m\" />")
                # for InfobarSubserviceSelectionActions
	        text=text.replace("<key id=\"KEY_GREEN\" mapto=\"subserviceSelection\" flags=\"m\" />\n		<key id=\"KEY_LEFT\" mapto=\"subserviceSelection\" flags=\"mr\" />\n		<key id=\"KEY_RIGHT\" mapto=\"subserviceSelection\" flags=\"mr\" />","<key id=\"KEY_GREEN\" mapto=\"subserviceSelection\" flags=\"m\" />")
                # for Green Quickbutton in GP
	        text=text.replace("<key id=\"KEY_GREEN\" mapto=\"subserviceSelection\" flags=\"b\" />\n		<key id=\"KEY_LEFT\" mapto=\"subserviceSelection\" flags=\"mr\" />\n		<key id=\"KEY_RIGHT\" mapto=\"subserviceSelection\" flags=\"mr\" />","<key id=\"KEY_GREEN\" mapto=\"subserviceSelection\" flags=\"b\" />")
	        # for InfobarSubserviceQuickzapActions
                text=text.replace("<key id=\"KEY_LEFT\" mapto=\"prevSubservice\" flags=\"m\" />","<key id=\"KEY_BACK\" mapto=\"prevSubservice\" flags=\"m\" />")
                text=text.replace("<key id=\"KEY_RIGHT\" mapto=\"nextSubservice\" flags=\"m\" />","<key id=\"KEY_FORWARD\" mapto=\"nextSubservice\" flags=\"m\" />")
	        # for ChannelSelectBaseActions
                text=text.replace("<key id=\"KEY_LEFT\" mapto=\"prevBouquet\" flags=\"m\" />","<key id=\"KEY_CHANNELDOWN\" mapto=\"prevBouquet\" flags=\"m\" />")
                text=text.replace("<key id=\"KEY_RIGHT\" mapto=\"nextBouquet\" flags=\"m\" />","<key id=\"KEY_CHANNELUP\" mapto=\"nextBouquet\" flags=\"m\" />")

                keymapfile = open(pauli_keymap, "w")
                keymapfile.write(text)
                keymapfile.close()
		list = ["zapUp", "zapDown", "switchChannelUp", "switchChannelDown", "DoNothing", "historyBack", "historyNext", "openServiceList", "openServiceList", "zapUp", "zapDown"]
		self.writeConfigs(list)
                self.session.openWithCallback(self.close,MessageBox,_("Pauli changed Keymap to Enigma2"), MessageBox.TYPE_INFO)

	def setUser(self):
		list = [self.buttons.keyLeft.value, self.buttons.keyRight.value, self.buttons.keyUp.value, self.buttons.keyDown.value, self.buttons.keyOK.value, self.buttons.keyPrevious.value, self.buttons.keyNext.value, self.buttons.keyChannelUp.value, self.buttons.keyChannelDown.value, self.buttons.keyButton0.value, self.buttons.keyButton1.value]
		self.writeConfigs(list)
                self.session.openWithCallback(self.close,MessageBox,_("Pauli changed Keymap to user-defined"), MessageBox.TYPE_INFO)

	def writeConfigs(self, list):
		functionKeyLeft = list[0]
		functionKeyRight = list[1]
		functionKeyUp = list[2]
		functionKeyDown = list[3]
		functionKeyOK = list[4]
		functionKeyPrevious = list[5]
		functionKeyNext = list[6]
		functionKeyChannelUp = list[7]
		functionKeyChannelDown = list[8]
		functionKeyButton0 = list[9]
		functionKeyButton1 = list[10]
		config = ""
		TAB = ""
		doWrite = True
		try:
			xmlFile = open(pauli_keymap, 'r')
			for line in xmlFile:
				if doWrite == True:
					config = config + line
					if line.__contains__('<'):
						position = line.index('<')
						tmp = line[position:999]
						if tmp.startswith('<map context="InfobarChannelSelection">'):
							doWrite = False
				else:
					if line.__contains__('<'):
						tmp = line[position:999]
						if tmp.startswith('</map>'):
							doWrite = True
							if functionKeyLeft != "DoNothing":
								config = config + TAB + TAB + '<key id="KEY_LEFT" mapto="' + functionKeyLeft + '" flags="mr" />' + "\n"	
							if functionKeyRight != "DoNothing":
								config = config + TAB + TAB + '<key id="KEY_RIGHT" mapto="' + functionKeyRight + '" flags="mr" />' + "\n"
							if functionKeyUp != "DoNothing":
								config = config + TAB + TAB + '<key id="KEY_UP" mapto="' + functionKeyUp + '" flags="mr" />' + "\n"
							if functionKeyDown != "DoNothing":
								config = config + TAB + TAB + '<key id="KEY_DOWN" mapto="' + functionKeyDown + '" flags="mr" />' + "\n"
							if functionKeyOK != "DoNothing":
								config = config + TAB + TAB + '<key id="KEY_OK" mapto="' + functionKeyOK + '" flags="mr" />' + "\n"
							if functionKeyPrevious != "DoNothing":
								config = config + TAB + TAB + '<key id="KEY_PREVIOUS" mapto="' + functionKeyPrevious + '" flags="mr" />' + "\n"
							if functionKeyNext != "DoNothing":
								config = config + TAB + TAB + '<key id="KEY_NEXT" mapto="' + functionKeyNext + '" flags="mr" />' + "\n"
							if functionKeyPrevious != "DoNothing":
                                                                # forgotten BACK key - use same as PREVIOUS
								config = config + TAB + TAB + '<key id="KEY_BACK" mapto="' + functionKeyPrevious + '" flags="mr" />' + "\n"
							if functionKeyNext != "DoNothing":
                                                                # forgotten FORWARD key - use same as NEXT
								config = config + TAB + TAB + '<key id="KEY_FORWARD" mapto="' + functionKeyNext + '" flags="mr" />' + "\n"
							if functionKeyChannelUp != "DoNothing":
								config = config + TAB + TAB + '<key id="KEY_CHANNELUP" mapto="' + functionKeyChannelUp + '" flags="mr" />' + "\n"
							if functionKeyChannelDown != "DoNothing":
								config = config + TAB + TAB + '<key id="KEY_CHANNELDOWN" mapto="' + functionKeyChannelDown + '" flags="mr" />' + "\n"
							if functionKeyButton0 != "DoNothing":
								config = config + TAB + TAB + '<key id="BTN_0" mapto="' + functionKeyButton0 + '" flags="mr" />' + "\n"
							if functionKeyButton1 != "DoNothing":
								config = config + TAB + TAB + '<key id="BTN_1" mapto="' + functionKeyButton1 + '" flags="mr" />' + "\n"
							config = config + line
						else:
							if TAB == "":
								TAB = line[0:position]
			xmlFile.close()
			xmlFile = open(pauli_keymap, 'w')
			xmlFile.write(config)
			xmlFile.close()
                        keymapparser.removeKeymap(pauli_keymap)
                        keymapparser.readKeymap(pauli_keymap)
		except:
			cprint("could not write the file /usr/share/enigma2/keymap.xml")

	def setDeepstandby(self,number):
		if config.usage.on_short_powerpress.value=="shutdown":
			config.usage.on_short_powerpress.value="idlemode"
			config.usage.on_short_powerpress.save()
			self.session.open(MessageBox,_("Pauli enabled Idle Mode with power short"), MessageBox.TYPE_INFO)
                else:
			config.usage.on_short_powerpress.value="shutdown"
			config.usage.on_short_powerpress.save()
                      	self.session.open(MessageBox,_("Pauli enabled Shutdown with power short"), MessageBox.TYPE_INFO)
            
def main(session, **kwargs):
    session.open(PauliRemoteControl)

def Plugins(**kwargs):
    return [PluginDescriptor(name="Pauli Neutrino Keymap", description="Switch Keymap & other usefull things", where = PluginDescriptor.WHERE_PLUGINMENU, icon="pauli.png", fnc=main)]