예제 #1
0
 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
예제 #2
0
파일: 40_update.py 프로젝트: muyihx/xbian
    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)
예제 #3
0
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
예제 #4
0
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
예제 #5
0
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
예제 #6
0
    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)
예제 #9
0
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)')
예제 #11
0
    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)
예제 #13
0
 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)
예제 #14
0
 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)
예제 #15
0
 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)
예제 #16
0
 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)
예제 #18
0
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)
예제 #19
0
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
예제 #24
0
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
예제 #25
0
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])