All pastes #575969 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-06-19 09:04 UTC
rendered paste body
"""
    WindowSettings

    A WindowXML setup to handle the basis modifying the settings provided by the settings class

    Author: Sean Donnellan (Donno)  [darkdonno@gmail.com]
    Depends on: xbmcgui, xbmc, os
    Requires: A Setting and Language class passed to it

    How to Use:
        from windowsettings import WindowSettings
        class className(WindowSettings):
            def __init__(self,xmlName,thescriptPath,defaultName,forceFallback):
                WindowSettings.__init__(self, xmlName,thescriptPath,defaultName,forceFallback, scriptSettings, lang, __title__)
                
        # the point is u pass all the main info on as well as the settings and language classes and title
"""


import xbmcgui,traceback,XinBox_InfoDialog
import xbmc
import os
import xib_util



# Maybe make add inbox a dialog over the top of this account :-D


### Edit Account
##
##
class WindowSettings(xbmcgui.WindowXML):
    def __init__(self, xmlName, thescriptPath,defaultName,forceFallback, scriptSettings,language, title, account):
        self.account = account
        if self.account == "XinBoxDefault":
            self.newaccount = True
        else:self.newaccount = False
        
        self.title = title
        self.scriptPath = thescriptPath
        self.language = language.string

        self.theSettings = scriptSettings
        
        if self.newaccount:
            self.accountname = "-"
            self.accountpass = "-"
            self.defaultaccount = False
        else:
            self.accountSettings = self.getaccountsettings(self.account)
            self.accountinboxes = self.buildinboxdict(self.accountSettings)

    def buildinboxdict(self,accountsettings):
        self.inboxes = {} 
        for set in self.accountSettings.getSetting("Inboxes")[1] :
            self.inboxes[set[0]] = set[1]
        return self.inboxes

    def getinboxsettings(self,accountsettings,inbox):
        return accountsettings.getSettingInListbyname("Inboxes",inbox)

    def getaccountsettings(self,account):
        return self.theSettings.getSettingInListbyname("Accounts",account)

    
    def onInit(self):
        xbmcgui.lock()
        self.control_action = xib_util.setControllerAction()
        self.list2 = self.getControl(88)
        self.buttonids = [61,62,63,64]
        if self.newaccount:
            self.getControl(64).setEnabled(False)
            self.getControl(63).setEnabled(False)
            self.getControl(62).setEnabled(False)
            self.getControl(80).setLabel(self.language(50))
        else:
            self.getControl(80).setLabel(self.language(74))
            if self.accountSettings.getSetting(self.language(51)) == "-":
                self.getControl(64).setEnabled(False)
        self.builsettingsList()
        self.buildinboxlist()
        for ID in self.buttonids:
            self.getControl(ID).setLabel(self.language(ID))
        self.getControl(82).setLabel(self.language(20))
        self.getControl(83).setLabel(self.language(21))
        xbmcgui.unlock()
    
    def builsettingsList(self):
        if self.newaccount:
            self.addItem(self.SettingListItem(self.language(51),""))
            self.addItem(self.SettingListItem(self.language(52),self.language(76)))
            self.addItem(self.SettingListItem(self.language(53),""))
        else:
            for set in self.accountSettings.settings:
                if self.accountSettings.getSettingType(set) == "text" or self.accountSettings.getSettingType(set) == "boolean":
                    if set == self.language(52):
                        if self.accountSettings.getSetting(set) == "-":
                            self.addItem(self.SettingListItem(set, self.language(76)))
                        else:
                            self.addItem(self.SettingListItem(set, '*' * len(self.accountSettings.getSetting(set))))
                    else:
                        self.addItem(self.SettingListItem(set, self.accountSettings.getSetting(set)))

        
    def buildinboxlist(self):
        if self.newaccount:
            self.list2.addItem(self.SettingListItem(self.language(75), ""))
        else:
            for set in self.accountinboxes:
                if set != "XinBoxDefault":
                    self.list2.addItem(self.SettingListItem(set, ""))
            if self.list2.size() == 0:
                self.list2.addItem(self.SettingListItem(self.language(75), ""))
                self.getControl(63).setEnabled(False)
                self.getControl(62).setEnabled(False)

