rendered paste bodyimport re, os, sys, ntimport xbmc, xbmcguifrom string import split, replace, findfrom ConfigParser import ConfigParser, SafeConfigParserfrom StringIO import StringIOtry: Emulating = xbmcgui.Emulatingexcept: Emulating = FalseACTION_PREVIOUS_MENU = 10Title = "NZBsRus.com"# If you are running this script on your Xbox, use:NZB_Path = sys.path[0]+'\\'# Root = "Q:\\scripts\\NZBsRus\\Images\\"Downloads = "Q:\\scripts\\NZBsRus\\Downloads\\"#Root = "Q:\\scripts\\NZBsRus\\Images\\"#Downloads = "Q:\\scripts\\NZBsRus\\Downloads\\"# If you are Emulating this script on your PC, Use:# Root = "/Images"# Downloads = "/Downloads"# NZBsRus.com Login Information# global NZB_User# global NZB_PassNZB_User = ""NZB_Pass = ""# FTP Server Login Information# global FTP_Host# global FTP_Port# global FTP_User# global FTP_Pass# global FTP_PathFTP_Host = ""FTP_Port = ""FTP_User = ""FTP_Pass = ""FTP_Path = ""button_normal="button-nofocus.png"button_hl="button-focus.png"lcf="iconlist-nofocus.png"lcnf="iconlist-focus.png"fc = "0xFFFFFFFF"def SetupButtons(self,x,y,w,h,a="Vert",f="button-focus.png",nf="button-nofocus.png",gap=0,txtOffSet=0,font='font13'): self.numbut = 0 self.butx = x self.buty = y self.butwidth = w self.butheight = h self.butalign = a self.butfocus_img = f self.butnofocus_img = nf self.gap = gap self.txtOffSet = txtOffSet self.font = font def AddButton(self,text): if self.butalign == "Hori": Buttons = xbmcgui.ControlButton(self.butx + (self.numbut * self.butwidth + self.gap * self.numbut), self.buty, self.butwidth, self.butheight, text, self.butfocus_img, self.butnofocus_img, textColor=fc) self.addControl(Buttons) elif self.butalign == "Vert": Buttons = xbmcgui.ControlButton(self.butx, self.buty + (self.numbut * self.butheight + self.gap * self.numbut), self.butwidth, self.butheight, text, self.butfocus_img, self.butnofocus_img, textColor=fc) self.addControl(Buttons) self.numbut += 1 return Buttonsclass Settings_Main(xbmcgui.WindowDialog): def __init__(self): if Emulating: xbmcgui.Window.__init__(self) """ Define your sript's Window size here: """ self.scaleX = ( float(self.getWidth()) / float(720) ) self.scaleY = ( float(self.getHeight()) / float(576) ) """ Add your GUI images to your script here: """ self.addControl(xbmcgui.ControlImage(165,135,422,230, "dialog-panel.png")) # self.addControl(xbmcgui.ControlImage(0,0,720,480,"Background.png")) # self.addControl(xbmcgui.ControlImage(0,0,247,70, sys.path[0]+'\\' + "Logo.png")) """ Create your Menu buttons here: """ SetupButtons(self, int(176 * self.scaleX),int(145 * self.scaleY), int(102 * self.scaleX), int(33 * self.scaleY), "Hori", button_hl,button_normal, 0,37) self.Defaultbtn = AddButton(self,'Options') self.FTPbtn = AddButton(self,'FTP') self.SMBbtn = AddButton(self,'SMB') self.Miscbtn = AddButton(self,'Misc.') """ Create a Status Label for use in your script: """ self.lblStatus = xbmcgui.ControlFadeLabel(int(215 * self.scaleX),int(128 * self.scaleY), int(500 * self.scaleX), int(90 * self.scaleY), "font12", "0xFFFFFFFF") self.addControl(self.lblStatus) """ Add your GUI items """ """ Setup your GUI Navigation """ self.Defaultbtn.controlLeft(self.Miscbtn) self.Defaultbtn.controlRight(self.FTPbtn) self.FTPbtn.controlLeft(self.Defaultbtn) self.FTPbtn.controlRight(self.SMBbtn) self.SMBbtn.controlLeft(self.FTPbtn) self.SMBbtn.controlRight(self.Miscbtn) self.Miscbtn.controlLeft(self.SMBbtn) self.Miscbtn.controlRight(self.Defaultbtn) self.setFocus(self.Defaultbtn) """ The below section is where you define your GUI items' Actions when executed """ def onAction(self, action): if action == ACTION_PREVIOUS_MENU: self.close() def onControl(self, control): global curPage global cater if control == self.Defaultbtn: cater = "Default" unps = Settings_Default() unps .doModal() del unps if control == self.FTPbtn: cater = "FTP" unps = Settings_FTP() unps .doModal() del unps if control == self.SMBbtn: cater = "SMB" unps = Settings_Default() unps .doModal() del unps if control == self.Miscbtn: cater = "Misc" unps = Settings_Default() unps .doModal() del unpsclass Settings_Default(xbmcgui.WindowDialog): def __init__(self): if Emulating: xbmcgui.WindowDialog.__init__(self) curfile = SafeConfigParser() curfile.read(NZB_Path + 'Cache\\Settings.ini') NZB_User = str(curfile.get('NZB', 'Username')) NZB_Pass = str(curfile.get('NZB', 'Password')) """ Define your sript's Window size here: """ self.scaleX = ( float(self.getWidth()) / float(720) ) self.scaleY = ( float(self.getHeight()) / float(576) ) """ Create your Menu buttons here: """ # self.addControl(xbmcgui.ControlLabel(int(375 * self.scaleX),int(93 * self.scaleY), int(400 * self.scaleX), int(30 * self.scaleY), "NZBsRus.com - Login Settings" "font12", "0xFFFFFFFF") # self.addControl(xbmcgui.ControlImage(165,135,420,230, "dialog-panel.png")) self.addControl(xbmcgui.ControlLabel(int(260 * self.scaleX),int(175 * self.scaleY), int(500 * self.scaleX), int(90 * self.scaleY), "NZBsRus.com - Login Settings", "special13", "0xFFb7c371")) self.addControl(xbmcgui.ControlLabel(int(200 * self.scaleX),int(224 * self.scaleY), int(400 * self.scaleX), int(30 * self.scaleY), "Please Enter Your NZBsRuS\nUsername & Password:", "font10", "0xFF878787")) self.NZBUserlbl = xbmcgui.ControlLabel(int(310 * self.scaleX),int(286 * self.scaleY), int(400 * self.scaleX), int(30 * self.scaleY), NZB_User, "font10", "0xFFb7c371") self.NZBPasslbl = xbmcgui.ControlLabel(int(310 * self.scaleX),int(314 * self.scaleY), int(400 * self.scaleX), int(30 * self.scaleY), NZB_Pass, "font10", "0xFFb7c371") SetupButtons(self, int(195 * self.scaleX),int(282 * self.scaleY), int(100 * self.scaleX), int(30 * self.scaleY), "Vert", button_hl,button_normal, 2, 37) self.NZBUserbtn = AddButton(self,'Username: ') self.NZBPassbtn = AddButton(self,'Password: ') SetupButtons(self, int(280 * self.scaleX),int(370 * self.scaleY), int(100 * self.scaleX), int(30 * self.scaleY), "Hori", button_hl,button_normal, 2, 37) self.NZBSavebtn = AddButton(self,'Save') self.NZBCancelbtn = AddButton(self,'Cancel') """ Create a Status Label for use in your script: """ self.lblStatus = xbmcgui.ControlFadeLabel(int(215 * self.scaleX),int(128 * self.scaleY), int(500 * self.scaleX), int(90 * self.scaleY), "font12", "0xFFFFFFFF") self.addControl(self.lblStatus) self.addControl(self.NZBUserlbl) self.addControl(self.NZBPasslbl) """ Add your GUI items """ """ Setup your GUI Navigation """ self.NZBUserbtn.controlUp(self.NZBSavebtn) self.NZBUserbtn.controlDown(self.NZBPassbtn) self.NZBPassbtn.controlUp(self.NZBUserbtn) self.NZBPassbtn.controlDown(self.NZBSavebtn) self.NZBSavebtn.controlUp(self.NZBPassbtn) self.NZBSavebtn.controlDown(self.NZBUserbtn) self.NZBSavebtn.controlLeft(self.NZBCancelbtn) self.NZBSavebtn.controlRight(self.NZBCancelbtn) self.NZBCancelbtn.controlUp(self.NZBPassbtn) self.NZBCancelbtn.controlDown(self.NZBUserbtn) self.NZBCancelbtn.controlLeft(self.NZBSavebtn) self.NZBCancelbtn.controlRight(self.NZBSavebtn) self.setFocus(self.NZBUserbtn) def onAction(self, action): if action == ACTION_PREVIOUS_MENU: self.close() def onControl(self, control): if control == self.NZBSavebtn: self.nzbSaveInfo() if control == self.NZBCancelbtn: self.close() if control == self.NZBUserbtn: global NZB_User temp = self.unikeyboard(NZB_User) if temp != "": NZB_User = temp self.NZBUserlbl.setLabel(NZB_User) else: dialog = xbmcgui.Dialog().ok(Title,"Your Username was not saved. Please try again.") if control == self.NZBPassbtn: global NZB_Pass temp = self.unikeyboard(NZB_Pass) if temp != "": NZB_Pass = temp self.NZBPasslbl.setLabel(NZB_Pass) else: dialog = xbmcgui.Dialog().ok(Title,"Your Password was not saved. Please try again.") def nzbSaveInfo(self): Brk = os.linesep curfile=file(sys.path[0]+'\\' + "Cache\\Settings.ini",'wb') curfile.write("[NZB]" + Brk + "Username=" + NZB_User + Brk + "Password=" + NZB_Pass) curfile.close() dialog = xbmcgui.Dialog().ok(Title,"Settings Saved") self.close() def unikeyboard(self, default): # Open the Virutal Keyboard. keyboard = xbmc.Keyboard(default) keyboard.doModal() if (keyboard.isConfirmed()): return keyboard.getText() else: return defaultclass Settings_FTP(xbmcgui.WindowDialog): def __init__(self): if Emulating: xbmcgui.WindowDialog.__init__(self) curfile = SafeConfigParser() curfile.read(NZB_Path + 'Cache\\Settings.ini') if curfile.has_section('FTP'): FTP_Host = str(curfile.get('FTP', 'Host')) FTP_Port = str(curfile.get('FTP', 'Port')) FTP_User = str(curfile.get('FTP', 'Username')) FTP_Pass = str(curfile.get('FTP', 'Password')) FTP_Path = str(curfile.get('FTP', 'Path')) """ Define your sript's Window size here: """ self.scaleX = ( float(self.getWidth()) / float(720) ) self.scaleY = ( float(self.getHeight()) / float(576) ) """ Create your Menu buttons here: """ # self.addControl(xbmcgui.ControlLabel(int(375 * self.scaleX),int(93 * self.scaleY), int(400 * self.scaleX), int(30 * self.scaleY), "NZBsRus.com - Login Settings" "font12", "0xFFFFFFFF") # self.addControl(xbmcgui.ControlImage(165,135,420,230, "dialog-panel.png")) self.addControl(xbmcgui.ControlLabel(int(260 * self.scaleX),int(175 * self.scaleY), int(500 * self.scaleX), int(90 * self.scaleY), "FTP - Login Settings", "special13", "0xFFb7c371")) self.addControl(xbmcgui.ControlLabel(int(200 * self.scaleX),int(224 * self.scaleY), int(400 * self.scaleX), int(30 * self.scaleY), "Please Enter Your FTP's\nLogin Information:", "font10", "0xFF878787")) self.FTPHostlbl = xbmcgui.ControlLabel(int(450 * self.scaleX),int(286 * self.scaleY), int(400 * self.scaleX), int(30 * self.scaleY), FTP_Host, "font10", "0xFFb7c371") self.FTPPortlbl = xbmcgui.ControlLabel(int(310 * self.scaleX),int(286 * self.scaleY), int(400 * self.scaleX), int(30 * self.scaleY), FTP_Port, "font10", "0xFFb7c371") self.FTPUserlbl = xbmcgui.ControlLabel(int(310 * self.scaleX),int(214 * self.scaleY), int(400 * self.scaleX), int(30 * self.scaleY), FTP_User, "font10", "0xFFb7c371") self.FTPPasslbl = xbmcgui.ControlLabel(int(310 * self.scaleX),int(342 * self.scaleY), int(400 * self.scaleX), int(30 * self.scaleY), FTP_Pass, "font10", "0xFFb7c371") self.FTPPathlbl = xbmcgui.ControlLabel(int(310 * self.scaleX),int(370 * self.scaleY), int(400 * self.scaleX), int(30 * self.scaleY), FTP_Path, "font10", "0xFFb7c371") SetupButtons(self, int(195 * self.scaleX),int(282 * self.scaleY), int(100 * self.scaleX), int(30 * self.scaleY), "Hori", button_hl,button_normal, 2, 37) self.FTPHostbtn = AddButton(self,'Host:') self.FTPPortbtn = AddButton(self,'Port:') SetupButtons(self, int(195 * self.scaleX),int(314 * self.scaleY), int(100 * self.scaleX), int(30 * self.scaleY), "Vert", button_hl,button_normal, 2, 37) self.FTPUserbtn = AddButton(self,'Username:') self.FTPPassbtn = AddButton(self,'Password:') self.FTPPathbtn = AddButton(self,'Path:') SetupButtons(self, int(280 * self.scaleX),int(370 * self.scaleY), int(100 * self.scaleX), int(30 * self.scaleY), "Hori", button_hl,button_normal, 2, 37) self.FTPSavebtn = AddButton(self,'Save') self.FTPCancelbtn = AddButton(self,'Cancel') """ Create a Status Label for use in your script: """ self.lblStatus = xbmcgui.ControlFadeLabel(int(215 * self.scaleX),int(128 * self.scaleY), int(500 * self.scaleX), int(90 * self.scaleY), "font12", "0xFFFFFFFF") self.addControl(self.lblStatus) self.addControl(self.FTPHostlbl) self.addControl(self.FTPPortlbl) self.addControl(self.FTPUserlbl) self.addControl(self.FTPPasslbl) self.addControl(self.FTPPathlbl) """ Add your GUI items """ """ Setup your GUI Navigation """ self.FTPHostbtn.controlUp(self.FTPSavebtn) self.FTPHostbtn.controlDown(self.FTPPortbtn) self.FTPPortbtn.controlUp(self.FTPHostbtn) self.FTPPortbtn.controlDown(self.FTPUserbtn) self.FTPUserbtn.controlUp(self.FTPPortbtn) self.FTPUserbtn.controlDown(self.FTPPassbtn) self.FTPPassbtn.controlUp(self.FTPUserbtn) self.FTPPassbtn.controlDown(self.FTPPathbtn) self.FTPPathbtn.controlUp(self.FTPPassbtn) self.FTPPathbtn.controlDown(self.FTPSavebtn) self.FTPSavebtn.controlUp(self.FTPPathbtn) self.FTPSavebtn.controlDown(self.FTPHostbtn) self.FTPSavebtn.controlLeft(self.FTPCancelbtn) self.FTPSavebtn.controlRight(self.FTPCancelbtn) self.FTPCancelbtn.controlUp(self.FTPPassbtn) self.FTPCancelbtn.controlDown(self.FTPHostbtn) self.FTPCancelbtn.controlLeft(self.FTPSavebtn) self.FTPCancelbtn.controlRight(self.FTPSavebtn) self.setFocus(self.FTPHostbtn) def onAction(self, action): if action == ACTION_PREVIOUS_MENU: self.close() def onControl(self, control): if control == self.FTPSavebtn: self.ftpSaveInfo() if control == self.FTPCancelbtn: self.close() if control == self.FTPHostbtn: global FTP_Host temp = self.unikeyboard(FTP_Host) if temp != "": FTP_Host = temp self.FTPHostlbl.setLabel(FTP_Host) else: dialog = xbmcgui.Dialog().ok(Title,"Your Username was not saved. Please try again.") if control == self.FTPPortbtn: global FTP_Port temp = self.unikeyboard(FTP_Port) if temp != "": FTP_Port = temp self.FTPPortlbl.setLabel(FTP_Port) else: dialog = xbmcgui.Dialog().ok(Title,"Your Username was not saved. Please try again.") if control == self.FTPUserbtn: global FTP_User temp = self.unikeyboard(FTP_User) if temp != "": FTP_User = temp self.FTPUserlbl.setLabel(FTP_User) else: dialog = xbmcgui.Dialog().ok(Title,"Your Username was not saved. Please try again.") if control == self.FTPPassbtn: global FTP_Pass temp = self.unikeyboard(FTP_Pass) if temp != "": FTP_Pass = temp self.FTPPasslbl.setLabel(FTP_Pass) else: dialog = xbmcgui.Dialog().ok(Title,"Your Password was not saved. Please try again.") def ftpSaveInfo(self): Brk = os.linesep curfile=file(sys.path[0]+'\\' + "Cache\\Settings.ini",'ab') curfile.write("[FTP]" + Brk + "Host=" + FTP_Host + Brk + "Port=" + FTP_Port + Brk + "Username=" + FTP_User + Brk + "Password=" + FTP_Pass + Brk + "Path=" + FTP_Path) curfile.close() dialog = xbmcgui.Dialog().ok(Title,"Settings Saved") self.close() def unikeyboard(self, default): # Open the Virutal Keyboard. keyboard = xbmc.Keyboard(default) keyboard.doModal() if (keyboard.isConfirmed()): return keyboard.getText() else: return defaultdef LoadSettings(): """ Here we will read the settings file to get the Username and password """ # Check if file exists if not show username setting window :P if os.path.isfile(NZB_Path + "Cache\\Settings.ini") == False: if Emulating: print "No settings, Press ok to contuine to set them" else: Brk = os.linesep curfile=file(sys.path[0]+'\\' + "Cache\\Settings.ini",'wb') curfile.write("[NZB]" + Brk + "Username=" + Brk + "Password=") curfile.close() curfile=file(sys.path[0]+'\\' + "Cache\\Settings.ini",'ab') curfile.write("[FTP]" + Brk + Brk + "Host=" + Brk + "Port=" + Brk + "Username=" + Brk + "Password=" + Brk + "Path=") curfile.close() # self.close() xbmcgui.Dialog().ok(Title,"No settings, Press ok to contuine to set them") unps = Settings_Default() unps .doModal() del unps else: curfile = SafeConfigParser() curfile.read(NZB_Path + 'Cache\\Settings.ini') NZB_User = str(curfile.get('NZB', 'Username')) NZB_Pass = str(curfile.get('NZB', 'Password')) FTP_Host = str(curfile.get('FTP', 'Host')) FTP_Port = str(curfile.get('FTP', 'Port')) FTP_Username = str(curfile.get('FTP', 'Username')) FTP_Password = str(curfile.get('FTP', 'Password')) FTP_Path = str(curfile.get('FTP', 'Path')) def main(): print "Starting " + Title mainwin = Settings_Main() mainwin.doModal() del mainwinif __name__ == "__main__": main()