def bindctrl(self,ctrlnames,type,validatef): for i,v in enumerate(ctrlnames): if type[i] == 'int': wxvt.setup_validated_integer_callback(self.control(v), xrc.XRCID(v), validatef, pending_color=params.params.wxvt_bg) else: wxvt.setup_validated_float_callback(self.control(v), xrc.XRCID(v), validatef, pending_color=params.params.wxvt_bg)
def OnInit(self): # see http://pythonide.stani.be/manual/html/manual7.html self.frame = RES.LoadFrame(None, "TEST_FRAME") ctrl = xrc.XRCCTRL(self.frame, "TEXT_ENTRY_INT") wxvt.setup_validated_integer_callback(ctrl, ctrl.GetId(), self.OnValidInteger) ctrl = xrc.XRCCTRL(self.frame, "TEXT_ENTRY_FLOAT") wxvt.setup_validated_float_callback(ctrl, ctrl.GetId(), self.OnValidFloat) ctrl = xrc.XRCCTRL(self.frame, "TEXT_ENTRY_CUSTOM") validator = wxvt.Validator(ctrl, ctrl.GetId(), self.OnValidCustom, validate_int_range) self.frame.Show(True) return True
def InitGUI( self ): """Load XML resources, create handles, bind callbacks.""" rsrc = xrc.XmlResource( RSRC_FILE ) self.frame = rsrc.LoadFrame( None, "frame_Ctrax" ) self.frame.SetIcon(wx.Icon(ICON_FILE, wx.BITMAP_TYPE_ICO)) # make references to useful objects self.menu = self.frame.GetMenuBar() if DEBUG: self.debugmenu = wx.Menu() self.debugmenu.Append(ID_PRINTINTERVALS,"Print Intervals", "Print frame intervals tracked, buffered, and written.") self.debugmenu.Append(ID_PRINTBUFFEREL,"Print Buffer...", "Print ellipses stored at specified element of buffer.") self.debugmenu.Append(ID_PRINTFRAME,"Print Frame...", "Pring ellipses for specified frame.") self.menu.Append( self.debugmenu, "DEBUG" ) self.status = xrc.XRCCTRL( self.frame, "bar_status" ) self.framenumber_text = xrc.XRCCTRL( self.frame, "text_framenumber" ) self.num_flies_text = xrc.XRCCTRL( self.frame, "text_num_flies" ) self.rate_text = xrc.XRCCTRL( self.frame, "text_refresh_rate") self.slider = xrc.XRCCTRL( self.frame, "slider_frame" ) self.slider.Enable( False ) # make image window self.img_panel = xrc.XRCCTRL( self.frame, "panel_img" ) box = wx.BoxSizer( wx.VERTICAL ) self.img_panel.SetSizer( box ) self.img_wind = wxvideo.DynamicImageCanvas( self.img_panel, -1 ) box.Add( self.img_wind, 1, wx.EXPAND ) self.img_panel.SetAutoLayout( True ) self.img_panel.Layout() self.zoommode = False # set up tools self.toolbar = xrc.XRCCTRL(self.frame,'toolbar') # other tools self.zoom_id = xrc.XRCID('zoom') self.play_id = xrc.XRCID('play') self.stop_id = xrc.XRCID('stop') self.speedup_id = xrc.XRCID('speed_up') self.slowdown_id = xrc.XRCID('slow_down') self.refresh_id = xrc.XRCID('refresh') # set up appearances for toolbar self.toolbar.SetToggle(self.zoommode,self.zoom_id) self.stop_tracking_tooltip = 'Stop Tracking' self.stop_playback_tooltip = 'Stop Video Playback' self.start_playback_tooltip = 'Start Video Playback' self.speedup_tracking_tooltip = 'Increase Refresh Rate' self.speedup_playback_tooltip = 'Increase Playback Speed' self.slowdown_tracking_tooltip = 'Decrease Refresh Rate' self.slowdown_playback_tooltip = 'Decrease Playback Speed' self.play_speed = 1.0 self.UpdateToolBar('stopped') # bind callbacks # file menu self.frame.Bind( wx.EVT_MENU, self.OnOpen, id=xrc.XRCID("menu_file_open") ) self.frame.Bind( wx.EVT_MENU, self.OnLoadSettings, id=xrc.XRCID("menu_load_settings") ) self.frame.Bind( wx.EVT_MENU, self.OnBatch, id=xrc.XRCID("menu_file_batch") ) self.frame.Bind( wx.EVT_MENU, self.OnSave, id=xrc.XRCID("menu_file_export") ) self.frame.Bind( wx.EVT_MENU, self.OnSaveTimestamps, id=xrc.XRCID("menu_file_write_timestamps") ) self.frame.Bind( wx.EVT_MENU, self.OnSaveAvi, id=xrc.XRCID("menu_file_save_avi") ) self.frame.Bind( wx.EVT_MENU, self.OnSaveDiagnostics, id=xrc.XRCID("menu_file_save_diagnostics") ) self.frame.Bind( wx.EVT_MENU, self.OnQuit, id=xrc.XRCID("menu_file_quit") ) # help menu self.frame.Bind( wx.EVT_MENU, self.OnHelp, id=xrc.XRCID("menu_help_help") ) self.frame.Bind( wx.EVT_MENU, self.OnAbout, id=xrc.XRCID("menu_help_about") ) # track menu self.frame.Bind( wx.EVT_MENU, self.OnStartTrackingMenu, id=xrc.XRCID("menu_track_start") ) self.frame.Bind( wx.EVT_MENU, self.OnStartTrackingMenu, id=xrc.XRCID("menu_track_resume") ) self.frame.Bind( wx.EVT_MENU, self.OnStartTrackingMenu, id=xrc.XRCID("menu_track_resume_here") ) self.frame.Bind( wx.EVT_MENU, self.OnWriteSBFMF, id=xrc.XRCID("menu_track_writesbfmf") ) self.frame.Bind( wx.EVT_MENU, self.OnComputeBg, id=xrc.XRCID("menu_compute_background") ) self.frame.Bind( wx.EVT_MENU, self.OnComputeShape, id=xrc.XRCID("menu_compute_shape") ) # settings menu self.frame.Bind( wx.EVT_MENU, self.OnSettingsBGModel, id=xrc.XRCID("menu_settings_bg_model") ) self.frame.Bind( wx.EVT_MENU, self.OnSettingsBG, id=xrc.XRCID("menu_settings_bg") ) self.frame.Bind( wx.EVT_MENU, self.OnSettingsTracking, id=xrc.XRCID("menu_settings_tracking") ) self.frame.Bind( wx.EVT_MENU, self.OnChooseOrientations,id=xrc.XRCID("menu_choose_orientations")) #self.frame.Bind( wx.EVT_MENU, self.OnEllipseSize, id=xrc.XRCID("menu_settings_ellipses") ) #self.frame.Bind( wx.EVT_MENU, self.OnCheckColorblind, id=xrc.XRCID("menu_settings_use_colorblind") ) self.frame.Bind( wx.EVT_MENU, self.OnCheckShowAnn, id=xrc.XRCID("menu_playback_show_ann") ) self.frame.Bind( wx.EVT_MENU, self.OnCheckRefresh, id=xrc.XRCID("menu_do_refresh") ) self.frame.Bind( wx.EVT_MENU, self.OnTailLength, id=xrc.XRCID("menu_playback_tails") ) self.frame.Bind( wx.EVT_MENU, self.OnCheckDim, id=xrc.XRCID("menu_playback_dim") ) self.frame.Bind( wx.EVT_MENU, self.OnCheckZoom, id=xrc.XRCID("menu_settings_zoom") ) # DEBUG if DEBUG: self.frame.Bind( wx.EVT_MENU, self.OnDebugPrintIntervals,id=ID_PRINTINTERVALS ) self.frame.Bind( wx.EVT_MENU, self.OnDebugPrintBufferElement,id=ID_PRINTBUFFEREL ) self.frame.Bind( wx.EVT_MENU, self.OnDebugPrintFrame,id=ID_PRINTFRAME ) # stats menu #self.frame.Bind( wx.EVT_MENU, self.OnStats, id=xrc.XRCID("menu_stats_vel") ) #self.frame.Bind( wx.EVT_MENU, self.OnStats, id=xrc.XRCID("menu_stats_orn") ) #self.frame.Bind( wx.EVT_MENU, self.OnStats, id=xrc.XRCID("menu_stats_space") ) #self.frame.Bind( wx.EVT_MENU, self.OnStats, id=xrc.XRCID("menu_stats_pos") ) #self.frame.Bind( wx.EVT_MENU, self.OnSettingsStats, id=xrc.XRCID("menu_stats_settings") ) #self.frame.Bind( wx.EVT_MENU, self.OnCheckBatchStats, id=xrc.XRCID("menu_stats_batch") ) # miscellaneous events self.frame.Bind( wx.EVT_CLOSE, self.OnQuit ) self.frame.Bind( wx.EVT_SCROLL, self.OnSlider, self.slider ) self.frame.Bind( wx.EVT_SIZE, self.OnResize ) self.frame.Bind( wx.EVT_MAXIMIZE, self.OnResize ) # not called in Gnome? # toolbar self.frame.Bind(wx.EVT_TOOL,self.ZoomToggle,id=self.zoom_id) self.frame.Bind(wx.EVT_TOOL,self.OnPlayButton,id=self.play_id) self.frame.Bind(wx.EVT_TOOL,self.OnStopButton,id=self.stop_id) self.frame.Bind(wx.EVT_TOOL,self.OnSpeedUpButton,id=self.speedup_id) self.frame.Bind(wx.EVT_TOOL,self.OnSlowDownButton,id=self.slowdown_id) self.frame.Bind(wx.EVT_TOOL,self.OnRefreshButton,id=self.refresh_id) wxvt.setup_validated_integer_callback(self.framenumber_text, xrc.XRCID('text_framenumber'), self.OnFrameNumberValidated, pending_color=params.status_blue) # default settings if sys.platform == 'win32': homedir = os.path.join(os.environ['HOMEDRIVE'], os.environ['HOMEPATH']) else: homedir = os.environ['HOME'] self.dir = homedir self.ellipse_thickness = params.ellipse_thickness # read saved settings, overwriting defaults self.ReadUserfile() self.OnResize(None)