Example #1
0
    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()
Example #2
0
    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' )