Example #1
0
	def __init__(self, root, list_type=None, sort_type=None, show_times=None, sftitle_episode_separator = None, MovieSelectionSelf = None):
		GUIComponent.__init__(self)
#		print "[SF-Plugin] class SF:MovieList init, lstt=%x, srt=%x, sht=%s, sft=>%s<, root=%s" % ( list_type, sort_type, show_times, str(sftitle_episode_separator), str(root))
		self.list_type = list_type or self.LISTTYPE_MINIMAL
		self.show_times = show_times or self.SHOW_DURATION | self.SHOW_DIRECTORIES
		self.sort_type = sort_type or self.SORT_RECORDED
		self.sftitle_episode_separator = sftitle_episode_separator

		self.l = eListboxPythonMultiContent()

		self.tags = set()
		self.list = None
		self.sflists = None
		self.MovieSelectionSelf = MovieSelectionSelf
		self.MselTitle = ""

		if root is not None:
			self.reload(root)

		self.pdirIcon = LoadPixmap(cached=True, path=eEnv.resolve('${libdir}/enigma2/python/Plugins/Extensions/SerienFilm/icons/folder_20.png'))
		self.rdirIcon = LoadPixmap(cached=True, path=eEnv.resolve('${libdir}/enigma2/python/Plugins/Extensions/SerienFilm/icons/folder_red.png'))
		self.fupIcon = LoadPixmap(cached=True, path=eEnv.resolve('${libdir}/enigma2/python/Plugins/Extensions/SerienFilm/icons/folderup_20.png'))
		self.pdirMap = MultiContentEntryPixmapAlphaTest(pos=(0,0), size=(20,20), png=self.pdirIcon)
		self.rdirMap = MultiContentEntryPixmapAlphaTest(pos=(0,0), size=(20,20), png=self.rdirIcon)
		self.fupMap = MultiContentEntryPixmapAlphaTest(pos=(0,0), size=(20,20), png=self.fupIcon)

		self.redrawList()
		self.l.setBuildFunc(self.buildMovieListEntry)

		self.onSelectionChanged = [ ]
Example #2
0
def InitConfig():
	config.plugins.configurationbackup = ConfigSubsection()
	if boxtype in ('maram9', 'classm', 'axodin', 'axodinc', 'starsatlx', 'genius', 'evo', 'galaxym6') and not path.exists("/media/hdd/backup_%s" %boxtype):
		config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/backup/', visible_width = 50, fixed_size = False)
	else:
		config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/hdd/', visible_width = 50, fixed_size = False)
	config.plugins.configurationbackup.backupdirs_default = NoSave(ConfigLocations(default=[eEnv.resolve('${sysconfdir}/enigma2/'),
		'/etc/CCcam.cfg', '/usr/keys/', '/usr/lib/enigma2/python/Plugins/Extensions/MyMetrixLite/MyMetrixLiteBackup.dat',
		'/etc/tuxbox/config/', '/etc/auto.network', '/etc/feeds.xml', '/etc/machine-id', 
		'/etc/openvpn/', '/etc/ipsec.conf', '/etc/ipsec.secrets', '/etc/ipsec.user', '/etc/strongswan.conf', 
		'/etc/dropbear/', '/etc/default/dropbear', '/home/root/', '/etc/samba/', '/etc/fstab', '/etc/inadyn.conf', 
		'/etc/network/interfaces', '/etc/wpa_supplicant.conf', '/etc/wpa_supplicant.ath0.conf', '/etc/opkg/secret-feed.conf',
		'/etc/wpa_supplicant.wlan0.conf', '/etc/resolv.conf', '/etc/default_gw', '/etc/hostname', '/etc/epgimport/', '/etc/exports',
		'/etc/cron/crontabs/root', '/etc/cron/root', '/etc/enigmalight.conf', '/etc/volume.xml', '/etc/enigma2/ci_auth_slot_0.bin', '/etc/enigma2/ci_auth_slot_1.bin',
		'/usr/lib/enigma2/python/Plugins/Extensions/VMC/DB/',
		'/usr/lib/enigma2/python/Plugins/Extensions/VMC/youtv.pwd',
		'/usr/lib/enigma2/python/Plugins/Extensions/VMC/vod.config',
		'/usr/share/enigma2/MetrixHD/skinparts/',
		'/usr/lib/enigma2/python/Plugins/Extensions/SpecialJump/keymap_user.xml',
		'/usr/lib/enigma2/python/Plugins/Extensions/MP3Browser/db',
		'/usr/lib/enigma2/python/Plugins/Extensions/MovieBrowser/db',
		'/usr/lib/enigma2/python/Plugins/Extensions/TVSpielfilm/db', '/etc/ConfFS',
		eEnv.resolve("${datadir}/enigma2/keymap.usr"),
		eEnv.resolve("${datadir}/enigma2/keymap_usermod.xml")]\
		+eEnv_resolve_multi('/usr/bin/*cam*')\
		+eEnv_resolve_multi('/etc/*.emu')\
		+eEnv_resolve_multi('/etc/init.d/softcam*')))
	config.plugins.configurationbackup.backupdirs         = ConfigLocations(default=[]) # 'backupdirs_addon' is called 'backupdirs' for backwards compatibility, holding the user's old selection, duplicates are removed during backup
	config.plugins.configurationbackup.backupdirs_exclude = ConfigLocations(default=[])
	return config.plugins.configurationbackup
Example #3
0
		def setScaler_sharpness(config):
			myval = int(config.value)
			try:
				print "--> setting scaler_sharpness to: %0.8X" % myval
				open(eEnv.resolve("${sysconfdir}/stb/vmpeg/0/pep_scaler_sharpness"), "w").write("%0.8X" % myval)
				open(eEnv.resolve("${sysconfdir}/stb/vmpeg/0/pep_apply"), "w").write("1")
			except IOError:
				print "couldn't write pep_scaler_sharpness"
Example #4
0
def countFrontpanelLEDs():
	leds = 0
	if fileExists(eEnv.resolve("${sysconfdir}/stb/fp/led_set_pattern")):
		leds += 1

	while fileExists(eEnv.resolve("${sysconfdir}/stb/fp/led%d_pattern") % leds):
		leds += 1

	return leds
Example #5
0
 def findPicon(self, serviceName):
     if config.nemesis.usepiconinhdd.value:
         searchPaths = ('/media/hdd/%s/', eEnv.resolve('${datadir}/%s/'), '/media/cf/%s/', '/media/usb/%s/')
     else:
         searchPaths = (eEnv.resolve('${datadir}/%s/'), '/media/usb/%s/', '/media/cf/%s/')
     for path in searchPaths:
         pngname = path % self.path + serviceName + '.png'
         if fileExists(pngname):
             return pngname
     return ''
Example #6
0
 def getConfigFiles(self):
     setupfiles = [eEnv.resolve("${datadir}/enigma2/setup.xml")]
     locations = ("SystemPlugins", "Extensions")
     libdir = eEnv.resolve("${libdir}")
     for location in locations:
         plugins = listdir(("%s/enigma2/python/Plugins/%s" % (libdir, location)))
         for plugin in plugins:
             setupfiles.append(("%s/enigma2/python/Plugins/%s/%s/setup.xml" % (libdir, location, plugin)))
     for setupfile in setupfiles:
         if path.exists(setupfile):
             self.setupfiles.append(setupfile)
Example #7
0
    def __init__(self):
        global hw_info
        if hw_info is not None:
            return
        hw_info = self

        print "[HardwareInfo] Scanning hardware info"
        # Version
        try:
            self.device_version = open(eEnv.resolve("${sysconfdir}/stb/info/version")).read().strip()
        except:
            pass

            # Revision
        try:
            self.device_revision = open(eEnv.resolve("${sysconfdir}/stb/info/board_revision")).read().strip()
        except:
            pass

            # Name ... bit odd, but history prevails
        try:
            self.device_name = open(eEnv.resolve("${sysconfdir}/stb/info/model")).read().strip()
        except:
            pass

            # Model
        for line in open((resolveFilename(SCOPE_SKIN, "hw_info/hw_info.cfg")), "r"):
            if not line.startswith("#") and not line.isspace():
                l = line.strip().replace("\t", " ")
                if " " in l:
                    infoFname, prefix = l.split()
                else:
                    infoFname = l
                    prefix = ""
                try:
                    self.device_model = prefix + open(
                        (eEnv.resolve("${sysconfdir}/stb/info/") + infoFname).read().strip()
                    )
                    break
                except:
                    pass

        if self.device_model is None:
            self.device_model = self.device_name

            # HDMI capbility
        self.device_hdmi = (
            self.device_name == "dm7020hd"
            or self.device_name == "dm800se"
            or self.device_name == "dm500hd"
            or (self.device_name == "dm8000" and self.device_version != None)
        )

        print "Detected: " + self.get_device_string()
Example #8
0
	def getConfigFiles(self):
		setupfiles = [eEnv.resolve('${datadir}/enigma2/setup.xml')]
		locations = ('SystemPlugins', 'Extensions')
		libdir = eEnv.resolve('${libdir}')
		for location in locations:
			plugins = listdir(('%s/enigma2/python/Plugins/%s' % (libdir, location)))
			for plugin in plugins:
				setupfiles.append(('%s/enigma2/python/Plugins/%s/%s/setup.xml' % (libdir, location, plugin)))
		for setupfile in setupfiles:
			if path.exists(setupfile):
				self.setupfiles.append(setupfile)
Example #9
0
	def __init__(self):
		if pathExists(eEnv.resolve('${sysconfdir}/stb/ir/rc/type')) and pathExists(eEnv.resolve('${sysconfdir}/stb/info/boxtype')):
			self.isSupported = True

			fd = open(eEnv.resolve('${sysconfdir}/stb/info/boxtype'), 'r')
			self.boxType = fd.read()
			fd.close()

			if config.plugins.remotecontroltype.rctype.value != 0:
				self.writeRcType(config.plugins.remotecontroltype.rctype.value)
		else:
			self.isSupported = False
Example #10
0
	def __init__(self, session):
		Screen.__init__(self, session)
		self.session = session
		self.skinName = ["SetupInfo", "Setup" ]
		Screen.setTitle(self, _("Keymap Selection") + "...")
		self.setup_title =  _("Keymap Selection") + "..."
		self["HelpWindow"] = Pixmap()
		self["HelpWindow"].hide()
		self["status"] = StaticText()
		self['footnote'] = Label("")
		self["description"] = Label("")
		self["labelInfo"] = Label(_("Copy your keymap to\n/usr/share/enigma2/keymap.usr"))

		usrkey = eEnv.resolve("${datadir}/enigma2/keymap.usr")
		ntrkey = eEnv.resolve("${datadir}/enigma2/keymap.ntr")
		u80key = eEnv.resolve("${datadir}/enigma2/keymap.u80")
		self.actkeymap = self.getKeymap(config.usage.keymap.value)
		keySel = [ ('keymap.xml',_("Default  (keymap.xml)"))]
		if os.path.isfile(usrkey):
			keySel.append(('keymap.usr',_("User  (keymap.usr)")))
		if os.path.isfile(ntrkey):
			keySel.append(('keymap.ntr',_("Neutrino  (keymap.ntr)")))
		if os.path.isfile(u80key):
			keySel.append(('keymap.u80',_("UP80  (keymap.u80)")))
		if self.actkeymap == usrkey and not os.path.isfile(usrkey):
			setDefaultKeymap()
		if self.actkeymap == ntrkey and not os.path.isfile(ntrkey):
			setDefaultKeymap()
		if self.actkeymap == u80key and not os.path.isfile(u80key):
			setDefaultKeymap()
		self.keyshow = ConfigSelection(keySel)
		self.keyshow.value = self.actkeymap

		self.onChangedEntry = [ ]
		self.list = []
		ConfigListScreen.__init__(self, self.list, session = self.session, on_change = self.changedEntry)
		self.createSetup()

		self["actions"] = ActionMap(["SetupActions", 'ColorActions'],
		{
			"ok": self.keySave,
			"cancel": self.keyCancel,
			"red": self.keyCancel,
			"green": self.keySave,
			"menu": self.keyCancel,
		}, -2)

		self["key_red"] = StaticText(_("Cancel"))
		self["key_green"] = StaticText(_("OK"))
		if not self.selectionChanged in self["config"].onSelectionChanged:
			self["config"].onSelectionChanged.append(self.selectionChanged)
		self.selectionChanged()
Example #11
0
	def __init__(self):
                global hw_info
		if hw_info is not None:
#			print "using cached result"
			return
		hw_info = self

		print "Scanning hardware info"
		# Version
#		if os.path.exists("/proc/stb/info/version"):
		if os.path.exists(eEnv.resolve("${sysconfdir}/stb/info/model")):
			self.device_version = open(eEnv.resolve("${sysconfdir}/stb/info/model")).read().strip()

		# Revision
		if os.path.exists(eEnv.resolve("${sysconfdir}/stb/info/board_revision")):
			self.device_revision = open(eEnv.resolve("${sysconfdir}/stb/info/board_revision")).read().strip()

		# Name ... bit odd, but history prevails
		if os.path.exists(eEnv.resolve("${sysconfdir}/stb/info/model")):
			self.device_name = open(eEnv.resolve("${sysconfdir}/stb/info/model")).read().strip()
		else:
			print "----------------"
			print "you should upgrade to new drivers for the hardware detection to work properly"
			print "----------------"
			print "fallback to detect hardware via /proc/cpuinfo!!"
			try:
				rd = open("/proc/cpuinfo", "r").read()
				if "Brcm4380 V4.2" in rd:
					self.device_name = "dm8000"
				elif "Brcm7401 V0.0" in rd:
					self.device_name = "dm800"
				elif "MIPS 4KEc V4.8" in rd:
					self.device_name = "dm7025"
				rd.close();
			except:
				pass

		# Model
		for line in open((resolveFilename(SCOPE_SKIN, 'hw_info/hw_info.cfg')), 'r'):
			if not line.startswith('#') and not line.isspace():
				l = line.strip().replace('\t', ' ')
				if l.find(' ') != -1:
					infoFname, prefix = l.split()
				else:
					infoFname = l
					prefix = ""
				if os.path.exists((eEnv.resolve("${sysconfdir}/stb/info/")) + infoFname):
					self.device_model = prefix + open((eEnv.resolve("${sysconfdir}/stb/info/") + infoFname).read().strip())
					break

		if self.device_model is None:
			self.device_model = self.device_name

		# HDMI capbility
		self.device_hdmi = (	self.device_name == 'dm7020hd' or
					self.device_name == 'dm800se' or
					self.device_name == 'dm500hd' or
					(self.device_name == 'dm8000' and self.device_version != None))

		print "Detected: " + self.get_device_string()
Example #12
0
 def readKeyboardMapFiles(self):
     for keymapfile in os_listdir(eEnv.resolve("${datadir}/keymaps/")):
         if keymapfile.endswith(".info"):
             mapfile = None
             mapname = None
             for line in open(eEnv.resolve("${datadir}/keymaps/") + keymapfile):
                 m = re_compile("^\s*(\w+)\s*=\s*(.*)\s*$").match(line)
                 if m:
                     key, val = m.groups()
                     if key == "kmap":
                         mapfile = val
                     if key == "name":
                         mapname = val
                     if (mapfile is not None) and (mapname is not None):
                         self.keyboardmaps.append((mapfile, mapname))
Example #13
0
def InitConfig():
	# BACKUPFILES contains all files and folders to back up, for wildcard entries ALWAYS use eEnv_resolve_multi!
	BACKUPFILES = ['/etc/enigma2/', '/etc/CCcam.cfg', '/usr/keys/', '/usr/lib/enigma2/python/Plugins/Extensions/MyMetrixLite/MyMetrixLiteBackup.dat',
		'/etc/davfs2/', '/etc/tuxbox/config/', '/etc/auto.network', '/etc/feeds.xml', '/etc/machine-id', '/etc/rc.local', 
		'/etc/openvpn/', '/etc/ipsec.conf', '/etc/ipsec.secrets', '/etc/ipsec.user', '/etc/strongswan.conf', 
		'/etc/default/crond', '/etc/dropbear/', '/etc/default/dropbear', '/home/', '/etc/samba/', '/etc/fstab', '/etc/inadyn.conf', 
		'/etc/network/interfaces', '/etc/wpa_supplicant.conf', '/etc/wpa_supplicant.ath0.conf', '/etc/opkg/secret-feed.conf',
		'/etc/wpa_supplicant.wlan0.conf', '/etc/wpa_supplicant.wlan1.conf', '/etc/resolv.conf', '/etc/default_gw', '/etc/hostname', '/etc/epgimport/', '/etc/exports',
		'/etc/enigmalight.conf', '/etc/volume.xml', '/etc/enigma2/ci_auth_slot_0.bin', '/etc/enigma2/ci_auth_slot_1.bin',
		'/usr/lib/enigma2/python/Plugins/Extensions/VMC/DB/',
		'/usr/lib/enigma2/python/Plugins/Extensions/VMC/youtv.pwd',
		'/usr/lib/enigma2/python/Plugins/Extensions/VMC/vod.config',
		'/usr/share/enigma2/MetrixHD/skinparts/',
		'/usr/lib/enigma2/python/Plugins/Extensions/SpecialJump/keymap_user.xml',
		'/usr/lib/enigma2/python/Plugins/Extensions/MP3Browser/db',
		'/usr/lib/enigma2/python/Plugins/Extensions/MovieBrowser/db',
		'/usr/lib/enigma2/python/Plugins/Extensions/TVSpielfilm/db', '/etc/ConfFS',
		'/etc/rc3.d/S99tuner.sh',
		eEnv.resolve("${datadir}/enigma2/keymap.usr"),
		eEnv.resolve("${datadir}/enigma2/keymap_usermod.xml")]\
		+eEnv_resolve_multi("${datadir}/enigma2/*/mySkin_off/*.xml")\
		+eEnv_resolve_multi("${datadir}/enigma2/*/mySkin/*.xml")\
		+eEnv_resolve_multi('/usr/bin/*cam*')\
		+eEnv_resolve_multi('/etc/*.emu')\
		+eEnv_resolve_multi('/etc/cron*')\
		+eEnv_resolve_multi('/etc/init.d/softcam*')\
		+eEnv_resolve_multi('/etc/init.d/cardserver*')\
		+eEnv_resolve_multi('/etc/sundtek.*')\
		+eEnv_resolve_multi('/usr/sundtek/*')\
		+eEnv_resolve_multi('/opt/bin/*')\
		+eEnv_resolve_multi('/usr/script/*')

	# Drop non existant paths from list
	tmpfiles=[]
	for f in BACKUPFILES:
		if path.exists(f):
			tmpfiles.append(f)
	backupset=tmpfiles

	config.plugins.configurationbackup = ConfigSubsection()
	if boxtype in ('maram9', 'classm', 'axodin', 'axodinc', 'starsatlx', 'genius', 'evo', 'galaxym6') and not path.exists("/media/hdd/backup_%s" %boxtype):
		config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/backup/', visible_width = 50, fixed_size = False)
	else:
		config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/hdd/', visible_width = 50, fixed_size = False)
	config.plugins.configurationbackup.backupdirs_default = NoSave(ConfigLocations(default=backupset))
	config.plugins.configurationbackup.backupdirs         = ConfigLocations(default=[]) # 'backupdirs_addon' is called 'backupdirs' for backwards compatibility, holding the user's old selection, duplicates are removed during backup
	config.plugins.configurationbackup.backupdirs_exclude = ConfigLocations(default=[])
	return config.plugins.configurationbackup
Example #14
0
	def __init__(self):
		if HardwareInfo.device_name is not None:
#			print "using cached result"
			return

		HardwareInfo.device_name = "unknown"
		try:
			file = open(eEnv.resolve("${sysconfdir}/stb/info/model"), "r")
			HardwareInfo.device_name = file.readline().strip()
			file.close()
			try:
				file = open("/usr/local/e2/etc/stb/info/version", "r")
				HardwareInfo.device_version = file.readline().strip()
				file.close()
			except:
				pass
		except:
			print "----------------"
			print "you should upgrade to new drivers for the hardware detection to work properly"
			print "----------------"
			print "fallback to detect hardware via /usr/local/e2/etc/cpuinfo!!"
			try:
				rd = open("/proc/cpuinfo", "r").read()
				if rd.find("Brcm4380 V4.2") != -1:
					HardwareInfo.device_name = "dm8000"
					print "dm8000 detected!"
				elif rd.find("Brcm7401 V0.0") != -1:
					HardwareInfo.device_name = "dm800"
					print "dm800 detected!"
				elif rd.find("MIPS 4KEc V4.8") != -1:
					HardwareInfo.device_name = "dm7025"
					print "dm7025 detected!"
			except:
				pass
Example #15
0
	def __init__(self, session):
		from Components.Sources.StaticText import StaticText
		Screen.__init__(self, session)
		setupfile = file(eEnv.resolve('${datadir}/enigma2/setup.xml'), 'r')
		self.setupdom = xml.etree.cElementTree.parse(setupfile)
		setupfile.close()

		self.skinName = "Setup"
		self['footnote'] = Label()
		self["HelpWindow"] = Pixmap()
		self["HelpWindow"].hide()
		self["VKeyIcon"] = Boolean(False)

		self["key_red"] = StaticText(_("Cancel"))
		self["key_green"] = StaticText(_("Save"))
		self["description"] = Label(_(""))

		self.onChangedEntry = [ ]
		self.setup = "recording"
		list = []
		ConfigListScreen.__init__(self, list, session = session, on_change = self.changedEntry)
		self.createSetup()

		self["setupActions"] = ActionMap(["SetupActions", "ColorActions", "MenuActions"],
		{
			"green": self.keySave,
			"red": self.keyCancel,
			"cancel": self.keyCancel,
			"ok": self.ok,
			"menu": self.closeRecursive,
		}, -2)
		self.onLayoutFinish.append(self.layoutFinished)
	def getNetworkShares(self,hostip,hostname,devicetype):
		sharelist = []
		self.sharecache_file = None
		self.sharecache_file = eEnv.resolve("${sysconfdir}/enigma2/") + hostname.strip() + '.cache' #Path to cache directory
		if os_path.exists(self.sharecache_file):
			print '[Networkbrowser] Loading userinfo from ',self.sharecache_file
			try:
				self.hostdata = load_cache(self.sharecache_file)
				username = self.hostdata['username']
				password = self.hostdata['password']
			except:
				username = "******"
				password = "******"
		else:
			username = "******"
			password = "******"

		if devicetype == 'unix':
			smblist=netscan.smbShare(hostip,hostname,username,password)
			for x in smblist:
				if len(x) == 6:
					if x[3] != 'IPC$':
						sharelist.append(x)
			nfslist=netscan.nfsShare(hostip,hostname)
			for x in nfslist:
				if len(x) == 6:
					sharelist.append(x)
		else:
			smblist=netscan.smbShare(hostip,hostname,username,password)
			for x in smblist:
				if len(x) == 6:
					if x[3] != 'IPC$':
						sharelist.append(x)
		return sharelist
	def go(self):
		item = self["list"].getCurrent()[0]
		if item is None or not isinstance(item, NetworkItem):
			return
		self.hostcache_file = "%s%s.cache" %(eEnv.resolve("${sysconfdir}/enigma2/"), item.name) #Path to cache directory
		if item.type == NetworkItem.TYPE_HOST: # host entry selected
			if item.host in self.expanded:
				self.expanded.remove(item.host)
				self.updateNetworkList()
				return
			else:
				if os_path.exists(self.hostcache_file):
					print '[Networkbrowser] Loading userinfo cache from ',self.hostcache_file
					try:
						self.hostdata = load_cache(self.hostcache_file)
						self.passwordQuestion(False)
						return
					except:
						Log.w("error loading host cache!")
			if "smb" in item.services:
				self.session.openWithCallback(self.passwordQuestion, MessageBox, text=_("Do you want to enter a username and password for this host?\n"), default=False )
			else:
				self.passwordQuestion(False)
		else:
			self.openMountEdit(item)
	def openMountEdit(self, item):
		if item and item.type != NetworkItem.TYPE_HOST:
			mounts = iAutoMount.getMounts()
			self.sharecache_file = None
			if item.type == NetworkItem.TYPE_NFS: # share entry selected
				data = iAutoMount.DEFAULT_OPTIONS_NFS
			if item.type == NetworkItem.TYPE_SMB: # share entry selected
				data = iAutoMount.DEFAULT_OPTIONS_CIFS
				self.sharecache_file = eEnv.resolve("${sysconfdir}/enigma2/") + item.name.strip() + '.cache' #Path to cache directory
				if os_path.exists(self.sharecache_file):
					print '[Networkbrowser] Loading userinfo from ',self.sharecache_file
					try:
						self.hostdata = load_cache(self.sharecache_file)
						data['username'] = self.hostdata['username']
						data['password'] = self.hostdata['password']
					except:
						pass
			data['active'] = True
			data['ip'] = item.host
			data['sharename'] = item.name
			data['sharedir'] = item.path
			for sharename, sharedata in mounts.items():
				if sharedata['ip'] == item.host and sharedata['sharedir'] == item.path:
					data = sharedata
					break
			Log.i(data)
			self.session.openWithCallback(self.MountEditClosed,AutoMountEdit, self.skin_path, data)
