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 Informationglobal NZB_Userglobal NZB_PassNZB_User = ""NZB_Pass = ""# FTP Server Login Informationglobal FTP_Hostglobal FTP_Portglobal FTP_Userglobal FTP_Passglobal 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): print "Settings_Main: Loading GUI Settings" 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")) print "Settings_Main: Creating Buttons" """ 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.') print "Settings_Main: Creating Status Label" """ 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 """ print "Settings_Main: Adding Button Navigation & Default Focus" 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 """ print "Settings_Main: Setting Button Options" def onAction(self, action): if action == ACTION_PREVIOUS_MENU: self.close() def onControl(self, control): if control == self.Defaultbtn: unps = Settings_Default() unps .doModal() del unps if control == self.FTPbtn: unps = Settings_FTP() unps .doModal() del unps if control == self.SMBbtn: unps = Settings_Default() unps .doModal() del unps if control == self.Miscbtn: unps = Settings_Default() unps .doModal() del unps print "Settings_Main: ***End Of Class***" class Settings_Default(xbmcgui.WindowDialog): def __init__(self): print "Settings_Default: Loading GUI Settings" 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")) print "Settings_Default: Creating Buttons & Labels" 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: """ print "Settings_Default: Adding Info Labels" 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) """ Setup your GUI Navigation """ print "Settings_Default: Adding Button Navigation & Default Focus" 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) print "Settings_Default: Setting Button Options" 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: print "Settings_Default: Keyboard - NZB_User" global NZB_User tempnzb = unikeyboard(NZB_User) if tempnzb != "": NZB_User = tempnzb self.NZBUserlbl.setLabel(NZB_User) else: dialog = xbmcgui.Dialog().ok(Title,"Your Username was not saved. Please try again.") if control == self.NZBPassbtn: print "Settings_Default: Keyboard - NZB_Pass" global NZB_Pass tempnzb = unikeyboard(NZB_Pass) if tempnzb != "": NZB_Pass = tempnzb self.NZBPasslbl.setLabel(NZB_Pass) else: dialog = xbmcgui.Dialog().ok(Title,"Your Password was not saved. Please try again.") def nzbSaveInfo(self): print "Settings_Default: Saving Keyboard - Entries" nzbfile = SafeConfigParser() setfile = str(nzbfile.read(NZB_Path + 'Cache\\Settings.ini')) setfile.set('NZB', 'Username', NZB_User) setfile.set('NZB', 'Pass', NZB_Pass) #curfile=file(sys.path[0]+'\\' + "Cache\\Settings.ini",'wb') #curfile.write("[NZB]" + Brk + "Username=" + NZB_User + Brk + "Password=" + NZB_Pass) setfile.close() print "Settings_Default: Saving Keyboard - Saved" dialog = xbmcgui.Dialog().ok(Title,"Settings Saved") self.close() print "Settings_Default: ***End Of Class***"# def nzbkeyboard(self, nzb): # Open the Virutal Keyboard.# keyboard = xbmc.Keyboard(nzb)# keyboard.doModal()# if (keyboard.isConfirmed()):# return keyboard.getText()# else:# return nzbclass Settings_FTP(xbmcgui.WindowDialog): def __init__(self): print "Settings_FTP: Loading GUI Settings" if Emulating: xbmcgui.WindowDialog.__init__(self) 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")) print "Settings_FTP: Creating Buttons & Labels" 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: """ print "Settings_FTP: Adding Info Labels" 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) """ Setup your GUI Navigation """ print "Settings_FTP: Adding Button Navigation & Default Focus" 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) print "Settings_FTP: Setting Button Options" 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: print "Settings_FTP: Keyboard - FTP_Host" global FTP_Host tempftp = unikeyboard(FTP_Host) if tempftp != "": FTP_Host = tempftp self.FTPHostlbl.setLabel(FTP_Host) else: dialog = xbmcgui.Dialog().ok(Title,"Your IP Adress was not saved. Please try again.") if control == self.FTPPortbtn: print "Settings_FTP: Keyboard - FTP_Port" global FTP_Port tempftp = unikeyboard(FTP_Port) if tempftp != "": FTP_Port = tempftp self.FTPPortlbl.setLabel(FTP_Port) else: dialog = xbmcgui.Dialog().ok(Title,"Your Port Number was not saved. Please try again.") if control == self.FTPUserbtn: print "Settings_FTP: Keyboard - FTP_User" global FTP_User tempftp = unikeyboard(FTP_User) if tempftp != "": FTP_User = tempftp self.FTPUserlbl.setLabel(FTP_User) else: dialog = xbmcgui.Dialog().ok(Title,"Your Username was not saved. Please try again.") if control == self.FTPPassbtn: print "Settings_FTP: Keyboard - FTP_Pass" global FTP_Pass tempftp = unikeyboard(FTP_Pass) if tempftp != "": FTP_Pass = tempftp self.FTPPasslbl.setLabel(FTP_Pass) else: dialog = xbmcgui.Dialog().ok(Title,"Your Password was not saved. Please try again.") if control == self.FTPPathbtn: print "Settings_FTP: Keyboard - FTP_Path" global FTP_Path tempftp = unikeyboard(FTP_Path) if tempftp != "": FTP_Path = tempftp self.FTPPathlbl.setLabel(FTP_Path) else: dialog = xbmcgui.Dialog().ok(Title,"Your Remote Path 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() print "Settings_FTP: Saving Keyboard - Entries" curfile = SafeConfigParser() curfile.read(NZB_Path + 'Cache\\Settings.ini') curfile.set('FTP', 'Host', FTP_Host) curfile.set('FTP', 'Port', FTP_Port) curfile.set('FTP', 'Username', NZB_User) curfile.set('FTP', 'Pass', NZB_Pass) curfile.set('FTP', 'Path', FTP_Path) curfile.close() print "Settings_FTP: Saving Keyboard - Saved" dialog = xbmcgui.Dialog().ok(Title,"Settings Saved") self.close() print "Settings_FTP: ***End Of Class***" # def ftpkeyboard(self, ftp): # Open the Virutal Keyboard.# keyboard = xbmc.Keyboard(ftp)# keyboard.doModal()# if (keyboard.isConfirmed()):# return keyboard.getText()# else:# return ftpdef Ini_Check(): if os.path.isfile(NZB_Path + 'Cache\\Settings.ini') == False: print "Ini_Check: Settings.ini file not found!" Brk = os.linesep print "Ini_Check: curfile = " + NZB_Path + "Cache\\Settings.ini Write" curfile=file(NZB_Path + "Cache\\Settings.ini",'wb') print "Ini_Check: curfile Write:\n[NZB]\nUsername=Loaded!\nPassword=Loaded!" curfile.write("[NZB]" + Brk + "Username=Loaded!" + Brk + "Password=Loaded!") # curfile.close() # print "[NZB]" + Brk + "Username=" + Brk + "Password=" print "Ini_Check: curfile = " + NZB_Path + "Cache\\Settings.ini Append" curfile=file(NZB_Path + "Cache\\Settings.ini",'ab') print "Ini_Check: curfile Write:\n[FTP]\nHost=Loaded!\nPort=Loaded!\nUsername=Loaded!\nPassword=Loaded!\nPath=Loaded!" curfile.write(Brk + Brk + "[FTP]" + Brk + "Host=Enter IP Address Here" + Brk + "Port=Enter Port # Here" + Brk + "Username=Enter Username Here" + Brk + "Password=Enter Password Here" + Brk + "Path=Enter Remote Path Here") curfile.close() curfile = SafeConfigParser() print "Ini_Check: Reading - " + NZB_Path + "Cache\\Settings.ini" 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_User = str(curfile.get('FTP', 'Username')) FTP_Pass = str(curfile.get('FTP', 'Password')) FTP_Path = str(curfile.get('FTP', 'Path')) print "Ini_Check: Get NZB_User - " + NZB_User print "Ini_Check: Get NZB_Pass - " + NZB_Pass print "Ini_Check: Get FTP_Host - " + FTP_Host print "Ini_Check: Get FTP_Port - " + FTP_Port print "Ini_Check: Get FTP_User - " + FTP_User print "Ini_Check: Get FTP_Pass - " + FTP_Pass print "Ini_Check: Get FTP_Path - " + FTP_Path elif os.path.isfile(NZB_Path + 'Cache\\Settings.ini') == True: print "Settings.ini file was found, retrieving values" curfile = SafeConfigParser() curfile.read(NZB_Path + 'Cache\\Settings.ini') if curfile.has_section('FTP'): 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_User = str(curfile.get('FTP', 'Username')) FTP_Pass = str(curfile.get('FTP', 'Password')) FTP_Path = str(curfile.get('FTP', 'Path')) print "Ini_Check: Get NZB_User - " + NZB_User print "Ini_Check: Get NZB_Pass - " + NZB_Pass print "Ini_Check: Get FTP_Host - " + FTP_Host print "Ini_Check: Get FTP_Port - " + FTP_Port print "Ini_Check: Get FTP_User - " + FTP_User print "Ini_Check: Get FTP_Pass - " + FTP_Pass print "Ini_Check: Get FTP_Path - " + FTP_Path def unikeyboard(Default): keyboard = xbmc.Keyboard(Default) print "unikeyboard: keyboard = xbmc.Keyboard(Default)" keyboard.doModal() if (keyboard.isConfirmed()): print "unikeyboard: Keyboard Is Confirmed" return keyboard.getText() else: print "unikeyboard: Keyboard Not Confirmed, returning Default" return Default def main(): print "Starting " + Title + "\nChecking for Settings.ini file" Ini_Check() print "Settings.ini file ok, loading Settings_Main()" mainwin = Settings_Main() mainwin .doModal() del mainwinif __name__ == "__main__": main()