def __init__(self, onServiceCB): self.onServiceCB = onServiceCB self.visiblekey = uuid.uuid4() self.label = '' self.control = ButtonControl( Tag('label', self.label), Tag('visible', visiblecondition(self.visiblekey))) self.control.onClick = self._onClick
def onInit(self): char_set = string.ascii_lowercase self.key = ''.join(random.sample(char_set, 6)) self.keyupdateall = '%sall' % self.key self.nbUpdate = 10 self.nbcanbeupdate = 0 self.updates = [] for i in range(self.nbUpdate): self.updates.append({}) keynoupdate = '' for i, update in enumerate(self.updates): xbmc.executebuiltin('Skin.Reset(%s%d)' % (self.key, i)) update['name'] = ButtonControl( Tag('visible', 'skin.hasSetting(%s%d)' % (self.key, i))) update['name'].onClick = lambda update: self.onUpdateClick( self.getCurrentUpdate(update)) self.addControl(update['name']) keynoupdate += '!Control.IsVisible(%d) + ' % update['name'].getId() keynoupdate = keynoupdate[:-3] xbmc.executebuiltin('Skin.Reset(%s)' % (self.keyupdateall)) self.udpateAll = ButtonControl( Tag('label', 'Update all'), Tag('visible', 'skin.hasSetting(%s)' % (self.keyupdateall))) self.udpateAll.onClick = lambda updateall: self.onUpdateAll() self.addControl(self.udpateAll) self.udpateNo = ButtonControl(Tag('label', 'Up-to-date'), Tag('visible', '%s' % keynoupdate)) self.addControl(self.udpateNo)
class hostname(Setting): CONTROL = ButtonControl(Tag('label', 'Hostname'), Tag('visible', 'skin.hasSetting(advancedmode)')) DIALOGHEADER = "Hostname" ERRORTEXT = "Error updating" OKTEXT = "Update ok" BADUSERENTRYTEXT = "You used invalid characters in the new hostname" def getUserValue(self): return getText(self.DIALOGHEADER, self.getControlValue()) def checkUserValue(self, value): return value.isalnum() def getXbianValue(self): licenseValue = xbianConfig('hostname', 'select') if licenseValue: return licenseValue[0] else: return '' def setXbianValue(self, value): rc = xbianConfig('hostname', 'update', value) ok = True if not rc: ok = False elif rc[0] != '1': ok = False return ok
class sshroot(Setting): CONTROL = RadioButtonControl( Tag('label', 'Allow SSH root login'), Tag('visible', 'skin.hasSetting(advancedmode)')) DIALOGHEADER = "SSH root" ERRORTEXT = "Error on updating" OKTEXT = "Update ok" def getUserValue(self): return str(self.getControlValue()) def setControlValue(self, value): if value == '1': value = True else: value = False self.control.setValue(value) def getXbianValue(self): rc = xbianConfig('sshroot', 'status') return rc[0] def setXbianValue(self, value): if value == '1': cmd = 'enable' else: cmd = 'disable' rc = xbianConfig('sshroot', cmd) ok = True if not rc: ok = False elif rc[0] != '1': ok = False return ok
class rootpwd(Setting): CONTROL = ButtonControl(Tag('label', 'root password'), Tag('visible', 'skin.hasSetting(advancedmode)')) DIALOGHEADER = "User root password" ERRORTEXT = "Error updating" OKTEXT = "Update ok" BADUSERENTRYTEXT = "Passwords don't match" def onInit(self): self.forceUpdate = True self.password = None self.key = 'rootpass' def checkUserValue(self, value): return self.password == self.confirmpwd def getUserValue(self): self.password = getText(self.DIALOGHEADER, hidden=True) self.confirmpwd = getText('Confirm ' + self.DIALOGHEADER, hidden=True) return '*****' def getXbianValue(self): return '*****' def setXbianValue(self, value): rc = xbianConfig(self.key, 'update', self.password) ok = True if not rc: ok = False elif rc[0] != '1': ok = False return ok
def onInit(self): self.sambaType = SpinControlex(Tag('label', 'samba')) self.addControl(self.sambaType) self.sambamode = SERVICE_TYPES for mode in self.sambamode: content = Content(Tag('label', mode), defaultSKin=False) self.sambaType.addContent(content)
def __init__(self, onPackageCB): self.onPackageCB = onPackageCB self.visiblekey = uuid.uuid4() self.label = 'Not Loaded' # Tag('enable','!skin.hasSetting(%s)'%SKINVARAPTRUNNIG) self.control = ButtonControl( Tag('label', self.label), Tag('visible', visiblecondition(self.visiblekey))) self.control.onClick = self._onClick
def onInit(self): self.initramfsMode = SpinControlex(Tag('label', _('Use of initramfs'))) self.addControl(self.initramfsMode) self.initramfsmode = INITRAMFS_MODES for mode in self.initramfsmode: content = Content(Tag('label', mode), defaultSKin=False) self.initramfsMode.addContent(content)
class xbianpwd(rootpwd): CONTROL = ButtonControl(Tag('label', 'xbian password'), Tag('visible', 'skin.hasSetting(advancedmode)')) DIALOGHEADER = "User xbian Password" def onInit(self): self.forceUpdate = True self.password = None self.key = 'xbianpass'
def preInit(self): self.kernel = xbianConfig('kernel', 'capability') if self.kernel[1] == '1': self.CONTROL = RadioButtonControl( Tag('label', _('Install 32-bit Kernel (armv7l)')), AARCH64) self.DIALOGHEADER = _('Install 32-bit Kernel (armv7l)') else: self.CONTROL = RadioButtonControl( Tag('label', _('Install 64-bit Kernel (aarch64)')), AARCH64) self.DIALOGHEADER = _('Install 64-bit Kernel (aarch64)')
def __init__(self, *args, **kwargs): self.id = next(id_generator) self.hasfocus = False # set available tags for this control self.availabletags = () if self.COMMON: self.availabletags += self.common_tag if self.FOCUSABLE: self.availabletags += self.focusable_tag if self.ACTION: self.availabletags += self.action_tag self.availabletags += self.additional_tag self.tags = {} # set default tag if necessary SKIN_DIR = xbmc.getSkinDir() if SKIN_DIR == 'skin.estouchy': currentSkinSetting = skinSettingEstouchy currentProperties = [ {'key' : 'colordiffuse', 'value' : 'FF12B2E7' } ] width = 1076 radioposx = 962 elif SKIN_DIR == 'skin.estuary': currentSkinSetting = skinSettingEstuary currentProperties = [ {'key' : 'colordiffuse', 'value' : 'button_focus' } ] if os.path.isfile(WIZ_FILE): width = 1348 radioposx = 1218 else: width = 1450 radioposx = 1320 else: currentSkinSetting = defaultSkinSetting currentProperties = None width = 750 if 'defaultSKin' not in kwargs or kwargs['defaultSKin'] == True: for default in currentSkinSetting: if default in self.availabletags: if default == 'texturefocus': xbmcxml.setTag(self, Tag(default, currentSkinSetting[default], currentProperties)) elif default == 'width': xbmcxml.setTag(self, Tag(default, width, currentProperties)) elif default == 'radioposx': xbmcxml.setTag(self, Tag(default, radioposx, currentProperties)) else: xbmcxml.setTag(self, Tag(default, currentSkinSetting[default])) # set tag from args for tag in args: if tag.getKey() in self.availabletags: xbmcxml.setTag(self, tag) self.onInit()
def onInit(self): if getHiddenHints() == 0: self.enableHints = ButtonControl( Tag('label', _('Enable all Hints')), Tag('visible', 'False')) else: self.enableHints = ButtonControl( Tag('label', _('Enable all Hints')), Tag('visible', '!%s' % (visiblecondition('hideresethints'),))) self.enableHints.onClick = lambda enablehints: self.enableAllHints() self.addControl(self.enableHints)
def onInit(self): self.autodaily = RadioButtonControl(Tag('label', self.LABEL)) self.addControl(self.autodaily) self.multiDelta = MultiSettingControl( Tag('visible', 'SubString(Control.GetLabel(%d),*)' % self.autodaily.getId())) self.countdaily = ButtonControl( Tag('label', ' -%s' % (_('Number of snapshot to keep'), ))) self.countdaily.onClick = lambda count: self.countdaily.setValue( getNumeric(_('Number of snapshot to keep'), self.countdaily.getValue(), 1, 1000)) self.multiDelta.addControl(self.countdaily) self.addControl(self.multiDelta)
def onInit(self): self.AutoInventory = RadioButtonControl( Tag('label', _('Auto update package inventory'))) self.addControl(self.AutoInventory) self.AutoInventoryProperty = MultiSettingControl( Tag( 'visible', 'SubString(Control.GetLabel(%d),*)' % self.AutoInventory.getId())) self.delay = ButtonControl( Tag('label', ' - %s' % (_('interval (days)'), ))) self.delay.onClick = lambda delay: self.delay.setValue( getNumeric(_('interval (days)'), self.delay.getValue(), 1, 365)) self.AutoInventoryProperty.addControl(self.delay) self.addControl(self.AutoInventoryProperty)
def onInit(self): self.services = [] self.initialiseIndex = 0 self.flagRemove = False self.onService = None self.onCustom = None for i in range(MAXGUISERVICE): self.services.append(Service(self._onService)) self.addControl(self.services[-1].getControl()) self.addControl(CategoryLabelControl(Tag('label', _('Edit')), ADVANCED)) self.addCustomBtn = ButtonControl( Tag('label', _('Add a custom service')), ADVANCED) self.addCustomBtn.onClick = self._onCustom self.addControl(self.addCustomBtn)
def onInit(self): self.spinDownEnable = RadioButtonControl( Tag('label', _('Spin Down HDD'))) self.addControl(self.spinDownEnable) self.spinDownProperty = MultiSettingControl( Tag( 'visible', 'SubString(Control.GetLabel(%d),*)' % (self.spinDownEnable.getId(), ))) self.delay = ButtonControl( Tag('label', ' - %s' % (_('delay (min)'), ))) self.delay.onClick = lambda delay: self.delay.setValue( getNumeric(_('delay (min)'), self.delay.getValue(), 0, 20)) self.spinDownProperty.addControl(self.delay) self.addControl(self.spinDownProperty)
def _createControl(self): self.LabelPackageControl = CategoryLabelControl( Tag('label', '%s [COLOR lightblue](%d/%d)[/COLOR]' % (self.name, self.preinstalled, self.available))) self.control.addControl(self.LabelPackageControl) for i in range(self.available): self.packageList.append(Package(self._onPackageCLick)) self.control.addControl(self.packageList[-1].getControl()) self.visiblegetmorekey = uuid.uuid4() self.getMoreControl = ButtonControl( Tag('label', _('Get more...')), Tag('visible', visiblecondition(self.visiblegetmorekey)), Tag('enable', '!%s' % (visiblecondition(SKINVARAPTRUNNIG), ))) self.getMoreControl.onClick = self._ongetMoreClick self.control.addControl(self.getMoreControl)
class AccountLabel(Setting): CONTROL = CategoryLabelControl( Tag('label', 'Account'), Tag('visible', 'skin.hasSetting(advancedmode)')) def onInit(self): #check if advanced mode is set #must check here and not in preference since value are read one by one when plugin start. #and this setting is read before preference - advanced mode key = 'advancedmode' rc = self.getSetting(key) if rc == '1': xbmc.executebuiltin('Skin.SetBool(%s)' % key) else: xbmc.executebuiltin('Skin.Reset((%s)' % key)
class advancedMode(Setting): CONTROL = RadioButtonControl(Tag('label', 'Advanced mode')) DIALOGHEADER = "Advanced Mode" ERRORTEXT = "Error on updating" OKTEXT = "Update ok" def onInit(self): self.key = 'advancedmode' def getUserValue(self): return str(self.getControlValue()) def setControlValue(self, value): if value == '1': value = True else: value = False self.control.setValue(value) def getXbianValue(self): rc = self.getSetting(self.key) if rc == '1': xbmc.executebuiltin('Skin.SetBool(%s)' % self.key) else: xbmc.executebuiltin('Skin.Reset(%s)' % self.key) return rc def setXbianValue(self, value): self.setSetting(self.key, str(value)) xbmc.executebuiltin('Skin.ToggleSetting(%s)' % self.key) return True
class rootpwd(Setting): CONTROL = ButtonControl(Tag('label', _('Root password')), ADVANCED) DIALOGHEADER = _('Password:'******'root password successfully changed') BADUSERENTRYTEXT = _("Passwords didn't match") def onInit(self): self.forceUpdate = True self.password = None self.key = 'rootpass' def checkUserValue(self, value): return self.password == self.confirmpwd def getUserValue(self): self.password = getText(self.DIALOGHEADER, hidden=True) self.confirmpwd = getText(self.DIALOGHEADER, hidden=True) return '*****' def getXbianValue(self): return '*****' def setXbianValue(self, value): rc = xbianConfig(self.key, 'update', self.password) ok = True if not rc: ok = False elif rc[0] != '1': ok = False return ok
class kernel(Setting): CONTROL = SpinControlex(Tag('label', _('Kernel')), ADVANCED) DIALOGHEADER = '%s %s' % (_('Kernel'), _('Version')) OKTEXT = _('Successfully switched kernel versions') SAVEMODE = Setting.ONUNFOCUS def onInit(self): kernellist = xbianConfig('kernel', 'list') for kernel in kernellist: content = Content(Tag('label', kernel), defaultSKin=False) self.control.addContent(content) def getUserValue(self): return self.control.getValue() def getXbianValue(self): kernelVersion = xbianConfig('kernel', 'select') if kernelVersion: return kernelVersion[0] else: return '' def setXbianValue(self, value): rc = xbianConfig('kernel', 'update', value) ok = True if not rc: ok = False elif rc[0] != '1': if rc[0] in ('-1', '-3'): self.ERRORTEXT = _('An unexpected error occurred') elif rc[0] == '-2': self.ERRORTEXT = _("You're already running this " "kernel version") ok = False return ok
class sshroot(Setting): CONTROL = RadioButtonControl(Tag('label', _('SSH root login')), ADVANCED) DIALOGHEADER = _('SSH root login') def getUserValue(self): return str(self.getControlValue()) def setControlValue(self, value): self.control.setValue(value) def getXbianValue(self): rc = xbianConfig('sshroot', 'status') return rc[0] def setXbianValue(self, value): if value == True or value == 'True' or value == '1': cmd = 'enable' else: cmd = 'disable' rc = xbianConfig('sshroot', cmd) ok = True if not rc: ok = False elif rc[0] != '1': ok = False return ok
class advancedMode(Setting): DIALOGHEADER = _('Advanced_mode') CONTROL = RadioButtonControl(Tag('label', DIALOGHEADER)) def onInit(self): self.key = 'advancedmode' def getUserValue(self): return str(self.getControlValue()) def setControlValue(self, value): self.control.setValue(value) def getXbianValue(self): rc = self.getSetting(self.key) if rc == '1' or rc == 1 or rc == True or rc == 'True': setvisiblecondition(self.key, True) else: setvisiblecondition(self.key, False) return rc def setXbianValue(self, value): # xbmc.executebuiltin('Skin.ToggleSetting(%s)'%self.key) setvisiblecondition(self.key, self.setSetting(self.key, value)) return True
class videooutput(Setting): CONTROL = videooutputControl( Tag('visible', 'skin.hasSetting(advancedmode)')) DIALOGHEADER = "Video output " ERRORTEXT = "Error on updating" OKTEXT = "Update ok" def onInit(self): self.listvalue = xbianConfig('videoflags', 'list') self.value = {} def getUserValue(self): return self.getControlValue() def getXbianValue(self): for value in self.listvalue: if not self.value.has_key(value): self.value[value] = xbianConfig('videoflags', 'select', value)[0] return self.value def setXbianValue(self, value): #set xbian config here for key in value: if value[key] != self.xbianValue[key]: rc = xbianConfig('videoflags', 'update', key, value[key]) self.DIALOGHEADER = key.replace('_', ' ').title() break if rc and rc[0] == '1': return True else: return False
class confirmonChange(advancedMode): CONTROL = RadioButtonControl(Tag('label', 'Ask confirmation before saving')) DIALOGHEADER = "Confirm Modification" def onInit(self): self.key = 'confirmationonchange'
class hostname(Setting): CONTROL = ButtonControl(Tag('label', _('Hostname')), ADVANCED) DIALOGHEADER = _('Hostname') OKTEXT = _('Hostname successfully changed') def getUserValue(self): return getText(self.DIALOGHEADER, self.getControlValue()) def checkUserValue(self, value): return value.isalnum() def getXbianValue(self): licenseValue = xbianConfig('hostname', 'select') if licenseValue: return licenseValue[0] else: return '' def setXbianValue(self, value): rc = xbianConfig('hostname', 'update', value) ok = True if not rc: ok = False elif rc[0] != '1': ok = False return ok
class xbianpwd(rootpwd): CONTROL = ButtonControl(Tag('label', _('XBian password'))) OKTEXT = _('xbian password successfully changed') def onInit(self): self.forceUpdate = True self.password = None self.key = 'xbianpass'
def toXml(self): xml = '' xml += '<item id="%d">\n' % self.id if not self.hasTag('onclick'): self.setTag(Tag('onclick', '-')) xml += xbmcxml.toXml(self) xml += '</item>\n' return xml
def __init__(self, queue, cbProgress=None): self.setTitle(self.TITLE) self.queue = queue self.settings = [] for i, setting in enumerate(self.SETTINGS): if cbProgress: cbProgress(self.TITLE, setting.DIALOGHEADER, int( float(100 / len(self.SETTINGS)) * i)) self.settings.append(setting()) # self.scrollbar = scrollbarControl(Tag('onright',9000),Tag('posx',1060),Tag('posy',60),Tag('width',25),Tag('height',530),Tag('visible','Container(9000).HasFocus(%d)'%self.Menucategory.getId()),Tag('showonepage','false')) self.category = GroupListControl(Tag('onleft', 9000), Tag('onright', 9000), Tag( 'itemgap', -1), Tag('visible', 'Container(9000).HasFocus(%d)' % self.Menucategory.getId()), defaultSKin=False) # self.scrollbar.setTag(Tag('onleft',self.category.getId())) for setting in self.settings: setting.addQueue(self.queue) self.category.addControl(setting.getControl()) self.onInit()
def onInit(self): self.videooutputlist = xbianConfig('videoflags', 'list', cache=True) self.videooutputcontrol = {} for videooutput in self.videooutputlist: self.videooutputcontrol[videooutput] = RadioButtonControl( Tag('label', _VIDEO_STRINGS[videooutput])) self.videooutputcontrol[ videooutput].onClick = lambda forwardclick: self.onClick(self) self.addControl(self.videooutputcontrol[videooutput])