示例#1
0
    def play(self, framerate=None,event=None):
        """this method is called by Play_cb()-the callback of the 'play' buttons """

        self.director.stopViewersAutoRedraw()
        self.director.dispatchEvent(PlayerStartEvent(0))
        #print 'in play() Recording', self.recording, self.stop
##         for i, viActor in enumerate(self.director.redrawActors.values()):
##             cam = viActor.object.currentCamera
##             if self.recording:
##                 #cam.setVideoOutputFile('movie_'+cam.uniqID+'.mpg')
##                 from time import strftime
##                 cam.setVideoOutputFile('movie_'+strftime("%m-%d-%Y_%H:%M")+'.mpg')
##                 cam.setVideoParameters()
##                 # don;t set recording else viewer redraw will record frames
##                 # the frames are recorded explicitely in nextFrame()
##                 #cam.videoRecordingStatus = 'recording'
##                 cam.nbRecordedframes = 0

        Player.play(self, framerate, event)

        for i, viActor in enumerate(self.director.redrawActors.values()):
            cam = viActor.object.currentCamera
            if self.recording:
                self.stopRecording_cb()

        self.director.dispatchEvent(PlayerStopEvent(-1))        
        self.director.startViewersAutoRedraw()

        if self.currentFrameIndex == self.maxFrame:
            #self.director.afterAnimationCb()
            self.GoToEnd_cb()
        elif self.currentFrameIndex == self.startFrame:
            self.GoToStart_cb()
    def __init__(self,viewer, master=None, root=None,
                 height=80,width=200,
                 currentFrameIndex=0,
                 startFrame=0, 
                 endFrame=0,
                 maxFrame=0,
                 stepSize=1, 
                 playMode=1,
                 titleStr='AnimPlayer',
                 counter = 1,
                 gui=1,framerate=15.):

        if master is None:
            master = Tkinter.Toplevel()

        # viewer from which we get the geom to animate
        self.viewer = viewer
        # frame list, is a list of geom .
        # each frame is made of n DejaVu object to be display
        # it a list of tuple, each tuple is a {} and []
        # {} is: {'objname':['geom1','geom2'],'objname':['geom1','geom2']}
        # [] is list of DejaVu object per frame
        self.framelist=[]

        Player.__init__(self, master=master,root=root,height=height,
                        width=width,currentFrameIndex=currentFrameIndex,
                        startFrame=startFrame,endFrame=endFrame,
                        maxFrame=maxFrame,stepSize=stepSize,
                        playMode=playMode,titleStr=titleStr,counter=counter,
                        gui=gui,framerate=framerate)
示例#3
0
 def test_SetPlayMode_cb(self):
     global widget
     root = Tkinter.Toplevel()
     widget = Player(master=root,
                     width=100,
                     height=26,
                     currentFrameIndex=1,
                     startFrame=1,
                     endFrame=10,
                     form2=1,
                     gui=1)
     widget.SetMode_cb()
     widget.playModeVar.set('once in 2 directions')
     widget.framerateWidget.set(10.)
     #widget.playDelayWidget.set(.5)
     #widget.playAfterDelayWidget.set(57)
     widget.startFrameWidget.set(2)
     widget.endFrameWidget.set(8)
     widget.setPlayMode_cb()
     self.assertEqual(widget.playMode == 2, True)
     self.assertEqual(widget.framerate == 10., True)
     #assert widget.delay==.5
     #assert widget.afterDelay==57
     self.assertEqual(widget.startFrame == 2, True)
     self.assertEqual(widget.endFrame == 8, True)
     self.assertEqual(widget.oneDirection == 0, True)
     pause()
     widget.master.master.destroy()
示例#4
0
 def test_FastReverse_cb(self):
     global widget
     root = Tkinter.Toplevel()
     widget = Player(
         master=root, width=100, height=26, currentFrameIndex=1, startFrame=1, endFrame=10, form2=1, gui=1
     )
     widget.nextFrame(widget.endFrame)
     widget.FastReverse_cb()
     self.assertEqual(widget.startFrame == widget.currentFrameIndex, True)
     pause()
     widget.master.master.destroy()
示例#5
0
 def test_nextFrame(self):
     # THIS SHOULD BE OVERWRITTEN for other players
     global widget
     root = Tkinter.Toplevel()
     widget = Player(
         master=root, width=100, height=26, currentFrameIndex=1, startFrame=1, endFrame=10, form2=1, gui=1
     )
     widget.nextFrame(5)
     self.assertEqual(widget.currentFrameIndex, 5)
     pause()
     widget.master.master.destroy()