def getTranscoding():
	transcoding = False
	if os.path.isfile("/proc/stb/encoder/0/bitrate"):
		if os.path.exists(eEnv.resolve('${libdir}/enigma2/python/Plugins/SystemPlugins/TransCodingSetup/plugin.pyo')) or os.path.exists(eEnv.resolve('${libdir}/enigma2/python/Plugins/SystemPlugins/TranscodingSetup/plugin.pyo')) or os.path.exists(eEnv.resolve('${libdir}/enigma2/python/Plugins/SystemPlugins/MultiTransCodingSetup/plugin.pyo')):
			transcoding = True

	return transcoding
Example #20
0
    def __init__(self, session):
        Screen.__init__(self, session)

        self.list = [ ]
        self.XMLKeymaps = []

        self.onChangedEntry = [ ]
        ConfigListScreen.__init__(self, self.list, session = session, on_change = self.changedEntry)
        self.setup_title = _("Keymap configurator")
        self["actions"] = ActionMap(["SetupActions", "ColorActions"],
            {
                "cancel": self.keyCancel,
                "green": self.keySave,
                "ok": self.keySave,
                "red": self.keyCancel,
                "blue": self.keyBlue,
                "yellow": self.LoadXML,
            }, -2)

        self["key_green"] = Label(_("Save"))
        self["key_red"] = Label(_("Cancel"))
        self["key_yellow"] = Label(_("Read"))
        self["key_blue"] = Label(_("Make backup"))

        self.myDir=eEnv.resolve("${datadir}/enigma2/")

        self.myConsole = Console()

        self.onLayoutFinish.append(self.layoutFinished)
Example #21
0
    def loadCountry(self):
        pngpath = self["IPTVList"].getCurrent()

        if pngpath == None:
            return

        for l in self.downloadlist:
            if len(l) >= 3:
                if pngpath == l[3]:
                    pngpath = l[0]
                    break

        try:
            pngpath = pngpath + (".png")
            pngpath = self.root + pngpath
        except AttributeError:
            pngpath = resolveFilename("/usr/lib/enigma2/python/Plugins/Extensions/IPTV-List-Updater/images/noprev.png")
            
        if not path.exists(pngpath):
            pngpath = eEnv.resolve("/usr/lib/enigma2/python/Plugins/Extensions/IPTV-List-Updater/images/noprev.png")
        if self.countryPath != pngpath:
            self.countryPath = pngpath
            
        self["country"].instance.setPixmapFromFile(self.countryPath)
        Screen.hide(self)
        Screen.show(self)
Example #22
0
def BaseInitUsageConfig():
	config.usage = ConfigSubsection();

	config.usage.keymap = ConfigText(default = eEnv.resolve("${datadir}/enigma2/keymap.xml"))

	config.usage.setup_level = ConfigSelection(default = "intermediate", choices = [
		("simple", _("Simple")),
		("intermediate", _("Intermediate")),
		("expert", _("Expert")) ])

	config.seek = ConfigSubsection()
	config.seek.selfdefined_13 = ConfigNumber(default=15)
	config.seek.selfdefined_46 = ConfigNumber(default=60)
	config.seek.selfdefined_79 = ConfigNumber(default=300)

	config.seek.speeds_forward = ConfigSet(default=[2, 4, 8, 16, 32, 64, 128], choices=[2, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128])
	config.seek.speeds_backward = ConfigSet(default=[2, 4, 8, 16, 32, 64, 128], choices=[1, 2, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128])
	config.seek.speeds_slowmotion = ConfigSet(default=[2, 4, 8], choices=[2, 4, 6, 8, 12, 16, 25])

	config.seek.enter_forward = ConfigSelection(default = "2", choices = ["2", "4", "6", "8", "12", "16", "24", "32", "48", "64", "96", "128"])
	config.seek.enter_backward = ConfigSelection(default = "1", choices = ["1", "2", "4", "6", "8", "12", "16", "24", "32", "48", "64", "96", "128"])

	def updateEnterForward(configElement):
		if not configElement.value:
			configElement.value = [2]
		updateChoices(config.seek.enter_forward, configElement.value)
	config.seek.speeds_forward.addNotifier(updateEnterForward, immediate_feedback = False)

	def updateEnterBackward(configElement):
		if not configElement.value:
			configElement.value = [2]
		updateChoices(config.seek.enter_backward, configElement.value)
	config.seek.speeds_backward.addNotifier(updateEnterBackward, immediate_feedback = False)
Example #23
0
def getConfigs(key):
	configs = []
	title = ""
	
	setupfile = file(eEnv.resolve('${datadir}/enigma2/setup.xml'), 'r')
	setupdom = xml.etree.cElementTree.parse(setupfile)
	setupfile.close()
	xmldata = setupdom.getroot()
	for section in xmldata.findall("setup"):
		if section.get("key") != key:
			continue
			
		for entry in section:
			if entry.tag == "item":
				requires = entry.get("requires")
				if requires and not SystemInfo.get(requires, False):
					continue;
				
				if int(entry.get("level", 0)) > config.usage.setup_level.index:
					continue
				
				try:
					configs.append({
						"description": entry.get("text", ""),
						"path": entry.text or "",
						"data": getJsonFromConfig(eval(entry.text or ""))
					})		
				except Exception, e:
					pass
				
		title = section.get("title", "")
		break
Example #24
0
def autostart(reason, **kwargs):
	if reason == 0:
		if kwargs.has_key("session"):
			session = kwargs["session"]
			vps_timers.session = session
			vps_timers.checkNextAfterEventAuto()
			vps_timers.checkTimer()

			try:
				from Plugins.Extensions.WebInterface.WebChilds.Toplevel import addExternalChild
				from Plugins.Extensions.WebInterface.WebChilds.Screenpage import ScreenPage
				from twisted.web import static
				from twisted.python import util
				from enigma import eEnv
			except ImportError as ie:
				pass
			else:
				if hasattr(static.File, 'render_GET'):
					class File(static.File):
						def render_POST(self, request):
							return self.render_GET(request)
				else:
					File = static.File

				root = File(eEnv.resolve("${libdir}/enigma2/python/Plugins/SystemPlugins/vps/web-data"))
				root.putChild("web", ScreenPage(session, util.sibpath(__file__, "web"), True))
				addExternalChild(("vpsplugin", root, "VPS-Plugin", "1", False))
		else:
			register_vps()
	
	elif reason == 1:
		vps_timers.shutdown()
Example #25
0
	def __init__(self, session, plugin_path, hostinfo = None ):
		self.skin_path = plugin_path
		self.session = session
		Screen.__init__(self, self.session)
		self.hostinfo = hostinfo
		self.cache_ttl = 86400 #600 is default, 0 disables, Seconds cache is considered valid
		self.cache_file = eEnv.resolve("${sysconfdir}/enigma2/") + self.hostinfo + '.cache' #Path to cache directory
		self.createConfig()

		self["actions"] = NumberActionMap(["SetupActions"],
		{
			"ok": self.ok,
			"back": self.close,
			"cancel": self.close,
			"red": self.close,
		}, -2)

		self["VirtualKB"] = ActionMap(["VirtualKeyboardActions"],
		{
			"showVirtualKeyboard": self.KeyText,
		}, -2)

		self.list = []
		ConfigListScreen.__init__(self, self.list,session = self.session)
		self.createSetup()
		self.onLayoutFinish.append(self.layoutFinished)
		# Initialize Buttons
		self["VKeyIcon"] = Pixmap()
		self["HelpWindow"] = Pixmap()
		self["introduction"] = StaticText(_("Press OK to save settings."))
		self["key_red"] = StaticText(_("Close"))
Example #26
0
def autostart(reason, **kwargs):
	if "session" in kwargs:
		session = kwargs["session"]
		root = File(eEnv.resolve("${libdir}/enigma2/python/Plugins/Extensions/WebBouquetEditor/web-data"))
		root.putChild("web", ScreenPage(session, util.sibpath(__file__, "web"), True) )
		root.putChild('tmp', File('/tmp'))
		root.putChild("uploadfile",WebUploadResource(session))
		addExternalChild( ("bouqueteditor", root, "BouquetEditor", 1, True) )
Example #27
0
	def readKeyboardMapFiles(self):
		for keymapfile in os_listdir(eEnv.resolve('${datadir}/keymaps/')):
			if keymapfile.endswith(".info"):
				f = open(eEnv.resolve('${datadir}/keymaps/') + keymapfile)
				mapfile = None
				mapname = None
				for line in f:
					m = re_compile('^\s*(\w+)\s*=\s*(.*)\s*$').match(line)
					if m:
						key, val = m.groups()
						if key == 'kmap':
							mapfile = val
						if key == 'name':
							mapname = val
						if (mapfile is not None) and (mapname is not None):
							self.keyboardmaps.append(( mapfile,mapname))
				f.close()
Example #28
0
	def delete(self, returnValue = None):
		cur = self["config"].getCurrent()
		if cur:
			returnValue = cur[2]
			cachefile = eEnv.resolve("${sysconfdir}/enigma2/") + returnValue.strip()
			if os_path.exists(cachefile):
				unlink(cachefile)
				self.updateList()
Example #29
0
	def hostnameCallback(self, callback = None):
		if callback is not None and len(callback):
			fp = open(eEnv.resolve("${sysconfdir}/hostname"), 'w+')
			fp.write(callback)
			fp.flush()
			fsync(fp.fileno())
			fp.close()
			self.applyHostname()
Example #30
0
 def __init__(self, session):
     Screen.__init__(self, session)
     self.session = session
     self.skinName = ['SetupInfo', 'Setup']
     Screen.setTitle(self, _('Keymap Selection') + '...')
     self.setup_title = _('Keymap Selection') + '...'
     self['HelpWindow'] = Pixmap()
     self['HelpWindow'].hide()
     self['status'] = StaticText()
     self['footnote'] = Label('')
     self['description'] = Label('Copy your keymap to\n/usr/share/enigma2/keymap.usr')
     self['labelInfo'] = Label(_('Copy your keymap to\n/usr/share/enigma2/keymap.usr'))
     usrkey = eEnv.resolve('${datadir}/enigma2/keymap.usr')
     ntrkey = eEnv.resolve('${datadir}/enigma2/keymap.ntr')
     u80key = eEnv.resolve('${datadir}/enigma2/keymap.u80')
     self.actkeymap = self.getKeymap(config.usage.keymap.value)
     keySel = [('keymap.xml', _('Default  (keymap.xml)'))]
     if path.isfile(usrkey):
         keySel.append(('keymap.usr', _('User  (keymap.usr)')))
     if path.isfile(ntrkey):
         keySel.append(('keymap.ntr', _('Neutrino  (keymap.ntr)')))
     if path.isfile(u80key):
         keySel.append(('keymap.u80', _('UP80  (keymap.u80)')))
     if self.actkeymap == usrkey and not path.isfile(usrkey):
         setDefaultKeymap()
     if self.actkeymap == ntrkey and not path.isfile(ntrkey):
         setDefaultKeymap()
     if self.actkeymap == u80key and not path.isfile(u80key):
         setDefaultKeymap()
     self.keyshow = ConfigSelection(keySel)
     self.keyshow.value = self.actkeymap
     self.onChangedEntry = []
     self.list = []
     ConfigListScreen.__init__(self, self.list, session=self.session, on_change=self.changedEntry)
     self.createSetup()
     self['actions'] = ActionMap(['SetupActions', 'ColorActions'], {'ok': self.keySave,
      'cancel': self.keyCancel,
      'red': self.keyCancel,
      'green': self.keySave,
      'menu': self.keyCancel}, -2)
     self['key_red'] = StaticText(_('Cancel'))
     self['key_green'] = StaticText(_('OK'))
     if self.selectionChanged not in self['config'].onSelectionChanged:
         self['config'].onSelectionChanged.append(self.selectionChanged)
     self.selectionChanged()
Example #31
0
from os import popen, path, makedirs, listdir, access, stat, rename, remove, W_OK, R_OK
from enigma import eEnv
from boxbranding import getBoxType

from Components.config import config, getConfigListEntry, ConfigSubsection, ConfigText, ConfigLocations, ConfigBoolean
from Components.Harddisk import harddiskmanager

boxtype = getBoxType()

config.misc.firstrun = ConfigBoolean(default = True)
config.plugins.configurationbackup = ConfigSubsection()
if boxtype == "odinm9" or boxtype == "maram9" or boxtype == "odinm7" or boxtype == "odinm6":
	config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/backup/', visible_width = 50, fixed_size = False)
else:
	config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/hdd/', visible_width = 50, fixed_size = False)
config.plugins.configurationbackup.backupdirs = ConfigLocations(default=[eEnv.resolve('${sysconfdir}/enigma2/'), '/etc/CCcam.cfg', '/etc/network/interfaces', '/etc/wpa_supplicant.conf', '/etc/wpa_supplicant.ath0.conf', '/etc/wpa_supplicant.wlan0.conf', '/etc/resolv.conf', '/etc/default_gw', '/etc/hostname'])


backupfile = "enigma2settingsbackup.tar.gz"

def checkConfigBackup():
	parts = [ (r.description, r.mountpoint) for r in harddiskmanager.getMountedPartitions(onlyhotplug = False)]
	if boxtype == "odinm9" or boxtype == "maram9" or boxtype == "odinm7" or boxtype == "odinm6":
		parts.append(('mtd backup','/media/backup'))
	for x in parts:
		if x[1] == '/':
			parts.remove(x)
	if len(parts):
		for x in parts:
			if x[1].endswith('/'):
				fullbackupfile =  x[1] + 'backup_' + boxtype + '/' + backupfile
