def __init__(self, parent, app, ligands=None, receptor=None, logfile=None, job=None, auto=False, debug=False): """ """ rb.RaccoonDefaultWidget.__init__(self, parent) DebugTools.DebugObj.__init__(self, debug) Pmw.Dialog.__init__(self, parent, buttons = ('Stop',), defaultbutton='Stop', title = 'Processing results', command=self.stop, master=self.parent) bbox = self.component('buttonbox') for i in range(bbox.numbuttons()): bbox.button(i).configure(font=self.FONT, default='disabled', **self.BORDER) self.job = job self.app = app self.auto = auto self.problematic = [] self._current = ('none', 'none', 'none') self.status = False if self.job: self.getData() else: self.ligands = ligands if receptor: self.receptor = receptor else: self.receptor = self.app.resultsProcessor.processor.recname self.logfile = logfile self.dirname = os.path.dirname(os.path.normpath(logfile)) self.logfile = os.path.basename(os.path.normpath(logfile)) # build GUI d = self.interior() f = tk.Frame(d) tk.Label(f, text='Processing: ', font=self.FONTbold).pack(side='left', anchor='w', padx=9) self.label = tk.Label(f, text='', font=self.FONT, anchor='w') self.label.pack(side='left', anchor='w') f.pack(expand=0, fill='x',side='top', anchor='n',pady=5) x = tk.Frame(d) self.pc_var = tk.DoubleVar(value=0.) self.progress = hf.ProgressBar(x, self.pc_var, w=300) self.progress.pack(expand=1, fill='x',anchor='n', side='top',padx=9,pady=3) x.pack(expand=1, fill='x', anchor='n', side='top', pady=5) status = self.check() if status == True: self.STOP = False # if successful: import the generated logfile # the log file must be saved with the name of the directory? # receptor Name? self.interior().after(100, self.start) self.activate() else: self.STOP = True self.problematic = [['None', status ]] self.label.configure(text='DONE') self.updateButton()
def run_upload(self, name, dirname, remotepath, comment=None): """ """ # self.run_upload(name = libname, dirname = dirname, remotepath = remotepath) def _go(event=None): #server.debug = True #libobj.debug= True self.app.setBusy() if comment: libobj.info['comment'] = comment libobj.upload( dirname, remotepath, autoregister=0, bg = True) self.RUNNING = True self._stopclosebutton.configure(text= 'Stop', command=stop) status = server.transfer.progress(percent=1) while status < 100.: if server.transfer._STOP: break status = server.transfer.progress(percent=1) pc_var.set(status) self.bar.update() time.sleep(0.2) self.RUNNING = False libobj.debug = True # DEBUG if server.transfer._status['completed']: # EVENT trigger the event refresh of server list #idxfile = remotepath + '/'+ dirname +'/'+'library.db' #idxfile = 'library.db' self._statuslab1.configure(text='Generating index file') self._statuslab2.configure(text='...saving...') libobj.saveIndex() self._statuslab1.configure(text='Registering library to Library Index') self._statuslab2.configure(text='...ongoing...') libobj.register() self._statuslab1.configure(text='\nLibrary upload completed!') self._statuslab2.configure(text=' ') del self._ligand_list[:] self.delete(nuke=True) e = RaccoonEvents.ServerConnection() self.app.eventManager.dispatchEvent(e) else: error = server.transfer_status['error'] self._statuslab1.configure(text='Error trasnferring files!') self._statuslab2.configure(text=error) self._stopclosebutton.configure(text= 'Close', command=forceclose) self.app.setReady() def close(event=None): if event == None: #print "probably clicking on the corner..." return win.destroy() def stop(event=None): t = 'Stop transfer' m = 'The transfer is incomplete: do you want to stop it?' if not tmb.askyesno(parent = win.interior(), title=t, message=m): return server.transfer.stop() self._stopclosebutton.configure(text= 'Close', command=close) forceclose = CallbackFunction(close, True) ## print ">> adding ligands to lib object" # threaded files scanning... server = self.app.server libobj = RaccoonLibraries.LigandLibrary( server, name = name ) libobj.options['split'] = 1000 func = libobj.addLigands func_kwargs = {'ligands' : self._ligand_list } m = ('Extracting ligand properties...' ) self.app.setBusy() progressWin = rb.ProgressDialogWindowTk(parent = self.parent, function = func, func_kwargs = func_kwargs, title ='Ligand library', message = m, operation = 'ligand properties extraction', image = self._ICON_open, autoclose=True, progresstype='percent') progressWin.start() problematic = progressWin.getResults() if problematic == None: problematic = [] # normalize data structure self.app.setReady() #if response == None: #libobj.addLigands(self._ligand_list) # XXX TODO FIXME win = Pmw.MegaToplevel(master = self.win.interior(), title = 'Library manager') win.userdeletefunc(close) win.component('hull').configure(width=600, height=400) fullpath = remotepath + '/' + dirname self._statuslab1 = tk.Label(win.interior(), text = 'Transferring files...', font=self.FONTbold) self._statuslab1.pack(expand=0, fill='x', anchor='w', side='top') self._statuslab2 = tk.Label(win.interior(), text = 'Destination: %s' % fullpath, font=self.FONT) self._statuslab2.pack(expand=0, fill='x', anchor='w', side='top') pc_var = tk.DoubleVar(value=0.) self.bar = hf.ProgressBar(win.interior(), pc_var) self.bar.pack(expand=0, fill='none', anchor='n', side='top',padx=5, pady=3) tk.Frame(win.interior(),height=2,width=1,bd=1,relief='sunken').pack(expand=0, fill='x', anchor='w', side='top') self._stopclosebutton = tk.Button(win.interior(), text='STOP', font=self.FONT) self._stopclosebutton.pack(expand=0, fill='none', anchor='s', side='bottom') win.interior().after(50, _go) win.activate() # geometry='centerscreenalways' )