from Components.Network import iNetwork from twisted.internet import error as twisted_error from twistedsnmp import agent, agentprotocol, bisectoidstore from twistedsnmp.pysnmpproto import v1, oid from Components.Sources.ServiceList import ServiceList from enigma import eServiceReference, iServiceInformation from enigma import eDVBResourceManager, eDVBFrontendParametersSatellite, eDVBFrontendParameters from bitrate import Bitrate from emm import Emm config.plugins.SnmpAgent = ConfigSubsection() config.plugins.SnmpAgent.managerip = ConfigText(default='0.0.0.0') config.plugins.SnmpAgent.systemname = ConfigText(default='dm7025') config.plugins.SnmpAgent.systemdescription = ConfigText( default='signal quality monitor') config.plugins.SnmpAgent.supportaddress = ConfigText( default='*****@*****.**') config.plugins.SnmpAgent.location = ConfigText(default='default location') config.plugins.SnmpAgent.measurebitrate = ConfigYesNo(default=False) config.plugins.SnmpAgent.checkemm = ConfigYesNo(default=False) config.tv.lastroot = ConfigText() class ourOIDStore(bisectoidstore.BisectOIDStore): startTime = time.time() haspicture = False
# skins are loaded in order of priority: skin with # highest priority is loaded last, usually the user-provided # skin. # currently, loadSingleSkinData (colors, bordersets etc.) # are applied one-after-each, in order of ascending priority. # the dom_skin will keep all screens in descending priority, # so the first screen found will be used. # example: loadSkin("nemesis_greenline/skin.xml") config.skin = ConfigSubsection() DEFAULT_SKIN = "MX_HQ10/skin.xml" if not fileExists(resolveFilename(SCOPE_SKIN, DEFAULT_SKIN)): # in that case, fallback to Magic (which is an SD skin) DEFAULT_SKIN = "skin.xml" config.skin.primary_skin = ConfigText(default=DEFAULT_SKIN) DEFAULT_DISPLAY_SKIN = "skin_display.xml" config.skin.display_skin = ConfigText(default=DEFAULT_DISPLAY_SKIN) profile("LoadSkin") res = None name = skin_user_skinname() if name: res = addSkin(name, SCOPE_CONFIG) if not name or not res: addSkin('skin_user.xml', SCOPE_CONFIG) # some boxes lie about their dimensions addSkin('skin_box.xml') # add optional discrete second infobar
def __init__(self, session, entry=None): self.session = session Screen.__init__(self, session) if entry == None: self.setTitle(_("Add birthday")) config.plugins.birthdayreminder.name = NoSave( ConfigText(default="", fixed_size=False, visible_width=40)) config.plugins.birthdayreminder.day = NoSave( ConfigInteger(default=1, limits=(1, 31))) config.plugins.birthdayreminder.month = NoSave( ConfigInteger(default=1, limits=(1, 12))) config.plugins.birthdayreminder.year = NoSave( ConfigInteger(default=1900, limits=(1900, 2050))) else: self.setTitle(_("Edit birthday")) (name, birthday) = entry config.plugins.birthdayreminder.name = NoSave( ConfigText(default=name, fixed_size=False, visible_width=40)) config.plugins.birthdayreminder.day = NoSave( ConfigInteger(default=birthday.day, limits=(1, 31))) config.plugins.birthdayreminder.month = NoSave( ConfigInteger(default=birthday.month, limits=(1, 12))) config.plugins.birthdayreminder.year = NoSave( ConfigInteger(default=birthday.year, limits=(1900, 2050))) self["key_red"] = StaticText(_("Cancel")) self["key_green"] = StaticText(_("Save")) self["error"] = Label(_("Invalid date!")) self["error"].hide() list = [] list.append( getConfigListEntry(_("Name:"), config.plugins.birthdayreminder.name)) if config.plugins.birthdayreminder.dateFormat.value == "mmddyyyy": list.append( getConfigListEntry(_("Month:"), config.plugins.birthdayreminder.month)) list.append( getConfigListEntry(_("Day:"), config.plugins.birthdayreminder.day)) else: list.append( getConfigListEntry(_("Day:"), config.plugins.birthdayreminder.day)) list.append( getConfigListEntry(_("Month:"), config.plugins.birthdayreminder.month)) list.append( getConfigListEntry(_("Year:"), config.plugins.birthdayreminder.year)) ConfigListScreen.__init__(self, list) HelpableScreen.__init__(self) self["OkCancelActions"] = HelpableActionMap(self, "OkCancelActions", { "cancel": (self.cancel, _("Cancel")), }, -1) self["ColorActions"] = HelpableActionMap( self, "ColorActions", { "red": (self.cancel, _("Cancel")), "green": (self.accept, _("Accept changes")), }, -1)
profile("ParentalControl") import Components.ParentalControl Components.ParentalControl.InitParentalControl() profile("LOAD:Navigation") from Navigation import Navigation profile("LOAD:skin") from skin import readSkin profile("LOAD:Tools") from Tools.Directories import InitFallbackFiles, resolveFilename, SCOPE_PLUGINS, SCOPE_CURRENT_SKIN InitFallbackFiles() profile("config.misc") config.misc.radiopic = ConfigText( default=resolveFilename(SCOPE_CURRENT_SKIN, "radio.mvi")) config.misc.blackradiopic = ConfigText( default=resolveFilename(SCOPE_CURRENT_SKIN, "black.mvi")) config.misc.useTransponderTime = ConfigYesNo(default=True) config.misc.startCounter = ConfigInteger(default=0) # number of e2 starts... config.misc.standbyCounter = NoSave( ConfigInteger(default=0)) # number of standby config.misc.DeepStandby = NoSave( ConfigYesNo(default=False)) # detect deepstandby config.misc.RestartUI = ConfigYesNo( default=False) # detect user interface restart config.misc.prev_wakeup_time = ConfigInteger(default=0) #config.misc.prev_wakeup_time_type is only valid when wakeup_time is not 0 config.misc.prev_wakeup_time_type = ConfigInteger(default=0) # 0 = RecordTimer, 1 = ZapTimer, 2 = Plugins, 3 = WakeupTimer config.misc.epgcache_filename = ConfigText(default="/hdd/epg.dat")
def buildList(self, password): self.password=password self.list = [] self.list.append(getConfigListEntry(_('Enter new Password'), ConfigText(default = self.password, fixed_size = False))) self["passwd"].setList(self.list)
import Components.ParentalControl Components.ParentalControl.InitParentalControl() profile("LOAD:Navigation") from Navigation import Navigation profile("LOAD:skin") from skin import readSkin profile("LOAD:Tools") from Tools.Directories import InitFallbackFiles, resolveFilename, SCOPE_PLUGINS, SCOPE_CURRENT_SKIN, SCOPE_CONFIG from Components.config import config, configfile, ConfigText, ConfigYesNo, ConfigInteger, ConfigSelection, NoSave InitFallbackFiles() profile("config.misc") config.misc.blackradiopic = ConfigText( default=resolveFilename(SCOPE_CURRENT_SKIN, "black.mvi")) radiopic = resolveFilename(SCOPE_CURRENT_SKIN, "radio.mvi") if os.path.exists(resolveFilename(SCOPE_CONFIG, "radio.mvi")): radiopic = resolveFilename(SCOPE_CONFIG, "radio.mvi") config.misc.radiopic = ConfigText(default=radiopic) config.misc.isNextRecordTimerAfterEventActionAuto = ConfigYesNo(default=False) config.misc.isNextPowerTimerAfterEventActionAuto = ConfigYesNo(default=False) config.misc.SyncTimeUsing = ConfigSelection(default="0", choices=[("0", "Transponder Time"), ("1", _("NTP"))]) config.misc.NTPserver = ConfigText(default='pool.ntp.org', fixed_size=False) config.misc.startCounter = ConfigInteger(default=0) # number of e2 starts... config.misc.standbyCounter = NoSave( ConfigInteger(default=0)) # number of standby config.misc.DeepStandby = NoSave(
################################################### # E2 GUI COMMPONENTS ################################################### from Plugins.Extensions.IPTVPlayer.components.asynccall import MainSessionWrapper from Screens.MessageBox import MessageBox ################################################### ################################################### # Config options for HOST ################################################### config.plugins.iptvplayer.moviesto123_proxy = ConfigSelection( default="None", choices=[("None", _("None")), ("proxy_1", _("Alternative proxy server (1)")), ("proxy_2", _("Alternative proxy server (2)"))]) config.plugins.iptvplayer.moviesto123_alt_domain = ConfigText(default="", fixed_size=False) def GetConfigList(): optionList = [] optionList.append( getConfigListEntry(_("Use proxy server:"), config.plugins.iptvplayer.moviesto123_proxy)) if config.plugins.iptvplayer.moviesto123_proxy.value == 'None': optionList.append( getConfigListEntry( _("Alternative domain:"), config.plugins.iptvplayer.moviesto123_alt_domain)) return optionList
try: import json except Exception: import simplejson as json from Components.config import config, ConfigSelection, ConfigText, getConfigListEntry ################################################### ################################################### # Config options for HOST ################################################### config.plugins.iptvplayer.solarmovie_proxy = ConfigSelection( default="None", choices=[("None", _("None")), ("proxy_1", _("Alternative proxy server (1)")), ("proxy_2", _("Alternative proxy server (2)"))]) config.plugins.iptvplayer.solarmovie_alt_domain = ConfigText(default="", fixed_size=False) def GetConfigList(): optionList = [] optionList.append( getConfigListEntry(_("Use proxy server:"), config.plugins.iptvplayer.solarmovie_proxy)) optionList.append( getConfigListEntry(_("Alternative domain:"), config.plugins.iptvplayer.solarmovie_alt_domain)) return optionList ###################################################
# skins are loaded in order of priority: skin with # highest priority is loaded last, usually the user-provided # skin. # currently, loadSingleSkinData (colors, bordersets etc.) # are applied one-after-each, in order of ascending priority. # the dom_skin will keep all screens in descending priority, # so the first screen found will be used. # example: loadSkin("nemesis_greenline/skin.xml") config.skin = ConfigSubsection() DEFAULT_SKIN = "skin.xml" if not fileExists(resolveFilename(SCOPE_SKIN, DEFAULT_SKIN)): # in that case, fallback to Magic (which is an SD skin) DEFAULT_SKIN = "Magic/skin.xml" config.skin.primary_skin = ConfigText(default=DEFAULT_SKIN) config.skin.xres = ConfigInteger(default=0) profile("LoadSkin") res = None name = skin_user_skinname() if name: res = addSkin(name, SCOPE_CONFIG) if not name or not res: addSkin('skin_user.xml', SCOPE_CONFIG) addSkin('skin_box.xml') addSkin('skin_second_infobar.xml') display_skin_id = 1 addSkin('skin_display.xml') addSkin('skin_text.xml') addSkin('skin_subtitles.xml')
def createConfig(self): justplay = self.timer.justplay always_zap = self.timer.always_zap rename_repeat = self.timer.rename_repeat afterevent = { AFTEREVENT.NONE: "nothing", AFTEREVENT.DEEPSTANDBY: "deepstandby", AFTEREVENT.STANDBY: "standby", AFTEREVENT.AUTO: "auto" }[self.timer.afterEvent] if self.timer.record_ecm and self.timer.descramble: recordingtype = "descrambled+ecm" elif self.timer.record_ecm: recordingtype = "scrambled+ecm" elif self.timer.descramble: recordingtype = "normal" weekday_table = ("mon", "tue", "wed", "thu", "fri", "sat", "sun") # calculate default values day = [] weekday = 0 for x in (0, 1, 2, 3, 4, 5, 6): day.append(0) if self.timer.repeated: # repeated type = "repeated" if self.timer.repeated == 31: # Mon-Fri repeated = "weekdays" elif self.timer.repeated == 127: # daily repeated = "daily" else: flags = self.timer.repeated repeated = "user" count = 0 for x in (0, 1, 2, 3, 4, 5, 6): if flags == 1: # weekly # print "Set to weekday " + str(x) weekday = x if flags & 1 == 1: # set user defined flags day[x] = 1 count += 1 else: day[x] = 0 flags >>= 1 if count == 1: repeated = "weekly" else: # once type = "once" repeated = None weekday = int(strftime("%u", localtime(self.timer.begin))) - 1 day[weekday] = 1 self.timerentry_justplay = ConfigSelection(choices = [ ("zap", _("zap")), ("record", _("record")), ("zap+record", _("zap and record"))], default = {0: "record", 1: "zap", 2: "zap+record"}[justplay + 2*always_zap]) if SystemInfo["DeepstandbySupport"]: shutdownString = _("go to deep standby") else: shutdownString = _("shut down") self.timerentry_afterevent = ConfigSelection(choices = [("nothing", _("do nothing")), ("standby", _("go to standby")), ("deepstandby", shutdownString), ("auto", _("auto"))], default = afterevent) self.timerentry_recordingtype = ConfigSelection(choices = [("normal", _("normal")), ("descrambled+ecm", _("descramble and record ecm")), ("scrambled+ecm", _("don't descramble, record ecm"))], default = recordingtype) self.timerentry_type = ConfigSelection(choices = [("once",_("once")), ("repeated", _("repeated"))], default = type) self.timerentry_name = ConfigText(default = self.timer.name.replace('\xc2\x86', '').replace('\xc2\x87', '').encode("utf-8"), visible_width = 50, fixed_size = False) self.timerentry_description = ConfigText(default = self.timer.description, visible_width = 50, fixed_size = False) self.timerentry_tags = self.timer.tags[:] # if no tags found, make name of event default tag set. if not self.timerentry_tags: tagname = self.timer.name.strip() if tagname: tagname = tagname[0].upper() + tagname[1:].replace(" ", "_") self.timerentry_tags.append(tagname) self.timerentry_tagsset = ConfigSelection(choices = [not self.timerentry_tags and "None" or " ".join(self.timerentry_tags)]) self.timerentry_repeated = ConfigSelection(default = repeated, choices = [("weekly", _("weekly")), ("daily", _("daily")), ("weekdays", _("Mon-Fri")), ("user", _("user defined"))]) self.timerentry_renamerepeat = ConfigYesNo(default = rename_repeat) self.timerentry_date = ConfigDateTime(default = self.timer.begin, formatstring = _("%d %B %Y"), increment = 86400) self.timerentry_starttime = ConfigClock(default = self.timer.begin) self.timerentry_endtime = ConfigClock(default = self.timer.end) self.timerentry_showendtime = ConfigSelection(default = False, choices = [(True, _("yes")), (False, _("no"))]) default = self.timer.dirname or defaultMoviePath() tmp = config.movielist.videodirs.value if default not in tmp: tmp.append(default) self.timerentry_dirname = ConfigSelection(default = default, choices = tmp) self.timerentry_repeatedbegindate = ConfigDateTime(default = self.timer.repeatedbegindate, formatstring = _("%d.%B %Y"), increment = 86400) self.timerentry_weekday = ConfigSelection(default = weekday_table[weekday], choices = [("mon",_("Monday")), ("tue", _("Tuesday")), ("wed",_("Wednesday")), ("thu", _("Thursday")), ("fri", _("Friday")), ("sat", _("Saturday")), ("sun", _("Sunday"))]) self.timerentry_day = ConfigSubList() for x in (0, 1, 2, 3, 4, 5, 6): self.timerentry_day.append(ConfigYesNo(default = day[x])) # FIXME some service-chooser needed here servicename = "N/A" try: # no current service available? servicename = str(self.timer.service_ref.getServiceName()) except: pass self.timerentry_service_ref = self.timer.service_ref self.timerentry_service = ConfigSelection([servicename])
Components.ParentalControl.InitParentalControl() profile("LOAD:Navigation") from Navigation import Navigation profile("LOAD:skin") from skin import readSkin profile("LOAD:Tools") from Tools.Directories import InitFallbackFiles, resolveFilename, SCOPE_PLUGINS, SCOPE_ACTIVE_SKIN, SCOPE_CURRENT_SKIN, SCOPE_CONFIG from Components.config import config, configfile, ConfigText, ConfigYesNo, ConfigInteger, ConfigSelection, NoSave import Components.RecordingConfig InitFallbackFiles() profile("config.misc") config.misc.boxtype = ConfigText(default=boxtype) config.misc.blackradiopic = ConfigText( default=resolveFilename(SCOPE_ACTIVE_SKIN, "black.mvi")) radiopic = resolveFilename(SCOPE_ACTIVE_SKIN, "radio.mvi") if os.path.exists(resolveFilename(SCOPE_CONFIG, "radio.mvi")): radiopic = resolveFilename(SCOPE_CONFIG, "radio.mvi") config.misc.radiopic = ConfigText(default=radiopic) #config.misc.isNextRecordTimerAfterEventActionAuto = ConfigYesNo(default=False) #config.misc.isNextPowerTimerAfterEventActionAuto = ConfigYesNo(default=False) config.misc.nextWakeup = ConfigText( default="-1,-1,0,0,-1,0" ) #wakeup time, timer begins, set by (0=rectimer,1=zaptimer, 2=powertimer or 3=plugin), go in standby, next rectimer, force rectimer config.misc.SyncTimeUsing = ConfigSelection(default="0", choices=[("0", "Transponder Time"), ("1", _("NTP"))]) config.misc.NTPserver = ConfigText(default='pool.ntp.org', fixed_size=False)
from Components.Console import Console from Screens.Screen import Screen from Components.ActionMap import ActionMap from Components.Label import Label from Components.ConfigList import ConfigListScreen, ConfigList from Components.config import ConfigSubsection, ConfigYesNo, config, ConfigSelection, ConfigText, ConfigNumber, ConfigSet, ConfigLocations, NoSave, ConfigClock, ConfigInteger, ConfigBoolean, ConfigPassword, ConfigIP, ConfigSlider, ConfigSelectionNumber, getConfigListEntry, KEY_LEFT, KEY_RIGHT, configfile from Components.Sources.StaticText import StaticText from Plugins.Extensions.Infopanel.outofflash import MoveVideos_int, MoveVideos from Components.MenuList import MenuList from enigma import * from Tools.LoadPixmap import LoadPixmap from Components.MultiContent import MultiContentEntryText, MultiContentEntryPixmapAlphaTest from glob import glob import os config.bootvideo = ConfigSubsection() config.bootvideo.booting = ConfigText(default = "no Bootvideo") class PanelList(MenuList): if (getDesktop(0).size().width() == 1920): def __init__(self, list, font0 = 32, font1 = 24, itemHeight = 50, enableWrapAround = True): MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent) self.l.setFont(0, gFont("Regular", font0)) self.l.setFont(1, gFont("Regular", font1)) self.l.setItemHeight(itemHeight) else: def __init__(self, list, font0 = 24, font1 = 16, itemHeight = 50, enableWrapAround = True): MenuList.__init__(self, list, enableWrapAround, eListboxPythonMultiContent) self.l.setFont(0, gFont("Regular", font0)) self.l.setFont(1, gFont("Regular", font1)) self.l.setItemHeight(itemHeight)
def initWeatherConfig(): config.plugins.MetrixWeather = ConfigSubsection() #MetrixWeather config.plugins.MetrixWeather.enabled = ConfigYesNo(default=True) config.plugins.MetrixWeather.refreshInterval = ConfigNumber(default=10) config.plugins.MetrixWeather.woeid = ConfigNumber(default=676757) #Location (visit metrixhd.info) config.plugins.MetrixWeather.tempUnit = ConfigSelection(default="Celsius", choices = [ ("Celsius", _("Celsius")), ("Fahrenheit", _("Fahrenheit")) ]) ## RENDERER CONFIG: config.plugins.MetrixWeather.currentLocation = ConfigText(default="N/A") config.plugins.MetrixWeather.currentWeatherCode = ConfigText(default="(") config.plugins.MetrixWeather.currentWeatherText = ConfigText(default="N/A") config.plugins.MetrixWeather.currentWeatherTemp = ConfigText(default="0") config.plugins.MetrixWeather.forecastTodayCode = ConfigText(default="(") config.plugins.MetrixWeather.forecastTodayText = ConfigText(default="N/A") config.plugins.MetrixWeather.forecastTodayTempMin = ConfigText(default="0") config.plugins.MetrixWeather.forecastTodayTempMax = ConfigText(default="0") config.plugins.MetrixWeather.forecastTomorrowCode = ConfigText(default="(") config.plugins.MetrixWeather.forecastTomorrowText = ConfigText(default="N/A") config.plugins.MetrixWeather.forecastTomorrowTempMin = ConfigText(default="0") config.plugins.MetrixWeather.forecastTomorrowTempMax = ConfigText(default="0")
def __init__(self): self.settings = ConfigSubsection() self.settings.titleformat = ConfigText(fixed_size=False, visible_width=40) self.settings.subtitleformat = ConfigText(fixed_size=False, visible_width=40) self.settings.menubg = ConfigFilename() self.settings.menuaudio = ConfigFilename() self.settings.dimensions = ConfigSequence(seperator=',', default=[576, 720], limits=[(352, 720), (480, 576)]) self.settings.rows = ConfigInteger(default=4, limits=(1, 10)) self.settings.cols = ConfigInteger(default=1, limits=(1, 4)) self.settings.color_headline = ConfigColor() self.settings.color_headline = ConfigColor() self.settings.color_highlight = ConfigColor() self.settings.color_button = ConfigColor() self.settings.fontface_headline = ConfigFilename() self.settings.fontface_title = ConfigFilename() self.settings.fontface_subtitle = ConfigFilename() self.settings.fontsize_headline = ConfigInteger(default=46, limits=(0, 199)) self.settings.fontsize_title = ConfigInteger(default=24, limits=(0, 199)) self.settings.fontsize_subtitle = ConfigInteger(default=14, limits=(0, 199)) self.settings.margin_top = ConfigInteger(default=120, limits=(0, 500)) self.settings.margin_bottom = ConfigInteger(default=40, limits=(0, 500)) self.settings.margin_left = ConfigInteger(default=56, limits=(0, 500)) self.settings.margin_right = ConfigInteger(default=56, limits=(0, 500)) self.settings.space_rows = ConfigInteger(default=32, limits=(0, 500)) self.settings.space_cols = ConfigInteger(default=24, limits=(0, 500)) self.settings.prev_page_text = ConfigText(default="<<<", fixed_size=False) self.settings.next_page_text = ConfigText(default=">>>", fixed_size=False) self.settings.offset_headline = ConfigSequence(seperator=',', default=[0, 0], limits=[(-1, 500), (-1, 500)]) self.settings.offset_title = ConfigSequence(seperator=',', default=[0, 0], limits=[(-1, 500), (-1, 500)]) self.settings.offset_subtitle = ConfigSequence(seperator=',', default=[20, 0], limits=[(-1, 500), (-1, 500)]) self.settings.offset_thumb = ConfigSequence(seperator=',', default=[40, 0], limits=[(-1, 500), (-1, 500)]) self.settings.thumb_size = ConfigSequence(seperator=',', default=[200, 158], limits=[(0, 576), (-1, 720)]) self.settings.thumb_border = ConfigInteger(default=2, limits=(0, 20)) self.filekeys = [ "menubg", "menuaudio", "fontface_headline", "fontface_title", "fontface_subtitle" ] from TitleProperties import languageChoices self.settings.menulang = ConfigSelection( choices=languageChoices.choices, default=languageChoices.choices[1][0]) self.error = ""
from Components.Sources.List import List from Components.ConfigList import ConfigListScreen from Components.config import config, ConfigSubsection, ConfigInteger, ConfigSelection, ConfigText, ConfigOnOff, getConfigListEntry from skin import componentSizes, TemplatedListFonts def getScale(): return AVSwitch().getFramebufferScale() config.pic = ConfigSubsection() config.pic.framesize = ConfigInteger(default=30, limits=(0, 99)) config.pic.slidetime = ConfigInteger(default=10, limits=(5, 60)) config.pic.resize = ConfigSelection(default="2", choices = [("0", _("simple")), ("1", _("better")), ("2", _("fast JPEG"))]) config.pic.resize.value = 2 # 2 = fast JPEG (non JPEG fallback to 1) config.pic.cache = ConfigOnOff(default=True) config.pic.lastDir = ConfigText(default=resolveFilename(SCOPE_MEDIA)) config.pic.infoline = ConfigOnOff(default=True) config.pic.loop = ConfigOnOff(default=True) config.pic.bgcolor = ConfigSelection(default="#00000000", choices = [("#00000000", _("black")),("#009eb9ff", _("blue")),("#00ff5a51", _("red")), ("#00ffe875", _("yellow")), ("#0038FF48", _("green"))]) config.pic.textcolor = ConfigSelection(default="#0038FF48", choices = [("#00000000", _("black")),("#009eb9ff", _("blue")),("#00ff5a51", _("red")), ("#00ffe875", _("yellow")), ("#0038FF48", _("green"))]) config.pic.thumbDelay = ConfigInteger(default=500, limits=(0,999)) def setPixmap(dest, ptr, scaleSize, aspectRatio): if scaleSize.isValid() and aspectRatio.isValid(): pic_scale_size = ptr.size().scale(scaleSize, aspectRatio) dest_size = dest.getSize() dest_width = dest_size.width() dest_height = dest_size.height() pic_scale_width = pic_scale_size.width()
config.plugins.growlee.hosts.append(s) return s i = 0 while i < growlee.hostcount.value: addHost(str(i + 1)) i += 1 # XXX: change to new config format # NOTE: after some time, remove this and hardcode default length to 1 # since internally we assume to have at least 1 host configured if growlee.hostcount.value == 0: growlee.enable_outgoing = ConfigYesNo(default=False) growlee.enable_incoming = ConfigYesNo(default=False) growlee.address = ConfigText(fixed_size=False) growlee.password = ConfigPassword() password = growlee.password.value growlee.prowl_api_key = ConfigText() growlee.protocol = ConfigSelection(default="growl", choices=[("growl", "Growl"), ("snarl", "Snarl"), ("prowl", "Prowl")]) growlee.level = ConfigSelection(default="-1", choices=[("-1", _("Low (Yes/No)")), ("0", _("Normal (Information)")), ("1", _("High (Warning)")), ("2", _("Highest (Emergency)"))]) growlee.blacklist = ConfigSet(choices=[]) if growlee.protocol.value == "prowl": password = growlee.prowl_api_key.value
dom_skins.append((mpath, xml.etree.cElementTree.parse(filename).getroot())) # we do our best to always select the "right" value # skins are loaded in order of priority: skin with # highest priority is loaded last, usually the user-provided # skin. # currently, loadSingleSkinData (colors, bordersets etc.) # are applied one-after-each, in order of ascending priority. # the dom_skin will keep all screens in descending priority, # so the first screen found will be used. # example: loadSkin("nemesis_greenline/skin.xml") config.skin = ConfigSubsection() config.skin.primary_skin = ConfigText(default="skin.xml") profile("LoadSkin") try: loadSkin('skin_user_display.xml', SCOPE_CONFIG) except (SkinError, IOError, AssertionError), err: print "not loading display user skin: ", err try: loadSkin('skin_user.xml', SCOPE_CONFIG) except (SkinError, IOError, AssertionError), err: print "not loading user skin: ", err try: loadSkin(config.skin.primary_skin.value) except (SkinError, IOError, AssertionError), err:
from Screens.MessageBox import MessageBox from Components.config import config, ConfigSelection, ConfigYesNo, getConfigListEntry, ConfigSubsection, ConfigText from Components.ConfigList import ConfigListScreen from Components.NimManager import nimmanager from Components.Label import Label from Components.Pixmap import Pixmap from Components.ProgressBar import ProgressBar from Components.ServiceList import refreshServiceList from Components.ActionMap import ActionMap from enigma import eFastScan, eDVBFrontendParametersSatellite, eTimer import os config.misc.fastscan = ConfigSubsection() config.misc.fastscan.last_configuration = ConfigText(default="()") config.misc.fastscan.auto = ConfigYesNo(default=True) class FastScanStatus(Screen): skin = """ <screen position="150,115" size="420,180" title="Fast Scan"> <widget name="frontend" pixmap="skin_default/icons/scan-s.png" position="5,5" size="64,64" transparent="1" alphatest="on" /> <widget name="scan_state" position="10,120" zPosition="2" size="400,30" font="Regular;18" /> <widget name="scan_progress" position="10,155" size="400,15" pixmap="skin_default/progress_big.png" borderWidth="2" borderColor="#cccccc" /> </screen>""" def __init__(self, session, scanTuner=0, transponderParameters=None,
import time import random try: import simplejson as json except Exception: import json ################################################### ################################################### # E2 GUI COMMPONENTS ################################################### from Plugins.Extensions.IPTVPlayer.components.asynccall import MainSessionWrapper from Screens.MessageBox import MessageBox ################################################### config.plugins.iptvplayer.tvpvod_premium = ConfigYesNo(default=False) config.plugins.iptvplayer.tvpvod_login = ConfigText(default="", fixed_size=False) config.plugins.iptvplayer.tvpvod_password = ConfigText(default="", fixed_size=False) config.plugins.iptvplayer.tvpVodProxyEnable = ConfigYesNo(default=False) config.plugins.iptvplayer.tvpVodDefaultformat = ConfigSelection( default="590000", choices=[("360000", "320x180"), ("590000", "398x224"), ("820000", "480x270"), ("1250000", "640x360"), ("1750000", "800x450"), ("2850000", "960x540"), ("5420000", "1280x720"), ("6500000", "1600x900"), ("9100000", "1920x1080")]) config.plugins.iptvplayer.tvpVodUseDF = ConfigYesNo(default=True) config.plugins.iptvplayer.tvpVodNextPage = ConfigYesNo(default=True) config.plugins.iptvplayer.tvpVodPreferedformat = ConfigSelection( default="mp4", choices=[("mp4", "MP4"), ("m3u8", "HLS/m3u8")])
# -*- coding: utf-8 -*- from Plugins.Extensions.IPTVPlayer.components.ihost import CHostBase, CBaseHostClass, RetHost from Plugins.Extensions.IPTVPlayer.tools.iptvtools import printDBG, printExc, MergeDicts from Plugins.Extensions.IPTVPlayer.tools.iptvtypes import strwithmeta from Plugins.Extensions.IPTVPlayer.libs.urlparser import urlparser from Plugins.Extensions.IPTVPlayer.libs.urlparserhelper import getDirectM3U8Playlist from datetime import datetime, tzinfo, timedelta, date import time import random try: import json except Exception: import simplejson as json from Components.config import config, ConfigText, ConfigSelection, ConfigYesNo, getConfigListEntry config.plugins.iptvplayer.shortcut_login = ConfigText(default='', fixed_size=False) config.plugins.iptvplayer.shortcut_password = ConfigText(default='', fixed_size=False) config.plugins.iptvplayer.shortcut_quality = ConfigSelection(default = "hd", choices = [ ("hd", "hd"), ("hq", "hq"), ("mq", "mq"), ("lq", "lq") ]) config.plugins.iptvplayer.shortcut_token = ConfigText(default='', fixed_size=False) config.plugins.iptvplayer.shortcut_uid = ConfigText(default='', fixed_size=False) config.plugins.iptvplayer.shortcut_last_loggin = ConfigText(default='', fixed_size=False) def GetConfigList(): optionList = [] optionList.append(getConfigListEntry("login:"******"password:"******"quality:", config.plugins.iptvplayer.shortcut_quality)) return optionList
from Components.config import config, ConfigSelection, ConfigYesNo, ConfigText, getConfigListEntry ################################################### ################################################### # E2 GUI COMMPONENTS ################################################### from Plugins.Extensions.IPTVPlayer.icomponents.asynccall import MainSessionWrapper, iptv_js_execute from Plugins.Extensions.IPTVPlayer.icomponents.iptvmultipleinputbox import IPTVMultipleInputBox from Screens.MessageBox import MessageBox ################################################### ################################################### # Config options for HOST ################################################### config.plugins.iptvplayer.efilmytv_login = ConfigText(default = "", fixed_size = False) config.plugins.iptvplayer.efilmytv_password = ConfigText(default = "", fixed_size = False) def GetConfigList(): optionList = [] optionList.append(getConfigListEntry(_("login")+":", config.plugins.iptvplayer.efilmytv_login)) optionList.append(getConfigListEntry(_("password")+":", config.plugins.iptvplayer.efilmytv_password)) return optionList ################################################### def gettytul(): return 'http://www.efilmy.tv/' class EFilmyTv(CBaseHostClass): def __init__(self):
from Plugins.Plugin import PluginDescriptor from Components.ActionMap import ActionMap from Components.Sources.StaticText import StaticText from Components.config import config, configfile, ConfigSubsection, ConfigIP, ConfigText, ConfigInteger, ConfigYesNo, ConfigSelection, ConfigClock, NoSave, ConfigNumber from Screens.Setup import Setup from Components.SystemInfo import SystemInfo from Screens.MessageBox import MessageBox # for are you sure questions after config changes from ChannelsImporter import ChannelsImporter from scheduler import autostart config.plugins.ChannelsImporter = ConfigSubsection() config.plugins.ChannelsImporter.ip = ConfigIP(default=[0, 0, 0, 0]) config.plugins.ChannelsImporter.username = ConfigText(default="root", fixed_size=False) config.plugins.ChannelsImporter.password = ConfigText(default="", fixed_size=False) config.plugins.ChannelsImporter.port = ConfigInteger(21, (0, 65535)) config.plugins.ChannelsImporter.passive = ConfigYesNo(False) config.plugins.ChannelsImporter.importEPG = ConfigYesNo(False) config.plugins.ChannelsImporter.retrycount = NoSave(ConfigNumber(default=0)) config.plugins.ChannelsImporter.nextscheduletime = NoSave( ConfigNumber(default=0)) config.plugins.ChannelsImporter.importOnRestart = ConfigYesNo(False) config.plugins.ChannelsImporter.enableSchedule = ConfigYesNo(False) config.plugins.ChannelsImporter.extensions = ConfigYesNo(default=False) config.plugins.ChannelsImporter.setupFallback = ConfigYesNo(default=False) config.plugins.ChannelsImporter.scheduleRepeatInterval = ConfigSelection( default="daily", choices=[("2", _("Every 2 minutes (for testing)")),
choices=[("base", _("Base")), ("beyonddreams", _("Beyond Dreams")), ("validator", _("Validator")), ("shadow", _("Magic Shadow")), ("shadow2", _("New Shadow")), ("glas", _("Glas")), ("metalpad", _("Metal Pad")), ("vision", _("New Vision")), ("atlantis", _("Atlantis")), ("avalon", _("Avalon")), ("blues", _("Blues of dream"))]) config.plugins.valiXDsetup.ChannSelector = ConfigSelection( default="simple", choices=[("simple", _("Simple")), ("full", _("Full")), ("full-vert", _("Full-vertical")), ("full-hor", _("Full-horizontal")), ("pig", _("with PiG"))]) config.plugins.valiXDsetup.dmType = ConfigSelection( default="800", choices=[("800", _("DM-800 Simple")), ("8000", _("DM-8000 Full")), ("verysimple", _("Very simple"))]) config.plugins.valiXDsetup.BG = ConfigText(default="18111112", fixed_size=8) config.plugins.valiXDsetup.FG = ConfigText(default="f0f0f0", fixed_size=6) config.plugins.valiXDsetup.secondBG = ConfigText(default="18071230", fixed_size=8) config.plugins.valiXDsetup.secondFG = ConfigText(default="fcc000", fixed_size=6) config.plugins.valiXDsetup.selBG = ConfigText(default="08303240", fixed_size=8) config.plugins.valiXDsetup.selFG = ConfigText(default="fcc000", fixed_size=6) config.plugins.valiXDsetup.pollTime = ConfigInteger(default=15, limits=(3, 60)) def main(session, **kwargs): if fileExists("/usr/share/enigma2/Vali-XD/skin.xml"): session.open(XDsetup) else: #session.open(MessageBox,_("Vali-XD skin not installed.\nWe have nothing to control."), MessageBox.TYPE_INFO)
config.plugins.merlinEpgCenter.selectRunningService = ConfigYesNo(True) config.plugins.merlinEpgCenter.replaceInfobarEpg = ConfigYesNo(False) config.plugins.merlinEpgCenter.replaceInfobarChannelUp = ConfigSelection( default="-1", choices=TAB_CHOICES) config.plugins.merlinEpgCenter.replaceInfobarChannelDown = ConfigSelection( default="-1", choices=TAB_CHOICES) config.plugins.merlinEpgCenter.replaceShowEventView = ConfigSelection( default="-1", choices=TAB_CHOICES) 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')), ]) 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=[])) config.plugins.merlinEpgCenter.limitSearchToBouquetServices = ConfigYesNo( False)
"requestvendor": _("Request for vendor report"), "osdnamerequest": _("OSD name request"), "activity": _("Any activity"), }, default="streamrequest") config.hdmicec.tv_wakeup_command = ConfigSelection(choices={ "imageview": _("Image View On"), "textview": _("Text View On"), }, default="imageview") config.hdmicec.fixed_physical_address = ConfigText(default="0.0.0.0") config.hdmicec.volume_forwarding = ConfigYesNo(default=False) config.hdmicec.control_receiver_wakeup = ConfigYesNo(default=False) config.hdmicec.control_receiver_standby = ConfigYesNo(default=False) config.hdmicec.handle_deepstandby_events = ConfigYesNo(default=False) choicelist = [] for i in (10, 50, 100, 150, 250, 500, 750, 1000): choicelist.append(("%d" % i, _("%d ms") % i)) config.hdmicec.minimum_send_interval = ConfigSelection( default="0", choices=[("0", _("Disabled"))] + choicelist) choicelist = [] for i in [3] + list(range(5, 65, 5)): choicelist.append(("%d" % i, _("%d sec") % i)) config.hdmicec.repeat_wakeup_timer = ConfigSelection( default="3", choices=[("0", _("Disabled"))] + choicelist) config.hdmicec.debug = ConfigSelection(default="0",
import simplejson as json except Exception: import json ################################################### ################################################### # E2 GUI COMMPONENTS ################################################### from Screens.MessageBox import MessageBox ################################################### ################################################### # Config options for HOST ################################################### config.plugins.iptvplayer.Chomikuj_folder = ConfigText(default="", fixed_size=False) config.plugins.iptvplayer.Chomikuj_password = ConfigText(default="", fixed_size=False) config.plugins.iptvplayer.Chomikuj_login = ConfigText(default="", fixed_size=False) def GetConfigList(): optionList = [] optionList.append( getConfigListEntry("Folder startu", config.plugins.iptvplayer.Chomikuj_folder)) optionList.append( getConfigListEntry("Nazwa chomika (login)", config.plugins.iptvplayer.Chomikuj_login))
class LastFMConfigScreen(ConfigListScreen, Screen): config.plugins.LastFM = ConfigSubsection() config.plugins.LastFM.name = ConfigText(default=_("Last.FM")) skin = """ <screen position="center,center" size="600,480" title="%s" > <widget name="config" position="10,0" size="580,400" scrollbarMode="showOnDemand" /> <widget name="buttonred" position="10,430" size="140,40" valign=\"center\" halign=\"center\" zPosition=\"2\" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" font=\"Regular;18\" /> <widget name="buttongreen" position="150,430" size="140,40" valign=\"center\" halign=\"center\" zPosition=\"2\" transparent="1" foregroundColor="white" shadowColor="black" shadowOffset="-1,-1" font=\"Regular;18\"/> <ePixmap pixmap="skin_default/buttons/red.png" position="10,430" zPosition="1" size="140,40" transparent="1" alphatest="on" /> <ePixmap pixmap="skin_default/buttons/green.png" position="150,430" zPosition="1" size="140,40" transparent="1" alphatest="on" /> </screen>""" % ( config.plugins.LastFM.name.value + " " + _("Setup") # title ) def __init__(self, session, args=0): self.session = session Screen.__init__(self, session) self.list = [ getConfigListEntry(_("Show in (needs GUI restart)"), config.plugins.LastFM.menu), getConfigListEntry(_("Name (needs GUI restart)"), config.plugins.LastFM.name), getConfigListEntry(_("Description"), config.plugins.LastFM.description), getConfigListEntry(_("Last.FM Username"), config.plugins.LastFM.username), getConfigListEntry(_("Password"), config.plugins.LastFM.password), getConfigListEntry(_("Send now playing Audio Tracks"), config.plugins.LastFM.sendSubmissions), getConfigListEntry(_("Use LastFM Proxy"), config.plugins.LastFM.useproxy), getConfigListEntry(_("LastFM Proxy port"), config.plugins.LastFM.proxyport), getConfigListEntry(_("Recommendation level"), config.plugins.LastFM.recommendedlevel), getConfigListEntry(_("Show Coverart"), config.plugins.LastFM.showcoverart), getConfigListEntry(_("Timeout Statustext (seconds)"), config.plugins.LastFM.timeoutstatustext), getConfigListEntry(_("Timeout to select a Tab (seconds)"), config.plugins.LastFM.timeouttabselect), getConfigListEntry(_("Interval to refresh Metadata (seconds)"), config.plugins.LastFM.metadatarefreshinterval), getConfigListEntry(_("Use Screensaver"), config.plugins.LastFM.sreensaver.use), getConfigListEntry(_("Wait before Screensaver (seconds)"), config.plugins.LastFM.sreensaver.wait), getConfigListEntry(_("Show Coverart in Screensaver"), config.plugins.LastFM.sreensaver.showcoverart), getConfigListEntry( _("Show Coverart Animation in Screensaver"), config.plugins.LastFM.sreensaver.coverartanimation), getConfigListEntry(_("Speed for Coverart Animation"), config.plugins.LastFM.sreensaver.coverartspeed), getConfigListEntry( _("Interval for Coverart Animation"), config.plugins.LastFM.sreensaver.coverartinterval), ] ConfigListScreen.__init__(self, self.list) self["buttonred"] = Label(_("Cancel")) self["buttongreen"] = Label(_("OK")) self["setupActions"] = ActionMap( ["SetupActions"], { "green": self.save, "red": self.cancel, "save": self.save, "cancel": self.cancel, "ok": self.save, }, -2) def save(self): print("saving") for x in self["config"].list: x[1].save() self.close(True) def cancel(self): print("cancel") for x in self["config"].list: x[1].cancel() self.close(False)
from Components.Network import iNetwork from Plugins.Plugin import PluginDescriptor from enigma import eTimer, eEnv, eConsoleAppContainer, eEPGCache from Tools.Directories import * from os import system, popen, path, makedirs, listdir, access, stat, rename, remove, W_OK, R_OK from time import gmtime, strftime, localtime, sleep 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('/'):
from pythonwifi.iwlibs import getNICnames, Wireless, Iwfreq, getWNICnames from pythonwifi import flags as wififlags list = [] list.append("Unencrypted") list.append("WEP") list.append("WPA") list.append("WPA/WPA2") list.append("WPA2") weplist = [] weplist.append("ASCII") weplist.append("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)) def getWlanConfigName(iface): return '/etc/wpa_supplicant.' + iface + '.conf' class Wlan: def __init__(self, iface=None): self.iface = iface self.oldInterfaceState = None
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/', '/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/vtuner.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/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/share/enigma2/display/skin_display_usr.xml', '/usr/share/enigma2/display/userskin.png', '/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', '/usr/bin/enigma2_pre_start.sh', eEnv.resolve("${datadir}/enigma2/keymap.usr"), eEnv.resolve("${datadir}/enigma2/keymap_usermod.xml")]\ +eEnv_resolve_multi("${sysconfdir}/opkg/*-secret-feed.conf")\ +eEnv_resolve_multi("${datadir}/enigma2/*/mySkin_off/*.xml")\ +eEnv_resolve_multi("${datadir}/enigma2/*/mySkin/*.xml")\ +eEnv_resolve_multi("${datadir}/enigma2/*/skin_user_*.xml")\ +eEnv_resolve_multi("/usr/bin/*cam*")\ +eEnv_resolve_multi("/etc/*.emu")\ +eEnv_resolve_multi("${sysconfdir}/cron*")\ +eEnv_resolve_multi("${sysconfdir}/init.d/softcam*")\ +eEnv_resolve_multi("${sysconfdir}/init.d/cardserver*")\ +eEnv_resolve_multi("${sysconfdir}/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