示例#6
0
    def test_cancelPlayMode_cb(self):
        global widget
        root = Tkinter.Toplevel()
        widget = Player(
            master=root, width=100, height=26, currentFrameIndex=1, startFrame=1, endFrame=10, form2=1, gui=1
        )
        widget.SetMode_cb()

        widget.master.master.update()
        pause()
        widget.cancelPlayMode_cb()
        self.assertEqual(widget.playModeForm.root.winfo_ismapped() == 0, True)
        pause()
        widget.master.master.destroy()
示例#7
0
 def test_GoToStart_cb(self):
     global widget
     root = Tkinter.Toplevel()
     widget = Player(master=root,
                     width=100,
                     height=26,
                     currentFrameIndex=1,
                     startFrame=1,
                     endFrame=10,
                     form2=1)
     widget.GoToStart_cb()
     self.assertEqual(widget.currentFrameIndex == widget.startFrame, True)
     pause()
     widget.master.master.destroy()
示例#8
0
 def test_Close_cb(self):
     global widget
     root = Tkinter.Toplevel()
     widget = Player(master=root,
                     width=100,
                     height=26,
                     currentFrameIndex=1,
                     startFrame=1,
                     endFrame=10,
                     form2=1,
                     gui=1)
     widget.Close_cb()
     self.assertEqual(widget.form.root.winfo_ismapped() == 0, True)
     pause()
     widget.master.master.destroy()
示例#9
0
 def test_FastReverse_cb(self):
     global widget
     root = Tkinter.Toplevel()
     widget = Player(master=root,
                     width=100,
                     height=26,
                     currentFrameIndex=1,
                     startFrame=1,
                     endFrame=10,
                     form2=1,
                     gui=1)
     widget.nextFrame(widget.endFrame)
     widget.FastReverse_cb()
     self.assertEqual(widget.startFrame == widget.currentFrameIndex, True)
     pause()
     widget.master.master.destroy()
示例#10
0
    def test_constructorOptionsForm2(self):
        # test all possible constructor options
        global widget
        root = Tkinter.Toplevel()
        widget = Player(master=root,
                        width=100,
                        height=26,
                        currentFrameIndex=1,
                        startFrame=1,
                        endFrame=10,
                        maxFrame=30,
                        stepSize=3,
                        playMode=3,
                        titleStr='Player Widget',
                        gotoStartfile='stop.gif',
                        gotoEndfile='stop.gif',
                        ff_revfile='stop.gif',
                        ff_fwdfile='stop.gif',
                        stopfile='stop.gif',
                        playfile='stop.gif',
                        playRevfile='stop.gif',
                        chmodfile='stop.gif',
                        closefile='stop.gif',
                        iconpath=None,
                        counter=0,
                        form2=1,
                        gui=1)

        pause()
        widget.master.master.destroy()
示例#11
0
 def test_nextFrame(self):
     #THIS SHOULD BE OVERWRITTEN for other players
     global widget
     root = Tkinter.Toplevel()
     widget = Player(master=root,
                     width=100,
                     height=26,
                     currentFrameIndex=1,
                     startFrame=1,
                     endFrame=10,
                     form2=1,
                     gui=1)
     widget.nextFrame(5)
     self.assertEqual(widget.currentFrameIndex, 5)
     pause()
     widget.master.master.destroy()
示例#12
0
 def test_constructor(self):
     # test if we can display a very basic Player
     global widget
     root = Tkinter.Toplevel()
     widget = Player(master=root, gui=1)
     widget.master.update()
     pause()
     widget.master.master.destroy()
示例#13
0
 def test_getnextFrame(self):
     global widget
     root = Tkinter.Toplevel()
     widget = Player(master=root,
                     width=100,
                     height=26,
                     currentFrameIndex=1,
                     startFrame=1,
                     endFrame=10,
                     form2=1,
                     gui=1)
     frameIndex0 = widget.currentFrameIndex
     frameIndex1 = widget.getNextFrameIndex(frameIndex0)
     self.assertEqual(
         frameIndex1 == frameIndex0 + widget.stepSize * widget.increment,
         True)
     widget.stepSize = 2
     frameIndex2 = widget.getNextFrameIndex(frameIndex1)
     self.assertEqual(frameIndex2 == frameIndex1 + 2 * widget.increment,
                      True)
     widget.increment = -1
     frameIndex3 = widget.getNextFrameIndex(frameIndex2)
     self.assertEqual(frameIndex3 == frameIndex2 - 2, True)
     pause()
     widget.master.master.destroy()
示例#14
0
 def test_SetState_cb(self):
     global widget
     root = Tkinter.Toplevel()
     widget = Player(master=root,
                     width=100,
                     height=26,
                     currentFrameIndex=1,
                     startFrame=1,
                     endFrame=10,
                     form2=1,
                     gui=1)
     widget.form.ent2.delete(0, 'end')
     widget.form.ent2.insert(0, '5')
     widget.SetState_cb()
     self.assertEqual(widget.currentFrameIndex == 5, True)
     pause()
     pause()
     widget.master.master.destroy()