##        test = self.inboxes[self.getListItem(4).getLabel()]
##      # will be able to do: test = self.inboxes[self.getListItem(self.getCurrentListPosition()).getLabel()]  
##        print "test for inbox = " + str(test)

    def onAction( self, action ):
        button_key = self.control_action.get( action.getButtonCode(), 'n/a' )
        actionID   =  action.getId()
        try:focusid = self.getFocusId()
        except:focusid = 0
        if ( button_key == 'Keyboard ESC Button' or button_key == 'Back Button' or button_key == 'Remote Menu Button' ):
            self.close()
        elif ( button_key == 'Keyboard Menu Button' or button_key == 'Y Button' or button_key == 'Remote Title' ):
            if focusid == 51:
                self.launchinfo(105 + self.getCurrentListPosition(),self.getListItem(self.getCurrentListPosition()).getLabel())
            else:
                self.launchinfo(focusid+47,self.language(focusid))

    def onClick(self, controlID):
        if ( controlID == 51):
            curPos  = self.getCurrentListPosition()
            curItem = self.getListItem(curPos)
            curName = curItem.getLabel()
            curName2 = curItem.getLabel2()
            if self.newaccount:
                if curName == self.language(51):
                    value = self.showKeyboard(self.language(66) % curName,curName2)
                    if value != "":
                        self.accountname = value
                        curItem.setLabel2(value)
                        self.getControl(64).setEnabled(True)
                elif curName == self.language(52):
                    value = self.showKeyboard(self.language(66) % curName,"",1)
                    if value == "":
                        self.accountpass = "-"
                        curItem.setLabel2(self.language(76))
                    else:
                        self.accountpass = value
                        curItem.setLabel2('*' * len(value))
                elif curName == self.language(53):
                    self.defaultaccount = not self.defaultaccount
                    self.getControl(104).setSelected(self.defaultaccount)
            else:
                type = self.accountSettings.getSettingType(curName)
                if (type == "text"):
                    if curName == self.language(51):
                        value = self.showKeyboard(self.language(66) % curName,curName2)
                        if value != "":
                            curItem.setLabel2(value)
                            self.accountSettings.setSetting(curName,value)
                            self.theSettings.setSettingnameInList("Accounts",curName2,value)
                            self.getControl(64).setEnabled(True)
                    elif curName == self.language(52):
                        value = self.showKeyboard(self.language(66) % curName,"",1)
                        if value == "":
                            self.accountSettings.setSetting(curName,"-")
                            curItem.setLabel2(self.language(76))
                        else:
                            self.accountSettings.setSetting(curName,value)
                            curItem.setLabel2('*' * len(value))                            
                elif (type == "boolean"):
                    self.defaultaccount = not self.defaultaccount
                    self.getControl(104).setSelected(self.defaultaccount)
                    self.accountSettings.setSetting(curName,str(self.defaultaccount))
        elif ( controlID == 64):
            if self.newaccount:
                self.Addsetting("Accounts",self.accountname)
                self.accountSettings = self.getaccountsettings(self.accountname)
                self.accountSettings.setSetting(self.language(51),self.accountname)
                self.accountSettings.setSetting(self.language(52),self.accountpass)
                self.accountSettings.setSetting(self.language(53),str(self.defaultaccount))
            self.theSettings.saveXMLfromArray()
            self.close()

    def addnewItem(self, settingname,value1,value2="",type="text"):
        self.theSettings.addSettingInList(settingname,value1,value2,"settings")
        return

    def onFocus(self, controlID):
        pass

    def showKeyboard(self, heading,default=""):
        # Open the Virutal Keyboard.
        keyboard = xbmc.Keyboard(default,heading)
        keyboard.doModal()
        if (keyboard.isConfirmed()):
            return keyboard.getText()
        else:
            return default
        
    def SettingListItem(self, label1,label2):
        if label2 == "True":
            self.defaultaccount = True
            self.getControl(104).setSelected(self.defaultaccount)
            return xbmcgui.ListItem(label1,"","","")
        elif label2 == "False":
            self.defaultaccount = False
            self.getControl(104).setSelected(self.defaultaccount)
            return xbmcgui.ListItem(label1,"","","")
        else:
            return xbmcgui.ListItem(label1,label2,"","")

    def showKeyboard(self, heading,default="",hidden=0):
        # Open the Virutal Keyboard.
        keyboard = xbmc.Keyboard(default,heading)
        if hidden == 1:keyboard.setHiddenInput(True)
        keyboard.doModal()
        if hidden == 1:keyboard.setHiddenInput(False)
        if (keyboard.isConfirmed()):
            return keyboard.getText()
        else:
            return default

    def launchinfo(self, focusid, label):
        dialog = XinBox_InfoDialog.GUI("XinBox_InfoDialog.xml",self.scriptPath,"DefaultSkin")
        dialog.setupvars(focusid, label)
        dialog.doModal()
        del dialog