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 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 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 default class 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 default 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 mainwin = Settings_Main() mainwin.doModal() del mainwin if __name__ == "__main__": main()