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 = [ ]
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
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"
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
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 ''
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)
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()
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)
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
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()
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()
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))
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
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
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
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)
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)
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)
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
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()
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"))
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) )
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()
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()
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()
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()
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
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
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()
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
def __init__(self): self.CONFIG_FILE = eEnv.resolve('${sysconfdir}/enigma2/ava_setup.cfg') # load config file self.loadConfigFile()
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 ''
def eEnv_resolve_multi(path): resolve = eEnv.resolve(path) if resolve == path: return [] else: return resolve.split()
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)
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:
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
def eEnv_resolve_multi(path): resolve = eEnv.resolve(path) return resolve.split()
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:
def isExtEplayer3Available(): from enigma import eEnv return os.path.isfile(eEnv.resolve('$bindir/exteplayer3'))
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
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] == '/':
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)
# 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:
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)
(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=[]))
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), }
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='')
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"))])
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
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\""),
def isStreamlinkAvailable(): from enigma import eEnv return os.path.isdir( eEnv.resolve('/usr/lib/python2.7/site-packages/streamlink'))
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):
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
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="")
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()
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]