""" 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