示例#15
0
    def __init__(self,
                 viewer,
                 master=None,
                 root=None,
                 height=80,
                 width=200,
                 currentFrameIndex=0,
                 startFrame=0,
                 endFrame=0,
                 maxFrame=0,
                 stepSize=1,
                 playMode=1,
                 titleStr='AnimPlayer',
                 counter=1,
                 gui=1,
                 framerate=15.):

        if master is None:
            master = Tkinter.Toplevel()

        # viewer from which we get the geom to animate
        self.viewer = viewer
        # frame list, is a list of geom .
        # each frame is made of n DejaVu object to be display
        # it a list of tuple, each tuple is a {} and []
        # {} is: {'objname':['geom1','geom2'],'objname':['geom1','geom2']}
        # [] is list of DejaVu object per frame
        self.framelist = []

        Player.__init__(self,
                        master=master,
                        root=root,
                        height=height,
                        width=width,
                        currentFrameIndex=currentFrameIndex,
                        startFrame=startFrame,
                        endFrame=endFrame,
                        maxFrame=maxFrame,
                        stepSize=stepSize,
                        playMode=playMode,
                        titleStr=titleStr,
                        counter=counter,
                        gui=gui,
                        framerate=framerate)
示例#16
0
 def test_SetPlayMode_cb(self):
     global widget
     root = Tkinter.Toplevel()
     widget = Player(
         master=root, width=100, height=26, currentFrameIndex=1, startFrame=1, endFrame=10, form2=1, gui=1
     )
     widget.SetMode_cb()
     widget.playModeVar.set("once in 2 directions")
     widget.framerateWidget.set(10.0)
     # widget.playDelayWidget.set(.5)
     # widget.playAfterDelayWidget.set(57)
     widget.startFrameWidget.set(2)
     widget.endFrameWidget.set(8)
     widget.setPlayMode_cb()
     self.assertEqual(widget.playMode == 2, True)
     self.assertEqual(widget.framerate == 10.0, True)
     # assert widget.delay==.5
     # assert widget.afterDelay==57
     self.assertEqual(widget.startFrame == 2, True)
     self.assertEqual(widget.endFrame == 8, True)
     self.assertEqual(widget.oneDirection == 0, True)
     pause()
     widget.master.master.destroy()
示例#17
0
 def test_getnextFrame(self):
     global widget
     root = Tkinter.Toplevel()
     widget = Player(
         master=root, width=100, height=26, currentFrameIndex=1, startFrame=1, endFrame=10, form2=1, gui=1
     )
     frameIndex0 = widget.currentFrameIndex
     frameIndex1 = widget.getNextFrameIndex(frameIndex0)
     self.assertEqual(frameIndex1 == frameIndex0 + widget.stepSize * widget.increment, True)
     widget.stepSize = 2
     frameIndex2 = widget.getNextFrameIndex(frameIndex1)
     self.assertEqual(frameIndex2 == frameIndex1 + 2 * widget.increment, True)
     widget.increment = -1
     frameIndex3 = widget.getNextFrameIndex(frameIndex2)
     self.assertEqual(frameIndex3 == frameIndex2 - 2, True)
     pause()
     widget.master.master.destroy()
示例#18
0
    def __init__(self, director, **kw):
##                         master=None, root=None,
##                         height=80,width=200,
##                         currentFrameIndex=0,
##                         startFrame=0, 
##                         endFrame=0,
##                         maxFrame=0,
##                         stepSize=1, 
##                         playMode=0,
##                         ##afterDelay=50,
##                         titleStr='Player',
##                         gotoStartfile = 'go_to_start.gif',
##                         gotoEndfile = 'go_to_end.gif',
##                         ff_revfile = 'ff_rev.gif',
##                         ff_fwdfile = 'ff_fwd.gif',
##                         stopfile = 'stop.gif',
##                         playfile = 'play_fwd.gif',
##                         playRevfile = 'play_rev.gif',
##                         chmodfile = 'chmod.gif',
##                         closefile = 'close.gif',
##                         iconpath = None,
##                         counter = 1,
##                         form2=1, gui=1,framerate=15., hasSlider=False):

        assert isinstance(director, MAADirector)
        self.director = director
        kw['gui'] = 1
        kw['form2'] = 1
        kw['startFrame'] = 0
        kw['maxFrame'] = kw['endFrame'] = director.endFrame
        kw['buttonMask'] = {'setanimB':False, 'closeB':False}
        kw['currentFrameIndex'] = -1
        Player.__init__(self, **kw)
        if self.hasSlider:
            slider = self.form.descr.entryByName['slider']['widget']
            sliderkw = {'from': self.startFrame-1, 'to': self.maxFrame+1}
            slider.configure(sliderkw)
            slider.set(self.currentFrameIndex)
        self.form.ent2.delete(0,'end')
        self.form.ent2.insert(0, 'start')
        self.recording = False
        if sys.platform == 'darwin':
            self.codecType = 'mpeg1video'
        else:
            self.codecType = 'mpeg2video'
        self.filename = 'movie.mpg'
        self.fileTypes = [("MPG", ".mpg")]
        self.cameraSize=Tkinter.StringVar()
        self.cameraSize.set("current")
        root = self.root
        screenw, screenh = root.winfo_screenwidth(), root.winfo_screenheight()
        res = [(320, 240), (640, 480), (1280, 720), (1920, 1080)]
        self.resolutions = {}
        for w,h in res:
            if w <= screenw and h <=screenh:
                self.resolutions["%dx%d"%(w,h)] = (w, h)
        nb = self.director._animNB
        if nb:
            self.vf=nb().pmv
        else:
            self.vf=None

        self.recordDialog = self.createRecordDialog()
