import re, os, sys, nt import xbmc, xbmcgui from string import split, replace, find from ConfigParser import ConfigParser, SafeConfigParser from StringIO import StringIO try: Emulating = xbmcgui.Emulating except: Emulating = False ACTION_PREVIOUS_MENU = 10 Title = "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_Pass NZB_User = "" NZB_Pass = "" # FTP Server Login Information # global FTP_Host # global FTP_Port # global FTP_User # global FTP_Pass # global FTP_Path FTP_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 Buttons def Ini_Check(): if os.path.isfile(NZB_Path + 'Settings.ini') == False: print "Settings.ini file not found!" Brk = os.linesep curfile=file(sys.path[0]+'\\' + "Settings.ini",'wb') curfile.write("[NZB]" + Brk + "Username=-" + Brk + "Password=-") curfile.close() #print "[NZB]" + Brk + "Username=" + Brk + "Password=" curfile=file(sys.path[0]+'\\' + "Settings.ini",'ab') curfile.write(Brk + Brk + "[FTP]" + Brk + "Host=-" + Brk + "Port=-" + Brk + "Username=-" + Brk + "Password=-" + Brk + "Path=-") curfile.close() curfile = SafeConfigParser() curfile.read(NZB_Path + 'Settings.ini') 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 "Value Host: " + FTP_Host print "Value Port: " + FTP_Port print "Value User: " + FTP_User print "Value Pass: " + FTP_Pass print "Value Path: " + FTP_Path elif os.path.isfile(NZB_Path + 'Settings.ini') == True: print "Settings.ini file was found, retrieving values" curfile = SafeConfigParser() curfile.read(NZB_Path + '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')) print "Value Host: " + FTP_Host print "Value Port: " + FTP_Port print "Value User: " + FTP_User print "Value Pass: " + FTP_Pass print "Value Path: " + FTP_Path class 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 unps class 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 tempnzb = self.nzbkeyboard(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: global NZB_Pass tempnzb = self.nzbkeyboard(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): 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() dialog = xbmcgui.Dialog().ok(Title,"Settings Saved") self.close() def nzbkeyboard(self, nzb): # Open the Virutal Keyboard. keyboard = xbmc.Keyboard(nzb) keyboard.doModal() if (keyboard.isConfirmed()): return keyboard.getText() else: return nzb class Settings_FTP(xbmcgui.WindowDialog): def __init__(self): 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")) 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 tempftp = self.ftpkeyboard(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: global FTP_Port tempftp = self.ftpkeyboard(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: global FTP_User tempftp = self.ftpkeyboard(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: global FTP_Pass tempftp = self.ftpkeyboard(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: global FTP_Path tempftp = self.ftpkeyboard(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() 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() dialog = xbmcgui.Dialog().ok(Title,"Settings Saved") self.close() def ftpkeyboard(self, ftp): # Open the Virutal Keyboard. keyboard = xbmc.Keyboard(ftp) keyboard.doModal() if (keyboard.isConfirmed()): return keyboard.getText() else: return ftp #def 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 + "\nChecking for Settings.ini file" Ini_Check() print "Settings.ini file ok, loading Settings_Main()" mainwin = Settings_Main() mainwin .doModal() del mainwin if __name__ == "__main__": main()