Changeset 347
- Timestamp:
- 12/29/07 09:29:45 (1 year ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/FlyMovieFormat/motmot/FlyMovieFormat/__init__.py
r346 r347 1 from FlyMovieFormat import *trunk/FlyMovieFormat/motmot/FlyMovieFormat/playfmf.py
r346 r347 12 12 import FlyMovieFormat 13 13 import Image 14 import imops14 import motmot.imops.imops as imops 15 15 16 16 import wx … … 39 39 return 'Image sequence (CAUTION: loses timestamps)' 40 40 def get_saver(self,wx_parent,format,width_height): 41 41 42 42 class ImageSequenceSaver(object): 43 43 def __init__(self,filename,flip_upside_down,format,width_height): … … 61 61 def close(self): 62 62 return 63 63 64 64 def OnCancelImageSequence(event): 65 65 dlg2.Close(True) … … 85 85 ) 86 86 dlg.ShowModal() 87 dlg.Destroy() 87 dlg.Destroy() 88 88 return 89 89 filedir=os.path.split(filename)[0] … … 150 150 saver = self.sub_get_saver(wx_parent,filename,format,widthheight) 151 151 return saver 152 152 153 153 class TxtFileSaverPlugin(GenericSaverPlugin): 154 154 def get_description(self): … … 165 165 self.txt_file.close() 166 166 return TxtSaver(filename) 167 167 168 168 class FmfFileSaverPlugin(GenericSaverPlugin): 169 169 def get_description(self): … … 183 183 self.fmf_file.close() 184 184 return FmfSaver(filename,format) 185 185 186 186 class PlotPanel(wx.Panel): 187 187 … … 197 197 else: 198 198 self.toolbar = None 199 199 200 200 #self.canvas.mpl_connect('button_press_event',self._onButton) 201 201 202 202 # Now put all into a sizer 203 203 sizer = wx.BoxSizer(wx.VERTICAL) 204 204 205 205 # This way of adding to sizer allows resizing 206 206 sizer.Add(self.canvas, 1, wx.LEFT|wx.TOP|wx.GROW) 207 207 208 208 if self.toolbar is not None: 209 209 # On Windows platform, default window size is incorrect, so set … … 220 220 #self.Fit() 221 221 #self.Update() 222 222 223 223 ## def _onButton(self,mouse_event): 224 224 ## if mouse_event.inaxes: … … 254 254 xlim = a.get_xlim() 255 255 a.set_xlim((xlim[1],xlim[0])) 256 256 257 257 if self.toolbar is not None: 258 258 self.toolbar.update() 259 259 260 260 def GetToolBar(self): 261 # You will need to override GetToolBar if you are using an 261 # You will need to override GetToolBar if you are using an 262 262 # unmanaged toolbar in your frame 263 263 return self.toolbar 264 264 265 265 def onEraseBackground(self, evt): 266 266 # this is supposed to prevent redraw flicker on some X servers... … … 281 281 def OnInit(self): 282 282 self.res = RES 283 283 284 284 # main frame and panel --------- 285 285 286 286 self.frame = self.res.LoadFrame(None,"MainFrame") 287 287 288 288 statbar = matplotlib.backends.backend_wx.StatusBarWx(self.frame) 289 289 self.frame.SetStatusBar(statbar) 290 290 291 291 self.panel = xrc.XRCCTRL(self.frame,"MainPanel") 292 292 293 293 # menubar ---------------------- 294 294 295 295 menubar = self.res.LoadMenuBarOnFrame(self.frame,"MENUBAR") 296 296 self.frame_offset = 0 … … 309 309 self.cmap_ids[id]=cmap 310 310 menubar.Append(colormap_menu,"&Colormap") 311 311 312 312 # matplotlib panel ------------- 313 313 … … 316 316 self.plot_container = xrc.XRCCTRL(self.frame,"plot_container_panel") 317 317 sizer = wx.BoxSizer(wx.VERTICAL) 318 318 319 319 # matplotlib panel itself 320 320 self.plotpanel = PlotPanel(self.plot_container,statbar=statbar) … … 334 334 335 335 # final setup ------------------ 336 336 337 337 sizer = self.panel.GetSizer() 338 338 339 339 self.frame.SetSize((800,800)) 340 340 self.frame.Show(1) … … 391 391 # update display 392 392 self.OnScroll(None) 393 393 394 394 def OnNewMovie(self,filename,corruption_fix=False): 395 395 if corruption_fix: … … 398 398 self.allow_partial_frames=False 399 399 a = self.plotpanel.fig.add_subplot(111) # not really new, just gets axes 400 400 401 401 self.fly_movie = FlyMovieFormat.FlyMovie(filename) 402 402 self.n_frames = self.fly_movie.get_n_frames() … … 416 416 self.n_frames = test_frame+1 417 417 break 418 418 419 419 self.frame_shape = frame.shape 420 420 self.first_timestamp=timestamp … … 423 423 slider.SetRange( self.frame_offset+0, max(self.frame_offset+self.n_frames-1,1) ) 424 424 slider.SetValue( self.frame_offset+frame_number ) 425 426 self.frame.SetTitle('playfmf: %s'%(filename,)) # window title 425 426 self.frame.SetTitle('playfmf: %s'%(filename,)) # window title 427 427 self.fly_movie = FlyMovieFormat.FlyMovie(filename) 428 428 self.format = self.fly_movie.get_format() 429 429 self.width_height = (self.fly_movie.get_width()//(bpp[self.format]//8), 430 430 self.fly_movie.get_height()) 431 431 432 432 self.plotpanel.init_plot_data(frame,self.format) 433 433 self.plot_container.Layout() … … 446 446 frame_number, 447 447 allow_partial_frames=self.allow_partial_frames) 448 448 449 449 self.plotpanel.set_array(frame) 450 450 451 451 label = xrc.XRCCTRL(self.frame,"time_rel_label") 452 452 label.SetLabel('%.1f (msec)'%((timestamp-self.first_timestamp)*1000.0,)) 453 453 454 454 label = xrc.XRCCTRL(self.frame,"time_abs_label") 455 455 456 456 time_fmt = '%Y-%m-%d %H:%M:%S %Z%z' 457 457 label.SetLabel('%.3f (sec) %s'%(timestamp, 458 458 time.strftime(time_fmt, time.localtime(timestamp)))) 459 459 460 460 def OnQuit(self, event): 461 461 self.frame.Close(True) … … 469 469 ymin = int(xrc.XRCCTRL(dlg,"ymin_textctrl").GetValue()) 470 470 ymax = int(xrc.XRCCTRL(dlg,"ymax_textctrl").GetValue()) 471 471 472 472 start = int(xrc.XRCCTRL(dlg,"start_frame").GetValue()) 473 473 stop = int(xrc.XRCCTRL(dlg,"stop_frame").GetValue()) … … 484 484 if description == plugin.get_description(): 485 485 break 486 486 487 487 assert description == plugin.get_description() 488 488 … … 502 502 saver.save( save_frame, timestamp ) 503 503 saver.close() 504 504 505 505 dlg = self.res.LoadDialog(self.frame,"EXPORT_DIALOG") 506 506 … … 509 509 description = plugin.get_description() 510 510 format_choice_ctrl.Append(description) 511 511 512 512 xrc.XRCCTRL(dlg,"xmax_textctrl").SetValue(str(self.width_height[0]-1)) 513 513 xrc.XRCCTRL(dlg,"ymax_textctrl").SetValue(str(self.width_height[1]-1)) 514 514 xrc.XRCCTRL(dlg,"stop_frame").SetValue(str(self.n_frames-1)) 515 515 516 516 cancel_button=xrc.XRCCTRL(dlg,"cancel_button") 517 517 wx.EVT_BUTTON(dlg, cancel_button.GetId(),OnCancelExportSmallerMovie) … … 522 522 finally: 523 523 dlg.Destroy() 524 524 525 525 def main(): 526 526 usage = '%prog FILE [options]' 527 527 528 528 parser = OptionParser(usage) 529 529 … … 536 536 default=0, 537 537 help="add an integer offset to frame numbers") 538 538 539 539 (options, args) = parser.parse_args() 540 540 … … 544 544 545 545 filename = args[0] 546 546 547 547 if (sys.platform.startswith('win') or 548 548 sys.platform.startswith('darwin')):