Example #32
0
def getInfo(session=None, need_fullinfo=False):
    # TODO: get webif versione somewhere!
    info = {}
    global STATICBOXINFO

    if not (STATICBOXINFO is None or need_fullinfo):
        return STATICBOXINFO

    info['brand'] = getMachineBrand()
    info['model'] = getMachineName()
    info['boxtype'] = getBoxType()
    info['machinebuild'] = getMachineBuild()

    chipset = "unknown"
    if fileExists("/etc/.box"):
        f = open("/etc/.box", 'r')
        model = f.readline().strip().lower()
        f.close()
        if model.startswith("ufs") or model.startswith("ufc"):
            if model in ("ufs910", "ufs922", "ufc960"):
                chipset = "SH4 @266MHz"
            else:
                chipset = "SH4 @450MHz"
        elif model in ("topf", "tf7700hdpvr"):
            chipset = "SH4 @266MHz"
        elif model.startswith("azbox"):
            f = open("/proc/stb/info/model", 'r')
            model = f.readline().strip().lower()
            f.close()
            if model == "me":
                chipset = "SIGMA 8655"
            elif model == "minime":
                chipset = "SIGMA 8653"
            else:
                chipset = "SIGMA 8634"
        elif model.startswith("spark"):
            if model == "spark7162":
                chipset = "SH4 @540MHz"
            else:
                chipset = "SH4 @450MHz"
    elif fileExists("/proc/stb/info/azmodel"):
        f = open("/proc/stb/info/model", 'r')
        model = f.readline().strip().lower()
        f.close()
        if model == "me":
            chipset = "SIGMA 8655"
        elif model == "minime":
            chipset = "SIGMA 8653"
        else:
            chipset = "SIGMA 8634"
    elif fileExists("/proc/stb/info/model"):
        f = open("/proc/stb/info/model", 'r')
        model = f.readline().strip().lower()
        f.close()
        if model == "tf7700hdpvr":
            chipset = "SH4 @266MHz"
        elif model == "nbox":
            chipset = "STi7100 @266MHz"
        elif model == "arivalink200":
            chipset = "STi7109 @266MHz"
        elif model in ("adb2850", "adb2849", "dsi87"):
            chipset = "STi7111 @450MHz"
        elif model in ("sagemcom88", "esi88"):
            chipset = "STi7105 @450MHz"
        elif model.startswith("spark"):
            if model == "spark7162":
                chipset = "STi7162 @540MHz"
            else:
                chipset = "STi7111 @450MHz"
        elif model == "dm800":
            chipset = "bcm7401"
        elif model == "dm800se":
            chipset = "bcm7405"
        elif model == "dm500hd":
            chipset = "bcm7405"
        elif model == "dm7020hd":
            chipset = "bcm7405"
        elif model == "dm8000":
            chipset = "bcm7400"
        elif model == "dm820":
            chipset = "bcm7435"
        elif model == "dm7080":
            chipset = "bcm7435"
        elif model == "dm520":
            chipset = "bcm73625"
        elif model == "dm525":
            chipset = "bcm73625"
        elif model == "dm900":
            chipset = "bcm7252S"
        elif model == "dm920":
            chipset = "bcm7252S"

    if fileExists("/proc/stb/info/chipset"):
        f = open("/proc/stb/info/chipset", 'r')
        chipset = f.readline().strip()
        f.close()

    info['chipset'] = chipset

    memFree = 0
    for line in open("/proc/meminfo", 'r'):
        parts = line.split(':')
        key = parts[0].strip()
        if key == "MemTotal":
            info['mem1'] = parts[1].strip().replace("kB", _("kB"))
        elif key in ("MemFree", "Buffers", "Cached"):
            memFree += int(parts[1].strip().split(' ', 1)[0])
    info['mem2'] = "%s %s" % (memFree, _("kB"))
    info['mem3'] = _("%s free / %s total") % (info['mem2'], info['mem1'])

    try:
        f = open("/proc/uptime", "rb")
        uptime = int(float(f.readline().split(' ', 2)[0].strip()))
        f.close()
        uptimetext = ''
        if uptime > 86400:
            d = uptime / 86400
            uptime = uptime % 86400
            uptimetext += '%dd ' % d
        uptimetext += "%d:%.2d" % (uptime / 3600, (uptime % 3600) / 60)
    except:  # noqa: E722
        uptimetext = "?"
    info['uptime'] = uptimetext

    info["webifver"] = getOpenWebifVer()
    info['imagedistro'] = getImageDistro()
    info['friendlyimagedistro'] = getFriendlyImageDistro()
    info['oever'] = getOEVersion()
    info['imagever'] = getImageVersion()
    ib = getImageBuild()
    if ib:
        info['imagever'] = info['imagever'] + "." + ib
    info['enigmaver'] = getEnigmaVersionString()
    info['driverdate'] = getDriverDate()
    info['kernelver'] = about.getKernelVersionString()

    try:
        from Tools.StbHardware import getFPVersion
    except ImportError:
        from Tools.DreamboxHardware import getFPVersion

    try:
        info['fp_version'] = getFPVersion()
    except:  # noqa: E722
        info['fp_version'] = None

    friendlychipsetdescription = _("Chipset")
    friendlychipsettext = info['chipset'].replace("bcm", "Broadcom ")
    if friendlychipsettext in ("7335", "7356", "7362", "73625", "7424", "7425",
                               "7429"):
        friendlychipsettext = "Broadcom " + friendlychipsettext
    if not (info['fp_version'] is None or info['fp_version'] == 0):
        friendlychipsetdescription = friendlychipsetdescription + " (" + _(
            "Frontprocessor Version") + ")"
        friendlychipsettext = friendlychipsettext + " (" + str(
            info['fp_version']) + ")"

    info['friendlychipsetdescription'] = friendlychipsetdescription
    info['friendlychipsettext'] = friendlychipsettext
    info['tuners'] = []
    for i in range(0, nimmanager.getSlotCount()):
        print "[OpenWebif] -D- tuner '%d' '%s' '%s'" % (
            i, nimmanager.getNimName(i), nimmanager.getNim(i).getSlotName())
        info['tuners'].append({
            "name":
            nimmanager.getNim(i).getSlotName(),
            "type":
            nimmanager.getNimName(i) + " (" +
            nimmanager.getNim(i).getFriendlyType() + ")",
            "rec":
            "",
            "live":
            ""
        })

    info['ifaces'] = []
    ifaces = iNetwork.getConfiguredAdapters()
    for iface in ifaces:
        info['ifaces'].append({
            "name":
            iNetwork.getAdapterName(iface),
            "friendlynic":
            getFriendlyNICChipSet(iface),
            "linkspeed":
            getLinkSpeed(iface),
            "mac":
            iNetwork.getAdapterAttribute(iface, "mac"),
            "dhcp":
            iNetwork.getAdapterAttribute(iface, "dhcp"),
            "ipv4method":
            getIPv4Method(iface),
            "ip":
            formatIp(iNetwork.getAdapterAttribute(iface, "ip")),
            "mask":
            formatIp(iNetwork.getAdapterAttribute(iface, "netmask")),
            "v4prefix":
            sum([
                bin(int(x)).count('1') for x in formatIp(
                    iNetwork.getAdapterAttribute(iface, "netmask")).split('.')
            ]),
            "gw":
            formatIp(iNetwork.getAdapterAttribute(iface, "gateway")),
            "ipv6":
            getAdapterIPv6(iface)['addr'],
            "ipmethod":
            getIPMethod(iface),
            "firstpublic":
            getAdapterIPv6(iface)['firstpublic']
        })

    info['hdd'] = []
    for hdd in harddiskmanager.hdd:
        dev = hdd.findMount()
        if dev:
            stat = os.statvfs(dev)
            free = stat.f_bavail * stat.f_frsize / 1048576.
        else:
            free = -1

        if free <= 1024:
            free = "%i %s" % (free, _("MB"))
        else:
            free = free / 1024.
            free = "%.1f %s" % (free, _("GB"))

        size = hdd.diskSize() * 1000000 / 1048576.
        if size > 1048576:
            size = "%.1f %s" % ((size / 1048576.), _("TB"))
        elif size > 1024:
            size = "%.1f %s" % ((size / 1024.), _("GB"))
        else:
            size = "%d %s" % (size, _("MB"))

        iecsize = hdd.diskSize()
        # Harddisks > 1000 decimal Gigabytes are labelled in TB
        if iecsize > 1000000:
            iecsize = (iecsize + 50000) // float(100000) / 10
            # Omit decimal fraction if it is 0
            if (iecsize % 1 > 0):
                iecsize = "%.1f %s" % (iecsize, _("TB"))
            else:
                iecsize = "%d %s" % (iecsize, _("TB"))
        # Round harddisk sizes beyond ~300GB to full tens: 320, 500, 640, 750GB
        elif iecsize > 300000:
            iecsize = "%d %s" % (((iecsize + 5000) // 10000 * 10), _("GB"))
        # ... be more precise for media < ~300GB (Sticks, SSDs, CF, MMC, ...): 1, 2, 4, 8, 16 ... 256GB
        elif iecsize > 1000:
            iecsize = "%d %s" % (((iecsize + 500) // 1000), _("GB"))
        else:
            iecsize = "%d %s" % (iecsize, _("MB"))

        info['hdd'].append({
            "model":
            hdd.model(),
            "capacity":
            size,
            "labelled_capacity":
            iecsize,
            "free":
            free,
            "mount":
            dev,
            "friendlycapacity":
            _("%s free / %s total") % (free, size + ' ("' + iecsize + '")')
        })

    info['shares'] = []
    autofiles = ('/etc/auto.network', '/etc/auto.network_vti')
    for autofs in autofiles:
        if fileExists(autofs):
            method = "autofs"
            for line in file(autofs).readlines():
                if not line.startswith('#'):
                    # Replace escaped spaces that can appear inside credentials with underscores
                    # Not elegant but we wouldn't want to expose credentials on the OWIF anyways
                    tmpline = line.replace("\ ", "_")
                    tmp = tmpline.split()
                    if not len(tmp) == 3:
                        continue
                    name = tmp[0].strip()
                    type = "unknown"
                    if "cifs" in tmp[1]:
                        # Linux still defaults to SMBv1
                        type = "SMBv1.0"
                        settings = tmp[1].split(",")
                        for setting in settings:
                            if setting.startswith("vers="):
                                type = setting.replace("vers=", "SMBv")
                    elif "nfs" in tmp[1]:
                        type = "NFS"

                    # Default is r/w
                    mode = _("r/w")
                    settings = tmp[1].split(",")
                    for setting in settings:
                        if setting == "ro":
                            mode = _("r/o")

                    uri = tmp[2]
                    parts = []
                    parts = tmp[2].split(':')
                    if parts[0] is "":
                        server = uri.split('/')[2]
                        uri = uri.strip()[1:]
                    else:
                        server = parts[0]

                    ipaddress = None
                    if server:
                        # Will fail on literal IPs
                        try:
                            # Try IPv6 first, as will Linux
                            if has_ipv6:
                                tmpaddress = None
                                tmpaddress = getaddrinfo(server, 0, AF_INET6)
                                if tmpaddress:
                                    ipaddress = "[" + list(
                                        tmpaddress)[0][4][0] + "]"
                            # Use IPv4 if IPv6 fails or is not present
                            if ipaddress is None:
                                tmpaddress = None
                                tmpaddress = getaddrinfo(server, 0, AF_INET)
                                if tmpaddress:
                                    ipaddress = list(tmpaddress)[0][4][0]
                        except:  # noqa: E722
                            pass

                    friendlyaddress = server
                    if ipaddress is not None and not ipaddress == server:
                        friendlyaddress = server + " (" + ipaddress + ")"
                    info['shares'].append({
                        "name": name,
                        "method": method,
                        "type": type,
                        "mode": mode,
                        "path": uri,
                        "host": server,
                        "ipaddress": ipaddress,
                        "friendlyaddress": friendlyaddress
                    })
    # TODO: fstab

    info['transcoding'] = False
    #: models transcoding feature
    if fileExists("/proc/stb/encoder/0/bitrate"):
        if os.path.exists(
                eEnv.resolve(
                    '${libdir}/enigma2/python/Plugins/SystemPlugins/TransCodingSetup/plugin.pyo'
                )
        ) or os.path.exists(
                eEnv.resolve(
                    '${libdir}/enigma2/python/Plugins/SystemPlugins/TranscodingSetup/plugin.pyo'
                )
        ) or os.path.exists(
                eEnv.resolve(
                    '${libdir}/enigma2/python/Plugins/SystemPlugins/MultiTransCodingSetup/plugin.pyo'
                )):
            info['transcoding'] = True

    info['kinopoisk'] = False
    lang = ['ru', 'uk', 'lv', 'lt', 'et']
    current_language = language.getLanguage()
    for l in lang:
        if l in current_language:
            info['kinopoisk'] = True
            break

    info['EX'] = ''

    if session:
        try:
            recs = NavigationInstance.instance.getRecordings()
            if recs:
                # only one stream and only TV
                from Plugins.Extensions.OpenWebif.controllers.stream import streamList
                s_name = ''
                # s_cip = ''

                print "[OpenWebif] -D- streamList count '%d'" % len(streamList)
                if len(streamList) == 1:
                    from Screens.ChannelSelection import service_types_tv
                    # from enigma import eEPGCache
                    # epgcache = eEPGCache.getInstance()
                    serviceHandler = eServiceCenter.getInstance()
                    services = serviceHandler.list(
                        eServiceReference('%s ORDER BY name' %
                                          (service_types_tv)))
                    channels = services and services.getContent("SN", True)
                    s = streamList[0]
                    srefs = s.ref.toString()
                    for channel in channels:
                        if srefs == channel[0]:
                            s_name = channel[1] + ' (' + s.clientIP + ')'
                            break
                print "[OpenWebif] -D- s_name '%s'" % s_name

                for stream in streamList:
                    srefs = stream.ref.toString()
                    print "[OpenWebif] -D- srefs '%s'" % srefs

                sname = ''
                timers = []
                for timer in NavigationInstance.instance.RecordTimer.timer_list:
                    if timer.isRunning() and not timer.justplay:
                        timers.append(
                            timer.service_ref.getServiceName().replace(
                                '\xc2\x86', '').replace('\xc2\x87', ''))
                        print "[OpenWebif] -D- timer '%s'" % timer.service_ref.getServiceName(
                        )
                # only one recording
                if len(timers) == 1:
                    sname = timers[0]

                if sname == '' and s_name != '':
                    sname = s_name

                print "[OpenWebif] -D- recs count '%d'" % len(recs)

                for rec in recs:
                    feinfo = rec.frontendInfo()
                    frontendData = feinfo and feinfo.getAll(True)
                    if frontendData is not None:
                        cur_info = feinfo.getTransponderData(True)
                        if cur_info:
                            nr = frontendData['tuner_number']
                            info['tuners'][nr]['rec'] = getOrbitalText(
                                cur_info) + ' / ' + sname

            service = session.nav.getCurrentService()
            if service is not None:
                sname = service.info().getName()
                feinfo = service.frontendInfo()
                frontendData = feinfo and feinfo.getAll(True)
                if frontendData is not None:
                    cur_info = feinfo.getTransponderData(True)
                    if cur_info:
                        nr = frontendData['tuner_number']
                        info['tuners'][nr]['live'] = getOrbitalText(
                            cur_info) + ' / ' + sname
        except Exception, error:
            info['EX'] = error
Example #33
0
    def __init__(self):
        global hw_info
        if hw_info is not None:
            #			print "using cached result"
            return
        hw_info = self

        print "Scanning hardware info"
        # Version
        #		if os.path.exists("/proc/stb/info/version"):
        if os.path.exists(eEnv.resolve("${sysconfdir}/stb/info/model")):
            self.device_version = open(
                eEnv.resolve("${sysconfdir}/stb/info/model")).read().strip()

    # Revision
        if os.path.exists(
                eEnv.resolve("${sysconfdir}/stb/info/board_revision")):
            self.device_revision = open(
                eEnv.resolve(
                    "${sysconfdir}/stb/info/board_revision")).read().strip()

    # Name ... bit odd, but history prevails
        if os.path.exists(eEnv.resolve("${sysconfdir}/stb/info/model")):
            self.device_name = open(
                eEnv.resolve("${sysconfdir}/stb/info/model")).read().strip()
        else:
            print "----------------"
            print "you should upgrade to new drivers for the hardware detection to work properly"
            print "----------------"
            print "fallback to detect hardware via /proc/cpuinfo!!"
            try:
                rd = open("/proc/cpuinfo", "r").read()
                if "Brcm4380 V4.2" in rd:
                    self.device_name = "dm8000"
                elif "Brcm7401 V0.0" in rd:
                    self.device_name = "dm800"
                elif "MIPS 4KEc V4.8" in rd:
                    self.device_name = "dm7025"
                rd.close()
            except:
                pass

    # Model
        for line in open((resolveFilename(SCOPE_SKIN, 'hw_info/hw_info.cfg')),
                         'r'):
            if not line.startswith('#') and not line.isspace():
                l = line.strip().replace('\t', ' ')
                if l.find(' ') != -1:
                    infoFname, prefix = l.split()
                else:
                    infoFname = l
                    prefix = ""
                if os.path.exists((eEnv.resolve("${sysconfdir}/stb/info/")) +
                                  infoFname):
                    self.device_model = prefix + open(
                        (eEnv.resolve("${sysconfdir}/stb/info/") +
                         infoFname).read().strip())
                    break

        if self.device_model is None:
            self.device_model = self.device_name

    # HDMI capbility
        self.device_hdmi = (self.device_name == 'dm7020hd'
                            or self.device_name == 'dm800se'
                            or self.device_name == 'dm500hd'
                            or (self.device_name == 'dm8000'
                                and self.device_version != None))

        print "Detected: " + self.get_device_string()
Example #34
0
from Components.Label import Label
from Components.SystemInfo import SystemInfo
from Components.ConfigList import ConfigListScreen
from Components.Sources.StaticText import StaticText
from enigma import eEnv

import xml.etree.cElementTree

# FIXME: use resolveFile!
# read the setupmenu
try:
    # first we search in the current path
    setupfile = file('data/setup.xml', 'r')
except:
    # if not found in the current path, we use the global datadir-path
    setupfile = file(eEnv.resolve('${datadir}/enigma2/setup.xml'), 'r')
setupdom = xml.etree.cElementTree.parse(setupfile)
setupfile.close()


def getConfigMenuItem(configElement):
    for item in setupdom.getroot().findall('./setup/item/.'):
        if item.text == configElement:
            return _(item.attrib["text"]), eval(configElement)
    return "", None


class SetupError(Exception):
    def __init__(self, message):
        self.msg = message
Example #35
0
 def __init__(self):
     self.CONFIG_FILE = eEnv.resolve('${sysconfdir}/enigma2/ava_setup.cfg')
     # load config file
     self.loadConfigFile()
Example #36
0
class AMB_Cicontrol(Renderer, Poll):

    searchPaths = (eEnv.resolve('${datadir}/enigma2/%s/'), '/media/hdd/%s/',
                   '/media/usb/%s/')

    def __init__(self):
        Poll.__init__(self)
        Renderer.__init__(self)
        self.path = 'emu'
        self.slot = 0
        self.nameCache = {}
        self.pngname = ''

    def applySkin(self, desktop, parent):
        attribs = []
        for (attrib, value) in self.skinAttributes:
            if attrib == 'path':
                self.path = value
            elif attrib == 'slot':
                self.slot = int(value)
            else:
                attribs.append((attrib, value))
        self.skinAttributes = attribs
        return Renderer.applySkin(self, desktop, parent)

    GUI_WIDGET = ePixmap

    def changed(self, what):
        self.poll_interval = 1000
        self.poll_enabled = True
        if self.instance:
            pngname = ''
            if what[0] != self.CHANGED_CLEAR:
                service = self.source.service
                if service:
                    NUM_CI = \
                        eDVBCIInterfaces.getInstance().getNumOfSlots()
                    if NUM_CI > 0:
                        state = \
                            eDVBCI_UI.getInstance().getState(self.slot)
                        if state != -1:
                            if state == 0:
                                text = 'nomodule'
                            elif state == 1:
                                text = 'initmodule'
                            elif state == 2:
                                text = 'ready'
                        else:
                            text = 'nomodule'
                    else:
                        text = 'nomodule'
                    pngname = self.nameCache.get(text, '')
                    if pngname == '':
                        pngname = self.findPicon(text)
                        if pngname != '':
                            self.nameCache[text] = pngname
            if pngname == '':  # no picon for service found
                pngname = self.nameCache.get('default', '')
                if pngname == '':  # no default yet in cache..
                    pngname = self.findPicon('picon_default')
                    if pngname == '':
                        tmp = resolveFilename(SCOPE_CURRENT_SKIN,
                                              'picon_default.png')
                        if fileExists(tmp):
                            pngname = tmp
                        else:
                            pngname = resolveFilename(
                                SCOPE_SKIN_IMAGE,
                                'skin_default/picon_default.png')
                    self.nameCache['default'] = pngname
            if self.pngname != pngname:
                self.instance.setPixmapFromFile(pngname)
                self.pngname = pngname

    def findPicon(self, serviceName):
        for path in self.searchPaths:
            pngname = path % self.path + serviceName + '.png'
            if fileExists(pngname):
                return pngname
        return ''
Example #37
0
def eEnv_resolve_multi(path):
    resolve = eEnv.resolve(path)
    if resolve == path:
        return []
    else:
        return resolve.split()
Example #38
0
def InitUsageConfig():
    config.usage = ConfigSubsection()
    config.usage.showdish = ConfigYesNo(default=True)
    config.usage.multibouquet = ConfigYesNo(default=False)
    config.usage.multiepg_ask_bouquet = ConfigYesNo(default=False)

    config.usage.quickzap_bouquet_change = ConfigYesNo(default=False)
    config.usage.e1like_radio_mode = ConfigYesNo(default=False)
    config.usage.infobar_timeout = ConfigSelection(
        default="5",
        choices=[("0", _("no timeout")), ("1", "1 " + _("second")),
                 ("2", "2 " + _("seconds")), ("3", "3 " + _("seconds")),
                 ("4", "4 " + _("seconds")), ("5", "5 " + _("seconds")),
                 ("6", "6 " + _("seconds")), ("7", "7 " + _("seconds")),
                 ("8", "8 " + _("seconds")), ("9", "9 " + _("seconds")),
                 ("10", "10 " + _("seconds"))])
    config.usage.show_infobar_on_zap = ConfigYesNo(default=True)
    config.usage.show_infobar_on_skip = ConfigYesNo(default=True)
    config.usage.show_infobar_on_event_change = ConfigYesNo(default=True)
    config.usage.hdd_standby = ConfigSelection(
        default="600",
        choices=[("0", _("no standby")), ("10", "10 " + _("seconds")),
                 ("30", "30 " + _("seconds")), ("60", "1 " + _("minute")),
                 ("120", "2 " + _("minutes")), ("300", "5 " + _("minutes")),
                 ("600", "10 " + _("minutes")), ("1200", "20 " + _("minutes")),
                 ("1800", "30 " + _("minutes")), ("3600", "1 " + _("hour")),
                 ("7200", "2 " + _("hours")), ("14400", "4 " + _("hours"))])
    config.usage.output_12V = ConfigSelection(default="do not change",
                                              choices=[("do not change",
                                                        _("do not change")),
                                                       ("off", _("off")),
                                                       ("on", _("on"))])

    config.usage.pip_zero_button = ConfigSelection(
        default="standard",
        choices=[("standard", _("standard")),
                 ("swap", _("swap PiP and main picture")),
                 ("swapstop", _("move PiP to main picture")),
                 ("stop", _("stop PiP"))])

    config.usage.default_path = ConfigText(default="")
    config.usage.timer_path = ConfigText(default="<default>")
    config.usage.instantrec_path = ConfigText(default="<default>")
    config.usage.timeshift_path = ConfigText(default="/media/hdd/")
    config.usage.allowed_timeshift_paths = ConfigLocations(
        default=["/media/hdd/"])

    config.usage.on_movie_start = ConfigSelection(
        default="ask",
        choices=[("ask", _("Ask user")),
                 ("resume", _("Resume from last position")),
                 ("beginning", _("Start from the beginning"))])
    config.usage.on_movie_stop = ConfigSelection(
        default="ask",
        choices=[("ask", _("Ask user")),
                 ("movielist", _("Return to movie list")),
                 ("quit", _("Return to previous service"))])
    config.usage.on_movie_eof = ConfigSelection(
        default="ask",
        choices=[("ask", _("Ask user")),
                 ("movielist", _("Return to movie list")),
                 ("quit", _("Return to previous service")),
                 ("pause", _("Pause movie at end"))])

    config.usage.setup_level = ConfigSelection(default="intermediate",
                                               choices=[
                                                   ("simple", _("Simple")),
                                                   ("intermediate",
                                                    _("Intermediate")),
                                                   ("expert", _("Expert"))
                                               ])

    config.usage.on_long_powerpress = ConfigSelection(
        default="show_menu",
        choices=[("show_menu", _("show shutdown menu")),
                 ("shutdown", _("immediate shutdown")),
                 ("standby", _("Standby"))])

    config.usage.on_short_powerpress = ConfigSelection(
        default="standby",
        choices=[("show_menu", _("show shutdown menu")),
                 ("shutdown", _("immediate shutdown")),
                 ("standby", _("Standby"))])

    config.usage.alternatives_priority = ConfigSelection(
        default="0",
        choices=[("0", "DVB-S/-C/-T"), ("1", "DVB-S/-T/-C"),
                 ("2", "DVB-C/-S/-T"), ("3", "DVB-C/-T/-S"),
                 ("4", "DVB-T/-C/-S"), ("5", "DVB-T/-S/-C")])

    nims = [("-1", _("auto"))]
    for x in nimmanager.nim_slots:
        nims.append((str(x.slot), x.getSlotName()))
    config.usage.frontend_priority = ConfigSelection(default="-1",
                                                     choices=nims)

    config.usage.show_event_progress_in_servicelist = ConfigYesNo(
        default=False)

    config.usage.blinking_display_clock_during_recording = ConfigYesNo(
        default=False)

    config.usage.show_message_when_recording_starts = ConfigYesNo(default=True)

    config.usage.load_length_of_movies_in_moviellist = ConfigYesNo(
        default=True)

    def TunerTypePriorityOrderChanged(configElement):
        setTunerTypePriorityOrder(int(configElement.value))

    config.usage.alternatives_priority.addNotifier(
        TunerTypePriorityOrderChanged, immediate_feedback=False)

    def PreferredTunerChanged(configElement):
        setPreferredTuner(int(configElement.value))

    config.usage.frontend_priority.addNotifier(PreferredTunerChanged)

    config.epg = ConfigSubsection()
    config.epg.eit = ConfigYesNo(default=True)
    config.epg.mhw = ConfigYesNo(default=False)
    config.epg.freesat = ConfigYesNo(default=True)
    config.epg.viasat = ConfigYesNo(default=True)
    config.epg.netmed = ConfigYesNo(default=True)
    config.epg.virgin = ConfigYesNo(default=False)

    def EpgSettingsChanged(configElement):
        from enigma import eEPGCache
        mask = 0xffffffff
        if not config.epg.eit.value:
            mask &= ~(eEPGCache.NOWNEXT | eEPGCache.SCHEDULE
                      | eEPGCache.SCHEDULE_OTHER)
        if not config.epg.mhw.value:
            mask &= ~eEPGCache.MHW
        if not config.epg.freesat.value:
            mask &= ~(eEPGCache.FREESAT_NOWNEXT | eEPGCache.FREESAT_SCHEDULE
                      | eEPGCache.FREESAT_SCHEDULE_OTHER)
        if not config.epg.viasat.value:
            mask &= ~eEPGCache.VIASAT
        #if not config.epg.netmed.value:
        #	mask &= ~(eEPGCache.NETMED_SCHEDULE | eEPGCache.NETMED_SCHEDULE_OTHER)
        #if not config.epg.virgin.value:
        #	mask &= ~(eEPGCache.VIRGIN_NOWNEXT | eEPGCache.VIRGIN_SCHEDULE)
        eEPGCache.getInstance().setEpgSources(mask)

    config.epg.eit.addNotifier(EpgSettingsChanged)
    config.epg.mhw.addNotifier(EpgSettingsChanged)
    config.epg.freesat.addNotifier(EpgSettingsChanged)
    config.epg.viasat.addNotifier(EpgSettingsChanged)
    config.epg.netmed.addNotifier(EpgSettingsChanged)
    config.epg.virgin.addNotifier(EpgSettingsChanged)

    config.epg.histminutes = ConfigSelectionNumber(min=0,
                                                   max=120,
                                                   stepwidth=15,
                                                   default=0,
                                                   wraparound=True)

    def EpgHistorySecondsChanged(configElement):
        from enigma import eEPGCache
        eEPGCache.getInstance().setEpgHistorySeconds(
            config.epg.histminutes.getValue() * 60)

    config.epg.histminutes.addNotifier(EpgHistorySecondsChanged)

    def setHDDStandby(configElement):
        for hdd in harddiskmanager.HDDList():
            hdd[1].setIdleTime(int(configElement.value))

    config.usage.hdd_standby.addNotifier(setHDDStandby,
                                         immediate_feedback=False)

    def set12VOutput(configElement):
        if configElement.value == "on":
            Misc_Options.getInstance().set_12V_output(1)
        elif configElement.value == "off":
            Misc_Options.getInstance().set_12V_output(0)

    config.usage.output_12V.addNotifier(set12VOutput, immediate_feedback=False)

    SystemInfo["12V_Output"] = Misc_Options.getInstance().detected_12V_output()

    config.usage.keymap = ConfigText(
        default=eEnv.resolve("${datadir}/enigma2/keymap.xml"))

    config.seek = ConfigSubsection()
    config.seek.selfdefined_13 = ConfigNumber(default=15)
    config.seek.selfdefined_46 = ConfigNumber(default=60)
    config.seek.selfdefined_79 = ConfigNumber(default=300)

    config.seek.speeds_forward = ConfigSet(
        default=[2, 4, 8, 16, 32, 64, 128],
        choices=[2, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128])
    config.seek.speeds_backward = ConfigSet(
        default=[2, 4, 8, 16, 32, 64, 128],
        choices=[1, 2, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128])
    config.seek.speeds_slowmotion = ConfigSet(default=[2, 4, 8],
                                              choices=[2, 4, 6, 8, 12, 16, 25])

    config.seek.enter_forward = ConfigSelection(default="2",
                                                choices=[
                                                    "2", "4", "6", "8", "12",
                                                    "16", "24", "32", "48",
                                                    "64", "96", "128"
                                                ])
    config.seek.enter_backward = ConfigSelection(default="1",
                                                 choices=[
                                                     "1", "2", "4", "6", "8",
                                                     "12", "16", "24", "32",
                                                     "48", "64", "96", "128"
                                                 ])

    config.seek.on_pause = ConfigSelection(default="play",
                                           choices=[("play", _("Play")),
                                                    ("step",
                                                     _("Singlestep (GOP)")),
                                                    ("last", _("Last speed"))])

    config.usage.timerlist_finished_timer_position = ConfigSelection(
        default="beginning",
        choices=[("beginning", _("at beginning")), ("end", _("at end"))])

    def updateEnterForward(configElement):
        if not configElement.value:
            configElement.value = [2]
        updateChoices(config.seek.enter_forward, configElement.value)

    config.seek.speeds_forward.addNotifier(updateEnterForward,
                                           immediate_feedback=False)

    def updateEnterBackward(configElement):
        if not configElement.value:
            configElement.value = [2]
        updateChoices(config.seek.enter_backward, configElement.value)

    config.seek.speeds_backward.addNotifier(updateEnterBackward,
                                            immediate_feedback=False)

    config.subtitles = ConfigSubsection()
    config.subtitles.subtitle_fontcolor = ConfigSelection(
        default="0",
        choices=[("0", _("default")), ("1", _("white")), ("2", _("yellow")),
                 ("3", _("green")), ("4", _("cyan")), ("5", _("blue")),
                 ("6", _("magneta")), ("7", _("red")), ("8", _("black"))])
    config.subtitles.subtitle_fontsize = ConfigSelection(
        choices=["%d" % x for x in range(16, 101) if not x % 2], default="20")
    config.subtitles.subtitle_bgcolor = ConfigSelection(default="0",
                                                        choices=[
                                                            ("0", _("black")),
                                                            ("1", _("red")),
                                                            ("2",
                                                             _("magneta")),
                                                            ("3", _("blue")),
                                                            ("4", _("cyan")),
                                                            ("5", _("green")),
                                                            ("6", _("yellow")),
                                                            ("7", _("white"))
                                                        ])
    config.subtitles.subtitle_bgopacity = ConfigSelection(
        default="225",
        choices=[("0", _("No transparency")), ("25", "10%"), ("50", "20%"),
                 ("75", "30%"), ("100", "40%"), ("125", "50%"), ("150", "60%"),
                 ("175", "70%"), ("200", "80%"), ("225", "90%"),
                 ("255", _("Full transparency"))])
    config.subtitles.subtitle_edgestyle = ConfigSelection(default="2",
                                                          choices=[
                                                              ("0", "None"),
                                                              ("1", "Raised"),
                                                              ("2",
                                                               "Depressed"),
                                                              ("3", "Uniform")
                                                          ])
    config.subtitles.subtitle_edgestyle_level = ConfigSelection(
        choices=["0", "1", "2", "3", "4", "5"], default="3")
    config.subtitles.subtitle_opacity = ConfigSelection(
        default="0",
        choices=[("0", _("No transparency")), ("75", "25%"), ("150", "50%")])
    config.subtitles.subtitle_original_position = ConfigYesNo(default=True)
    config.subtitles.subtitle_alignment = ConfigSelection(choices=[
        ("left", _("left")), ("center", _("center")), ("right", _("right"))
    ],
                                                          default="center")
    config.subtitles.subtitle_position = ConfigSelection(choices=[
        "0", "50", "100", "150", "200", "250", "300", "350", "400", "450",
        "500", "550", "600"
    ],
                                                         default="100")

    config.subtitles.dvb_subtitles_centered = ConfigYesNo(default=False)

    subtitle_delay_choicelist = []
    for i in range(-900000, 1845000, 45000):
        if i == 0:
            subtitle_delay_choicelist.append(("0", _("No delay")))
        else:
            subtitle_delay_choicelist.append(
                (str(i), "%2.1f sec" % (i / 90000.)))
    config.subtitles.subtitle_noPTSrecordingdelay = ConfigSelection(
        default="315000", choices=subtitle_delay_choicelist)
    config.subtitles.subtitle_bad_timing_delay = ConfigSelection(
        default="0", choices=subtitle_delay_choicelist)
    config.subtitles.subtitle_rewrap = ConfigYesNo(default=False)
    config.subtitles.colourise_dialogs = ConfigYesNo(default=False)
    config.subtitles.pango_subtitle_fontswitch = ConfigYesNo(default=True)
    config.subtitles.pango_subtitles_delay = ConfigSelection(
        default="0", choices=subtitle_delay_choicelist)
    config.subtitles.pango_subtitles_fps = ConfigSelection(
        default="1",
        choices=[("1", _("Original")), ("23976", _("23.976")),
                 ("24000", _("24")), ("25000", _("25")), ("29970", _("29.97")),
                 ("30000", _("30"))])
    config.subtitles.pango_autoturnon = ConfigYesNo(default=True)

    config.autolanguage = ConfigSubsection()
    epg_language_choices = [("---", _("None")), ("eng qaa", _("English")),
                            ("deu ger", _("German")), ("ara", _("Arabic")),
                            ("eus baq", _("Basque")), ("bul", _("Bulgarian")),
                            ("hrv", _("Croatian")), ("ces cze", _("Czech")),
                            ("dan", _("Danish")), ("dut ndl nld", _("Dutch")),
                            ("est", _("Estonian")), ("fin", _("Finnish")),
                            ("fra fre", _("French")), ("ell gre", _("Greek")),
                            ("heb", _("Hebrew")), ("hun", _("Hungarian")),
                            ("ita", _("Italian")), ("lav", _("Latvian")),
                            ("lit", _("Lithuanian")),
                            ("ltz", _("Luxembourgish")),
                            ("nor", _("Norwegian")),
                            ("fas per fa pes", _("Persian")),
                            ("pol", _("Polish")),
                            ("por dub Dub DUB ud1", _("Portuguese")),
                            ("ron rum", _("Romanian")), ("rus", _("Russian")),
                            ("srp", _("Serbian")), ("slk slo", _("Slovak")),
                            ("slv", _("Slovenian")), ("spa", _("Spanish")),
                            ("swe", _("Swedish")), ("tha", _("Thai")),
                            ("tur Audio_TUR", _("Turkish")),
                            ("ukr Ukr", _("Ukrainian"))]

    def setEpgLanguage(configElement):
        eServiceEvent.setEPGLanguage(configElement.value)

    config.autolanguage.epglanguage = ConfigSelection(epg_language_choices,
                                                      default="---")
    config.autolanguage.epglanguage.addNotifier(setEpgLanguage)

    def setEpgLanguageAlternative(configElement):
        eServiceEvent.setEPGLanguageAlternative(configElement.value)

    config.autolanguage.epglanguage_alternative = ConfigSelection(
        epg_language_choices, default="---")
    config.autolanguage.epglanguage_alternative.addNotifier(
        setEpgLanguageAlternative)
Example #39
0
from Plugins.Extensions.ExtrasPanel.plugin import ShowSoftcamPanelExtensions
from Plugins.Extensions.ExtrasPanel.SoftwarePanel import SoftwarePanel
from Plugins.Extensions.ExtrasPanel.sundtek import SundtekControlCenter
from Addons import AddonsFileBrowser
from Plugins.SystemPlugins.SoftwareManager.ImageBackup import ImageBackup
from Plugins.SystemPlugins.SoftwareManager.plugin import UpdatePlugin, SoftwareManagerSetup
from Plugins.SystemPlugins.SoftwareManager.BackupRestore import BackupScreen, RestoreScreen, BackupSelection, getBackupPath, getOldBackupPath, getBackupFilename
from Tools.Directories import resolveFilename, SCOPE_PLUGINS, SCOPE_SKIN_IMAGE, SCOPE_SKIN
from Tools.LoadPixmap import LoadPixmap
from os import path, listdir
from time import sleep
from re import search
import NavigationInstance
import os.path
import fstabViewer
plugin_path_networkbrowser = eEnv.resolve('${libdir}/enigma2/python/Plugins/SystemPlugins/NetworkBrowser')
if path.exists('/usr/lib/enigma2/python/Plugins/SystemPlugins/HdmiCEC/plugin.pyo'):
	from Plugins.SystemPlugins.HdmiCEC.plugin import HdmiCECSetupScreen
	HDMICEC = True
else:
	HDMICEC = False
if path.exists('/usr/lib/enigma2/python/Plugins/Extensions/AudioSync'):
	from Plugins.Extensions.AudioSync.AC3setup import AC3LipSyncSetup
	plugin_path_audiosync = eEnv.resolve('${libdir}/enigma2/python/Plugins/Extensions/AudioSync')
	AUDIOSYNC = True
else:
	AUDIOSYNC = False
if path.exists('/usr/lib/enigma2/python/Plugins/SystemPlugins/AutomaticVolumeAdjustment'):
	from Plugins.SystemPlugins.AutomaticVolumeAdjustment.AutomaticVolumeAdjustmentSetup import AutomaticVolumeAdjustmentConfigScreen
	AUTVOLADJ = True
else:
Example #40
0
from Plugins.Plugin import PluginDescriptor
from Screens.Screen import Screen
from Screens.MessageBox import MessageBox
from Screens.ChoiceBox import ChoiceBox
import Screens.Standby
from Components.ActionMap import ActionMap
from enigma import eTimer, eServiceCenter, iServiceInformation, eConsoleAppContainer, eEnv
from os import access, chmod, X_OK

recons_path = eEnv.resolve(
    "${libdir}/enigma2/python/Plugins/Extensions/ReconstructApSc/bin/reconstruct_apsc"
)


def main(session, service, **kwargs):
    # Hack to make sure it is executable
    if not access(recons_path, X_OK):
        chmod(recons_path, 493)
    session.open(ReconstructApSc, service, **kwargs)


def Plugins(**kwargs):
    return PluginDescriptor(name="ReconstructApSc",
                            description=_("Reconstruct AP/SC ..."),
                            where=PluginDescriptor.WHERE_MOVIELIST,
                            fnc=main)


class ReconstructApSc(ChoiceBox):
    def __init__(self, session, service):
        self.service = service
Example #41
0
def eEnv_resolve_multi(path):
    resolve = eEnv.resolve(path)
    return resolve.split()
Example #42
0
SCOPE_METADIR = 16
SCOPE_CURRENT_PLUGIN = 17
SCOPE_TIMESHIFT = 18
SCOPE_ACTIVE_SKIN = 19
SCOPE_LCDSKIN = 20
SCOPE_ACTIVE_LCDSKIN = 21
SCOPE_AUTORECORD = 22
SCOPE_DEFAULTDIR = 23
SCOPE_DEFAULTPARTITION = 24
SCOPE_DEFAULTPARTITIONMOUNTDIR = 25

PATH_CREATE = 0
PATH_DONTCREATE = 1
PATH_FALLBACK = 2
defaultPaths = {
    SCOPE_TRANSPONDERDATA: (eEnv.resolve("${sysconfdir}/"), PATH_DONTCREATE),
    SCOPE_SYSETC: (eEnv.resolve("${sysconfdir}/"), PATH_DONTCREATE),
    SCOPE_FONTS: (eEnv.resolve("${datadir}/fonts/"), PATH_DONTCREATE),
    SCOPE_CONFIG: (eEnv.resolve("${sysconfdir}/enigma2/"), PATH_CREATE),
    SCOPE_PLUGINS:
    (eEnv.resolve("${libdir}/enigma2/python/Plugins/"), PATH_CREATE),
    SCOPE_LANGUAGE: (eEnv.resolve("${datadir}/enigma2/po/"), PATH_DONTCREATE),
    SCOPE_SKIN: (eEnv.resolve("${datadir}/enigma2/"), PATH_DONTCREATE),
    SCOPE_LCDSKIN:
    (eEnv.resolve("${datadir}/enigma2/display/"), PATH_DONTCREATE),
    SCOPE_SKIN_IMAGE: (eEnv.resolve("${datadir}/enigma2/"), PATH_DONTCREATE),
    SCOPE_HDD: ("/media/hdd/movie/", PATH_DONTCREATE),
    SCOPE_TIMESHIFT: ("/media/hdd/timeshift/", PATH_DONTCREATE),
    SCOPE_AUTORECORD: ("/media/hdd/movie/", PATH_DONTCREATE),
    SCOPE_MEDIA: ("/media/", PATH_DONTCREATE),
    SCOPE_PLAYLIST:
Example #43
0
def isExtEplayer3Available():
    from enigma import eEnv
    return os.path.isfile(eEnv.resolve('$bindir/exteplayer3'))
Example #44
0
import struct
import os
import re

from Components.NimManager import nimmanager
from Components.config import ConfigNothing, config

from Components.ServiceEventTracker import ServiceEventTracker

from enigma import iPlayableService
from Screens.InfoBar import InfoBar

fast_zap_support = None

LANEDB_PATH = eEnv.resolve("${sysconfdir}/enigma2/") + "lamedb"

FAVOURITES_PATH = eEnv.resolve("${sysconfdir}/enigma2/") + "userbouquet.favourites.tv"

PROC_FBC_PATH = "/proc/stb/frontend/fbc"

#PROC_FBC_PATH = "/home/root/fbc"

def strToHex(s):
		return hex(int(s, 16))

class FastZapSupport:
	def __init__(self, session):
		self.session = session
		self.onClose = [ ] # hack
Example #45
0
from Components.PluginComponent import plugins
from Tools.Directories import fileExists, resolveFilename, SCOPE_PLUGINS
from Components.Pixmap import Pixmap
from os import access, remove, W_OK, R_OK
from enigma import eEnv
from boxbranding import getBoxType, getImageDistro

from Components.config import config, ConfigSubsection, ConfigText, ConfigLocations, ConfigBoolean
from Components.Harddisk import harddiskmanager

config.misc.firstrun = ConfigBoolean(default=True)
config.plugins.configurationbackup = ConfigSubsection()
config.plugins.configurationbackup.backuplocation = ConfigText(
    default='/media/hdd/', visible_width=50, fixed_size=False)
config.plugins.configurationbackup.backupdirs = ConfigLocations(default=[
    eEnv.resolve('${sysconfdir}/enigma2/'), '/etc/network/interfaces',
    '/etc/wpa_supplicant.conf', '/etc/wpa_supplicant.ath0.conf',
    '/etc/wpa_supplicant.wlan0.conf', '/etc/resolv.conf', '/etc/default_gw',
    '/etc/hostname'
])

backupfile = "enigma2settingsbackup.tar.gz"


def checkConfigBackup():
    parts = [(r.description, r.mountpoint)
             for r in harddiskmanager.getMountedPartitions(onlyhotplug=False)]
    box = getBoxType()
    distro = getImageDistro()
    for x in parts:
        if x[1] == '/':
Example #46
0
    def __init__(self,
                 session,
                 showSteps=True,
                 showStepSlider=True,
                 showList=True,
                 showConfig=True):
        Screen.__init__(self, session)

        self.isLastWizard = False  # can be used to skip a "goodbye"-screen in a wizard

        self.stepHistory = []

        self.wizard = {}
        parser = make_parser()
        if not isinstance(self.xmlfile, list):
            self.xmlfile = [self.xmlfile]
        print "Reading ", self.xmlfile
        wizardHandler = self.parseWizard(self.wizard)
        parser.setContentHandler(wizardHandler)
        for xmlfile in self.xmlfile:
            if xmlfile[0] != '/':
                parser.parse(eEnv.resolve('${datadir}/enigma2/') + xmlfile)
            else:
                parser.parse(xmlfile)

        self.showSteps = showSteps
        self.showStepSlider = showStepSlider
        self.showList = showList
        self.showConfig = showConfig

        self.numSteps = len(self.wizard)
        self.currStep = self.getStepWithID("start") + 1

        self.timeoutTimer = eTimer()
        self.timeoutTimer.callback.append(self.timeoutCounterFired)

        self["text"] = Label()

        if showConfig:
            self["config"] = ConfigList([], session=session)

        if self.showSteps:
            self["step"] = Label()

        if self.showStepSlider:
            self["stepslider"] = Slider(1, self.numSteps)

        if self.showList:
            self.list = []
            self["list"] = List(self.list, enableWrapAround=True)
            self["list"].onSelectionChanged.append(self.selChanged)
            #self["list"] = MenuList(self.list, enableWrapAround = True)

        self.onShown.append(self.updateValues)

        self.configInstance = None
        self.currentConfigIndex = None

        Wizard.instance = self

        self.lcdCallbacks = []

        self.disableKeys = False

        self["actions"] = NumberActionMap(
            [
                "WizardActions", "NumberActions", "ColorActions",
                "SetupActions", "InputAsciiActions", "KeyboardInputActions"
            ], {
                "gotAsciiCode": self.keyGotAscii,
                "ok": self.ok,
                "back": self.back,
                "left": self.left,
                "right": self.right,
                "up": self.up,
                "down": self.down,
                "red": self.red,
                "green": self.green,
                "yellow": self.yellow,
                "blue": self.blue,
                "deleteBackward": self.deleteBackward,
                "deleteForward": self.deleteForward,
                "1": self.keyNumberGlobal,
                "2": self.keyNumberGlobal,
                "3": self.keyNumberGlobal,
                "4": self.keyNumberGlobal,
                "5": self.keyNumberGlobal,
                "6": self.keyNumberGlobal,
                "7": self.keyNumberGlobal,
                "8": self.keyNumberGlobal,
                "9": self.keyNumberGlobal,
                "0": self.keyNumberGlobal
            }, -1)

        self["VirtualKB"] = NumberActionMap(
            ["VirtualKeyboardActions"], {
                "showVirtualKeyboard": self.KeyText,
            }, -2)

        self["VirtualKB"].setEnabled(False)
Example #47
0
#  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.
#
# for localized messages
from __future__ import print_function
from . import _

from Components.config import ConfigSubsection, ConfigText, \
 config, ConfigInteger, Config, ConfigSubList, ConfigDirectory, NoSave, ConfigYesNo, ConfigSelectionNumber, ConfigSelection
from os import path as os_path, open as os_open, close as os_close, O_RDWR as os_O_RDWR, O_CREAT as os_O_CREAT
from pickle import load as pickle_load, dump as pickle_dump
from enigma import eEnv

CONFIG_FILE_VOLUME = eEnv.resolve('${sysconfdir}/enigma2/ava_volume.cfg')


def getVolumeDict():
    if os_path.exists(CONFIG_FILE_VOLUME):
        pkl_file = open(CONFIG_FILE_VOLUME, 'rb')
        if pkl_file:
            volumedict = pickle_load(pkl_file)
            pkl_file.close()
            return volumedict
    return {}


def saveVolumeDict(dict):
    pkl_file = open(CONFIG_FILE_VOLUME, 'wb')
    if pkl_file:
Example #48
0
class SkinSelector(Screen):

    skinlist = []
    root = os.path.join(eEnv.resolve("${datadir}"), "enigma2")

    def __init__(self, session, args=None):

        Screen.__init__(self, session)

        self.setTitle(_("Select your Skin"))

        self.skinlist = []
        self.previewPath = ""
        if os.path.exists(os.path.join(self.root, SKINXML)):
            self.skinlist.append(DEFAULTSKIN)
        for root, dirs, files in os.walk(self.root, followlinks=True):
            for subdir in dirs:
                file = os.path.join(os.path.join(root, subdir), SKINXML)
                if os.path.exists(file) and (
                        SystemInfo["HasFullHDSkinSupport"]
                        or not all(x in open(file, "r").read()
                                   for x in ('yres="1080"', 'xres="1920"'))):
                    self.skinlist.append(subdir)
            dirs = []

        self["key_red"] = StaticText(_("Close"))
        self["introduction"] = StaticText(
            _("Press OK to activate the selected skin."))
        self.skinlist.sort()
        self["SkinList"] = MenuList(self.skinlist)
        self["Preview"] = Pixmap()

        self["actions"] = NumberActionMap(
            ["WizardActions", "InputActions", "EPGSelectActions"], {
                "ok": self.ok,
                "back": self.close,
                "red": self.close,
                "up": self.up,
                "down": self.down,
                "left": self.left,
                "right": self.right,
                "info": self.info,
            }, -1)

        self.onLayoutFinish.append(self.layoutFinished)

    def layoutFinished(self):
        tmp = config.skin.primary_skin.value.find("/" + SKINXML)
        if tmp != -1:
            tmp = config.skin.primary_skin.value[:tmp]
            idx = 0
            for skin in self.skinlist:
                if skin == tmp:
                    break
                idx += 1
            if idx < len(self.skinlist):
                self["SkinList"].moveToIndex(idx)
        self.loadPreview()

    def up(self):
        self["SkinList"].up()
        self.loadPreview()

    def down(self):
        self["SkinList"].down()
        self.loadPreview()

    def left(self):
        self["SkinList"].pageUp()
        self.loadPreview()

    def right(self):
        self["SkinList"].pageDown()
        self.loadPreview()

    def info(self):
        aboutbox = self.session.open(MessageBox, _("Enigma2 skin selector"),
                                     MessageBox.TYPE_INFO)
        aboutbox.setTitle(_("About..."))

    def ok(self):
        if self["SkinList"].getCurrent() == DEFAULTSKIN:
            self.skinfile = "."
        else:
            self.skinfile = self["SkinList"].getCurrent()
        self.skinfile = os.path.join(self.skinfile, SKINXML)

        print "Skinselector: Selected Skin: " + self.root + self.skinfile
        restartbox = self.session.openWithCallback(
            self.restartGUI, MessageBox,
            _("GUI needs a restart to apply a new skin\nDo you want to restart the GUI now?"
              ), MessageBox.TYPE_YESNO)
        restartbox.setTitle(_("Restart GUI now?"))

    def loadPreview(self):
        if self["SkinList"].getCurrent() == DEFAULTSKIN:
            pngpath = "."
        else:
            pngpath = self["SkinList"].getCurrent()
        pngpath = os.path.join(os.path.join(self.root, pngpath), "prev.png")

        if not os.path.exists(pngpath):
            pngpath = resolveFilename(SCOPE_PLUGINS,
                                      "SystemPlugins/SkinSelector/noprev.png")

        if self.previewPath != pngpath:
            self.previewPath = pngpath

        self["Preview"].instance.setPixmapFromFile(self.previewPath)

    def restartGUI(self, answer):
        if answer is True:
            config.skin.primary_skin.value = self.skinfile
            config.skin.primary_skin.save()
            self.session.open(TryQuitMainloop, 3)
Example #49
0
		(resolveFilename(SCOPE_CURRENT_PLUGIN, ''.join([SKINDIR, "HD_default.xml"])), "HD_default.xml"),
		(resolveFilename(SCOPE_CURRENT_PLUGIN, ''.join([SKINDIR, "XD_default.xml"])), "XD_default.xml")
		]

config.plugins.merlinEpgCenter = ConfigSubsection()
config.plugins.merlinEpgCenter.primeTime = ConfigClock(default=69300)
config.plugins.merlinEpgCenter.showListNumbers = ConfigYesNo(True)
config.plugins.merlinEpgCenter.showPicons = ConfigYesNo(False)
config.plugins.merlinEpgCenter.showServiceName = ConfigYesNo(True)
config.plugins.merlinEpgCenter.lastUsedTab = ConfigInteger(0)
config.plugins.merlinEpgCenter.showEventInfo = ConfigYesNo(True)
config.plugins.merlinEpgCenter.showVideoPicture = ConfigYesNo(True)
config.plugins.merlinEpgCenter.rememberLastTab = ConfigYesNo(True)
config.plugins.merlinEpgCenter.selectRunningService = ConfigYesNo(True)
config.plugins.merlinEpgCenter.replaceInfobarEpg = ConfigYesNo(False)
config.plugins.merlinEpgCenter.epgPaths = ConfigSelection(default=eEnv.resolve('${datadir}/enigma2/picon_50x30/'), choices=[
				(eEnv.resolve('${datadir}/enigma2/picon_50x30/'), eEnv.resolve('${datadir}/enigma2/picon_50x30')),
				('/media/cf/picon_50x30/', '/media/cf/picon_50x30'),
				('/media/usb/picon_50x30/', '/media/usb/picon_50x30'),
				])
config.plugins.merlinEpgCenter.showColoredEpgTimes = ConfigYesNo(True)
config.plugins.merlinEpgCenter.searchString = NoSave(ConfigText(default=""))
config.plugins.merlinEpgCenter.searchHistory = ConfigSet(choices=[])
config.plugins.merlinEpgCenter.showInputHelp = ConfigYesNo(True)
config.plugins.merlinEpgCenter.listItemHeight = ConfigSelectionNumber(min=0, max=20, stepwidth=2, default=0, wraparound=True)
config.plugins.merlinEpgCenter.listStyle = ConfigSelection(default=STYLE_SINGLE_LINE, choices=[
				(STYLE_SINGLE_LINE, _("single line style")),
				(STYLE_SHORT_DESCRIPTION, _("with short description")),
				])
config.plugins.merlinEpgCenter.skin = ConfigText(default="")
config.plugins.merlinEpgCenter.skinSelection = NoSave(ConfigSelection(choices=[]))
Example #50
0
SCOPE_USERETC = 5
SCOPE_CONFIG = 6
SCOPE_LANGUAGE = 7
SCOPE_HDD = 8
SCOPE_PLUGINS = 9
SCOPE_MEDIA = 10
SCOPE_PLAYLIST = 11
SCOPE_CURRENT_SKIN = 12
SCOPE_METADIR = 16
SCOPE_CURRENT_PLUGIN = 17

PATH_CREATE = 0
PATH_DONTCREATE = 1

defaultPaths = {
    SCOPE_TRANSPONDERDATA: (eEnv.resolve("${sysconfdir}/"), PATH_DONTCREATE),
    SCOPE_SYSETC: (eEnv.resolve("${sysconfdir}/"), PATH_DONTCREATE),
    SCOPE_FONTS: (eEnv.resolve("${datadir}/fonts/"), PATH_DONTCREATE),
    SCOPE_CONFIG: (eEnv.resolve("${sysconfdir}/enigma2/"), PATH_CREATE),
    SCOPE_PLUGINS:
    (eEnv.resolve("${libdir}/enigma2/python/Plugins/"), PATH_CREATE),
    SCOPE_LANGUAGE: (eEnv.resolve("${datadir}/enigma2/po/"), PATH_DONTCREATE),
    SCOPE_SKIN: (eEnv.resolve("${datadir}/enigma2/"), PATH_DONTCREATE),
    SCOPE_SKIN_IMAGE: (eEnv.resolve("${datadir}/enigma2/"), PATH_DONTCREATE),
    SCOPE_HDD: ("/hdd/movie/", PATH_DONTCREATE),
    SCOPE_MEDIA: ("/media/", PATH_DONTCREATE),
    SCOPE_PLAYLIST:
    (eEnv.resolve("${sysconfdir}/enigma2/playlist/"), PATH_CREATE),
    SCOPE_USERETC: ("", PATH_DONTCREATE),  # user home directory
    SCOPE_METADIR: (eEnv.resolve("${datadir}/meta"), PATH_CREATE),
}
Example #51
0
def InitUsageConfig():
    config.usage = ConfigSubsection()
    config.usage.showdish = ConfigYesNo(default=True)
    config.misc.showrotorposition = ConfigSelection(
        default='no',
        choices=[('no', _('no')), ('yes', _('yes')),
                 ('withtext', _('with text')),
                 ('tunername', _('with tuner name'))])
    config.usage.multibouquet = ConfigYesNo(default=True)
    config.usage.alternative_number_mode = ConfigYesNo(default=False)

    def alternativeNumberModeChange(configElement):
        eDVBDB.getInstance().setNumberingMode(configElement.value)
        refreshServiceList()

    config.usage.alternative_number_mode.addNotifier(
        alternativeNumberModeChange)
    config.usage.hide_number_markers = ConfigYesNo(default=True)
    config.usage.hide_number_markers.addNotifier(refreshServiceList)
    config.usage.servicetype_icon_mode = ConfigSelection(
        default='0',
        choices=[('0', _('None')), ('1', _('Left from servicename')),
                 ('2', _('Right from servicename'))])
    config.usage.servicetype_icon_mode.addNotifier(refreshServiceList)
    config.usage.crypto_icon_mode = ConfigSelection(
        default='0',
        choices=[('0', _('None')), ('1', _('Left from servicename')),
                 ('2', _('Right from servicename'))])
    config.usage.crypto_icon_mode.addNotifier(refreshServiceList)
    config.usage.record_indicator_mode = ConfigSelection(
        default='0',
        choices=[('0', _('None')), ('1', _('Left from servicename')),
                 ('2', _('Right from servicename')), ('3', _('Red colored'))])
    config.usage.record_indicator_mode.addNotifier(refreshServiceList)
    choicelist = [('-1', _('Disable'))]
    for i in range(0, 1300, 100):
        choicelist.append(
            (str(i), ngettext('%d pixel wide', '%d pixels wide', i) % i))

    config.usage.servicelist_column = ConfigSelection(default='-1',
                                                      choices=choicelist)
    config.usage.servicelist_column.addNotifier(refreshServiceList)
    config.usage.service_icon_enable = ConfigYesNo(default=False)
    config.usage.service_icon_enable.addNotifier(refreshServiceList)
    config.usage.servicelist_cursor_behavior = ConfigSelection(
        default='standard',
        choices=[('standard', _('Standard')), ('keep', _('Keep service')),
                 ('reverseB', _('Reverse bouquet buttons')),
                 ('keep reverseB',
                  _('Keep service') + ' + ' + _('Reverse bouquet buttons'))])
    choicelist = [('by skin', _('As defined by the skin'))]
    for i in range(5, 41):
        choicelist.append(str(i))

    config.usage.servicelist_number_of_services = ConfigSelection(
        default='by skin', choices=choicelist)
    config.usage.servicelist_number_of_services.addNotifier(refreshServiceList)
    config.usage.multiepg_ask_bouquet = ConfigYesNo(default=False)
    config.usage.quickzap_bouquet_change = ConfigYesNo(default=False)
    config.usage.e1like_radio_mode = ConfigYesNo(default=True)
    choicelist = [('0', _('No timeout'))]
    for i in range(1, 12):
        choicelist.append((str(i), ngettext('%d second', '%d seconds', i) % i))

    config.usage.infobar_timeout = ConfigSelection(default='5',
                                                   choices=choicelist)
    config.usage.show_infobar_on_zap = ConfigYesNo(default=True)
    config.usage.show_infobar_on_skip = ConfigYesNo(default=True)
    config.usage.show_infobar_on_event_change = ConfigYesNo(default=False)
    config.usage.show_second_infobar = ConfigSelection(
        default=None,
        choices=[(None, _('None'))] + choicelist + [('EPG', _('EPG'))])
    config.usage.show_simple_second_infobar = ConfigYesNo(default=True)
    config.usage.infobar_frontend_source = ConfigSelection(
        default='tuner',
        choices=[('settings', _('Settings')), ('tuner', _('Tuner'))])
    config.usage.oldstyle_zap_controls = ConfigYesNo(default=False)
    config.usage.oldstyle_channel_select_controls = ConfigYesNo(default=False)
    config.usage.zap_with_ch_buttons = ConfigYesNo(default=False)
    config.usage.ok_is_channelselection = ConfigYesNo(default=False)
    config.usage.volume_instead_of_channelselection = ConfigYesNo(
        default=False)
    config.usage.channelselection_preview = ConfigYesNo(default=False)
    config.usage.show_spinner = ConfigYesNo(default=True)
    config.usage.menu_sort_weight = ConfigDictionarySet(
        default={'mainmenu': {
            'submenu': {}
        }})
    config.usage.menu_sort_mode = ConfigSelection(
        default='default',
        choices=[('a_z', _('alphabetical')), ('default', _('Default')),
                 ('user', _('user defined'))])
    config.usage.menu_path = ConfigSelection(default='off',
                                             choices=[('off', _('Disabled')),
                                                      ('small', _('Small')),
                                                      ('large', _('Large'))])
    config.usage.enable_tt_caching = ConfigYesNo(default=True)
    choicelist = []
    for i in (10, 30):
        choicelist.append((str(i), ngettext('%d second', '%d seconds', i) % i))

    for i in (60, 120, 300, 600, 1200, 1800):
        m = i / 60
        choicelist.append((str(i), ngettext('%d minute', '%d minutes', m) % m))

    for i in (3600, 7200, 14400):
        h = i / 3600
        choicelist.append((str(i), ngettext('%d hour', '%d hours', h) % h))

    config.usage.hdd_standby = ConfigSelection(
        default='300', choices=[('0', _('No standby'))] + choicelist)
    config.usage.output_12V = ConfigSelection(default='do not change',
                                              choices=[('do not change',
                                                        _('Do not change')),
                                                       ('off', _('Off')),
                                                       ('on', _('On'))])
    config.usage.pip_zero_button = ConfigSelection(
        default='standard',
        choices=[('standard', _('Standard')),
                 ('swap', _('Swap PiP and main picture')),
                 ('swapstop', _('Move PiP to main picture')),
                 ('stop', _('Stop PiP'))])
    config.usage.pip_hideOnExit = ConfigSelection(default='without popup',
                                                  choices=[('no', _('No')),
                                                           ('popup',
                                                            _('With popup')),
                                                           ('without popup',
                                                            _('Without popup'))
                                                           ])
    choicelist = [('-1', _('Disabled')), ('0', _('No timeout'))]
    for i in [60, 300, 600, 900, 1800, 2700, 3600]:
        m = i / 60
        choicelist.append((str(i), ngettext('%d minute', '%d minutes', m) % m))

    config.usage.pip_last_service_timeout = ConfigSelection(default='0',
                                                            choices=choicelist)
    config.usage.default_path = ConfigText(default=resolveFilename(SCOPE_HDD))
    config.usage.timer_path = ConfigText(default='<default>')
    config.usage.instantrec_path = ConfigText(default='<default>')
    config.usage.timeshift_path = ConfigText(default='/media/hdd/')
    config.usage.allowed_timeshift_paths = ConfigLocations(
        default=['/media/hdd/'])
    config.oscaminfo = ConfigSubsection()
    config.oscaminfo.showInExtensions = ConfigYesNo(default=False)
    config.oscaminfo.userdatafromconf = ConfigYesNo(default=False)
    config.oscaminfo.autoupdate = ConfigYesNo(default=False)
    config.oscaminfo.username = ConfigText(default='username',
                                           fixed_size=False,
                                           visible_width=12)
    config.oscaminfo.password = ConfigPassword(default='password',
                                               fixed_size=False)
    config.oscaminfo.ip = ConfigIP(default=[127, 0, 0, 1], auto_jump=True)
    config.oscaminfo.port = ConfigInteger(default=16002, limits=(0, 65536))
    config.oscaminfo.intervall = ConfigSelectionNumber(min=1,
                                                       max=600,
                                                       stepwidth=1,
                                                       default=10,
                                                       wraparound=True)
    SystemInfo['OScamInstalled'] = False
    config.cccaminfo = ConfigSubsection()
    config.cccaminfo.showInExtensions = ConfigYesNo(default=False)
    config.cccaminfo.serverNameLength = ConfigSelectionNumber(min=10,
                                                              max=100,
                                                              stepwidth=1,
                                                              default=22,
                                                              wraparound=True)
    config.cccaminfo.name = ConfigText(default='Profile', fixed_size=False)
    config.cccaminfo.ip = ConfigText(default='192.168.2.12', fixed_size=False)
    config.cccaminfo.username = ConfigText(default='', fixed_size=False)
    config.cccaminfo.password = ConfigText(default='', fixed_size=False)
    config.cccaminfo.port = ConfigInteger(default=16001, limits=(1, 65535))
    config.cccaminfo.profile = ConfigText(default='', fixed_size=False)
    config.cccaminfo.ecmInfoEnabled = ConfigYesNo(default=True)
    config.cccaminfo.ecmInfoTime = ConfigSelectionNumber(min=1,
                                                         max=10,
                                                         stepwidth=1,
                                                         default=5,
                                                         wraparound=True)
    config.cccaminfo.ecmInfoForceHide = ConfigYesNo(default=True)
    config.cccaminfo.ecmInfoPositionX = ConfigInteger(default=50)
    config.cccaminfo.ecmInfoPositionY = ConfigInteger(default=50)
    config.cccaminfo.blacklist = ConfigText(
        default='/media/cf/CCcamInfo.blacklisted', fixed_size=False)
    config.cccaminfo.profiles = ConfigText(
        default='/media/cf/CCcamInfo.profiles', fixed_size=False)
    config.usage.movielist_trashcan = ConfigYesNo(default=True)
    config.usage.movielist_trashcan_days = ConfigNumber(default=8)
    config.usage.movielist_trashcan_reserve = ConfigNumber(default=40)
    config.usage.on_movie_start = ConfigSelection(
        default='resume',
        choices=[
            ('ask yes', _('Ask user') + ' ' + _('default') + ' ' + _('yes')),
            ('ask no', _('Ask user') + ' ' + _('default') + ' ' + _('no')),
            ('resume', _('Resume from last position')),
            ('beginning', _('Start from the beginning'))
        ])
    config.usage.on_movie_stop = ConfigSelection(
        default='movielist',
        choices=[('ask', _('Ask user')),
                 ('movielist', _('Return to movie list')),
                 ('quit', _('Return to previous service'))])
    config.usage.on_movie_eof = ConfigSelection(
        default='movielist',
        choices=[('ask', _('Ask user')),
                 ('movielist', _('Return to movie list')),
                 ('quit', _('Return to previous service')),
                 ('pause', _('Pause movie at end')),
                 ('playlist', _('Play next (return to movie list)')),
                 ('playlistquit', _('Play next (return to previous service)')),
                 ('loop', _('Continues play (loop)')),
                 ('repeatcurrent', _('Repeat'))])
    config.usage.next_movie_msg = ConfigYesNo(default=True)
    config.usage.last_movie_played = ConfigText()
    config.usage.leave_movieplayer_onExit = ConfigSelection(
        default='popup',
        choices=[('no', _('No')), ('popup', _('With popup')),
                 ('without popup', _('Without popup')),
                 ('movielist', _('Return to movie list'))])
    config.usage.setup_level = ConfigSelection(default='expert',
                                               choices=[
                                                   ('simple', _('Simple')),
                                                   ('intermediate',
                                                    _('Intermediate')),
                                                   ('expert', _('Expert'))
                                               ])
    config.usage.startup_to_standby = ConfigSelection(
        default='no',
        choices=[('no', _('No')), ('yes', _('Yes')),
                 ('except', _('No, except Wakeup timer'))])
    config.usage.wakeup_menu = ConfigNothing()
    config.usage.wakeup_enabled = ConfigYesNo(default=False)
    config.usage.wakeup_day = ConfigSubDict()
    config.usage.wakeup_time = ConfigSubDict()
    for i in range(7):
        config.usage.wakeup_day[i] = ConfigEnableDisable(default=False)
        config.usage.wakeup_time[i] = ConfigClock(default=21600)

    choicelist = [('0', _('Do nothing'))]
    for i in range(3600, 21601, 3600):
        h = abs(i / 3600)
        h = ngettext('%d hour', '%d hours', h) % h
        choicelist.append((str(i), _('Standby in ') + h))

    config.usage.inactivity_timer = ConfigSelection(default='0',
                                                    choices=choicelist)
    config.usage.inactivity_timer_blocktime = ConfigYesNo(default=True)
    config.usage.inactivity_timer_blocktime_begin = ConfigClock(
        default=time.mktime((0, 0, 0, 18, 0, 0, 0, 0, 0)))
    config.usage.inactivity_timer_blocktime_end = ConfigClock(
        default=time.mktime((0, 0, 0, 23, 0, 0, 0, 0, 0)))
    config.usage.inactivity_timer_blocktime_extra = ConfigYesNo(default=False)
    config.usage.inactivity_timer_blocktime_extra_begin = ConfigClock(
        default=time.mktime((0, 0, 0, 6, 0, 0, 0, 0, 0)))
    config.usage.inactivity_timer_blocktime_extra_end = ConfigClock(
        default=time.mktime((0, 0, 0, 9, 0, 0, 0, 0, 0)))
    choicelist = [('0', _('Disabled')),
                  ('event_standby', _('Standby after current event'))]
    for i in range(900, 7201, 900):
        m = abs(i / 60)
        m = ngettext('%d minute', '%d minutes', m) % m
        choicelist.append((str(i), _('Standby in ') + m))

    config.usage.sleep_timer = ConfigSelection(default='0', choices=choicelist)
    choicelist = [('0', _('Disabled'))]
    for i in [60, 300, 600] + range(900, 7201, 900):
        m = abs(i / 60)
        m = ngettext('%d minute', '%d minutes', m) % m
        choicelist.append((str(i), _('after ') + m))

    config.usage.standby_to_shutdown_timer = ConfigSelection(
        default='0', choices=choicelist)
    config.usage.standby_to_shutdown_timer_blocktime = ConfigYesNo(
        default=True)
    config.usage.standby_to_shutdown_timer_blocktime_begin = ConfigClock(
        default=time.mktime((0, 0, 0, 6, 0, 0, 0, 0, 0)))
    config.usage.standby_to_shutdown_timer_blocktime_end = ConfigClock(
        default=time.mktime((0, 0, 0, 23, 0, 0, 0, 0, 0)))
    choicelist = [('0', _('Disabled'))]
    for m in (1, 5, 10, 15, 30, 60):
        choicelist.append(
            (str(m * 60), ngettext('%d minute', '%d minutes', m) % m))

    config.usage.screen_saver = ConfigSelection(default='300',
                                                choices=choicelist)
    config.usage.check_timeshift = ConfigYesNo(default=True)
    choicelist = [('0', _('Disabled'))]
    for i in (2, 3, 4, 5, 10, 20, 30):
        choicelist.append((str(i), ngettext('%d second', '%d seconds', i) % i))

    for i in (60, 120, 300):
        m = i / 60
        choicelist.append((str(i), ngettext('%d minute', '%d minutes', m) % m))

    config.usage.timeshift_start_delay = ConfigSelection(default='0',
                                                         choices=choicelist)
    config.usage.alternatives_priority = ConfigSelection(
        default='0',
        choices=[('0', 'DVB-S/-C/-T'), ('1', 'DVB-S/-T/-C'),
                 ('2', 'DVB-C/-S/-T'), ('3', 'DVB-C/-T/-S'),
                 ('4', 'DVB-T/-C/-S'), ('5', 'DVB-T/-S/-C'),
                 ('127', _('No priority'))])
    config.usage.remote_fallback_enabled = ConfigYesNo(default=False)
    config.usage.remote_fallback = ConfigText(default='', fixed_size=False)
    config.usage.show_timer_conflict_warning = ConfigYesNo(default=True)
    dvbs_nims = [('-2', _('Disabled'))]
    dvbt_nims = [('-2', _('Disabled'))]
    dvbc_nims = [('-2', _('Disabled'))]
    nims = [('-1', _('auto'))]
    for x in nimmanager.nim_slots:
        if x.isCompatible('DVB-S'):
            dvbs_nims.append((str(x.slot), x.getSlotName()))
        elif x.isCompatible('DVB-T'):
            dvbt_nims.append((str(x.slot), x.getSlotName()))
        elif x.isCompatible('DVB-C'):
            dvbc_nims.append((str(x.slot), x.getSlotName()))
        nims.append((str(x.slot), x.getSlotName()))

    config.usage.frontend_priority = ConfigSelection(default='-1',
                                                     choices=list(nims))
    nims.insert(0, ('-2', _('Disabled')))
    config.usage.recording_frontend_priority = ConfigSelection(default='-2',
                                                               choices=nims)
    config.usage.frontend_priority_dvbs = ConfigSelection(
        default='-2', choices=list(dvbs_nims))
    dvbs_nims.insert(1, ('-1', _('auto')))
    config.usage.recording_frontend_priority_dvbs = ConfigSelection(
        default='-2', choices=dvbs_nims)
    config.usage.frontend_priority_dvbt = ConfigSelection(
        default='-2', choices=list(dvbt_nims))
    dvbt_nims.insert(1, ('-1', _('auto')))
    config.usage.recording_frontend_priority_dvbt = ConfigSelection(
        default='-2', choices=dvbt_nims)
    config.usage.frontend_priority_dvbc = ConfigSelection(
        default='-2', choices=list(dvbc_nims))
    dvbc_nims.insert(1, ('-1', _('auto')))
    config.usage.recording_frontend_priority_dvbc = ConfigSelection(
        default='-2', choices=dvbc_nims)
    SystemInfo['DVB-S_priority_tuner_available'] = len(dvbs_nims) > 3 and (
        len(dvbt_nims) > 2 or len(dvbc_nims) > 2)
    SystemInfo['DVB-T_priority_tuner_available'] = len(dvbt_nims) > 3 and (
        len(dvbs_nims) > 2 or len(dvbc_nims) > 2)
    SystemInfo['DVB-C_priority_tuner_available'] = len(dvbc_nims) > 3 and (
        len(dvbs_nims) > 2 or len(dvbt_nims) > 2)
    config.misc.disable_background_scan = ConfigYesNo(default=False)
    config.usage.show_event_progress_in_servicelist = ConfigSelection(
        default='barright',
        choices=[('barleft', _('Progress bar left')),
                 ('barright', _('Progress bar right')),
                 ('percleft', _('Percentage left')),
                 ('percright', _('Percentage right')), ('no', _('No'))])
    config.usage.show_channel_numbers_in_servicelist = ConfigYesNo(
        default=True)
    config.usage.show_event_progress_in_servicelist.addNotifier(
        refreshServiceList)
    config.usage.show_channel_numbers_in_servicelist.addNotifier(
        refreshServiceList)
    config.usage.blinking_display_clock_during_recording = ConfigYesNo(
        default=False)
    config.usage.show_message_when_recording_starts = ConfigYesNo(default=True)
    config.usage.load_length_of_movies_in_moviellist = ConfigYesNo(
        default=True)
    config.usage.show_icons_in_movielist = ConfigSelection(
        default='i',
        choices=[('o', _('Off')), ('p', _('Progress')),
                 ('s', _('Small progress')), ('i', _('Icons'))])
    config.usage.movielist_unseen = ConfigYesNo(default=False)
    config.usage.swap_snr_on_osd = ConfigYesNo(default=False)

    def SpinnerOnOffChanged(configElement):
        setSpinnerOnOff(int(configElement.value))

    config.usage.show_spinner.addNotifier(SpinnerOnOffChanged)

    def EnableTtCachingChanged(configElement):
        setEnableTtCachingOnOff(int(configElement.value))

    config.usage.enable_tt_caching.addNotifier(EnableTtCachingChanged)

    def TunerTypePriorityOrderChanged(configElement):
        setTunerTypePriorityOrder(int(configElement.value))

    config.usage.alternatives_priority.addNotifier(
        TunerTypePriorityOrderChanged, immediate_feedback=False)

    def PreferredTunerChanged(configElement):
        setPreferredTuner(int(configElement.value))

    config.usage.frontend_priority.addNotifier(PreferredTunerChanged)
    config.usage.hide_zap_errors = ConfigYesNo(default=False)
    config.usage.hide_ci_messages = ConfigYesNo(default=True)
    config.usage.show_cryptoinfo = ConfigYesNo(default=True)
    config.usage.show_eit_nownext = ConfigYesNo(default=True)
    config.usage.show_vcr_scart = ConfigYesNo(default=False)
    config.usage.show_update_disclaimer = ConfigYesNo(default=True)
    config.usage.pic_resolution = ConfigSelection(
        default=None,
        choices=[
            (None, _('Same resolution as skin')), ('(720, 576)', '720x576'),
            ('(1280, 720)', '1280x720'), ('(1920, 1080)', '1920x1080')
        ][:SystemInfo['HasFullHDSkinSupport'] and 4 or 3])
    if SystemInfo['Fan']:
        choicelist = [('off', _('Off')), ('on', _('On')), ('auto', _('Auto'))]
        if os.path.exists('/proc/stb/fp/fan_choices'):
            choicelist = [
                x for x in choicelist if x[0] in open(
                    '/proc/stb/fp/fan_choices', 'r').read().strip().split(' ')
            ]
        config.usage.fan = ConfigSelection(choicelist)

        def fanChanged(configElement):
            open(SystemInfo['Fan'], 'w').write(configElement.value)

        config.usage.fan.addNotifier(fanChanged)
    if SystemInfo['FanPWM']:

        def fanSpeedChanged(configElement):
            open(SystemInfo['FanPWM'], 'w').write(hex(configElement.value)[2:])

        config.usage.fanspeed = ConfigSlider(default=127,
                                             increment=8,
                                             limits=(0, 255))
        config.usage.fanspeed.addNotifier(fanSpeedChanged)
    if SystemInfo['StandbyLED']:

        def standbyLEDChanged(configElement):
            open(SystemInfo['StandbyLED'],
                 'w').write(configElement.value and 'on' or 'off')

        config.usage.standbyLED = ConfigYesNo(default=True)
        config.usage.standbyLED.addNotifier(standbyLEDChanged)
    if SystemInfo['WakeOnLAN']:

        def wakeOnLANChanged(configElement):
            if 'fp' in SystemInfo['WakeOnLAN']:
                open(SystemInfo['WakeOnLAN'],
                     'w').write(configElement.value and 'enable' or 'disable')
            else:
                open(SystemInfo['WakeOnLAN'],
                     'w').write(configElement.value and 'on' or 'off')

        config.usage.wakeOnLAN = ConfigYesNo(default=False)
        config.usage.wakeOnLAN.addNotifier(wakeOnLANChanged)
    config.epg = ConfigSubsection()
    config.epg.eit = ConfigYesNo(default=True)
    config.epg.mhw = ConfigYesNo(default=False)
    config.epg.freesat = ConfigYesNo(default=True)
    config.epg.viasat = ConfigYesNo(default=True)
    config.epg.netmed = ConfigYesNo(default=True)
    config.epg.virgin = ConfigYesNo(default=False)
    config.misc.showradiopic = ConfigYesNo(default=True)

    def EpgSettingsChanged(configElement):
        from enigma import eEPGCache
        mask = 4294967295L
        if not config.epg.eit.value:
            mask &= ~(eEPGCache.NOWNEXT | eEPGCache.SCHEDULE
                      | eEPGCache.SCHEDULE_OTHER)
        if not config.epg.mhw.value:
            mask &= ~eEPGCache.MHW
        if not config.epg.freesat.value:
            mask &= ~(eEPGCache.FREESAT_NOWNEXT | eEPGCache.FREESAT_SCHEDULE
                      | eEPGCache.FREESAT_SCHEDULE_OTHER)
        if not config.epg.viasat.value:
            mask &= ~eEPGCache.VIASAT
        if not config.epg.netmed.value:
            mask &= ~(eEPGCache.NETMED_SCHEDULE
                      | eEPGCache.NETMED_SCHEDULE_OTHER)
        if not config.epg.virgin.value:
            mask &= ~(eEPGCache.VIRGIN_NOWNEXT | eEPGCache.VIRGIN_SCHEDULE)
        eEPGCache.getInstance().setEpgSources(mask)

    config.epg.eit.addNotifier(EpgSettingsChanged)
    config.epg.mhw.addNotifier(EpgSettingsChanged)
    config.epg.freesat.addNotifier(EpgSettingsChanged)
    config.epg.viasat.addNotifier(EpgSettingsChanged)
    config.epg.netmed.addNotifier(EpgSettingsChanged)
    config.epg.virgin.addNotifier(EpgSettingsChanged)
    config.epg.histminutes = ConfigSelectionNumber(min=0,
                                                   max=120,
                                                   stepwidth=15,
                                                   default=0,
                                                   wraparound=True)

    def EpgHistorySecondsChanged(configElement):
        from enigma import eEPGCache
        eEPGCache.getInstance().setEpgHistorySeconds(
            config.epg.histminutes.getValue() * 60)

    config.epg.histminutes.addNotifier(EpgHistorySecondsChanged)

    def setHDDStandby(configElement):
        for hdd in harddiskmanager.HDDList():
            hdd[1].setIdleTime(int(configElement.value))

    config.usage.hdd_standby.addNotifier(setHDDStandby,
                                         immediate_feedback=False)
    if SystemInfo['12V_Output']:

        def set12VOutput(configElement):
            Misc_Options.getInstance().set_12V_output(
                configElement.value == 'on' and 1 or 0)

        config.usage.output_12V.addNotifier(set12VOutput,
                                            immediate_feedback=False)
    config.usage.keymap = ConfigText(
        default=eEnv.resolve('${datadir}/enigma2/keymap.xml'))
    config.usage.keytrans = ConfigText(
        default=eEnv.resolve('${datadir}/enigma2/keytranslation.xml'))
    config.seek = ConfigSubsection()
    config.seek.selfdefined_13 = ConfigNumber(default=15)
    config.seek.selfdefined_46 = ConfigNumber(default=60)
    config.seek.selfdefined_79 = ConfigNumber(default=300)
    config.seek.speeds_forward = ConfigSet(
        default=[2, 4, 8, 16, 32, 64, 128],
        choices=[2, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128])
    config.seek.speeds_backward = ConfigSet(
        default=[2, 4, 8, 16, 32, 64, 128],
        choices=[1, 2, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128])
    config.seek.speeds_slowmotion = ConfigSet(default=[2, 4, 8],
                                              choices=[2, 4, 6, 8, 12, 16, 25])
    config.seek.enter_forward = ConfigSelection(default='2',
                                                choices=[
                                                    '2', '4', '6', '8', '12',
                                                    '16', '24', '32', '48',
                                                    '64', '96', '128'
                                                ])
    config.seek.enter_backward = ConfigSelection(default='1',
                                                 choices=[
                                                     '1', '2', '4', '6', '8',
                                                     '12', '16', '24', '32',
                                                     '48', '64', '96', '128'
                                                 ])
    config.seek.on_pause = ConfigSelection(default='play',
                                           choices=[('play', _('Play')),
                                                    ('step',
                                                     _('Single step (GOP)')),
                                                    ('last', _('Last speed'))])
    config.usage.timerlist_finished_timer_position = ConfigSelection(
        default='end',
        choices=[('beginning', _('At beginning')), ('end', _('At end'))])

    def updateEnterForward(configElement):
        if not configElement.value:
            configElement.value = [2]
        updateChoices(config.seek.enter_forward, configElement.value)

    config.seek.speeds_forward.addNotifier(updateEnterForward,
                                           immediate_feedback=False)

    def updateEnterBackward(configElement):
        if not configElement.value:
            configElement.value = [2]
        updateChoices(config.seek.enter_backward, configElement.value)

    config.seek.speeds_backward.addNotifier(updateEnterBackward,
                                            immediate_feedback=False)

    def updateEraseSpeed(el):
        eBackgroundFileEraser.getInstance().setEraseSpeed(int(el.value))

    def updateEraseFlags(el):
        eBackgroundFileEraser.getInstance().setEraseFlags(int(el.value))

    config.misc.erase_speed = ConfigSelection(default='20',
                                              choices=[('10', '10 MB/s'),
                                                       ('20', '20 MB/s'),
                                                       ('50', '50 MB/s'),
                                                       ('100', '100 MB/s')])
    config.misc.erase_speed.addNotifier(updateEraseSpeed,
                                        immediate_feedback=False)
    config.misc.erase_flags = ConfigSelection(default='1',
                                              choices=[
                                                  ('0', _('Disable')),
                                                  ('1',
                                                   _('Internal hdd only')),
                                                  ('3', _('Everywhere'))
                                              ])
    config.misc.erase_flags.addNotifier(updateEraseFlags,
                                        immediate_feedback=False)
    if SystemInfo['ZapMode']:

        def setZapmode(el):
            open(SystemInfo['ZapMode'], 'w').write(el.value)

        config.misc.zapmode = ConfigSelection(
            default='mute',
            choices=[('mute', _('Black screen')), ('hold', _('Hold screen')),
                     ('mutetilllock', _('Black screen till locked')),
                     ('holdtilllock', _('Hold till locked'))])
        config.misc.zapmode.addNotifier(setZapmode, immediate_feedback=False)
    config.usage.historymode = ConfigSelection(default='1',
                                               choices=[('0', _('Just zap')),
                                                        ('1', _('Show menu'))])
    if SystemInfo['VFD_scroll_repeats']:

        def scroll_repeats(el):
            open(SystemInfo['VFD_scroll_repeats'], 'w').write(el.value)

        choicelist = []
        for i in range(1, 11, 1):
            choicelist.append(str(i))

        config.usage.vfd_scroll_repeats = ConfigSelection(default='3',
                                                          choices=choicelist)
        config.usage.vfd_scroll_repeats.addNotifier(scroll_repeats,
                                                    immediate_feedback=False)
    if SystemInfo['VFD_scroll_delay']:

        def scroll_delay(el):
            open(SystemInfo['VFD_scroll_delay'], 'w').write(el.value)

        choicelist = []
        for i in range(0, 1001, 50):
            choicelist.append(str(i))

        config.usage.vfd_scroll_delay = ConfigSelection(default='150',
                                                        choices=choicelist)
        config.usage.vfd_scroll_delay.addNotifier(scroll_delay,
                                                  immediate_feedback=False)
    if SystemInfo['VFD_initial_scroll_delay']:

        def initial_scroll_delay(el):
            open(SystemInfo['VFD_initial_scroll_delay'], 'w').write(el.value)

        choicelist = []
        for i in range(0, 20001, 500):
            choicelist.append(str(i))

        config.usage.vfd_initial_scroll_delay = ConfigSelection(
            default='1000', choices=choicelist)
        config.usage.vfd_initial_scroll_delay.addNotifier(
            initial_scroll_delay, immediate_feedback=False)
    if SystemInfo['VFD_final_scroll_delay']:

        def final_scroll_delay(el):
            open(SystemInfo['VFD_final_scroll_delay'], 'w').write(el.value)

        choicelist = []
        for i in range(0, 20001, 500):
            choicelist.append(str(i))

        config.usage.vfd_final_scroll_delay = ConfigSelection(
            default='1000', choices=choicelist)
        config.usage.vfd_final_scroll_delay.addNotifier(
            final_scroll_delay, immediate_feedback=False)
    if SystemInfo['HasForceLNBOn']:

        def forceLNBPowerChanged(configElement):
            open(SystemInfo['HasForceLNBOn'], 'w').write(configElement.value)

        config.misc.forceLnbPower = ConfigSelection(default='on',
                                                    choices=[('on', _('Yes')),
                                                             ('off', _('No'))])
        config.misc.forceLnbPower.addNotifier(forceLNBPowerChanged)
    if SystemInfo['HasForceToneburst']:

        def forceToneBurstChanged(configElement):
            open(SystemInfo['HasForceToneburst'],
                 'w').write(configElement.value)

        config.misc.forceToneBurst = ConfigSelection(default='enable',
                                                     choices=[
                                                         ('enable', _('Yes')),
                                                         ('disable', _('No'))
                                                     ])
        config.misc.forceToneBurst.addNotifier(forceToneBurstChanged)
    if SystemInfo['HasBypassEdidChecking']:

        def setHasBypassEdidChecking(configElement):
            open(SystemInfo['HasBypassEdidChecking'],
                 'w').write(configElement.value)

        config.av.bypassEdidChecking = ConfigSelection(default='00000000',
                                                       choices=[('00000001',
                                                                 _('Yes')),
                                                                ('00000000',
                                                                 _('No'))])
        config.av.bypassEdidChecking.addNotifier(setHasBypassEdidChecking)
    if SystemInfo['HaveColorspace']:

        def setHaveColorspace(configElement):
            open(SystemInfo['HaveColorspace'], 'w').write(configElement.value)

        if SystemInfo['HaveColorspaceSimple']:
            config.av.hdmicolorspace = ConfigSelection(default='Edid(Auto)',
                                                       choices={
                                                           'Edid(Auto)':
                                                           _('Auto'),
                                                           'Hdmi_Rgb': _('RGB')
                                                       })
        else:
            config.av.hdmicolorspace = ConfigSelection(default='auto',
                                                       choices={
                                                           'auto': _('auto'),
                                                           'rgb': _('rgb'),
                                                           '420': _('420'),
                                                           '422': _('422'),
                                                           '444': _('444')
                                                       })
        config.av.hdmicolorspace.addNotifier(setHaveColorspace)
    config.subtitles = ConfigSubsection()
    config.subtitles.ttx_subtitle_colors = ConfigSelection(
        default='1',
        choices=[('0', _('original')), ('1', _('white')), ('2', _('yellow'))])
    config.subtitles.ttx_subtitle_original_position = ConfigYesNo(
        default=False)
    config.subtitles.subtitle_position = ConfigSelection(choices=[
        '0', '10', '20', '30', '40', '50', '60', '70', '80', '90', '100',
        '150', '200', '250', '300', '350', '400', '450'
    ],
                                                         default='50')
    config.subtitles.subtitle_alignment = ConfigSelection(choices=[
        ('left', _('left')), ('center', _('center')), ('right', _('right'))
    ],
                                                          default='center')
    config.subtitles.subtitle_rewrap = ConfigYesNo(default=False)
    config.subtitles.colourise_dialogs = ConfigYesNo(default=False)
    config.subtitles.subtitle_borderwidth = ConfigSelection(
        choices=['1', '2', '3', '4', '5'], default='3')
    config.subtitles.subtitle_fontsize = ConfigSelection(
        choices=['%d' % x for x in range(16, 101) if not x % 2], default='40')
    config.subtitles.showbackground = ConfigYesNo(default=False)
    subtitle_delay_choicelist = []
    for i in range(-900000, 1845000, 45000):
        if i == 0:
            subtitle_delay_choicelist.append(('0', _('No delay')))
        else:
            subtitle_delay_choicelist.append(
                (str(i), '%2.1f sec' % (i / 90000.0)))

    config.subtitles.subtitle_noPTSrecordingdelay = ConfigSelection(
        default='315000', choices=subtitle_delay_choicelist)
    config.subtitles.dvb_subtitles_yellow = ConfigYesNo(default=False)
    config.subtitles.dvb_subtitles_original_position = ConfigSelection(
        default='0',
        choices=[('0', _('Original')), ('1', _('Fixed')),
                 ('2', _('Relative'))])
    config.subtitles.dvb_subtitles_centered = ConfigYesNo(default=True)
    config.subtitles.subtitle_bad_timing_delay = ConfigSelection(
        default='0', choices=subtitle_delay_choicelist)
    config.subtitles.dvb_subtitles_backtrans = ConfigSelection(
        default='0',
        choices=[('0', _('No transparency')), ('25', '10%'), ('50', '20%'),
                 ('75', '30%'), ('100', '40%'), ('125', '50%'), ('150', '60%'),
                 ('175', '70%'), ('200', '80%'), ('225', '90%'),
                 ('255', _('Full transparency'))])
    config.subtitles.pango_subtitle_colors = ConfigSelection(
        default='1',
        choices=[('0', _('alternative')), ('1', _('white')),
                 ('2', _('yellow'))])
    config.subtitles.pango_subtitle_fontswitch = ConfigYesNo(default=True)
    config.subtitles.pango_subtitles_delay = ConfigSelection(
        default='0', choices=subtitle_delay_choicelist)
    config.subtitles.pango_subtitles_fps = ConfigSelection(
        default='1',
        choices=[('1', _('Original')), ('23976', _('23.976')),
                 ('24000', _('24')), ('25000', _('25')), ('29970', _('29.97')),
                 ('30000', _('30'))])
    config.subtitles.pango_autoturnon = ConfigYesNo(default=True)
    config.autolanguage = ConfigSubsection()
    audio_language_choices = [
        ('---', _('None')),
        ('orj dos ory org esl qaa und mis mul ORY ORJ Audio_ORJ',
         _('Original')), ('ara', _('Arabic')), ('eus baq', _('Basque')),
        ('bul', _('Bulgarian')),
        ('hrv', _('Croatian')), ('ces cze', _('Czech')), ('dan', _('Danish')),
        ('dut ndl', _('Dutch')), ('eng qaa', _('English')),
        ('est', _('Estonian')), ('fin', _('Finnish')),
        ('fra fre', _('French')), ('deu ger', _('German')),
        ('ell gre', _('Greek')), ('heb', _('Hebrew')), ('hun', _('Hungarian')),
        ('ita', _('Italian')), ('lav', _('Latvian')), ('lit', _('Lithuanian')),
        ('ltz', _('Luxembourgish')), ('nor', _('Norwegian')),
        ('pol', _('Polish')), ('por dub DUB', _('Portuguese')),
        ('fas per', _('Persian')), ('ron rum', _('Romanian')),
        ('rus', _('Russian')), ('srp', _('Serbian')), ('slk slo', _('Slovak')),
        ('slv', _('Slovenian')), ('spa', _('Spanish')), ('swe', _('Swedish')),
        ('tha', _('Thai')), ('tur Audio_TUR', _('Turkish')),
        ('ukr Ukr', _('Ukrainian'))
    ]

    def setEpgLanguage(configElement):
        eServiceEvent.setEPGLanguage(configElement.value)

    config.autolanguage.audio_epglanguage = ConfigSelection(
        audio_language_choices[:1] + audio_language_choices[2:], default='---')
    config.autolanguage.audio_epglanguage.addNotifier(setEpgLanguage)

    def setEpgLanguageAlternative(configElement):
        eServiceEvent.setEPGLanguageAlternative(configElement.value)

    config.autolanguage.audio_epglanguage_alternative = ConfigSelection(
        audio_language_choices[:1] + audio_language_choices[2:], default='---')
    config.autolanguage.audio_epglanguage_alternative.addNotifier(
        setEpgLanguageAlternative)
    config.autolanguage.audio_autoselect1 = ConfigSelection(
        choices=audio_language_choices, default='---')
    config.autolanguage.audio_autoselect2 = ConfigSelection(
        choices=audio_language_choices, default='---')
    config.autolanguage.audio_autoselect3 = ConfigSelection(
        choices=audio_language_choices, default='---')
    config.autolanguage.audio_autoselect4 = ConfigSelection(
        choices=audio_language_choices, default='---')
    config.autolanguage.audio_defaultac3 = ConfigYesNo(default=False)
    config.autolanguage.audio_defaultddp = ConfigYesNo(default=False)
    config.autolanguage.audio_usecache = ConfigYesNo(default=True)
    subtitle_language_choices = audio_language_choices[:
                                                       1] + audio_language_choices[
                                                           2:]
    config.autolanguage.subtitle_autoselect1 = ConfigSelection(
        choices=subtitle_language_choices, default='---')
    config.autolanguage.subtitle_autoselect2 = ConfigSelection(
        choices=subtitle_language_choices, default='---')
    config.autolanguage.subtitle_autoselect3 = ConfigSelection(
        choices=subtitle_language_choices, default='---')
    config.autolanguage.subtitle_autoselect4 = ConfigSelection(
        choices=subtitle_language_choices, default='---')
    config.autolanguage.subtitle_hearingimpaired = ConfigYesNo(default=False)
    config.autolanguage.subtitle_defaultimpaired = ConfigYesNo(default=False)
    config.autolanguage.subtitle_defaultdvb = ConfigYesNo(default=False)
    config.autolanguage.subtitle_usecache = ConfigYesNo(default=True)
    config.autolanguage.equal_languages = ConfigSelection(default='15',
                                                          choices=[
                                                              ('0', _('None')),
                                                              ('1', '1'),
                                                              ('2', '2'),
                                                              ('3', '1,2'),
                                                              ('4', '3'),
                                                              ('5', '1,3'),
                                                              ('6', '2,3'),
                                                              ('7', '1,2,3'),
                                                              ('8', '4'),
                                                              ('9', '1,4'),
                                                              ('10', '2,4'),
                                                              ('11', '1,2,4'),
                                                              ('12', '3,4'),
                                                              ('13', '1,3,4'),
                                                              ('14', '2,3,4'),
                                                              ('15', _('All'))
                                                          ])
    config.streaming = ConfigSubsection()
    config.streaming.stream_ecm = ConfigYesNo(default=False)
    config.streaming.descramble = ConfigYesNo(default=True)
    config.streaming.descramble_client = ConfigYesNo(default=False)
    config.streaming.stream_eit = ConfigYesNo(default=True)
    config.streaming.stream_ait = ConfigYesNo(default=True)
    config.streaming.authentication = ConfigYesNo(default=False)
    config.mediaplayer = ConfigSubsection()
    config.mediaplayer.useAlternateUserAgent = ConfigYesNo(default=False)
    config.mediaplayer.alternateUserAgent = ConfigText(default='')
Example #52
0
def FinalInitUsageConfig():
    try:
        usage_old = config.usage.dict().copy()
    except KeyError:
        usage_old = {}

    try:
        seek_old = config.seek.dict().copy()
    except KeyError:
        seek_old = {}

    #We have do it again to ensure tranlsations are applied after language load has finished
    config.usage.setup_level = ConfigSelection(default="intermediate",
                                               choices=[
                                                   ("simple", _("Simple")),
                                                   ("intermediate",
                                                    _("Intermediate")),
                                                   ("expert", _("Expert"))
                                               ])

    config.seek.on_pause = ConfigSelection(default="play",
                                           choices=[("play", _("Play")),
                                                    ("step",
                                                     _("Singlestep (GOP)")),
                                                    ("last", _("Last speed"))])

    inactivity_shutdown_choices = [("never", _("disabled"))]
    for i in range(1, 6):
        inactivity_shutdown_choices.extend([
            ("%d" % i, ngettext("%(num)d hour", "%(num)d hours", i) % {
                "num": i
            })
        ])
    config.usage.inactivity_shutdown = ConfigSelection(
        default="3", choices=inactivity_shutdown_choices)
    config.usage.inactivity_shutdown_initialized = ConfigYesNo(default=False)
    config.usage.showdish = ConfigYesNo(default=True)
    config.usage.multibouquet = ConfigYesNo(default=False)
    config.usage.multiepg_ask_bouquet = ConfigYesNo(default=False)

    config.usage.quickzap_bouquet_change = ConfigYesNo(default=False)
    config.usage.e1like_radio_mode = ConfigYesNo(default=False)
    config.usage.infobar_timeout = ConfigSelection(
        default="5",
        choices=[("0", _("no timeout")), ("1", "1 " + _("second")),
                 ("2", "2 " + _("seconds")), ("3", "3 " + _("seconds")),
                 ("4", "4 " + _("seconds")), ("5", "5 " + _("seconds")),
                 ("6", "6 " + _("seconds")), ("7", "7 " + _("seconds")),
                 ("8", "8 " + _("seconds")), ("9", "9 " + _("seconds")),
                 ("10", "10 " + _("seconds"))])
    config.usage.show_infobar_on_zap = ConfigYesNo(default=True)
    config.usage.show_infobar_on_skip = ConfigYesNo(default=True)
    config.usage.show_infobar_on_event_change = ConfigYesNo(default=True)
    config.usage.hdd_standby = ConfigSelection(
        default="600",
        choices=[("0", _("no standby")), ("10", "10 " + _("seconds")),
                 ("30", "30 " + _("seconds")), ("60", "1 " + _("minute")),
                 ("120", "2 " + _("minutes")), ("300", "5 " + _("minutes")),
                 ("600", "10 " + _("minutes")), ("1200", "20 " + _("minutes")),
                 ("1800", "30 " + _("minutes")), ("3600", "1 " + _("hour")),
                 ("7200", "2 " + _("hours")), ("14400", "4 " + _("hours"))])

    config.usage.pip_zero_button = ConfigSelection(
        default="standard",
        choices=[("standard", _("standard")),
                 ("swap", _("swap PiP and main picture")),
                 ("swapstop", _("move PiP to main picture")),
                 ("stop", _("stop PiP"))])

    config.usage.default_path = ConfigText(default=resolveFilename(SCOPE_HDD))
    config.usage.timer_path = ConfigText(default="<default>")
    config.usage.instantrec_path = ConfigText(default="<default>")
    config.usage.timeshift_path = ConfigText(default="/media/hdd/")
    config.usage.allowed_timeshift_paths = ConfigLocations(
        default=["/media/hdd/"])

    config.usage.on_movie_start = ConfigSelection(
        default="ask",
        choices=[("ask", _("Ask user")),
                 ("resume", _("Resume from last position")),
                 ("beginning", _("Start from the beginning"))])
    config.usage.on_movie_stop = ConfigSelection(
        default="ask",
        choices=[("ask", _("Ask user")),
                 ("movielist", _("Return to movie list")),
                 ("quit", _("Return to previous service"))])
    config.usage.on_movie_eof = ConfigSelection(
        default="ask",
        choices=[("ask", _("Ask user")),
                 ("movielist", _("Return to movie list")),
                 ("quit", _("Return to previous service")),
                 ("pause", _("Pause movie at end"))])

    config.usage.resume_treshold = ConfigInteger(default=30, limits=[0, 300])

    config.usage.on_long_powerpress = ConfigSelection(
        default="show_menu",
        choices=[("show_menu", _("show shutdown menu")),
                 ("shutdown", _("immediate shutdown")),
                 ("standby", _("Idle Mode"))])

    config.usage.on_short_powerpress = ConfigSelection(
        default="standby",
        choices=[("show_menu", _("show shutdown menu")),
                 ("shutdown", _("immediate shutdown")),
                 ("standby", _("Idle Mode"))])

    config.usage.alternatives_priority = ConfigSelection(
        default="0",
        choices=[("0", "DVB-S/-C/-T"), ("1", "DVB-S/-T/-C"),
                 ("2", "DVB-C/-S/-T"), ("3", "DVB-C/-T/-S"),
                 ("4", "DVB-T/-C/-S"), ("5", "DVB-T/-S/-C")])

    config.usage.show_event_progress_in_servicelist = ConfigYesNo(
        default=False)

    config.usage.blinking_display_clock_during_recording = ConfigYesNo(
        default=False)

    config.usage.show_message_when_recording_starts = ConfigYesNo(default=True)

    config.usage.load_length_of_movies_in_moviellist = ConfigYesNo(
        default=True)

    config.usage.timerlist_finished_timer_position = ConfigSelection(
        default="beginning",
        choices=[("beginning", _("at beginning")), ("end", _("at end"))])

    config.usage.text_subtitle_presentation = ConfigSelection(
        default="black box",
        choices=[("black box", _("black box")),
                 ("drop-shadow", _("drop-shadow"))])
    config.usage.text_subtitle_black_box_transparency = ConfigSlider(
        default=0x64, increment=5, limits=(0, 0xff))
    config.usage.ttx_subtitle_prefer_pmt_language_code = ConfigYesNo(
        default=True)

    # Channelselection settings
    config.usage.configselection_showsettingsincontextmenu = ConfigYesNo(
        default=True)
    config.usage.configselection_showlistnumbers = ConfigYesNo(default=True)
    config.usage.configselection_showservicename = ConfigYesNo(default=True)
    config.usage.configselection_progressbarposition = ConfigSelection(
        default="0",
        choices=[("0", _("After servicenumber")),
                 ("1", _("After servicename")),
                 ("2", _("After servicedescription"))])
    config.usage.configselection_servicenamecolwidth = ConfigInteger(
        200, limits=(100, 400))
    config.usage.configselection_columnstyle = ConfigYesNo(default=False)
    config.usage.configselection_additionaltimedisplayposition = ConfigSelection(
        default="1", choices=[("0", _("ahead")), ("1", _("behind"))])
    config.usage.configselection_showadditionaltimedisplay = ConfigSelection(
        default="0",
        choices=[("0", _("Off")), ("1", _("Percent")), ("2", _("Remain")),
                 ("3", _("Remain / duration")), ("4", _("Elapsed")),
                 ("5", _("Elapsed / duration")),
                 ("6", _("Elapsed / remain / duration")), ("7", _("Time"))])
    config.usage.configselection_showpicons = ConfigYesNo(default=False)
    config.usage.configselection_bigpicons = ConfigYesNo(default=False)
    config.usage.configselection_secondlineinfo = ConfigSelection(
        default="0",
        choices=[("0", _("nothing")), ("1", _("short description")),
                 ("2", _("upcoming event"))])

    config.usage.configselection_piconspath = ConfigSelection(
        default=eEnv.resolve('${datadir}/enigma2/picon_50x30/'),
        choices=[
            (eEnv.resolve('${datadir}/enigma2/picon_50x30/'),
             eEnv.resolve('${datadir}/enigma2/picon_50x30')),
            (eEnv.resolve('${datadir}/enigma2/picon/'),
             eEnv.resolve('${datadir}/enigma2/picon')),
        ])

    config.usage.configselection_showrecordings = ConfigYesNo(default=False)
    config.usage.standby_zaptimer_wakeup = ConfigYesNo(default=True)

    seek = config.seek.dict()
    for (key, value) in seek_old.items():
        value_old = value.value
        configEntry = seek[key]
        value_new = configEntry.value
        if value_old != value_new:
            configEntry.value = value_old
        configEntry._ConfigElement__notifiers = value._ConfigElement__notifiers
        configEntry._ConfigElement__notifiers_final = value._ConfigElement__notifiers_final

    usage = config.usage.dict()
    for (key, value) in usage_old.items():
        value_old = value.value
        configEntry = usage[key]
        value_new = configEntry.value
        if value_old != value_new:
            configEntry.value = value_old
        configEntry._ConfigElement__notifiers = value._ConfigElement__notifiers
        configEntry._ConfigElement__notifiers_final = value._ConfigElement__notifiers_final

    if usage_old.get("alternatives_priority", None) == None:

        def TunerTypePriorityOrderChanged(configElement):
            setTunerTypePriorityOrder(int(configElement.value))

        config.usage.alternatives_priority.addNotifier(
            TunerTypePriorityOrderChanged, immediate_feedback=False)

    if usage_old.get("hdd_standby", None) == None:

        def setHDDStandby(configElement):
            for hdd in harddiskmanager.HDDList():
                hdd[1].setIdleTime(int(configElement.value))

        config.usage.hdd_standby.addNotifier(setHDDStandby,
                                             immediate_feedback=False)

    config.usage.record_mode = ConfigSelection(
        default="direct_io",
        choices=[("direct_io", _("Direct IO (default)")),
                 ("cached_io", _("Cached IO"))])
Example #53
0
from os import popen, path, makedirs, listdir, access, stat, rename, remove, W_OK, R_OK
from enigma import eEnv
from boxbranding import getBoxType

from Components.config import config, getConfigListEntry, ConfigSubsection, ConfigText, ConfigLocations, ConfigBoolean
from Components.Harddisk import harddiskmanager

boxtype = getBoxType()

config.misc.firstrun = ConfigBoolean(default = True)
config.plugins.configurationbackup = ConfigSubsection()
if boxtype in ('maram9', 'classm', 'axodin', 'axodinc', 'starsatlx', 'genius', 'evo', 'galaxym6') and not path.exists("/media/hdd/backup_%s" %boxtype):
	config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/backup/', visible_width = 50, fixed_size = False)
else:
	config.plugins.configurationbackup.backuplocation = ConfigText(default = '/media/hdd/', visible_width = 50, fixed_size = False)
config.plugins.configurationbackup.backupdirs = ConfigLocations(default=[eEnv.resolve('${sysconfdir}/enigma2/'), '/etc/CCcam.cfg', '/usr/keys/', '/var/tuxbox/config/', '/usr/camscript/', '/etc/auto.network', '/etc/enigma2/automounts.xml', '/etc/passwd', '/etc/dropbear/', '/etc/default/dropbear', '/home/root/.ssh/', '/etc/samba/', '/etc/fstab', '/etc/inadyn.conf', '/etc/network/interfaces', '/etc/wpa_supplicant.conf', '/etc/wpa_supplicant.ath0.conf',
 '/etc/wpa_supplicant.wlan0.conf', '/etc/resolv.conf', '/etc/default_gw', '/etc/hostname', eEnv.resolve("${datadir}/enigma2/keymap.usr")])

backupfile = "enigma2settingsbackup.tar.gz"

def checkConfigBackup():
	parts = [ (r.description, r.mountpoint) for r in harddiskmanager.getMountedPartitions(onlyhotplug = False)]
	if boxtype in ('maram9', 'classm', 'axodin', 'axodinc', 'starsatlx', 'genius', 'evo', 'galaxym6'):
		parts.append(('mtd backup','/media/backup'))
	for x in parts:
		if x[1] == '/':
			parts.remove(x)
	if len(parts):
		for x in parts:
			if x[1].endswith('/'):
				fullbackupfile =  x[1] + 'backup_' + boxtype + '/' + backupfile
Example #54
0
from Screens.Screen import Screen
from Screens.MessageBox import MessageBox
from Screens.ChoiceBox import ChoiceBox
from Screens.LocationBox import MovieLocationBox
import Screens.Standby
from Components.config import config, ConfigText, ConfigSelection, ConfigNothing, getConfigListEntry
from Components.ActionMap import ActionMap
from Components.ConfigList import ConfigList, ConfigListScreen
from Components.Sources.StaticText import StaticText
from enigma import eTimer, eServiceCenter, iServiceInformation, eConsoleAppContainer, eEnv
from __init__ import _

mcut_path = eEnv.resolve(
    "${libdir}/enigma2/python/Plugins/Extensions/MovieCut/bin/mcut")


class MovieCut(ChoiceBox):
    def __init__(self, session, service):
        self.service = service
        serviceHandler = eServiceCenter.getInstance()
        path = self.service.getPath()
        info = serviceHandler.info(self.service)
        if not info:
            self.name = path
        else:
            self.name = info.getName(self.service)
        tlist = [
            (_("Don't cut"), "CALLFUNC", self.confirmed0),
            (_("Replace the original movie with the cut movie"), "CALLFUNC",
             self.confirmed1),
            (_("Place the cut movie in a new file ending with \" cut\""),
Example #55
0
def isStreamlinkAvailable():
    from enigma import eEnv
    return os.path.isdir(
        eEnv.resolve('/usr/lib/python2.7/site-packages/streamlink'))
Example #56
0
from Components.ActionMap import ActionMap, NumberActionMap
from Components.Pixmap import Pixmap, MultiPixmap
from Components.Label import Label
from Components.Sources.StaticText import StaticText
from Components.Sources.List import List
from Components.config import config, ConfigYesNo, NoSave, ConfigSubsection, ConfigText, ConfigSelection, ConfigPassword
from Components.Network import iNetwork
from Components.Console import Console
from Plugins.Plugin import PluginDescriptor
from Tools.Directories import resolveFilename, SCOPE_SKIN_IMAGE
from Tools.LoadPixmap import LoadPixmap
from Wlan import iWlan, iStatus, getWlanConfigName, existBcmWifi
from time import time
import re

plugin_path = eEnv.resolve(
    "${libdir}/enigma2/python/Plugins/SystemPlugins/WirelessLan")

list = ["Unencrypted", "WEP", "WPA", "WPA/WPA2", "WPA2"]

weplist = ["ASCII", "HEX"]

config.plugins.wlan = ConfigSubsection()
config.plugins.wlan.essid = NoSave(ConfigText(default="", fixed_size=False))
config.plugins.wlan.hiddenessid = NoSave(ConfigYesNo(default=False))
config.plugins.wlan.encryption = NoSave(ConfigSelection(list, default="WPA2"))
config.plugins.wlan.wepkeytype = NoSave(
    ConfigSelection(weplist, default="ASCII"))
config.plugins.wlan.psk = NoSave(ConfigPassword(default="", fixed_size=False))


class WlanStatus(Screen):
Example #57
0
from datetime import date
from boxbranding import getBoxType, getMachineBrand, getMachineName

boxtype = getBoxType()

config.plugins.configurationbackup = ConfigSubsection()
if boxtype in ('maram9', 'classm', 'axodin', 'axodinc', 'starsatlx', 'genius',
               'evo', 'galaxym6') and not path.exists(
                   "/media/hdd/backup_%s" % boxtype):
    config.plugins.configurationbackup.backuplocation = ConfigText(
        default='/media/backup/', visible_width=50, fixed_size=False)
else:
    config.plugins.configurationbackup.backuplocation = ConfigText(
        default='/media/hdd/', visible_width=50, fixed_size=False)
config.plugins.configurationbackup.backupdirs = ConfigLocations(default=[
    eEnv.resolve('${sysconfdir}/enigma2/'), '/etc/CCcam.cfg', '/usr/keys/',
    '/etc/network/interfaces', '/etc/wpa_supplicant.conf',
    '/etc/wpa_supplicant.ath0.conf', '/etc/wpa_supplicant.wlan0.conf',
    '/etc/resolv.conf', '/etc/default_gw', '/etc/hostname',
    eEnv.resolve("${datadir}/enigma2/keymap.usr")
])


def getBackupPath():
    backuppath = config.plugins.configurationbackup.backuplocation.value
    if backuppath.endswith('/'):
        return backuppath + 'backup_' + boxtype
    else:
        return backuppath + '/backup_' + boxtype

Example #58
0
def InitUsageConfig():
	config.usage = ConfigSubsection()
	config.usage.showdish = ConfigYesNo(default = True)
	config.misc.showrotorposition = ConfigSelection(default = "no", choices = [("no", _("no")), ("yes", _("yes")), ("withtext", _("with text")), ("tunername", _("with tuner name"))])
	config.usage.multibouquet = ConfigYesNo(default = True)

	config.usage.alternative_number_mode = ConfigYesNo(default = False)
	def alternativeNumberModeChange(configElement):
		eDVBDB.getInstance().setNumberingMode(configElement.value)
		refreshServiceList()
	config.usage.alternative_number_mode.addNotifier(alternativeNumberModeChange)

	config.usage.hide_number_markers = ConfigYesNo(default = True)
	config.usage.hide_number_markers.addNotifier(refreshServiceList)

	config.usage.servicetype_icon_mode = ConfigSelection(default = "0", choices = [("0", _("None")), ("1", _("Left from servicename")), ("2", _("Right from servicename"))])
	config.usage.servicetype_icon_mode.addNotifier(refreshServiceList)
	config.usage.crypto_icon_mode = ConfigSelection(default = "0", choices = [("0", _("None")), ("1", _("Left from servicename")), ("2", _("Right from servicename"))])
	config.usage.crypto_icon_mode.addNotifier(refreshServiceList)
	config.usage.record_indicator_mode = ConfigSelection(default = "0", choices = [("0", _("None")), ("1", _("Left from servicename")), ("2", _("Right from servicename")), ("3", _("Red colored"))])
	config.usage.record_indicator_mode.addNotifier(refreshServiceList)

	choicelist = [("-1", _("Disable"))]
	for i in range(0,1300,100):
		choicelist.append((str(i), ngettext("%d pixel wide", "%d pixels wide", i) % i))
	config.usage.servicelist_column = ConfigSelection(default="-1", choices=choicelist)
	config.usage.servicelist_column.addNotifier(refreshServiceList)

	config.usage.service_icon_enable = ConfigYesNo(default = False)
	config.usage.service_icon_enable.addNotifier(refreshServiceList)
	config.usage.servicelist_cursor_behavior = ConfigSelection(default = "keep", choices = [
		("standard", _("Standard")),
		("keep", _("Keep service")),
		("reverseB", _("Reverse bouquet buttons")),
		("keep reverseB", _("Keep service") + " + " + _("Reverse bouquet buttons"))])

	choicelist = [("by skin", _("As defined by the skin"))]
	for i in range (5,41):
		choicelist.append((str(i)))
	config.usage.servicelist_number_of_services = ConfigSelection(default = "by skin", choices = choicelist)
	config.usage.servicelist_number_of_services.addNotifier(refreshServiceList)

	config.usage.multiepg_ask_bouquet = ConfigYesNo(default = False)

	config.usage.quickzap_bouquet_change = ConfigYesNo(default = False)
	config.usage.e1like_radio_mode = ConfigYesNo(default = True)
	choicelist = [("0", _("No timeout"))]
	for i in range(1, 12):
		choicelist.append((str(i), ngettext("%d second", "%d seconds", i) % i))
	config.usage.infobar_timeout = ConfigSelection(default = "5", choices = choicelist)
	config.usage.show_infobar_on_zap = ConfigYesNo(default = True)
	config.usage.show_infobar_on_skip = ConfigYesNo(default = True)
	config.usage.show_infobar_on_event_change = ConfigYesNo(default = False)
	config.usage.show_second_infobar = ConfigSelection(default = "5", choices = [("-1", _("None"))] + choicelist + [("EPG",_("EPG"))])
	config.usage.show_simple_second_infobar = ConfigYesNo(default = False)
	config.usage.infobar_frontend_source = ConfigSelection(default = "tuner", choices = [("settings", _("Settings")), ("tuner", _("Tuner"))])
	config.usage.oldstyle_zap_controls = ConfigYesNo(default = False)
	config.usage.oldstyle_channel_select_controls = ConfigYesNo(default = False)
	config.usage.zap_with_ch_buttons = ConfigYesNo(default = True)
	config.usage.ok_is_channelselection = ConfigYesNo(default = False)
	config.usage.volume_instead_of_channelselection = ConfigYesNo(default = False)
	config.usage.channelselection_preview = ConfigYesNo(default = False)
	config.usage.show_spinner = ConfigYesNo(default = True)
	config.usage.menu_sort_weight = ConfigDictionarySet(default = { "mainmenu" : {"submenu" : {} }})
	config.usage.menu_sort_mode = ConfigSelection(default = "user", choices = [
		("a_z", _("alphabetical")),
		("default", _("Default")),
		("user", _("user defined")),])
	config.usage.menu_show_numbers = ConfigYesNo(default = False)
	config.usage.menu_path = ConfigSelection(default = "off", choices = [
		("off", _("Disabled")),
		("small", _("Small")),
		("large", _("Large")),])
	config.usage.enable_tt_caching = ConfigYesNo(default = True)
	choicelist = []
	for i in (10, 30):
		choicelist.append((str(i), ngettext("%d second", "%d seconds", i) % i))
	for i in (60, 120, 300, 600, 1200, 1800):
		m = i / 60
		choicelist.append((str(i), ngettext("%d minute", "%d minutes", m) % m))
	for i in (3600, 7200, 14400):
		h = i / 3600
		choicelist.append((str(i), ngettext("%d hour", "%d hours", h) % h))
	config.usage.hdd_standby = ConfigSelection(default = "300", choices = [("0", _("No standby"))] + choicelist)
	config.usage.output_12V = ConfigSelection(default = "do not change", choices = [
		("do not change", _("Do not change")), ("off", _("Off")), ("on", _("On")) ])

	config.usage.pip_zero_button = ConfigSelection(default = "standard", choices = [
		("standard", _("Standard")), ("swap", _("Swap PiP and main picture")),
		("swapstop", _("Move PiP to main picture")), ("stop", _("Stop PiP")) ])
	config.usage.pip_hideOnExit = ConfigSelection(default = "without popup", choices = [
		("no", _("No")), ("popup", _("With popup")), ("without popup", _("Without popup")) ])
	choicelist = [("-1", _("Disabled")), ("0", _("No timeout"))]
	for i in [60, 300, 600, 900, 1800, 2700, 3600]:
		m = i/60
		choicelist.append((str(i), ngettext("%d minute", "%d minutes", m) % m))
	config.usage.pip_last_service_timeout = ConfigSelection(default = "0", choices = choicelist)

	config.usage.default_path = ConfigText(default = resolveFilename(SCOPE_HDD))
	config.usage.timer_path = ConfigText(default = "<default>")
	config.usage.instantrec_path = ConfigText(default = "<default>")
	config.usage.timeshift_path = ConfigText(default = "/media/hdd/")
	config.usage.allowed_timeshift_paths = ConfigLocations(default = ["/media/hdd/"])

	config.cccaminfo = ConfigSubsection()
	config.cccaminfo.showInExtensions = ConfigYesNo(default=False)
	config.cccaminfo.serverNameLength = ConfigSelectionNumber(min = 10, max = 100, stepwidth = 1, default = 22, wraparound = True)
	config.cccaminfo.name = ConfigText(default="Profile", fixed_size=False)
	config.cccaminfo.ip = ConfigText(default="192.168.2.12", fixed_size=False)
	config.cccaminfo.username = ConfigText(default="", fixed_size=False)
	config.cccaminfo.password = ConfigText(default="", fixed_size=False)
	config.cccaminfo.port = ConfigInteger(default=16001, limits=(1, 65535))
	config.cccaminfo.profile = ConfigText(default="", fixed_size=False)
	config.cccaminfo.ecmInfoEnabled = ConfigYesNo(default=True)
	config.cccaminfo.ecmInfoTime = ConfigSelectionNumber(min = 1, max = 10, stepwidth = 1, default = 5, wraparound = True)
	config.cccaminfo.ecmInfoForceHide = ConfigYesNo(default=True)
	config.cccaminfo.ecmInfoPositionX = ConfigInteger(default=50)
	config.cccaminfo.ecmInfoPositionY = ConfigInteger(default=50)
	config.cccaminfo.blacklist = ConfigText(default="/media/cf/CCcamInfo.blacklisted", fixed_size=False)
	config.cccaminfo.profiles = ConfigText(default="/media/cf/CCcamInfo.profiles", fixed_size=False)

	config.oscaminfo = ConfigSubsection()
	config.oscaminfo.showInExtensions = ConfigYesNo(default=False)
	config.oscaminfo.userdatafromconf = ConfigYesNo(default = False)
	config.oscaminfo.autoupdate = ConfigYesNo(default = False)
	config.oscaminfo.username = ConfigText(default = "username", fixed_size = False, visible_width=12)
	config.oscaminfo.password = ConfigPassword(default = "password", fixed_size = False)
	config.oscaminfo.ip = ConfigIP( default = [ 127,0,0,1 ], auto_jump=True)
	config.oscaminfo.port = ConfigInteger(default = 16002, limits=(0,65536) )
	config.oscaminfo.intervall = ConfigSelectionNumber(min = 1, max = 600, stepwidth = 1, default = 10, wraparound = True)
	SystemInfo["OScamInstalled"] = False

	config.usage.movielist_trashcan = ConfigYesNo(default=True)
	config.usage.movielist_trashcan_days = ConfigNumber(default=8)
	config.usage.movielist_trashcan_reserve = ConfigNumber(default=40)
	config.usage.on_movie_start = ConfigSelection(default = "resume", choices = [
		("ask yes", _("Ask user") + " " + _("default") + " " + _("yes")),
		("ask no", _("Ask user") + " " + _("default") + " " + _("no")),
		("resume", _("Resume from last position")),
		("beginning", _("Start from the beginning"))])
	config.usage.on_movie_stop = ConfigSelection(default = "movielist", choices = [
		("ask", _("Ask user")), ("movielist", _("Return to movie list")), ("quit", _("Return to previous service")) ])
	config.usage.on_movie_eof = ConfigSelection(default = "movielist", choices = [
		("ask", _("Ask user")), ("movielist", _("Return to movie list")), ("quit", _("Return to previous service")), ("pause", _("Pause movie at end")), ("playlist", _("Play next (return to movie list)")),
		("playlistquit", _("Play next (return to previous service)")), ("loop", _("Continues play (loop)")), ("repeatcurrent", _("Repeat")), ("playallvideos", _("Play All Videos (without infos)"))])
	config.usage.next_movie_msg = ConfigYesNo(default = True)
	config.usage.last_movie_played = ConfigText()
	config.usage.leave_movieplayer_onExit = ConfigSelection(default = "popup", choices = [
		("no", _("No")), ("popup", _("With popup")), ("without popup", _("Without popup")), ("movielist", _("Return to movie list")) ])

	config.usage.setup_level = ConfigSelection(default = "expert", choices = [
		("simple", _("Simple")),
		("intermediate", _("Intermediate")),
		("expert", _("Expert")) ])

	config.usage.startup_to_standby = ConfigSelection(default = "no", choices = [
		("no", _("No")),
		("yes", _("Yes")),
		("except", _("No, except Wakeup timer")) ])

	config.usage.wakeup_enabled = ConfigSelection(default = "no", choices = [
		("no", _("No")),
		("yes", _("Yes")),
		("standby", _("Yes, only from standby")),
		("deepstandby", _("Yes, only from deep standby")) ])
	config.usage.wakeup_day = ConfigSubDict()
	config.usage.wakeup_time = ConfigSubDict()
	for i in range(7):
		config.usage.wakeup_day[i] = ConfigEnableDisable(default = False)
		config.usage.wakeup_time[i] = ConfigClock(default = ((6 * 60 + 0) * 60))

	choicelist = [("0", _("Do nothing"))]
	for i in range(3600, 21601, 3600):
		h = abs(i / 3600)
		h = ngettext("%d hour", "%d hours", h) % h
		choicelist.append((str(i), _("Standby in ") + h))
	config.usage.inactivity_timer = ConfigSelection(default = "0", choices = choicelist)
	config.usage.inactivity_timer_deep_standby = ConfigSelection(default = "deep", choices = [ ("deep", _("Deep standby")), ("standby",  _("Standby"))] )
	config.usage.inactivity_timer_blocktime = ConfigYesNo(default = False)
	config.usage.inactivity_timer_blocktime_begin = ConfigClock(default = time.mktime((0, 0, 0, 18, 0, 0, 0, 0, 0)))
	config.usage.inactivity_timer_blocktime_end = ConfigClock(default = time.mktime((0, 0, 0, 23, 0, 0, 0, 0, 0)))
	config.usage.inactivity_timer_blocktime_extra = ConfigYesNo(default = False)
	config.usage.inactivity_timer_blocktime_extra_begin = ConfigClock(default = time.mktime((0, 0, 0, 6, 0, 0, 0, 0, 0)))
	config.usage.inactivity_timer_blocktime_extra_end = ConfigClock(default = time.mktime((0, 0, 0, 9, 0, 0, 0, 0, 0)))
	config.usage.inactivity_timer_blocktime_by_weekdays = ConfigYesNo(default = False)
	config.usage.inactivity_timer_blocktime_day = ConfigSubDict()
	config.usage.inactivity_timer_blocktime_begin_day = ConfigSubDict()
	config.usage.inactivity_timer_blocktime_end_day = ConfigSubDict()
	config.usage.inactivity_timer_blocktime_extra_day = ConfigSubDict()
	config.usage.inactivity_timer_blocktime_extra_begin_day = ConfigSubDict()
	config.usage.inactivity_timer_blocktime_extra_end_day = ConfigSubDict()
	for i in range(7):
		config.usage.inactivity_timer_blocktime_day[i] = ConfigYesNo(default = False)
		config.usage.inactivity_timer_blocktime_begin_day[i] = ConfigClock(default = time.mktime((0, 0, 0, 18, 0, 0, 0, 0, 0)))
		config.usage.inactivity_timer_blocktime_end_day[i] = ConfigClock(default = time.mktime((0, 0, 0, 23, 0, 0, 0, 0, 0)))
		config.usage.inactivity_timer_blocktime_extra_day[i] = ConfigYesNo(default = False)
		config.usage.inactivity_timer_blocktime_extra_begin_day[i] = ConfigClock(default = time.mktime((0, 0, 0, 6, 0, 0, 0, 0, 0)))
		config.usage.inactivity_timer_blocktime_extra_end_day[i] = ConfigClock(default = time.mktime((0, 0, 0, 9, 0, 0, 0, 0, 0)))

	choicelist = [("0", _("Disabled")),("event_standby", _("Standby after current event"))]
	for i in range(900, 7201, 900):
		m = abs(i / 60)
		m = ngettext("%d minute", "%d minutes", m) % m
		choicelist.append((str(i), _("Standby in ") + m))
	config.usage.sleep_timer = ConfigSelection(default = "0", choices = choicelist)

	choicelist = [("0", _("Disabled"))]
	for i in [60, 300, 600] + range(900, 7201, 900):
		m = abs(i / 60)
		m = ngettext("%d minute", "%d minutes", m) % m
		choicelist.append((str(i), _("after ") + m))
	config.usage.standby_to_shutdown_timer = ConfigSelection(default = "0", choices = choicelist)
	config.usage.standby_to_shutdown_timer_blocktime = ConfigYesNo(default = False)
	config.usage.standby_to_shutdown_timer_blocktime_begin = ConfigClock(default = time.mktime((0, 0, 0, 6, 0, 0, 0, 0, 0)))
	config.usage.standby_to_shutdown_timer_blocktime_end = ConfigClock(default = time.mktime((0, 0, 0, 23, 0, 0, 0, 0, 0)))

	choicelist = [("0", _("Disabled"))]
	for m in (1, 5, 10, 15, 30, 60):
		choicelist.append((str(m * 60), ngettext("%d minute", "%d minutes", m) % m))
	config.usage.screen_saver = ConfigSelection(default = "300", choices = choicelist)

	config.usage.check_timeshift = ConfigYesNo(default = True)

	choicelist = [("0", _("Disabled"))]
	for i in (2, 3, 4, 5, 10, 20, 30):
		choicelist.append((str(i), ngettext("%d second", "%d seconds", i) % i))
	for i in (60, 120, 300):
		m = i / 60
		choicelist.append((str(i), ngettext("%d minute", "%d minutes", m) % m))
	config.usage.timeshift_start_delay = ConfigSelection(default = "0", choices = choicelist)

	config.usage.alternatives_priority = ConfigSelection(default = "0", choices = [
		("0", "DVB-S/-C/-T"),
		("1", "DVB-S/-T/-C"),
		("2", "DVB-C/-S/-T"),
		("3", "DVB-C/-T/-S"),
		("4", "DVB-T/-C/-S"),
		("5", "DVB-T/-S/-C"),
		("127", _("No priority")) ])

	def remote_fallback_changed(configElement):
		if configElement.value:
			configElement.value = "%s%s" % (not configElement.value.startswith("http://") and "http://" or "", configElement.value)
			configElement.value = "%s%s" % (configElement.value, configElement.value.count(":") == 1 and ":8001" or "")
	config.usage.remote_fallback_enabled = ConfigYesNo(default = False)
	config.usage.remote_fallback = ConfigText(default = "", fixed_size = False)
	config.usage.remote_fallback.addNotifier(remote_fallback_changed, immediate_feedback=False)

	config.usage.show_timer_conflict_warning = ConfigYesNo(default = True)

	dvbs_nims = [("-2", _("Disabled"))]
	dvbt_nims = [("-2", _("Disabled"))]
	dvbc_nims = [("-2", _("Disabled"))]
	atsc_nims = [("-2", _("Disabled"))]

	nims = [("-1", _("auto"))]
	for x in nimmanager.nim_slots:
		if x.isCompatible("DVB-S"):
			dvbs_nims.append((str(x.slot), x.getSlotName()))
		elif x.isCompatible("DVB-T"):
			dvbt_nims.append((str(x.slot), x.getSlotName()))
		elif x.isCompatible("DVB-C"):
			dvbc_nims.append((str(x.slot), x.getSlotName()))
		elif x.isCompatible("ATSC"):
			atsc_nims.append((str(x.slot), x.getSlotName()))
		nims.append((str(x.slot), x.getSlotName()))

	config.usage.frontend_priority = ConfigSelection(default = "-1", choices = list(nims))
	nims.insert(0,("-2", _("Disabled")))
	config.usage.recording_frontend_priority = ConfigSelection(default = "-2", choices = nims)
	config.usage.frontend_priority_dvbs = ConfigSelection(default = "-2", choices = list(dvbs_nims))
	dvbs_nims.insert(1,("-1", _("auto")))
	config.usage.recording_frontend_priority_dvbs = ConfigSelection(default = "-2", choices = dvbs_nims)
	config.usage.frontend_priority_dvbt = ConfigSelection(default = "-2", choices = list(dvbt_nims))
	dvbt_nims.insert(1,("-1", _("auto")))
	config.usage.recording_frontend_priority_dvbt = ConfigSelection(default = "-2", choices = dvbt_nims)
	config.usage.frontend_priority_dvbc = ConfigSelection(default = "-2", choices = list(dvbc_nims))
	dvbc_nims.insert(1,("-1", _("auto")))
	config.usage.recording_frontend_priority_dvbc = ConfigSelection(default = "-2", choices = dvbc_nims)
	config.usage.frontend_priority_atsc = ConfigSelection(default = "-2", choices = list(atsc_nims))
	atsc_nims.insert(1,("-1", _("auto")))
	config.usage.recording_frontend_priority_atsc = ConfigSelection(default = "-2", choices = atsc_nims)

	SystemInfo["DVB-S_priority_tuner_available"] = len(dvbs_nims) > 3 and any(len(i) > 2 for i in (dvbt_nims, dvbc_nims, atsc_nims))
	SystemInfo["DVB-T_priority_tuner_available"] = len(dvbt_nims) > 3 and any(len(i) > 2 for i in (dvbs_nims, dvbc_nims, atsc_nims))
	SystemInfo["DVB-C_priority_tuner_available"] = len(dvbc_nims) > 3 and any(len(i) > 2 for i in (dvbs_nims, dvbt_nims, atsc_nims))
	SystemInfo["ATSC_priority_tuner_available"] = len(atsc_nims) > 3 and any(len(i) > 2 for i in (dvbs_nims, dvbc_nims, dvbt_nims))

	config.misc.disable_background_scan = ConfigYesNo(default = False)
	config.usage.show_event_progress_in_servicelist = ConfigSelection(default = 'barright', choices = [
		('barleft', _("Progress bar left")),
		('barright', _("Progress bar right")),
		('percleft', _("Percentage left")),
		('percright', _("Percentage right")),
		('no', _("No")) ])
	config.usage.show_channel_numbers_in_servicelist = ConfigYesNo(default = True)
	config.usage.show_event_progress_in_servicelist.addNotifier(refreshServiceList)
	config.usage.show_channel_numbers_in_servicelist.addNotifier(refreshServiceList)

	config.usage.blinking_display_clock_during_recording = ConfigYesNo(default = False)

	config.usage.show_message_when_recording_starts = ConfigYesNo(default = True)

	config.usage.load_length_of_movies_in_moviellist = ConfigYesNo(default = True)
	config.usage.show_icons_in_movielist = ConfigSelection(default = 'i', choices = [
		('o', _("Off")),
		('p', _("Progress")),
		('s', _("Small progress")),
		('i', _("Icons")),
	])
	config.usage.movielist_unseen = ConfigYesNo(default = False)

	config.usage.swap_snr_on_osd = ConfigYesNo(default = False)
        config.usage.swap_time_display_on_osd = ConfigSelection(default = "0", choices = [("0", _("Skin Setting")), ("1", _("Mins")), ("2", _("Mins Secs")), ("3", _("Hours Mins")), ("4", _("Hours Mins Secs")), ("5", _("Percentage"))])
	config.usage.swap_media_time_display_on_osd = ConfigSelection(default = "0", choices = [("0", _("Skin Setting")), ("1", _("Mins")), ("2", _("Mins Secs")), ("3", _("Hours Mins")), ("4", _("Hours Mins Secs")), ("5", _("Percentage"))])
	config.usage.swap_time_remaining_on_osd = ConfigSelection(default = "0", choices = [("0", _("Remaining")), ("1", _("Elapsed")), ("2", _("Elapsed & Remaining")), ("3", _("Remaining & Elapsed"))])
	config.usage.elapsed_time_positive_osd = ConfigYesNo(default = False)
	config.usage.swap_time_display_on_vfd = ConfigSelection(default = "0", choices = [("0", _("Skin Setting")), ("1", _("Mins")), ("2", _("Mins Secs")), ("3", _("Hours Mins")), ("4", _("Hours Mins Secs")), ("5", _("Percentage"))])
	config.usage.swap_media_time_display_on_vfd = ConfigSelection(default = "0", choices = [("0", _("Skin Setting")), ("1", _("Mins")), ("2", _("Mins Secs")), ("3", _("Hours Mins")), ("4", _("Hours Mins Secs")), ("5", _("Percentage"))])
	config.usage.swap_time_remaining_on_vfd = ConfigSelection(default = "0", choices = [("0", _("Remaining")), ("1", _("Elapsed")), ("2", _("Elapsed & Remaining")), ("3", _("Remaining & Elapsed"))])
	config.usage.elapsed_time_positive_vfd = ConfigYesNo(default = False)
	
	def SpinnerOnOffChanged(configElement):
		setSpinnerOnOff(int(configElement.value))
	config.usage.show_spinner.addNotifier(SpinnerOnOffChanged)

	def EnableTtCachingChanged(configElement):
		setEnableTtCachingOnOff(int(configElement.value))
	config.usage.enable_tt_caching.addNotifier(EnableTtCachingChanged)

	def TunerTypePriorityOrderChanged(configElement):
		setTunerTypePriorityOrder(int(configElement.value))
	config.usage.alternatives_priority.addNotifier(TunerTypePriorityOrderChanged, immediate_feedback=False)

	def PreferredTunerChanged(configElement):
		setPreferredTuner(int(configElement.value))
	config.usage.frontend_priority.addNotifier(PreferredTunerChanged)

	config.usage.show_picon_in_display = ConfigYesNo(default = True)
	config.usage.hide_zap_errors = ConfigYesNo(default = False)
	config.usage.show_cryptoinfo = ConfigYesNo(default = True)
	config.usage.show_eit_nownext = ConfigYesNo(default = True)
	config.usage.show_vcr_scart = ConfigYesNo(default = False)
	config.usage.show_update_disclaimer = ConfigYesNo(default = True)
	config.usage.pic_resolution = ConfigSelection(default=None, choices=[(None, _("Same resolution as skin")), ("(720, 576)","720x576"), ("(1280, 720)", "1280x720"), ("(1920, 1080)", "1920x1080")][:SystemInfo["HasFullHDSkinSupport"] and 4 or 3])

	if SystemInfo["StandbyLED"]:
		def standbyLEDChanged(configElement):
			open(SystemInfo["StandbyLED"], "w").write(configElement.value and "on" or "off")
		config.usage.standbyLED = ConfigYesNo(default = True)
		config.usage.standbyLED.addNotifier(standbyLEDChanged)

	if SystemInfo["WakeOnLAN"]:
		def wakeOnLANChanged(configElement):
			if "fp" in SystemInfo["WakeOnLAN"]:
				open(SystemInfo["WakeOnLAN"], "w").write(configElement.value and "enable" or "disable")
			else:
				open(SystemInfo["WakeOnLAN"], "w").write(configElement.value and "on" or "off")
		config.usage.wakeOnLAN = ConfigYesNo(default = False)
		config.usage.wakeOnLAN.addNotifier(wakeOnLANChanged)

	config.epg = ConfigSubsection()
	config.epg.eit = ConfigYesNo(default = True)
	config.epg.mhw = ConfigYesNo(default = False)
	config.epg.freesat = ConfigYesNo(default = True)
	config.epg.viasat = ConfigYesNo(default = True)
	config.epg.netmed = ConfigYesNo(default = True)
	config.epg.virgin = ConfigYesNo(default = False)
	config.misc.showradiopic = ConfigYesNo(default = True)
	def EpgSettingsChanged(configElement):
		from enigma import eEPGCache
		mask = 0xffffffff
		if not config.epg.eit.value:
			mask &= ~(eEPGCache.NOWNEXT | eEPGCache.SCHEDULE | eEPGCache.SCHEDULE_OTHER)
		if not config.epg.mhw.value:
			mask &= ~eEPGCache.MHW
		if not config.epg.freesat.value:
			mask &= ~(eEPGCache.FREESAT_NOWNEXT | eEPGCache.FREESAT_SCHEDULE | eEPGCache.FREESAT_SCHEDULE_OTHER)
		if not config.epg.viasat.value:
			mask &= ~eEPGCache.VIASAT
		if not config.epg.netmed.value:
			mask &= ~(eEPGCache.NETMED_SCHEDULE | eEPGCache.NETMED_SCHEDULE_OTHER)
		if not config.epg.virgin.value:
			mask &= ~(eEPGCache.VIRGIN_NOWNEXT | eEPGCache.VIRGIN_SCHEDULE)
		eEPGCache.getInstance().setEpgSources(mask)
	config.epg.eit.addNotifier(EpgSettingsChanged)
	config.epg.mhw.addNotifier(EpgSettingsChanged)
	config.epg.freesat.addNotifier(EpgSettingsChanged)
	config.epg.viasat.addNotifier(EpgSettingsChanged)
	config.epg.netmed.addNotifier(EpgSettingsChanged)
	config.epg.virgin.addNotifier(EpgSettingsChanged)

	config.epg.histminutes = ConfigSelectionNumber(min = 0, max = 120, stepwidth = 15, default = 0, wraparound = True)
	def EpgHistorySecondsChanged(configElement):
		from enigma import eEPGCache
		eEPGCache.getInstance().setEpgHistorySeconds(config.epg.histminutes.getValue()*60)
	config.epg.histminutes.addNotifier(EpgHistorySecondsChanged)

	hddchoices = [('/', 'Internal Flash'), ('/hdd', '/hdd')]
	for p in harddiskmanager.getMountedPartitions():
		if os.path.exists(p.mountpoint):
			d = os.path.normpath(p.mountpoint)
			if p.mountpoint != '/':
				hddchoices.append((p.mountpoint, d))
	config.misc.epgcachepath = ConfigSelection(default = '/hdd', choices = hddchoices)
	def EpgCacheChanged(configElement):
		eEPGCache.getInstance().setCacheFile(config.misc.epgcachepath.value + "/epg.dat")
		epgcache = eEPGCache.getInstance()
		epgcache.save()
	config.misc.epgcachepath.addNotifier(EpgCacheChanged, immediate_feedback = False)

	def setHDDStandby(configElement):
		for hdd in harddiskmanager.HDDList():
			hdd[1].setIdleTime(int(configElement.value))
	config.usage.hdd_standby.addNotifier(setHDDStandby, immediate_feedback=False)

	if SystemInfo["12V_Output"]:
		def set12VOutput(configElement):
			Misc_Options.getInstance().set_12V_output(configElement.value == "on" and 1 or 0)
		config.usage.output_12V.addNotifier(set12VOutput, immediate_feedback=False)

	config.usage.keymap = ConfigText(default = eEnv.resolve("${datadir}/enigma2/keymap.xml"))
	config.usage.keytrans = ConfigText(default = eEnv.resolve("${datadir}/enigma2/keytranslation.xml"))

	config.seek = ConfigSubsection()
	config.seek.selfdefined_13 = ConfigNumber(default=15)
	config.seek.selfdefined_46 = ConfigNumber(default=60)
	config.seek.selfdefined_79 = ConfigNumber(default=300)

	config.seek.speeds_forward = ConfigSet(default=[2, 4, 8, 16, 32, 64, 128], choices=[2, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128])
	config.seek.speeds_backward = ConfigSet(default=[2, 4, 8, 16, 32, 64, 128], choices=[1, 2, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128])
	config.seek.speeds_slowmotion = ConfigSet(default=[2, 4, 8], choices=[2, 4, 6, 8, 12, 16, 25])

	config.seek.enter_forward = ConfigSelection(default = "2", choices = ["2", "4", "6", "8", "12", "16", "24", "32", "48", "64", "96", "128"])
	config.seek.enter_backward = ConfigSelection(default = "1", choices = ["1", "2", "4", "6", "8", "12", "16", "24", "32", "48", "64", "96", "128"])

	config.seek.on_pause = ConfigSelection(default = "play", choices = [
		("play", _("Play")),
		("step", _("Single step (GOP)")),
		("last", _("Last speed")) ])

	config.seek.withjumps = ConfigYesNo(default = False)

	config.usage.timerlist_finished_timer_position = ConfigSelection(default = "end", choices = [("beginning", _("At beginning")), ("end", _("At end"))])

	def updateEnterForward(configElement):
		if not configElement.value:
			configElement.value = [2]
		updateChoices(config.seek.enter_forward, configElement.value)

	config.seek.speeds_forward.addNotifier(updateEnterForward, immediate_feedback = False)

	def updateEnterBackward(configElement):
		if not configElement.value:
			configElement.value = [2]
		updateChoices(config.seek.enter_backward, configElement.value)

	config.seek.speeds_backward.addNotifier(updateEnterBackward, immediate_feedback = False)

	def updateEraseSpeed(el):
		eBackgroundFileEraser.getInstance().setEraseSpeed(int(el.value))
	def updateEraseFlags(el):
		eBackgroundFileEraser.getInstance().setEraseFlags(int(el.value))
	config.misc.erase_speed = ConfigSelection(default="20", choices = [
		("10", "10 MB/s"),
		("20", "20 MB/s"),
		("50", "50 MB/s"),
		("100", "100 MB/s")])
	config.misc.erase_speed.addNotifier(updateEraseSpeed, immediate_feedback = False)
	config.misc.erase_flags = ConfigSelection(default="1", choices = [
		("0", _("Disable")),
		("1", _("Internal hdd only")),
		("3", _("Everywhere"))])
	config.misc.erase_flags.addNotifier(updateEraseFlags, immediate_feedback = False)

	if SystemInfo["ZapMode"]:
		def setZapmode(el):
			open(SystemInfo["ZapMode"], "w").write(el.value)
		config.misc.zapmode = ConfigSelection(default = "mute", choices = [
			("mute", _("Black screen")), ("hold", _("Hold screen")), ("mutetilllock", _("Black screen till locked")), ("holdtilllock", _("Hold till locked"))])
		config.misc.zapmode.addNotifier(setZapmode, immediate_feedback = False)

	if SystemInfo["HasForceLNBOn"]:
		def forceLNBPowerChanged(configElement):
			open(SystemInfo["HasForceLNBOn"], "w").write(configElement.value)
		config.misc.forceLnbPower = ConfigSelection(default = "on", choices = [ ("on", _("Yes")), ("off", _("No"))] )
		config.misc.forceLnbPower.addNotifier(forceLNBPowerChanged)

	if SystemInfo["HasForceToneburst"]:
		def forceToneBurstChanged(configElement):
			open(SystemInfo["HasForceToneburst"], "w").write(configElement.value)
		config.misc.forceToneBurst = ConfigSelection(default = "enable", choices = [ ("enable", _("Yes")), ("disable", _("No"))] )
		config.misc.forceToneBurst.addNotifier(forceToneBurstChanged)

	if SystemInfo["HasBypassEdidChecking"]:
		def setHasBypassEdidChecking(configElement):
			open(SystemInfo["HasBypassEdidChecking"], "w").write(configElement.value)
		config.av.bypassEdidChecking = ConfigSelection(default = "00000000", choices = [ ("00000001", _("Yes")), ("00000000", _("No"))] )
		config.av.bypassEdidChecking.addNotifier(setHasBypassEdidChecking)

	if SystemInfo["HasColorspace"]:
		def setHaveColorspace(configElement):
			open(SystemInfo["HasColorspace"], "w").write(configElement.value)
		if SystemInfo["HasColorspaceSimple"]:
			config.av.hdmicolorspace = ConfigSelection(default = "Edid(Auto)", choices={"Edid(Auto)": _("Auto"), "Hdmi_Rgb": _("RGB"), "444": _("YCbCr444"), "422": _("YCbCr422"), "420": _("YCbCr420")})
		else:
			config.av.hdmicolorspace = ConfigSelection(default = "auto", choices={"auto": _("auto"), "rgb": _("rgb"), "420": _("420"), "422": _("422"), "444": _("444")})
		config.av.hdmicolorspace.addNotifier(setHaveColorspace)

	if SystemInfo["HasColordepth"]:
		def setHaveColordepth(configElement):
			open(SystemInfo["HasColordepth"], "w").write(configElement.value)
		config.av.hdmicolordepth = ConfigSelection(default = "auto", choices={"auto": _("Auto"), "8bit": _("8bit"), "10bit": _("10bit"), "12bit": _("12bit")})
		config.av.hdmicolordepth.addNotifier(setHaveColordepth)

	if SystemInfo["HasHDMIpreemphasis"]:
		def setHDMIpreemphasis(configElement):
			open(SystemInfo["HasHDMIpreemphasis"], "w").write(configElement.value)
		config.av.hdmipreemphasis = ConfigSelection(default = "off", choices = [ ("on", _("Yes")), ("off", _("No"))] )
		config.av.hdmipreemphasis.addNotifier(setHDMIpreemphasis)

	config.subtitles = ConfigSubsection()
	config.subtitles.ttx_subtitle_colors = ConfigSelection(default = "1", choices = [
		("0", _("original")),
		("1", _("white")),
		("2", _("yellow")) ])
	config.subtitles.ttx_subtitle_original_position = ConfigYesNo(default = False)
	config.subtitles.subtitle_position = ConfigSelection( choices = ["0", "10", "20", "30", "40", "50", "60", "70", "80", "90", "100", "150", "200", "250", "300", "350", "400", "450"], default = "50")
	config.subtitles.subtitle_alignment = ConfigSelection(choices = [("left", _("left")), ("center", _("center")), ("right", _("right"))], default = "center")
	config.subtitles.subtitle_rewrap = ConfigYesNo(default = False)
	config.subtitles.colourise_dialogs = ConfigYesNo(default = False)
	config.subtitles.subtitle_borderwidth = ConfigSelection(choices = ["1", "2", "3", "4", "5"], default = "3")
	config.subtitles.subtitle_fontsize  = ConfigSelection(choices = ["%d" % x for x in range(16,101) if not x % 2], default = "40")
	config.subtitles.showbackground = ConfigYesNo(default = False)

	subtitle_delay_choicelist = []
	for i in range(-900000, 1845000, 45000):
		if i == 0:
			subtitle_delay_choicelist.append(("0", _("No delay")))
		else:
			subtitle_delay_choicelist.append((str(i), "%2.1f sec" % (i / 90000.)))
	config.subtitles.subtitle_noPTSrecordingdelay = ConfigSelection(default = "315000", choices = subtitle_delay_choicelist)

	config.subtitles.dvb_subtitles_yellow = ConfigYesNo(default = False)
	config.subtitles.dvb_subtitles_original_position = ConfigSelection(default = "0", choices = [("0", _("Original")), ("1", _("Fixed")), ("2", _("Relative"))])
	config.subtitles.dvb_subtitles_centered = ConfigYesNo(default = True)
	config.subtitles.subtitle_bad_timing_delay = ConfigSelection(default = "0", choices = subtitle_delay_choicelist)
	config.subtitles.dvb_subtitles_backtrans = ConfigSelection(default = "0", choices = [
		("0", _("No transparency")),
		("25", "10%"),
		("50", "20%"),
		("75", "30%"),
		("100", "40%"),
		("125", "50%"),
		("150", "60%"),
		("175", "70%"),
		("200", "80%"),
		("225", "90%"),
		("255", _("Full transparency"))])
	config.subtitles.pango_subtitle_colors = ConfigSelection(default = "1", choices = [
		("0", _("alternative")),
		("1", _("white")),
		("2", _("yellow")) ])
	config.subtitles.pango_subtitle_fontswitch = ConfigYesNo(default = True)
	config.subtitles.pango_subtitles_delay = ConfigSelection(default = "0", choices = subtitle_delay_choicelist)
	config.subtitles.pango_subtitles_fps = ConfigSelection(default = "1", choices = [
		("1", _("Original")),
		("23976", _("23.976")),
		("24000", _("24")),
		("25000", _("25")),
		("29970", _("29.97")),
		("30000", _("30"))])
	config.subtitles.pango_autoturnon = ConfigYesNo(default = True)

	config.autolanguage = ConfigSubsection()
	audio_language_choices=[
		("---", _("None")),
		("orj dos ory org esl qaa und mis mul ORY ORJ Audio_ORJ", _("Original")),
		("ara", _("Arabic")),
		("eus baq", _("Basque")),
		("bul", _("Bulgarian")),
		("hrv", _("Croatian")),
		("chn sgp", _("Simplified Chinese")),
		("twn hkn",_("Traditional Chinese")),
		("ces cze", _("Czech")),
		("dan", _("Danish")),
		("dut ndl nld", _("Dutch")),
		("eng qaa", _("English")),
		("est", _("Estonian")),
		("fin", _("Finnish")),
		("fra fre", _("French")),
		("deu ger", _("German")),
		("ell gre", _("Greek")),
		("heb", _("Hebrew")),
		("hun", _("Hungarian")),
		("ita", _("Italian")),
		("lav", _("Latvian")),
		("lit", _("Lithuanian")),
		("ltz", _("Luxembourgish")),
		("nor", _("Norwegian")),
		("pol", _("Polish")),
		("por dub Dub DUB ud1", _("Portuguese")),
		("fas per", _("Persian")),
		("ron rum", _("Romanian")),
		("rus", _("Russian")),
		("srp", _("Serbian")),
		("slk slo", _("Slovak")),
		("slv", _("Slovenian")),
		("spa", _("Spanish")),
		("swe", _("Swedish")),
		("tha", _("Thai")),
		("tur Audio_TUR", _("Turkish")),
		("ukr Ukr", _("Ukrainian"))]

	def setEpgLanguage(configElement):
		eServiceEvent.setEPGLanguage(configElement.value)
	config.autolanguage.audio_epglanguage = ConfigSelection(audio_language_choices[:1] + audio_language_choices [2:], default="---")
	config.autolanguage.audio_epglanguage.addNotifier(setEpgLanguage)

	def setEpgLanguageAlternative(configElement):
		eServiceEvent.setEPGLanguageAlternative(configElement.value)
	config.autolanguage.audio_epglanguage_alternative = ConfigSelection(audio_language_choices[:1] + audio_language_choices [2:], default="---")
	config.autolanguage.audio_epglanguage_alternative.addNotifier(setEpgLanguageAlternative)

	config.autolanguage.audio_autoselect1 = ConfigSelection(choices=audio_language_choices, default="---")
	config.autolanguage.audio_autoselect2 = ConfigSelection(choices=audio_language_choices, default="---")
	config.autolanguage.audio_autoselect3 = ConfigSelection(choices=audio_language_choices, default="---")
	config.autolanguage.audio_autoselect4 = ConfigSelection(choices=audio_language_choices, default="---")
	config.autolanguage.audio_defaultac3 = ConfigYesNo(default = False)
	config.autolanguage.audio_defaultddp = ConfigYesNo(default = False)
	config.autolanguage.audio_usecache = ConfigYesNo(default = True)

	subtitle_language_choices = audio_language_choices[:1] + audio_language_choices [2:]
	config.autolanguage.subtitle_autoselect1 = ConfigSelection(choices=subtitle_language_choices, default="---")
	config.autolanguage.subtitle_autoselect2 = ConfigSelection(choices=subtitle_language_choices, default="---")
	config.autolanguage.subtitle_autoselect3 = ConfigSelection(choices=subtitle_language_choices, default="---")
	config.autolanguage.subtitle_autoselect4 = ConfigSelection(choices=subtitle_language_choices, default="---")
	config.autolanguage.subtitle_hearingimpaired = ConfigYesNo(default = False)
	config.autolanguage.subtitle_defaultimpaired = ConfigYesNo(default = False)
	config.autolanguage.subtitle_defaultdvb = ConfigYesNo(default = False)
	config.autolanguage.subtitle_usecache = ConfigYesNo(default = True)
	config.autolanguage.equal_languages = ConfigSelection(default = "15", choices = [
		("0", _("None")),("1", "1"),("2", "2"),("3", "1,2"),
		("4", "3"),("5", "1,3"),("6", "2,3"),("7", "1,2,3"),
		("8", "4"),("9", "1,4"),("10", "2,4"),("11", "1,2,4"),
		("12", "3,4"),("13", "1,3,4"),("14", "2,3,4"),("15", _("All"))])

	config.streaming = ConfigSubsection()
	config.streaming.stream_ecm = ConfigYesNo(default = False)
	config.streaming.descramble = ConfigYesNo(default = True)
	config.streaming.descramble_client = ConfigYesNo(default = False)
	config.streaming.stream_eit = ConfigYesNo(default = True)
	config.streaming.stream_ait = ConfigYesNo(default = True)
	config.streaming.authentication = ConfigYesNo(default = False)

	SystemInfo["GraphMultiEpg"] = os.path.exists("/usr/lib/enigma2/python/Plugins/Extensions/GraphMultiEPG")
	if SystemInfo["GraphMultiEpg"]:
		config.misc.graph_mepg = ConfigSubsection()
		config.misc.graph_mepg.extension_menu = ConfigYesNo(default = True)
		
	config.misc.ci_autopin = ConfigYesNo(default = False)

	config.mediaplayer = ConfigSubsection()
	config.mediaplayer.useAlternateUserAgent = ConfigYesNo(default=False)
	config.mediaplayer.alternateUserAgent = ConfigText(default="")
Example #59
0
    def __init__(self, desktop=None, summary_desktop=None, navigation=None):
        self.desktop = desktop
        self.summary_desktop = summary_desktop
        self.nav = navigation
        self.delay_timer = enigma.eTimer()
        self.delay_timer.callback.append(self.processDelay)

        self.current_dialog = None

        self.dialog_stack = []
        self.summary_stack = []
        self.summary = None

        self.in_exec = False

        self.screen = SessionGlobals(self)

        ##### hack for Openwebif - Create folders & symlink
        from enigma import eEnv
        from Tools.Directories import fileExists
        import os
        origwebifpath = eEnv.resolve(
            '${libdir}/enigma2/python/Plugins/Extensions/WebInterface')
        hookpath = eEnv.resolve(
            '${libdir}/enigma2/python/Plugins/Extensions/OpenWebif/pluginshook.src'
        )
        if not os.path.islink(origwebifpath + "/WebChilds/Toplevel.py"
                              ) and os.path.exists(hookpath):
            print "[OpenWebif] hooking original webif plugins"

            cleanuplist = [
                "/__init__.py", "/__init__.pyo", "/__init__.pyc",
                "/WebChilds/__init__.py", "/WebChilds/__init__.pyo",
                "/WebChilds/__init__.pyc", "/WebChilds/External/__init__.py",
                "/WebChilds/External/__init__.pyo",
                "/WebChilds/External/__init__.pyc", "/WebChilds/Toplevel.py",
                "/WebChilds/Toplevel.pyo"
                "/WebChilds/Toplevel.pyc"
            ]

            for cleanupfile in cleanuplist:
                if fileExists(origwebifpath + cleanupfile):
                    os.remove(origwebifpath + cleanupfile)

            if not os.path.exists(origwebifpath + "/WebChilds/External"):
                os.makedirs(origwebifpath + "/WebChilds/External")
            open(origwebifpath + "/__init__.py", "w").close()
            open(origwebifpath + "/WebChilds/__init__.py", "w").close()
            open(origwebifpath + "/WebChilds/External/__init__.py",
                 "w").close()

            os.symlink(hookpath, origwebifpath + "/WebChilds/Toplevel.py")
        ##########################################################

        for p in plugins.getPlugins(PluginDescriptor.WHERE_SESSIONSTART):
            try:
                p(reason=0, session=self)
            except:
                print "Plugin raised exception at WHERE_SESSIONSTART"
                import traceback
                traceback.print_exc()
Example #60
0
def activate_all(session):
    NUM_CI = eDVBCIInterfaces.getInstance().getNumOfSlots()
    print "[CI_Activate] FOUND %d CI Slots " % NUM_CI
    if NUM_CI > 0:
        ci_config = []

        def getValue(definitions, default):
            # Initialize Output
            ret = ""
            # How many definitions are present
            Len = len(definitions)
            return Len > 0 and definitions[Len - 1].text or default

        for ci in range(NUM_CI):
            filename = eEnv.resolve("${sysconfdir}/enigma2/ci") + str(
                ci) + ".xml"

            if not os_path.exists(filename):
                print "[CI_Activate_Config_CI%d] no config file found" % ci

            try:
                if not os_path.exists(self.filename):
                    return

                fp = open(filename, 'r')
                tree = ci_parse(fp).getroot()
                fp.close()
                read_services = []
                read_providers = []
                usingcaid = []
                for slot in tree.findall("slot"):
                    read_slot = getValue(slot.findall("id"),
                                         False).encode("UTF-8")

                    for caid in slot.findall("caid"):
                        read_caid = caid.get("id").encode("UTF-8")
                        usingcaid.append(long(read_caid, 16))

                    for service in slot.findall("service"):
                        read_service_ref = service.get("ref").encode("UTF-8")
                        read_services.append(read_service_ref)

                    for provider in slot.findall("provider"):
                        read_provider_name = provider.get("name").encode(
                            "UTF-8")
                        read_provider_dvbname = provider.get(
                            "dvbnamespace").encode("UTF-8")
                        read_providers.append(
                            (read_provider_name, long(read_provider_dvbname,
                                                      16)))

                    ci_config.append(
                        (int(read_slot), (read_services, read_providers,
                                          usingcaid)))
            except:
                print "[CI_Activate_Config_CI%d] error parsing xml..." % ci

        for item in ci_config:
            print "[CI_Activate] activate CI%d with following settings:" % item[
                0]
            print item[0]
            print item[1]
            try:
                eDVBCIInterfaces.getInstance().setDescrambleRules(
                    item[0], item[1])
            except:
                print "[CI_Activate_Config_CI%d] error setting DescrambleRules..." % item[
                    0]