Changeset 4325


Ignore:
Timestamp:
Mar 26, 2007, 1:50:21 PM (17 years ago)
Author:
steve
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • anuga_core/source/anuga/visualiser/offline.py

    r4322 r4325  
    11from Numeric import array, Float, ravel, zeros
    22from Scientific.IO.NetCDF import NetCDFFile
    3 from Tkinter import Button, E, Tk, W
     3from Tkinter import Button, E, Tk, W, Label, StringVar, Scale, HORIZONTAL
    44from visualiser import Visualiser
    55from vtk import vtkCellArray, vtkPoints, vtkPolyData
     
    1313    structures for any dynamic height based quantities to render.
    1414    """
    15     def __init__(self, source, frameDelay=100, forwardStep=1):
     15    def __init__(self, source, frameDelay=100, frameStep=1):
    1616        """The source parameter is assumed to be a NetCDF sww file.
    1717        The frameDelay parameter is the number of milliseconds waited between frames.
     
    2323        self.maxFrameNumber = fin.variables['time'].shape[0] - 1
    2424        fin.close()
     25       
     26        #self.frameNumberTkVariable = StringVar()
     27        #self.frameNumberTkVariable.set('Frame - %05g'%self.framNumber)
    2528
    2629        self.frameDelay = frameDelay
     
    3336        self.zmax = None
    3437
    35         self.forwardStep= forwardStep
     38        self.frameStep= frameStep
    3639
    3740        self.vtk_heightQuantityCache = []
     
    5558        polydata = self.vtk_polyData[quantityName] = vtkPolyData()
    5659        if dynamic is True:
    57             print ' - Frame',self.frameNumber,'of',self.maxFrameNumber
     60            #print ' - Frame',self.frameNumber,'of',self.maxFrameNumber
    5861            if not self.vtk_heightQuantityCache[self.frameNumber].has_key(quantityName):
    5962                self.vtk_heightQuantityCache[self.frameNumber][quantityName]\
     
    128131    def setup_gui(self):
    129132        Visualiser.setup_gui(self)
    130         self.tk_quit.grid(row=0, column=0, columnspan=7, sticky=W+E)
    131         self.tk_restart = Button(self.tk_controlFrame, text="<<<", command=self.restart)
     133        self.tk_quit.grid(row=0, column=0, sticky=W+E)
     134        self.tk_movie_toggle = Button(self.tk_controlFrame, text="Movie off", command=self.movie_toggle)
     135        self.tk_movie_toggle.grid(row=0, column=6,  sticky=W+E)
     136       
     137               
     138        self.tk_restart = Button(self.tk_controlFrame, text="<<<", command=self.restart, width=5)
    132139        self.tk_restart.grid(row=1, column=0, sticky=W+E)
    133         self.tk_back10 = Button(self.tk_controlFrame, text="<<", command=self.back10)
     140        self.tk_back10 = Button(self.tk_controlFrame, text="<<", command=self.back10, width=5)
    134141        self.tk_back10.grid(row=1, column=1, sticky=W+E)
    135         self.tk_back = Button(self.tk_controlFrame, text="<", command=self.back)
     142        self.tk_back = Button(self.tk_controlFrame, text="<", command=self.back, width=5)
    136143        self.tk_back.grid(row=1, column=2, sticky=W+E)
    137144        self.tk_pauseResume = Button(self.tk_controlFrame, text="Pause", command=self.pauseResume, width=15)
    138145        self.tk_pauseResume.grid(row=1, column=3, sticky=W+E)
    139         self.tk_forward = Button(self.tk_controlFrame, text=">", command=self.forward)
     146        self.tk_forward = Button(self.tk_controlFrame, text=">", command=self.forward, width=5)
    140147        self.tk_forward.grid(row=1, column=4, sticky=W+E)
    141         self.tk_forward10 = Button(self.tk_controlFrame, text=">>", command=self.forward10)
     148        self.tk_forward10 = Button(self.tk_controlFrame, text=">>", command=self.forward10, width=5)
    142149        self.tk_forward10.grid(row=1, column=5, sticky=W+E)
    143         self.tk_movie_toggle = Button(self.tk_controlFrame, text="Movie off", command=self.movie_toggle)
    144         self.tk_movie_toggle.grid(row=1, column=6, sticky=W+E)
    145 
     150        self.tk_forwardEnd = Button(self.tk_controlFrame, text=">>>", command=self.forwardEnd, width=5)
     151        self.tk_forwardEnd.grid(row=1, column=6, sticky=W+E)
     152       
     153
     154        self.tk_frameNumber = Label(self.tk_controlFrame, text='Frame')
     155        self.tk_frameNumber.grid(row=2, column=0, sticky=W+E)
     156        self.tk_gotoFrame = Scale(self.tk_controlFrame, from_=0, to=self.maxFrameNumber, orient=HORIZONTAL)
     157        self.tk_gotoFrame.grid(row=2, column=1, columnspan=2, sticky=W+E)
     158        self.tk_stepLabel = Label(self.tk_controlFrame, text='Step')
     159        self.tk_stepLabel.grid(row=2, column=4, sticky=W+E)       
     160        self.tk_frameStep = Scale(self.tk_controlFrame, from_=0, to=self.maxFrameNumber, orient=HORIZONTAL)
     161        self.tk_frameStep.grid(row=2, column=5, columnspan=2, sticky=W+E)
     162       
    146163        # Make the buttons stretch to fill all available space
    147164        for i in range(7):
     
    155172        self.frameNumber = 0
    156173        self.redraw_quantities()
     174        self.update_labels()
    157175        self.pause()
    158176       
    159177        if self.movie:
    160178            self.save_image()
    161        
     179 
     180    def forwardEnd(self):
     181        self.frameNumber = self.maxFrameNumber
     182        self.redraw_quantities()
     183        self.update_labels()
     184        self.pause()
     185               
    162186    def movie_toggle(self):
    163187        if self.movie == True:
     
    208232            self.frameNumber = 0
    209233        self.redraw_quantities()
     234        self.update_labels()
    210235        self.pause()
    211236
     
    214239            self.frameNumber -= 1
    215240            self.redraw_quantities()
     241            self.update_labels()
    216242            self.pause()
    217243
     
    229255        self.paused = False
    230256        self.tk_pauseResume.config(text="Pause")
     257        self.frameNumber = self.tk_gotoFrame.get()
     258        self.frameStep = self.tk_frameStep.get()
    231259        self.tk_root.after(self.frameDelay, self.animateForward)
    232260
     
    235263            self.frameNumber += 1
    236264            self.redraw_quantities()
     265            self.update_labels()
    237266            self.pause()
    238267           
    239268    def forward_step(self):
    240         if self.frameNumber + self.forwardStep <= self.maxFrameNumber:
    241             self.frameNumber += self.forwardStep
     269        if self.frameNumber + self.frameStep <= self.maxFrameNumber:
     270            self.frameNumber += self.frameStep
    242271            self.redraw_quantities()
     272            self.update_labels()
    243273        else:
    244274            self.frameNumber = self.maxFrameNumber           
    245275            self.redraw_quantities()
     276            self.update_labels()   
    246277            self.pause()
    247278         
     
    256287            self.frameNumber = self.maxFrameNumber
    257288        self.redraw_quantities()
     289        self.update_labels()
    258290        self.pause()
    259291
     
    262294            self.forward_step()
    263295            self.tk_root.after(self.frameDelay, self.animateForward)
     296           
     297    def update_labels(self):
     298        #self.tk_frameNumber.config(text='%05g of %05g'%(self.frameNumber,self.maxFrameNumber))
     299        self.tk_gotoFrame.set(self.frameNumber)
     300        self.tk_frameStep.set(self.frameStep)
     301               
     302    def shutdown(self):
     303        #self.pause()
     304        self.tk_root.withdraw()
     305        self.tk_root.destroy()
     306        #Visualiser.shutdown(self)
Note: See TracChangeset for help on using the changeset viewer.