# -*- coding: utf-8 -*- from Plugins.Extensions.NeoBoot.__init__ import _ from Plugins.Extensions.NeoBoot.files.stbbranding import getNeoLocation, getKernelVersionString, getKernelImageVersion, getCPUtype, getCPUSoC, getImageNeoBoot, getBoxVuModel, getBoxHostName, getTunerModel from enigma import getDesktop from enigma import eTimer from Screens.Console import Console from Screens.Screen import Screen from Screens.MessageBox import MessageBox from Screens.ChoiceBox import ChoiceBox from Screens.VirtualKeyBoard import VirtualKeyBoard from Screens.Standby import TryQuitMainloop from Components.About import about from Components.Sources.List import List from Components.Button import Button from Components.ActionMap import ActionMap, NumberActionMap from Components.GUIComponent import * from Components.MenuList import MenuList from Components.Input import Input from Components.Label import Label from Components.ProgressBar import ProgressBar from Components.ScrollLabel import ScrollLabel from Components.Pixmap import Pixmap, MultiPixmap from Components.config import * from Components.ConfigList import ConfigListScreen from Tools.LoadPixmap import LoadPixmap from Tools.Directories import fileExists, pathExists, createDir, resolveFilename, SCOPE_PLUGINS from os import system, listdir, mkdir, chdir, getcwd, rename as os_rename, remove as os_remove, popen from os.path import dirname, isdir, isdir as os_isdir import os import time LinkNeoBoot = '/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot' class StartImage(Screen): screenwidth = getDesktop(0).size().width() if screenwidth and screenwidth == 1920: skin = """ \n\t\t\t \n\t\t\t\t \n \t\t{"template": [ \n \t\t\tMultiContentEntryText(pos = (90, 1), size = (920, 66), flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 0), \n \t\t\tMultiContentEntryPixmapAlphaTest(pos = (8, 4), size = (66, 66), png = 1), \n \t\t\t], \n \t\t\t"fonts": [gFont("Regular", 40)],\n \t\t\t"itemHeight": 66\n \t\t} \n \t\t\n\t\t \n \n\t\t \n\t\t """ else: skin = """ \n\t\t\t \n\t\t\t\t \n \t\t{"template": [ \n \t\t\tMultiContentEntryText(pos = (180, 0), size = (520, 36), flags = RT_HALIGN_LEFT|RT_VALIGN_CENTER, text = 0), \n \t\t\tMultiContentEntryPixmapAlphaTest(pos = (4, 2), size = (36, 36), png = 1), \n \t\t\t],\n \t\t\t"fonts": [gFont("Regular", 22)], \n \t\t\t"itemHeight": 35\n \t\t}\n \t\t \n\t\t\n \n\t\t """ __module__ = __name__ def __init__(self, session): Screen.__init__(self, session) self.list = [] self['list'] = List(self.list) self.select() self['actions'] = ActionMap(['WizardActions', 'ColorActions'], {'ok': self.KeyOk, 'back': self.close}) self['label1'] = Label(_('Start the chosen system now ?')) self['label2'] = Label(_('Select OK to run the image.')) def select(self): self.list = [] mypath = '/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot' if not fileExists(mypath + 'icons'): mypixmap = '/usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/images/ok.png' png = LoadPixmap(mypixmap) res = (_('OK Start image...'), png, 0) self.list.append(res) self['list'].list = self.list def KeyOk(self): if getImageNeoBoot() != 'Flash': os.system('rm -rf %sImageBoot/%s/usr/bin/enigma2_pre_start.sh' % ( getNeoLocation(), getImageNeoBoot())) self.StartImageInNeoBoot() else: os.system('rm -rf %sImageBoot/%s/usr/bin/enigma2_pre_start.sh' % ( getNeoLocation(), getImageNeoBoot())) self.StartImageInNeoBoot() def StartImageInNeoBoot(self): if getImageNeoBoot() != 'Flash': if fileExists('%sImageBoot/%s/.control_ok' % ( getNeoLocation(), getImageNeoBoot())): system('touch /tmp/.control_ok ') else: system('touch %sImageBoot/%s/.control_boot_new_image ' % ( getNeoLocation(), getImageNeoBoot() )) if fileExists('/.multinfo') and getCPUtype() == 'ARMv7': if getBoxHostName() == 'ustym4kpro' or getTunerModel() == 'ustym4kpro': os.system('mkdir -p /media/InternalFlash; mount /dev/mmcblk0p13 /media/InternalFlash') system('chmod 755 ' + LinkNeoBoot + '/files/kernel.sh') self.sel = self['list'].getCurrent() if self.sel: self.sel = self.sel[2] if self.sel == 0: if fileExists('/media/InternalFlash/etc/init.d/neobootmount.sh'): os.system('rm -f /media/InternalFlash/etc/init.d/neobootmount.sh;') #################_____ARM____########################## #VUPLUS ARM ustym4kpro - kernel = mmcblk0p12 if getCPUtype() == 'ARMv7' and getBoxHostName() == 'ustym4kpro': if not fileExists('%sImagesUpload/.kernel/flash-kernel-%s.bin' % (getNeoLocation(), getBoxHostName()) ): mess = (_('Error - in the location %sImagesUpload/.kernel/ \nkernel file not found flash-kernel-%s.bin') % (getNeoLocation(), getBoxHostName()) ) self.session.open(MessageBox, mess, MessageBox.TYPE_INFO) else: if getImageNeoBoot() == 'Flash': if fileExists('/.multinfo'): cmd = "echo -e '\n\n%s '" % _('...............NEOBOOT - REBOOT...............\nPlease wait, in a moment the decoder will be restarted...') cmd1 = 'cd /media/InternalFlash; ln -sf "init.sysvinit" "/media/InternalFlash/sbin/init"; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/files/kernel.sh ' elif not fileExists('/.multinfo'): cmd = "echo -e '\n\n%s '" % _('...............NEOBOOT - REBOOT...............\nPlease wait, in a moment the decoder will be restarted...') cmd1 = 'sleep 5; ln -sf "init.sysvinit" "/sbin/init"; reboot -dfhi' elif getImageNeoBoot() != 'Flash': if not fileExists('/.multinfo'): if not fileExists('%sImageBoot/%s/boot/zImage.%s' % ( getNeoLocation(), getImageNeoBoot(), getBoxHostName())): cmd = "echo -e '\n\n%s '" % _('...............NEOBOOT - REBOOT...............\nPlease wait, in a moment the decoder will be restarted...') cmd1 = 'sleep 5; ln -sfn /sbin/neoinitarm /sbin/init; /etc/init.d/reboot' elif fileExists('%sImageBoot/%s/boot/zImage.%s' % ( getNeoLocation(), getImageNeoBoot(), getBoxHostName())): cmd = "echo -e '\n\n%s '" % _('...............NEOBOOT - REBOOT...............\nPlease wait, in a moment the decoder will be restarted...') cmd1 = 'ln -sfn /sbin/neoinitarm /sbin/init; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/files/kernel.sh ' elif fileExists('/.multinfo'): if not fileExists('%sImageBoot/%s/boot/zImage.%s' % ( getNeoLocation(), getImageNeoBoot(), getBoxHostName())): cmd = "echo -e '\n\n%s '" % _('NEOBOOT - Restart image flash....\nPlease wait, in a moment the decoder will be restarted...') cmd1 = 'python /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/files/findkerneldevice.py; dd if=%sImagesUpload/.kernel/flash-kernel-%s.bin of=/dev/kernel; cd /media/InternalFlash;ln -sf "neoinitarm" "/media/InternalFlash/sbin/init"; reboot -f' % getNeoLocation() % getBoxHostName() elif fileExists('%sImageBoot/%s/boot/zImage.%s' % ( getNeoLocation(), getImageNeoBoot(), getBoxHostName())): cmd = "echo -e '\n\n%s '" % _('...............NEOBOOT - REBOOT...............\nPlease wait, in a moment the decoder will be restarted...') cmd1 = 'cd /media/InternalFlash; ln -sf "neoinitarm" "/media/InternalFlash/sbin/init"; /usr/lib/enigma2/python/Plugins/Extensions/NeoBoot/files/kernel.sh ' self.session.open(Console, _('NeoBoot ARM VU+....'), [cmd, cmd1]) self.close() else: os.system('echo "Flash " >> ' + getNeoLocation() + 'ImageBoot/.neonextboot') self.messagebox = self.session.open(MessageBox, _('It looks like it that multiboot does not support this STB.'), MessageBox.TYPE_INFO, 8) self.close()