示例#19
0
class FloodPlayer(Player):
    def __init__(self, command, file):
        master = command.vf.GUI.ROOT
        self.autoLigandCommand = command.vf.AutoLigandCommand
        self.autoLigandCommand.spheres.Set(visible=1)
        self.autoLigandCommand.halo.Set(visible=1)
        pkl_file = open(file, 'rb')
        self.floods = []
        try:
            data = cPickle.load(pkl_file)
        except Exception, inst:
            print "Error loading ", __file__, "\n", inst
        self.xcent = data[0]
        self.ycent = data[1]
        self.zcent = data[2]
        self.centerx = data[3]
        self.centery = data[4]
        self.centerz = data[5]
        self.spacing = data[6]
        self.centers = []
        data = cPickle.load(pkl_file)
        self.floods.append(data[1])
        try:
            while data:
                data = cPickle.load(pkl_file)
                flood = copy.copy(self.floods[-1])
                for item in data[0]:
                    flood.remove(item)
                for item in data[1]:
                    flood.append(item)
                self.floods.append(flood)
        except EOFError:
            pass
        pkl_file.close()
        fileName = os.path.splitext(os.path.split(file)[-1])[0]
        self.mol = Protein(fileName)
        self.mol.allAtoms = AtomSet([])
        chain = Chain()
        self.residue = Residue(type="UNK")
        chain.adopt(self.residue, setChildrenTop=1)
        self.mol.adopt(chain, setChildrenTop=1)
        self.mol.parser = None
        self.filename = file
        fl = self.floods[0][0]
        x = (fl[1] - self.xcent) * self.spacing + self.centerx
        y = (fl[2] - self.ycent) * self.spacing + self.centery
        z = (fl[3] - self.zcent) * self.spacing + self.centerz
        if fl[4] == 7:
            atomchr = 'P'
            # note, this will color the NA atom pink (the PDB color for Phosphorus)
            radius = AAradii[13][0]
        if fl[4] == 6:
            atomchr = 'S'
            radius = AAradii[13][0]
        if fl[4] == 5:
            atomchr = 'A'
            radius = AAradii[10][0]
        if fl[4] == 4:
            atomchr = 'O'
            radius = AAradii[1][0]
        if fl[4] == 3:
            atomchr = 'N'
            radius = AAradii[4][0]
        if fl[4] == 2:
            atomchr = 'C'
            radius = AAradii[10][0]
        if fl[4] == 1:
            atomchr = 'H'
            radius = AAradii[15][0]
        a = Atom(atomchr, self.residue, atomchr, top=self.mol)
        a._coords = [[x, y, z]]
        a._charges = {}
        a.hetatm = 1
        a.number = 0
        a.radius = radius
        self.mol.allAtoms = self.residue.atoms
        self.mol = self.autoLigandCommand.vf.addMolecule(self.mol, False)
        self.mol.levels = [Protein, Chain, Residue, Atom]
        self.autoLigandCommand.vf.displayCPK(self.mol, scaleFactor=0.4)
        self.autoLigandCommand.vf.colorByAtomType(self.mol, ['cpk'], log=0)
        self.autoLigandCommand.vf.displayLines(self.mol,
                                               negate=True,
                                               displayBO=False,
                                               lineWidth=2,
                                               log=0,
                                               only=False)
        self.colorKeys = a.colors.keys()
        maxLen = len(self.floods) - 1
        Player.__init__(self,
                        master=master,
                        endFrame=maxLen,
                        maxFrame=maxLen,
                        titleStr="AutoLigand Flood Player",
                        hasSlider=True)
        try:  # withdrew SetAnim button
            self.form.ifd.entryByName['setanimB']['widget'].grid_forget()
            self.form.autoSize()
        except:
            pass
        self.nextFrame(0)
        self.form.root.protocol('WM_DELETE_WINDOW', self.hide_cb)