Avdump GUI: Difference between revisions
Jump to navigation
Jump to search
(v1.01 fixing problems with \ at the end of the scanpath) |
(v1.02 added nagscreens to prevent the worst bugs + catching a couple more exceptions) |
||
Line 1: | Line 1: | ||
<pre> | <pre> | ||
import wx,os,subprocess | import wx,os,subprocess | ||
class mainFrame(wx.Frame): | class mainFrame(wx.Frame): | ||
Line 20: | Line 6: | ||
__options = {'avdump':'avdump.exe','user':'','pass':'','ext':'','misc':'','bsize':'2048','port':'','tout':'30','retries':'6','exp':'export.txt','log':'log.txt','done':'done.txt'} | __options = {'avdump':'avdump.exe','user':'','pass':'','ext':'','misc':'','bsize':'2048','port':'','tout':'30','retries':'6','exp':'export.txt','log':'log.txt','done':'done.txt'} | ||
__configfile='config.ini' | __configfile='config.ini' | ||
def read_config(self): | def read_config(self,newconfig=''): | ||
'''read the config file and return the content''' | '''read the config file and return the content''' | ||
if not os.path.exists(self.__configfile): | if not os.path.exists(self.__configfile): | ||
self. | for elem in self.__options: | ||
for line in | newconfig += ('%s=%s\n') %(elem,self.__options[elem]) | ||
open(self.__configfile,"w").write(newconfig) | |||
for line in open(self.__configfile,"r").readlines(): | |||
if not line.endswith('='): | if not line.endswith('='): | ||
temp,val = line.rstrip('\n').split('=',1) | temp,val = line.rstrip('\n').split('=',1) | ||
Line 33: | Line 21: | ||
if temp == elem: | if temp == elem: | ||
self.__options[temp] = val | self.__options[temp] = val | ||
def __init__(self, parent, title): | def __init__(self, parent, title): | ||
wx.Frame.__init__(self, parent, -1, u'Avdump GUI', wx.DefaultPosition, (350, 140), style=wx.CLOSE_BOX | wx.SYSTEM_MENU | wx.CAPTION | 0 | 0 | wx.MINIMIZE_BOX) | wx.Frame.__init__(self, parent, -1, u'Avdump GUI', wx.DefaultPosition, (350, 140), style=wx.CLOSE_BOX | wx.SYSTEM_MENU | wx.CAPTION | 0 | 0 | wx.MINIMIZE_BOX) | ||
self.panel = wx.Panel(self, -1) | self.panel = wx.Panel(self, -1) | ||
self.filepath = wx.TextCtrl(self.panel, -1, '', (95, 25), size=(190, 24)) | self.filepath = wx.TextCtrl(self.panel, -1, '', (95, 25), size=(190, 24)) | ||
self.start = wx.Button(self.panel, -1, 'Start', (90,75), (-1, -1)) | self.start = wx.Button(self.panel, -1, 'Start', (90,75), (-1, -1)) | ||
Line 48: | Line 30: | ||
self.select = wx.Button(self.panel, -1, '...', (295, 25), (25, -1)) | self.select = wx.Button(self.panel, -1, '...', (295, 25), (25, -1)) | ||
self.scantype = wx.RadioBox(self.panel,-1,pos=(5,5),size=(-1, 59),style=wx.RA_VERTICAL,label='scantype',choices = ['Files','Folder']) | self.scantype = wx.RadioBox(self.panel,-1,pos=(5,5),size=(-1, 59),style=wx.RA_VERTICAL,label='scantype',choices = ['Files','Folder']) | ||
self.Bind(wx.EVT_BUTTON, self.selectClick, self.select) | self.Bind(wx.EVT_BUTTON, self.selectClick, self.select) | ||
self.Bind(wx.EVT_BUTTON, self.optionsClick, self.options) | self.Bind(wx.EVT_BUTTON, self.optionsClick, self.options) | ||
self.Bind(wx.EVT_BUTTON, self.startClick, self.start) | self.Bind(wx.EVT_BUTTON, self.startClick, self.start) | ||
self.child = OptionsFrame(self, 'App') | self.child = OptionsFrame(self, 'App') | ||
self.child.read_config() | |||
def selectClick(self, event,path=''): | def selectClick(self, event,path=''): | ||
Line 70: | Line 50: | ||
if dialog.ShowModal() == wx.ID_OK: | if dialog.ShowModal() == wx.ID_OK: | ||
path = '"' + dialog.GetPath().rstrip("\\") + '"' | path = '"' + dialog.GetPath().rstrip("\\") + '"' | ||
self.filepath.Clear() | self.filepath.Clear() | ||
dialog.Destroy() | dialog.Destroy() | ||
Line 77: | Line 56: | ||
def startClick(self, event): | def startClick(self, event): | ||
self.read_config() | |||
self.__options['param'] = '' | self.__options['param'] = '' | ||
if self.filepath.GetValue() != '': | if self.filepath.GetValue() == '': | ||
self. | self.child.error('You have to select some files or folder to scan!') | ||
elif (self.__options['user'] == '' or self.__options['pass'] == ''): | |||
self.child.error("You didn't enter your username and/or password in the options menu.") | |||
elif self.__options['avdump'] == '': | |||
self.child.error('You must specify the path to avdump.exe!') | |||
elif self.__options['avdump'] == 'avdump.exe': | |||
self.child.info('You should set the _absolute_ path to avdump.exe.\nOtherwise complications might arise.') | |||
else: | |||
if self.__options['misc'].lstrip(',') > 0: | if self.__options['misc'].lstrip(',') > 0: | ||
for elem in self.__options['misc'].split(','): | for elem in self.__options['misc'].split(','): | ||
Line 89: | Line 76: | ||
else: | else: | ||
self.__options['param'] += ' -' + elem + ':' + self.__options[elem] | self.__options['param'] += ' -' + elem + ':' + self.__options[elem] | ||
subprocess.call((' | subprocess.call(('%s -ac:%s:%s%s %s') %(self.__options['avdump'], self.__options['user'], self.__options['pass'], self.__options['param'], self.__options['scanpath'])) | ||
def optionsClick(self, event): | def optionsClick(self, event): | ||
self.child.refresh() | |||
self.child.Show(True) | self.child.Show(True) | ||
Line 103: | Line 91: | ||
if not os.path.exists(self.__configfile): | if not os.path.exists(self.__configfile): | ||
self.write_config() | self.write_config() | ||
for line in | for line in open(self.__configfile,"r").readlines(): | ||
if not line.endswith('='): | if not line.endswith('='): | ||
temp,val = line.rstrip('\n').split('=',1) | temp,val = line.rstrip('\n').split('=',1) | ||
Line 115: | Line 103: | ||
for elem in self.__options: | for elem in self.__options: | ||
newconfig += ('%s=%s\n') %(elem,self.__options[elem]) | newconfig += ('%s=%s\n') %(elem,self.__options[elem]) | ||
open(self.__configfile,"w").write(newconfig) | |||
def set_misc(self,misc=''): | def set_misc(self,misc=''): | ||
Line 132: | Line 120: | ||
self.__box[misc] = True | self.__box[misc] = True | ||
def __init__(self, parent, title): | def __init__(self, parent, title): | ||
wx.Frame.__init__(self, parent, -1, 'options', wx.DefaultPosition, (301, 691), style=wx.CLOSE_BOX | wx.SYSTEM_MENU | wx.CAPTION | 0 | 0 | wx.MINIMIZE_BOX) | wx.Frame.__init__(self, parent, -1, 'options', wx.DefaultPosition, (301, 691), style=wx.CLOSE_BOX | wx.SYSTEM_MENU | wx.CAPTION | 0 | 0 | wx.MINIMIZE_BOX) | ||
Line 193: | Line 180: | ||
if dialog.ShowModal() == wx.ID_OK: | if dialog.ShowModal() == wx.ID_OK: | ||
self.filepath.Clear() | self.filepath.Clear() | ||
self.filepath.write(dialog.GetPath()) | self.filepath.write('"' + dialog.GetPath().rstrip("\\") + '"') | ||
def selectlogClick(self, event): | def selectlogClick(self, event): | ||
Line 199: | Line 186: | ||
if dialog.ShowModal() == wx.ID_OK: | if dialog.ShowModal() == wx.ID_OK: | ||
self.logpath.Clear() | self.logpath.Clear() | ||
self.logpath.write(dialog.GetPath()) | self.logpath.write('"' + dialog.GetPath().rstrip("\\") + '"') | ||
def selectexpClick(self, event): | def selectexpClick(self, event): | ||
Line 205: | Line 192: | ||
if dialog.ShowModal() == wx.ID_OK: | if dialog.ShowModal() == wx.ID_OK: | ||
self.exppath.Clear() | self.exppath.Clear() | ||
self.exppath.write(dialog.GetPath()) | self.exppath.write('"' + dialog.GetPath().rstrip("\\") + '"') | ||
def selectdoneClick(self, event): | def selectdoneClick(self, event): | ||
Line 211: | Line 198: | ||
if dialog.ShowModal() == wx.ID_OK: | if dialog.ShowModal() == wx.ID_OK: | ||
self.donepath.Clear() | self.donepath.Clear() | ||
self.donepath.write(dialog.GetPath()) | self.donepath.write('"' + dialog.GetPath().rstrip("\\") + '"') | ||
def saveClick(self,event): | def saveClick(self,event): | ||
self.update() | self.update() | ||
self.Show(False) | if self.__options['avdump'] == '': | ||
self.error('You must specify the path to avdump.exe!') | |||
elif self.__options['avdump'] == 'avdump.exe': | |||
self.info('You should set the _absolute_ path to avdump.exe.\nOtherwise complications might arise.') | |||
else: | |||
self.Show(False) | |||
def cancelClick(self,event): | def cancelClick(self,event): | ||
Line 228: | Line 220: | ||
self.get_checkboxes(self.__options['misc']) | self.get_checkboxes(self.__options['misc']) | ||
self.filepath.Clear() | self.filepath.Clear() | ||
self.filepath.write(self.__options['avdump']) | self.filepath.write(self.__options['avdump'].rstrip('"').lstrip('"')) | ||
self.username.Clear() | self.username.Clear() | ||
self.username.write(self.__options['user']) | self.username.write(self.__options['user']) | ||
Line 244: | Line 236: | ||
self.retries.write(self.__options['retries']) | self.retries.write(self.__options['retries']) | ||
self.exppath.Clear() | self.exppath.Clear() | ||
self.exppath.write(self.__options['exp']) | self.exppath.write(self.__options['exp'].rstrip('"').lstrip('"')) | ||
self.logpath.Clear() | self.logpath.Clear() | ||
self.logpath.write(self.__options['log']) | self.logpath.write(self.__options['log'].rstrip('"').lstrip('"')) | ||
self.donepath.Clear() | self.donepath.Clear() | ||
self.donepath.write(self.__options['done']) | self.donepath.write(self.__options['done'].rstrip('"').lstrip('"')) | ||
self.ext.SetValue(self.__box['ext']) | self.ext.SetValue(self.__box['ext']) | ||
self.log.SetValue(self.__box['log']) | self.log.SetValue(self.__box['log']) | ||
Line 268: | Line 260: | ||
self.__options['pass'] = self.password.GetValue() | self.__options['pass'] = self.password.GetValue() | ||
self.__options['ext'] = self.extention.GetValue() | self.__options['ext'] = self.extention.GetValue() | ||
'''make sure it's mod 8 and at least 256kb''' | '''make sure it's mod 8 and at least 256kb''' | ||
if int(temp) < 256: | try: | ||
temp = int(self.buffersize.GetValue()) | |||
if int(temp) < 256: | |||
temp = 256 | |||
if not temp % 8: | |||
temp = temp - (temp%8) | |||
except: | |||
temp = 2048 | |||
self.__options['bsize'] = unicode(temp) | self.__options['bsize'] = unicode(temp) | ||
self.__options['port'] = self.portnumber.GetValue() | try: | ||
int(self.portnumber.GetValue()) | |||
self.__options['port'] = self.portnumber.GetValue() | |||
except: | |||
self.__options['port'] = '' | |||
self.__options['tout'] = self.timeout.GetValue() | self.__options['tout'] = self.timeout.GetValue() | ||
temp = int(self.timeout.GetValue()) | temp = int(self.timeout.GetValue()) | ||
'''make sure it's at least 20''' | '''make sure it's at least 20''' | ||
if int(temp) < 20: | try: | ||
temp = | if int(temp) < 20: | ||
temp = 20 | |||
except: | |||
temp = 30 | |||
self.__options['tout'] = unicode(temp) | self.__options['tout'] = unicode(temp) | ||
self.__options['retries'] = self.retries.GetValue() | try: | ||
int(self.retries.GetValue()) | |||
self.__options['retries'] = self.retries.GetValue() | |||
except: | |||
self.__options['retries'] = 6 | |||
self.__options['exp'] = self.exppath.GetValue() | self.__options['exp'] = self.exppath.GetValue() | ||
self.__options['log'] = self.logpath.GetValue() | self.__options['log'] = self.logpath.GetValue() | ||
Line 302: | Line 308: | ||
self.write_config() | self.write_config() | ||
def error(self,text): | |||
message = wx.MessageDialog(self,text,style=wx.ICON_ERROR | wx.OK) | |||
message.ShowModal() | |||
def info(self,text): | |||
message = wx.MessageDialog(self,text,style=wx.ICON_INFORMATION | wx.OK) | |||
message.ShowModal() | |||
class App(wx.App): | class App(wx.App): | ||
def OnInit(self): | def OnInit(self): | ||
Line 310: | Line 324: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
app = App(True) | app = App(True) | ||
app.MainLoop() | app.MainLoop() | ||
</pre> | </pre> |
Revision as of 01:39, 13 May 2007
import wx,os,subprocess class mainFrame(wx.Frame): __simple = ['p','z','r','m','c','o'] __options = {'avdump':'avdump.exe','user':'','pass':'','ext':'','misc':'','bsize':'2048','port':'','tout':'30','retries':'6','exp':'export.txt','log':'log.txt','done':'done.txt'} __configfile='config.ini' def read_config(self,newconfig=''): '''read the config file and return the content''' if not os.path.exists(self.__configfile): for elem in self.__options: newconfig += ('%s=%s\n') %(elem,self.__options[elem]) open(self.__configfile,"w").write(newconfig) for line in open(self.__configfile,"r").readlines(): if not line.endswith('='): temp,val = line.rstrip('\n').split('=',1) else: val = '' for elem in self.__options: if temp == elem: self.__options[temp] = val def __init__(self, parent, title): wx.Frame.__init__(self, parent, -1, u'Avdump GUI', wx.DefaultPosition, (350, 140), style=wx.CLOSE_BOX | wx.SYSTEM_MENU | wx.CAPTION | 0 | 0 | wx.MINIMIZE_BOX) self.panel = wx.Panel(self, -1) self.filepath = wx.TextCtrl(self.panel, -1, '', (95, 25), size=(190, 24)) self.start = wx.Button(self.panel, -1, 'Start', (90,75), (-1, -1)) self.options = wx.Button(self.panel, -1, 'Options', (185,75), (-1, -1)) self.select = wx.Button(self.panel, -1, '...', (295, 25), (25, -1)) self.scantype = wx.RadioBox(self.panel,-1,pos=(5,5),size=(-1, 59),style=wx.RA_VERTICAL,label='scantype',choices = ['Files','Folder']) self.Bind(wx.EVT_BUTTON, self.selectClick, self.select) self.Bind(wx.EVT_BUTTON, self.optionsClick, self.options) self.Bind(wx.EVT_BUTTON, self.startClick, self.start) self.child = OptionsFrame(self, 'App') self.child.read_config() def selectClick(self, event,path=''): if self.scantype.GetStringSelection() == 'Files': dialog = wx.FileDialog ( None, message = 'Pick a directory.', style= wx.FD_MULTIPLE) if dialog.ShowModal() == wx.ID_OK: temp = dialog.GetPaths() if len(temp)>1: for elem in temp: path += '"' + elem + '" ' else: path = '"' + temp[0].rstrip("\\") + '"' else: dialog = wx.DirDialog ( None, message = 'Pick a directory.' ) if dialog.ShowModal() == wx.ID_OK: path = '"' + dialog.GetPath().rstrip("\\") + '"' self.filepath.Clear() dialog.Destroy() self.filepath.write(path) self.__options['scanpath'] = path def startClick(self, event): self.read_config() self.__options['param'] = '' if self.filepath.GetValue() == '': self.child.error('You have to select some files or folder to scan!') elif (self.__options['user'] == '' or self.__options['pass'] == ''): self.child.error("You didn't enter your username and/or password in the options menu.") elif self.__options['avdump'] == '': self.child.error('You must specify the path to avdump.exe!') elif self.__options['avdump'] == 'avdump.exe': self.child.info('You should set the _absolute_ path to avdump.exe.\nOtherwise complications might arise.') else: if self.__options['misc'].lstrip(',') > 0: for elem in self.__options['misc'].split(','): if elem not in ['retries','']: if elem in self.__simple: self.__options['param'] += ' -' + elem elif elem == 'tout': self.__options['param'] += ' -' + elem + ':' + self.__options[elem] + ':' + self.__options['retries'] else: self.__options['param'] += ' -' + elem + ':' + self.__options[elem] subprocess.call(('%s -ac:%s:%s%s %s') %(self.__options['avdump'], self.__options['user'], self.__options['pass'], self.__options['param'], self.__options['scanpath'])) def optionsClick(self, event): self.child.refresh() self.child.Show(True) class OptionsFrame(wx.Frame): __box = {'ext':False,'log':False,'exp':False,'port':False,'done':False,'bsize':False,'tout':False,'c':False,'m':False,'p':False,'r':False,'z':False,'o':False} __options = {'avdump':'avdump.exe','user':'','pass':'','ext':'','misc':'','bsize':'2048','port':'','tout':'30','retries':'6','exp':'export.txt','log':'log.txt','done':'done.txt'} __configfile='config.ini' def read_config(self): '''read the config file and return the content''' if not os.path.exists(self.__configfile): self.write_config() for line in open(self.__configfile,"r").readlines(): if not line.endswith('='): temp,val = line.rstrip('\n').split('=',1) else: val = '' for elem in self.__options: if temp == elem: self.__options[temp] = val def write_config(self,newconfig=''): for elem in self.__options: newconfig += ('%s=%s\n') %(elem,self.__options[elem]) open(self.__configfile,"w").write(newconfig) def set_misc(self,misc=''): for elem in self.__box: if self.__box[elem] is True: misc += elem + ',' self.__options['misc'] = misc def get_checkboxes(self,misc): if misc is not None: misc = misc.rstrip(',').lstrip(',') if misc.find(',') > 0: for elem in misc.split(','): self.__box[elem] = True else: self.__box[misc] = True def __init__(self, parent, title): wx.Frame.__init__(self, parent, -1, 'options', wx.DefaultPosition, (301, 691), style=wx.CLOSE_BOX | wx.SYSTEM_MENU | wx.CAPTION | 0 | 0 | wx.MINIMIZE_BOX) self.panel = wx.Panel(self, -1) self.adoptions = wx.StaticBox(self.panel, -1, "advanced options", (5,170), (275, 275)) self.groupbox3 = wx.StaticBox(self.panel, -1, "Path to Avdump", (5,0), (275, 55)) self.groupbox4 = wx.StaticBox(self.panel, -1, "UDP API Username/Password", (5,55), (275, 115)) self.groupbox5 = wx.StaticBox(self.panel, -1, "logs", (5,445), (275, 170)) self.filepath = wx.TextCtrl(self.panel, -1, '', (15,20), size=(220, 25)) self.selectavdump = wx.Button(self.panel, -1, '...', (245,20), (25, 25)) self.username = wx.TextCtrl(self.panel, -1, '', (15,90), size=(255, 25)) self.password = wx.TextCtrl(self.panel, -1, '', (15,135), size=(255, 25)) self.delete = wx.CheckBox(self.panel, -1, 'delete files after parsing', (15,190), (240, 17)) self.recursive = wx.CheckBox(self.panel, -1, 'do _not_ recurse into subfolders', (15,205), (240, 17)) self.monitor = wx.CheckBox(self.panel, -1, 'Monitor folder(s)', (15,220), (240, 17)) self.bsize = wx.CheckBox(self.panel, -1, 'overwrite the default setting for buffersize', (15,235), (240, 17)) self.ext = wx.CheckBox(self.panel, -1, 'overwrite the default setting for extentions', (15,250), (240, 17)) self.port = wx.CheckBox(self.panel, -1, 'overwrite the default setting for port', (15,265), (240, 17)) self.tout = wx.CheckBox(self.panel, -1, 'overwrite the default setting for timeouts', (15,280), (240, 17)) self.pause = wx.CheckBox(self.panel, -1, 'Pause when done (hold cmd window)', (15,295), (240, 17)) self.random = wx.CheckBox(self.panel, -1, 'Random file order', (15,310), (240, 17)) self.wait = wx.CheckBox(self.panel, -1, 'wait for response when sending dumps', (15,325), (240, 17)) self.extention = wx.TextCtrl(self.panel, -1, '', (15,360), size=(255, 25)) self.buffersize = wx.TextCtrl(self.panel, -1, '', (15,405), size=(55, 25)) self.portnumber = wx.TextCtrl(self.panel, -1, '', (81,405), size=(55, 25)) self.timeout = wx.TextCtrl(self.panel, -1, '', (149,405), size=(55, 25)) self.retries = wx.TextCtrl(self.panel, -1, '', (215,405), size=(55, 25)) self.exp = wx.CheckBox(self.panel, -1, '', (15,478), (17, 17)) self.exppath = wx.TextCtrl(self.panel, -1, '', (35,475), size=(200, 25)) self.selectexp = wx.Button(self.panel, -1, '...', (245,475), (25, 23)) self.done = wx.CheckBox(self.panel, -1, '', (15,538), (17, 17)) self.donepath = wx.TextCtrl(self.panel, -1, '', (35,535), size=(200, 25)) self.selectdone = wx.Button(self.panel, -1, '...', (245,535), (25, 23)) self.log = wx.CheckBox(self.panel, -1, '', (15,583), (17, 17)) self.logpath = wx.TextCtrl(self.panel, -1, '', (35,580), size=(200, 25)) self.selectlog = wx.Button(self.panel, -1, '...', (245,580), (25, 23)) self.save = wx.Button(self.panel, -1, 'Save', (65,620), (75, 23)) self.cancel = wx.Button(self.panel, -1, 'Cancel', (150,620), (75, 23)) self.Retries = wx.StaticText(self.panel, -1, 'Retries:', (220,387), (44, 17)) self.Timeout = wx.StaticText(self.panel, -1, 'Timeout:', (152,387), (50, 17)) self.Buffersize = wx.StaticText(self.panel, -1, 'Buffersize:', (16,387), (60, 17)) self.Port = wx.StaticText(self.panel, -1, 'Port:', (86,387), (44, 17)) self.donelog = wx.StaticText(self.panel, -1, 'save processed-file-paths to file and exlude existing from proc', (40,505), (200, 25)) self.exported2k = wx.StaticText(self.panel, -1, 'export ed2k-links to file', (40,457), (150, 17)) self.writelog = wx.StaticText(self.panel, -1, 'write output to log', (40,563), (150, 17)) self.apiuser = wx.StaticText(self.panel, -1, 'Username:', (20,73), (150, 17)) self.apipass = wx.StaticText(self.panel, -1, 'Password:', (20,118), (150, 17)) self.extentionlist = wx.StaticText(self.panel, -1, 'comma seperated extension list', (20,343), (170, 17)) self.Bind(wx.EVT_BUTTON, self.selectavdClick, self.selectavdump) self.Bind(wx.EVT_BUTTON, self.selectlogClick, self.selectlog) self.Bind(wx.EVT_BUTTON, self.selectexpClick, self.selectexp) self.Bind(wx.EVT_BUTTON, self.selectdoneClick, self.selectdone) self.Bind(wx.EVT_BUTTON, self.saveClick, self.save) self.Bind(wx.EVT_BUTTON, self.cancelClick, self.cancel) self.Bind(wx.EVT_CLOSE, self.onclose) self.refresh() def selectavdClick(self, event): dialog = wx.FileDialog ( None, message = 'Pick a directory.') if dialog.ShowModal() == wx.ID_OK: self.filepath.Clear() self.filepath.write('"' + dialog.GetPath().rstrip("\\") + '"') def selectlogClick(self, event): dialog = wx.FileDialog ( None, message = 'Pick a directory.') if dialog.ShowModal() == wx.ID_OK: self.logpath.Clear() self.logpath.write('"' + dialog.GetPath().rstrip("\\") + '"') def selectexpClick(self, event): dialog = wx.FileDialog ( None, message = 'Pick a directory.') if dialog.ShowModal() == wx.ID_OK: self.exppath.Clear() self.exppath.write('"' + dialog.GetPath().rstrip("\\") + '"') def selectdoneClick(self, event): dialog = wx.FileDialog ( None, message = 'Pick a directory.') if dialog.ShowModal() == wx.ID_OK: self.donepath.Clear() self.donepath.write('"' + dialog.GetPath().rstrip("\\") + '"') def saveClick(self,event): self.update() if self.__options['avdump'] == '': self.error('You must specify the path to avdump.exe!') elif self.__options['avdump'] == 'avdump.exe': self.info('You should set the _absolute_ path to avdump.exe.\nOtherwise complications might arise.') else: self.Show(False) def cancelClick(self,event): self.refresh() self.Show(False) def onclose(self,event): self.Show(False) def refresh(self): self.read_config() self.get_checkboxes(self.__options['misc']) self.filepath.Clear() self.filepath.write(self.__options['avdump'].rstrip('"').lstrip('"')) self.username.Clear() self.username.write(self.__options['user']) self.password.Clear() self.password.write(self.__options['pass']) self.extention.Clear() self.extention.write(self.__options['ext']) self.buffersize.Clear() self.buffersize.write(self.__options['bsize']) self.portnumber.Clear() self.portnumber.write(self.__options['port']) self.timeout.Clear() self.timeout.write(self.__options['tout']) self.retries.Clear() self.retries.write(self.__options['retries']) self.exppath.Clear() self.exppath.write(self.__options['exp'].rstrip('"').lstrip('"')) self.logpath.Clear() self.logpath.write(self.__options['log'].rstrip('"').lstrip('"')) self.donepath.Clear() self.donepath.write(self.__options['done'].rstrip('"').lstrip('"')) self.ext.SetValue(self.__box['ext']) self.log.SetValue(self.__box['log']) self.exp.SetValue(self.__box['exp']) self.port.SetValue(self.__box['port']) self.done.SetValue(self.__box['done']) self.bsize.SetValue(self.__box['bsize']) self.tout.SetValue(self.__box['tout']) self.recursive.SetValue(self.__box['c']) self.monitor.SetValue(self.__box['m']) self.pause.SetValue(self.__box['p']) self.random.SetValue(self.__box['r']) self.delete.SetValue(self.__box['z']) self.wait.SetValue(self.__box['o']) def update(self): self.__options['avdump'] = self.filepath.GetValue() self.__options['user'] = self.username.GetValue() self.__options['pass'] = self.password.GetValue() self.__options['ext'] = self.extention.GetValue() '''make sure it's mod 8 and at least 256kb''' try: temp = int(self.buffersize.GetValue()) if int(temp) < 256: temp = 256 if not temp % 8: temp = temp - (temp%8) except: temp = 2048 self.__options['bsize'] = unicode(temp) try: int(self.portnumber.GetValue()) self.__options['port'] = self.portnumber.GetValue() except: self.__options['port'] = '' self.__options['tout'] = self.timeout.GetValue() temp = int(self.timeout.GetValue()) '''make sure it's at least 20''' try: if int(temp) < 20: temp = 20 except: temp = 30 self.__options['tout'] = unicode(temp) try: int(self.retries.GetValue()) self.__options['retries'] = self.retries.GetValue() except: self.__options['retries'] = 6 self.__options['exp'] = self.exppath.GetValue() self.__options['log'] = self.logpath.GetValue() self.__options['done'] = self.donepath.GetValue() self.__box['ext'] = self.ext.GetValue() self.__box['log'] = self.log.GetValue() self.__box['exp'] = self.exp.GetValue() self.__box['port'] = self.port.GetValue() self.__box['done'] = self.done.GetValue() self.__box['bsize'] = self.bsize.GetValue() self.__box['tout'] = self.tout.GetValue() self.__box['c'] = self.recursive.GetValue() self.__box['m'] = self.monitor.GetValue() self.__box['p'] = self.pause.GetValue() self.__box['r'] = self.random.GetValue() self.__box['z'] = self.delete.GetValue() self.__box['o'] = self.wait.GetValue() self.set_misc() self.write_config() def error(self,text): message = wx.MessageDialog(self,text,style=wx.ICON_ERROR | wx.OK) message.ShowModal() def info(self,text): message = wx.MessageDialog(self,text,style=wx.ICON_INFORMATION | wx.OK) message.ShowModal() class App(wx.App): def OnInit(self): frame = mainFrame(None, 'App') frame.Show(True) self.SetTopWindow(frame) return True if __name__ == '__main__': app = App(True) app.MainLoop()