def _on_close(self, event): # Might be scrollbars or other native components under # us that are generating this event if event.GetWindow() == self.control: self._gc = None wx.EVT_ERASE_BACKGROUND(self.control, None) wx.EVT_PAINT(self.control, None) wx.EVT_SIZE(self.control, None) wx.EVT_LEFT_DOWN(self.control, None) wx.EVT_LEFT_UP(self.control, None) wx.EVT_LEFT_DCLICK(self.control, None) wx.EVT_MIDDLE_DOWN(self.control, None) wx.EVT_MIDDLE_UP(self.control, None) wx.EVT_MIDDLE_DCLICK(self.control, None) wx.EVT_RIGHT_DOWN(self.control, None) wx.EVT_RIGHT_UP(self.control, None) wx.EVT_RIGHT_DCLICK(self.control, None) wx.EVT_MOTION(self.control, None) wx.EVT_ENTER_WINDOW(self.control, None) wx.EVT_LEAVE_WINDOW(self.control, None) wx.EVT_MOUSEWHEEL(self.control, None) wx.EVT_KEY_DOWN(self.control, None) wx.EVT_KEY_UP(self.control, None) wx.EVT_CHAR(self.control, None) wx.EVT_WINDOW_DESTROY(self.control, None) self.control.SetDropTarget(None) self.control = None self.component.cleanup(self) self.component.parent = None self.component.window = None self.component = None return
def __init__(self, parent, size=wx.DefaultSize): MyCanvasBase.__init__(self, parent, size=size) self.m_log = True # 20070724 - default log-scale self.fitYtoSeen = True # 20080731 self.mouse_last_x, self.mouse_last_y = 0,0 # in case mouseIsDown happens without preceeding mouseDown self.dragCenter = False # in case mouseIsDown happens without preceeding mouseDown self.dragLeft = True # in case mouseIsDown happens without preceeding mouseDown self.keepZoomedToBraces = True # 20080806 wx.EVT_MOUSE_EVENTS(self, self.OnMouse) wx.EVT_MOUSEWHEEL(self, self.OnWheel) wx.EVT_CLOSE(self, self.OnClose) self.MakePopupMenu() self.m_histPlotArray = None self.leftBrace = 0. self.rightBrace= 100. self.bandTobeGenerated = True self.m_imgChanged = 1 self.m_histScaleChanged = 1 self.colMap = None self.m_texture_list = None self.m_histGlRGB=(1.0, 1.0, 1.0) #20080707 doOnXXXX event handler are now lists of functions self.doOnBrace = [] # (self) # use self.leftBrace, self.rightBrace to get current brace positions self.doOnMouse = [] # (xEff, ev)
def __init__(self, parent, id=wx.ID_ANY, eventTarget=None): canvas.L5RCanvas.__init__(self, parent, id) self.eventTarget = eventTarget or self self.gameState = None self.player = None self.isLocal = False self.markerPos = None self.markerOffset = (0, 0) self.attachMarker = None self.texBorderFrame = self.LoadTexture( os.path.join(locationsettings.data_dir, "images/border2.png")) self.texAttach = self.LoadTexture( os.path.join(locationsettings.data_dir, "images/border3.png")) wx.EVT_LEFT_DOWN(self, self.OnLeftMouseDown) wx.EVT_LEFT_DCLICK(self, self.OnDoubleClick) wx.EVT_RIGHT_DOWN(self, self.OnRightMouseDown) wx.EVT_MOTION(self, self.OnMotion) wx.EVT_MOUSEWHEEL(self, self.OnMouseWheel) wx.EVT_MIDDLE_DOWN(self, self.OnMouseWheelDown) self.SetDropTarget( dragdrop.CardDropTarget(self.OnDragData, self.OnDragOver, self.OnDragLeave)) self.texToken = {} self.texMarker = {} self.contextCard = None self.hoverCard = None self.pfHeight = DEFAULT_PLAYFIELD_HEIGHT self.background = PlayfieldCanvasBackground()
def __init__(self, parent, image, glCanvas, do, chan=0, zdim=2): wx.Panel.__init__(self, parent, -1, size=parent.Size) self.image = image self.glCanvas = glCanvas self.do = do self.chan = chan self.zdim = zdim wx.EVT_PAINT(self, self.OnPaint) wx.EVT_SIZE(self, self.OnSize) wx.EVT_MOUSEWHEEL(self, self.OnWheel) wx.EVT_KEY_DOWN(self, self.OnKeyPress) wx.EVT_LEFT_DOWN(self, self.OnLeftDown) wx.EVT_LEFT_UP(self, self.OnLeftUp) wx.EVT_MIDDLE_DOWN(self, self.OnMiddleDown) wx.EVT_MIDDLE_UP(self, self.OnMiddleUp) wx.EVT_MOTION(self, self.OnMotion) self.selecting = False self.panning = False self.do.WantChangeNotification.append(self.Refresh)
def __init__(self, parent, id=-1, pos=wx.DefaultPosition, size=wx.DefaultSize, style=wx.VSCROLL | wx.HSCROLL, validator=wx.DefaultValidator, name="NotebookWidget"): """ Initialize """ wx.ScrolledWindow.__init__(self, parent, id, pos, size, style, name) self.type = "notebook" self.celllist = [] self.id_dict = { -1: -1 } #dictionary giving indeces corresponding to window ids self.activecell = -1 self.vscrollstep = 17 self.hscrollstep = 8 # self.vscrollpos = 0 # self.hscrollpos = 0 self.vsize = 0 self.hsize = 2000 # TODO: This must not be set explicitly self.AdjustScrollbars() self.SetBackgroundColour(wx.WHITE) wx.EVT_SIZE(self, self.OnSize) wx.EVT_MOUSEWHEEL(self, self.OnWheel)
def __init__(self, parent): attribList = (glcanvas.WX_GL_RGBA, glcanvas.WX_GL_DOUBLEBUFFER, glcanvas.WX_GL_DEPTH_SIZE, 24, glcanvas.WX_GL_STENCIL_SIZE, 8) glcanvas.GLCanvas.__init__(self, parent, attribList=attribList) self.parent = parent self.context = glcanvas.GLContext(self) wx.EVT_PAINT(self, self.OnPaint) wx.EVT_SIZE(self, self.OnSize) wx.EVT_ERASE_BACKGROUND(self, self.OnEraseBackground) wx.EVT_MOTION(self, self.OnMouseMotion) wx.EVT_MOUSEWHEEL(self, self.OnMouseWheel) self.yaw = 30 self.pitch = 60 self.zoom = 300 self.offsetX = 0 self.offsetY = 0 self.view3D = True self.gcodeDisplayList = None self.gcodeDisplayListMade = None self.gcodeDisplayListCount = 0 self.objColor = [[1.0, 0.8, 0.6, 1.0], [0.2, 1.0, 0.1, 1.0], [1.0, 0.2, 0.1, 1.0], [0.1, 0.2, 1.0, 1.0]] self.oldX = 0 self.oldY = 0 self.dragType = '' self.tempRotate = 0
def init(self, parent): """ Finishes initializing the editor by creating the underlying toolkit widget. """ factory = self.factory # Establish the range of the slider: low, high = factory.low, factory.high if high <= low: low = high = None range = self.object.trait(self.name).handler if isinstance(range, Range): low, high = range._low, range._high if low is None: if high is None: high = 1.0 low = high - 1.0 elif high is None: high = low + 1.0 # Establish the slider increment: increment = factory.increment if increment <= 0.0: if isinstance(low, int): increment = 1.0 else: increment = pow(10, int(log10((high - low) / 1000.0))) # Save the values we calculated: self.set(low=low, high=high, increment=increment) # Create the control: self.control = control = wx.Window(parent, -1, size=wx.Size(70, 20), style=wx.FULL_REPAINT_ON_RESIZE | wx.TAB_TRAVERSAL) # Set up the painting event handlers: wx.EVT_ERASE_BACKGROUND(control, self._erase_background) wx.EVT_PAINT(control, self._on_paint) wx.EVT_SET_FOCUS(control, self._set_focus) # Set up mouse event handlers: wx.EVT_LEFT_DOWN(control, self._left_down) wx.EVT_LEFT_UP(control, self._left_up) wx.EVT_MOTION(control, self._motion) wx.EVT_MOUSEWHEEL(control, self._mouse_wheel) wx.EVT_ENTER_WINDOW(control, self._enter_window) wx.EVT_LEAVE_WINDOW(control, self._leave_window) # Set up the control resize handler: wx.EVT_SIZE(control, self._resize) # Set the tooltip: if not self.set_tooltip(): control.SetToolTipString('[%g..%g]' % (low, high))
def OnWheelWhat(self, ev): what = ev.GetId() - (Menu_WheelWhatMenu + 1) if what < self.zndim: def OnWheel(evt): rot = evt.GetWheelRotation() / 120. #HACK self.doScroll(axis=what, dir=rot) self.viewer.OnWheel = OnWheel else: self.viewer.OnWheel = self.vOnWheel_zoom wx.EVT_MOUSEWHEEL(self.viewer, self.viewer.OnWheel)
def __init__(self, *args, **kwds): # begin wxGlade: WaveformView.__init__ kwds["style"] = wx.BORDER_SUNKEN | wx.TAB_TRAVERSAL wx.ScrolledWindow.__init__(self, *args, **kwds) self.__set_properties() self.__do_layout() # end wxGlade # test for wxPython type self.cdc = wx.ClientDC(self) self.isWxPhoenix = False if not "SetClippingRect" in dir( self.cdc ): # TODO: Test this version: if "SetClippingRect" not in dir(cdc) self.isWxPhoenix = True # Other initialization self.doc = None self.maxWidth = 1 self.maxHeight = 1 self.isDragging = False self.basicScrubbing = False self.curFrame = 0 self.oldFrame = 0 self.buffer = None self.clipRect = None self.sampleWidth = defaultSampleWidth self.samplesPerFrame = defaultSamplesPerFrame self.samplesPerSec = 24 * self.samplesPerFrame self.frameWidth = self.sampleWidth * self.samplesPerFrame self.phraseBottom = 16 self.wordBottom = 32 self.phonemeTop = 128 self.didresize = 0 # Connect event handlers # window events wx.EVT_PAINT(self, self.OnPaint) wx.EVT_SIZE(self, self.OnSize) wx.EVT_IDLE(self, self.OnIdle) # mouse events wx.EVT_LEFT_DOWN(self, self.OnMouseDown) wx.EVT_RIGHT_DOWN(self, self.OnMouseDown) wx.EVT_LEFT_DCLICK(self, self.OnMouseDown) wx.EVT_LEFT_UP(self, self.OnMouseUp) wx.EVT_RIGHT_UP(self, self.OnMouseUp) wx.EVT_MOTION(self, self.OnMouseMove) wx.EVT_MOUSEWHEEL(self, self.OnMouseWheel) # Force an update self.OnSize()
def __init__(self, parent, frame): self.frame = frame self.lastkey = None self.previewkey = self.previewbmp = self.previewimg = self.previewsize = None self.sashsize = 4 wx.SplitterWindow.__init__(self, parent, wx.ID_ANY, style=wx.SP_3DSASH | wx.SP_NOBORDER | wx.SP_LIVE_UPDATE) panel = wx.Panel(self) sizer = wx.BoxSizer(wx.VERTICAL) self.sb = wx.SearchCtrl(panel) self.sb.ShowCancelButton(True) sizer.Add(self.sb, 0, flag=wx.EXPAND | (platform == 'darwin' and wx.ALL or wx.BOTTOM), border=3) if platform == 'darwin' and wx.VERSION < (2, 9): sizer.AddSpacer(6) # layout on OSX sucks self.cb = PaletteChoicebook(panel, frame, self) sizer.Add(self.cb, 1, wx.EXPAND) panel.SetSizerAndFit(sizer) self.preview = wx.Panel(self, wx.ID_ANY, style=wx.FULL_REPAINT_ON_RESIZE) if platform == 'darwin': self.preview.ClearBackground = self.ClearPreviewBackground self.SetMinimumPaneSize(1) self.SplitHorizontally(panel, self.preview, -ClutterDef.PREVIEWSIZE) self.lastheight = self.GetSize().y wx.EVT_SIZE(self, self.OnSize) wx.EVT_KEY_DOWN(self, self.OnKeyDown) wx.EVT_SET_FOCUS(self, self.OnSetFocus) wx.EVT_KEY_DOWN(self.preview, self.OnKeyDown) wx.EVT_SET_FOCUS(self.preview, self.OnSetFocus) wx.EVT_SPLITTER_SASH_POS_CHANGING(self, self.GetId(), self.OnSashPositionChanging) wx.EVT_PAINT(self.preview, self.OnPaint) wx.EVT_TEXT(self.sb, self.sb.GetId(), self.OnSearch) wx.EVT_MOUSEWHEEL( self, self.OnMouseWheel ) # stop these events propagating to main window under wx2.9 if wx.version() < '2.9.4.1': # cancel button doesn't send EVT_SEARCHCTRL_CANCEL_BTN under 2.9.4.0 - http://trac.wxwidgets.org/ticket/14799 # event not needed under 2.9.4.1 wx.EVT_SEARCHCTRL_CANCEL_BTN(self.sb, self.sb.GetId(), self.OnCancelSearch)
def AddCell(self, cell, update=True): """ Adds a cell to the celllist. The cell is added to the end of the list. If update is False, RelayoutCells is not called. This is done, so if you need to add or delete more than one cell you will only need to call RelayoutCells once, via self.Update""" #Add the needed event handlers wx.EVT_MOUSEWHEEL(cell, self.OnWheel) self.celllist.append(cell) index = len(self.celllist) - 1 if update: self.RelayoutCells(index) self.id_dict[cell.GetId] = index return index
def __init__(self, parent, size=wx.DefaultSize, style=0, originLeftBottom=None): wxgl.GLCanvas.__init__(self, parent, -1, style=style, size=size) self.error = None self.doViewportChange = True self.x00 = 0 #-.5 self.y00 = 0 #-.5 self.x0 = None # call center() in OnPaint -- self.x00 self.y0 = None # call center() in OnPaint -- self.y00 self.scale = 1. self.aspectRatio = 1. self.rot = 0. self.zoomChanged = True # trigger a first placing of image self.sizeChanged = True self.keepCentered = True self.pixelGrid_state = 0 # 0-off, 1-everyPixel, 2- every 10 pixels self.GLinit = False self.context = wxgl.GLContext(self) # 20141124 cocoa self.moreGlLists = [] self.moreGlLists_enabled = [] self.moreMaster_enabled = 1 self.moreGlLists_dict = {} # map 'name' to list of idx in moreGlLists # a given idx can be part of multiple 'name' entries # a given name entry can contain a given idx only once self.moreGlLists_nameBlacklist = set() self.moreGlLists_NamedIdx = { } # map str to int or None -- this is helpful for reusing Idx for "changing" gllists # if name (type str) wasn't used before, it defaults to None (20080722) self.moreGlListReuseIdx = None self.wheelFactor = 2**(1 / 3. ) #1.189207115002721 # >>> 2 ** (1./4) # 2 wx.EVT_ERASE_BACKGROUND(self, self.OnEraseBackground) wx.EVT_MOVE(parent, self.OnMove) wx.EVT_SIZE(self, self.OnSize) # CHECK # CHECK wx.EVT_MOUSEWHEEL(self, self.OnWheel)
def __init__(self, parent, projectPlannerWindow): super(PreviewGLCanvas, self).__init__(parent) self.parent = projectPlannerWindow wx.EVT_MOUSEWHEEL(self, self.OnMouseWheel) self.yaw = 30 self.pitch = 60 self.offsetX = 0 self.offsetY = 0 self.view3D = self.parent.alwaysAutoPlace if self.view3D: self.zoom = 300 else: self.zoom = self.parent.machineSize[0] / 2 + 10 self.dragType = '' self.viewport = None self.allowDrag = False self.tempMatrix = None self.objColor = profile.getPreferenceColour('model_colour')
def __init__(self, parent): super(PreviewGLCanvas, self).__init__(parent) wx.EVT_MOUSEWHEEL(self, self.OnMouseWheel) self.parent = parent self.yaw = 30 self.pitch = 60 self.zoom = 300 self.viewTarget = [parent.machineCenter.x, parent.machineCenter.y, 0.0] self.view3D = True self.gcodeDisplayList = None self.gcodeDisplayListMade = None self.gcodeDisplayListCount = 0 self.objColor = [[1.0, 0.8, 0.6, 1.0], [0.2, 1.0, 0.1, 1.0], [1.0, 0.2, 0.1, 1.0], [0.1, 0.2, 1.0, 1.0]] self.oldX = 0 self.oldY = 0 self.dragType = '' self.tempMatrix = None self.viewport = None
def __init__(self,parent): glcanvas.GLCanvas.__init__(self, parent, -1) self.init = False self.width = 0 self.height = 0 self.zoom = 50.0 self.minZoom = 5.0 self.maxZoom = 400.0 self.lookingAtX = 0 self.lookingAtY = 0 self.lookingAtZ = 0 self.viewAngleSky = 50.0 self.viewAngleFloor = 90.0 self.angleSpeed = 3.0 self.viewX = 0 self.viewY = 0 self.viewZ = 0 self.point = Numeric.zeros((1,4),typecode=Numeric.Float) self.clearCache() self.frustum = [] self.viewMatrixInv = Numeric.identity(4,Numeric.Float) self.modelMatrix = None self.currentModelView = None self.redrawRequested = False self.preprocessed = False self.preprocessing = False wx.EVT_ERASE_BACKGROUND(self, self.OnEraseBackground) wx.EVT_SIZE(self, self.OnSize) wx.EVT_PAINT(self, self.OnPaint) wx.EVT_LEFT_DOWN(self, self.OnMouseDown) wx.EVT_LEFT_UP(self, self.OnMouseUp) wx.EVT_MOTION(self, self.OnMouseMotion) wx.EVT_MOUSEWHEEL(self, self.OnMouseWheel) wx.EVT_KEY_DOWN(self, self.OnKeyDown) wx.EVT_KEY_UP(self,self.OnKeyUp)
def __init__(self, parent, realParent): attribList = (glcanvas.WX_GL_RGBA, glcanvas.WX_GL_DOUBLEBUFFER, glcanvas.WX_GL_DEPTH_SIZE, 24, glcanvas.WX_GL_STENCIL_SIZE, 8) glcanvas.GLCanvas.__init__(self, parent, attribList=attribList) self.parent = realParent self.context = glcanvas.GLContext(self) wx.EVT_PAINT(self, self.OnPaint) wx.EVT_SIZE(self, self.OnSize) wx.EVT_ERASE_BACKGROUND(self, self.OnEraseBackground) wx.EVT_LEFT_DOWN(self, self.OnMouseLeftDown) wx.EVT_MOTION(self, self.OnMouseMotion) wx.EVT_MOUSEWHEEL(self, self.OnMouseWheel) self.yaw = 30 self.pitch = 60 self.zoom = self.parent.machineSize.x / 2 + 10 self.offsetX = 0 self.offsetY = 0 self.view3D = False self.allowDrag = False
def __init__(self, parent, eventSource, metaData, timeRange, charts=[], size=(-1, -1)): self.eventSource = eventSource self.metaData = metaData self.maxRange = list(timeRange) self.timeRange = timeRange self.charts = charts self.autoRange = True self.initialised = False self.SetEventSource(eventSource) self.startTime = self.metaData.getEntry('StartTime') # self.evKeyNames = set() # for e in self.eventSource: # self.evKeyNames.add(e['EventName']) # # colours = pylab.cm.gist_rainbow(np.arange(len(self.evKeyNames))/float(len(self.evKeyNames)))[:,:3] # # self.lineColours = {} # for k, c in zip(self.evKeyNames, colours): # self.lineColours[k] = c wx.Panel.__init__(self, parent, size=size) wx.EVT_PAINT(self, self.OnPaint) wx.EVT_SIZE(self, self.OnSize) wx.EVT_MOUSEWHEEL(self, self.OnWheel) self.initialised = True
def __init__(self, parent, projectPlannerWindow): attribList = (glcanvas.WX_GL_RGBA, glcanvas.WX_GL_DOUBLEBUFFER, glcanvas.WX_GL_DEPTH_SIZE, 24, glcanvas.WX_GL_STENCIL_SIZE, 8) glcanvas.GLCanvas.__init__(self, parent, attribList = attribList) self.parent = projectPlannerWindow self.context = glcanvas.GLContext(self) wx.EVT_PAINT(self, self.OnPaint) wx.EVT_SIZE(self, self.OnSize) wx.EVT_ERASE_BACKGROUND(self, self.OnEraseBackground) wx.EVT_LEFT_DOWN(self, self.OnMouseLeftDown) wx.EVT_MOTION(self, self.OnMouseMotion) wx.EVT_MOUSEWHEEL(self, self.OnMouseWheel) self.yaw = 30 self.pitch = 60 self.offsetX = 0 self.offsetY = 0 self.view3D = self.parent.alwaysAutoPlace if self.view3D: self.zoom = 300 else: self.zoom = self.parent.machineSize[0] / 2 + 10 self.allowDrag = False self.objColor = profile.getPreferenceColour('model_colour')
def InsertCell(self, cell, index, update=True): """ Inserts a cell before the given index. if the index is less than or equal to zero insert at the begining. If the index is too large, insert at the end """ #Add the event handlers wx.EVT_MOUSEWHEEL(cell, self.OnWheel) index = max(0, index) index = min(len(self.celllist), index) self.celllist.insert(index, cell) self.id_dict[cell.GetId()] = index def f(x): self.id_dict[x.GetId()] += 1 return None map(f, self.celllist[index + 1:]) if update: self.RelayoutCells(index) return index
def __init__(self, parent): attriblist = [ wx.glcanvas.WX_GL_RGBA, wx.glcanvas.WX_GL_STENCIL_SIZE, 8, wx.glcanvas.WX_GL_DOUBLEBUFFER, 16 ] GLCanvas.__init__(self, parent, -1, attribList=attriblist) wx.EVT_PAINT(self, self.OnPaint) wx.EVT_SIZE(self, self.OnSize) wx.EVT_MOUSEWHEEL(self, self.OnWheel) wx.EVT_LEFT_DOWN(self, self.OnLeftDown) wx.EVT_LEFT_UP(self, self.OnLeftUp) wx.EVT_MIDDLE_DOWN(self, self.OnMiddleDown) wx.EVT_MIDDLE_UP(self, self.OnMiddleUp) wx.EVT_MOTION(self, self.OnMouseMove) wx.EVT_KEY_DOWN(self, self.OnKeyPress) #wx.EVT_MOVE(self, self.OnMove) self.gl_context = wx.glcanvas.GLContext(self) self.init = 0 self.nVertices = 0 self.IScale = [1.0, 1.0, 1.0] self.zeroPt = [0, 1.0 / 3, 2.0 / 3] self.cmap = pylab.cm.hsv self.clim = [0, 1] self.alim = [0, 1] self.wireframe = False self.parent = parent self.pointSize = 5 #default point size = 5nm self.pixelsize = 5. / 800 self.xmin = 0 self.xmax = self.pixelsize * self.Size[0] self.ymin = 0 self.ymax = self.pixelsize * self.Size[1] self.scaleBarLength = 200 self.scaleBarOffset = (20.0, 20.0) #pixels from corner self.scaleBarDepth = 10.0 #pixels self.scaleBarColour = [1, 1, 0] self.mode = 'triang' self.colouring = 'area' self.drawModes = { 'triang': GL_TRIANGLES, 'quads': GL_QUADS, 'edges': GL_LINES, 'points': GL_POINTS } self.c = numpy.array([1, 1, 1]) self.a = numpy.array([1, 1, 1]) self.zmin = -10 self.zmax = 10 self.angup = 0 self.angright = 0 self.vecUp = numpy.array([0, 1, 0]) self.vecRight = numpy.array([1, 0, 0]) self.vecBack = numpy.array([0, 0, 1]) self.xc = 0 self.yc = 0 self.zc = 0 self.scale = 1 self.stereo = True self.eye_dist = .1 self.dragging = False self.panning = False self.edgeThreshold = 200 self.layers = [] return
def __init__(self, parent, id, title): wx.Frame.__init__( self, parent, -1, title ) #, size = (800,600), style=wx.DEFAULT_FRAME_STYLE|wx.NO_FULL_REPAINT_ON_RESIZE) wx.EVT_MOUSEWHEEL(self, self.OnWheel)
def __init__(self, parent, dstack = None, aspect=1, do = None, voxelsize=[1,1,1]): if (dstack == None and do == None): dstack = scipy.zeros((10,10)) if do == None: self.do = DisplayOpts(dstack, aspect=aspect) self.do.Optimise() else: self.do = do self.voxelsize = voxelsize scrolledImagePanel.ScrolledImagePanel.__init__(self, parent, self.DoPaint, style=wx.SUNKEN_BORDER|wx.TAB_TRAVERSAL) self.do.WantChangeNotification.append(self.GetOpts) #self.do.WantChangeNotification.append(self.Refresh) self.SetVirtualSize(wx.Size(self.do.ds.shape[0],self.do.ds.shape[1])) #self.imagepanel.SetSize(wx.Size(self.do.ds.shape[0],self.do.ds.shape[1])) self.points =[] self.pointsR = [] self.showPoints = True self.showTracks = True self.showContours = True self.showScaleBar = True self.scaleBarLength = 2000 self.pointMode = 'confoc' self.pointTolNFoc = {'confoc' : (5,5,5), 'lm' : (2, 5, 5), 'splitter' : (2,5,5)} self.showAdjacentPoints = False self.pointSize = 11 self.layerMode = 'Add' self.psfROIs = [] self.psfROISize=[30,30,30] self.lastUpdateTime = 0 self.lastFrameTime = 2e-3 #self.do.scale = 0 self.crosshairs = True #self.showSelection = True self.selecting = False self.aspect = 1. self.slice = None self.overlays = [] self._oldIm = None self._oldImSig = None self.CenteringHandlers = [] self.labelPens = [wx.Pen(wx.Colour(*pylab.cm.hsv(v, bytes=True)), 2) for v in numpy.linspace(0, 1, 16)] # if not aspect == None: # if scipy.isscalar(aspect): # self.do.aspects[2] = aspect # elif len(aspect) == 3: # self.do.aspects = aspect #self.SetOpts() #self.optionspanel.RefreshHists() self.updating = 0 self.showOptsPanel = 1 self.refrTimer = wx.Timer(self) self.Bind(wx.EVT_TIMER, self.OnRefrTimer) wx.EVT_MOUSEWHEEL(self.imagepanel, self.OnWheel) wx.EVT_KEY_DOWN(self.imagepanel, self.OnKeyPress) #wx.EVT_KEY_DOWN(self.Parent(), self.OnKeyPress) wx.EVT_LEFT_DOWN(self.imagepanel, self.OnLeftDown) wx.EVT_LEFT_UP(self.imagepanel, self.OnLeftUp) wx.EVT_MIDDLE_DOWN(self.imagepanel, self.OnMiddleDown) wx.EVT_MIDDLE_UP(self.imagepanel, self.OnMiddleUp) wx.EVT_RIGHT_DOWN(self.imagepanel, self.OnRightDown) wx.EVT_RIGHT_UP(self.imagepanel, self.OnRightUp) wx.EVT_MIDDLE_DCLICK(self.imagepanel, self.OnMiddleDClick) wx.EVT_MOTION(self.imagepanel, self.OnMotion) # wx.EVT_ERASE_BACKGROUND(self.imagepanel, self.DoNix) wx.EVT_ERASE_BACKGROUND(self, self.DoNix)
def __init__(self, parent, owner, items=None): wx.Dialog.__init__(self, parent, -1, _("Menu editor"), style=wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER) ADD_ID, REMOVE_ID, NAME_ID, LABEL_ID, ID_ID, CHECK_RADIO_ID, LIST_ID, \ ADD_SEP_ID, MOVE_LEFT_ID, MOVE_RIGHT_ID, MOVE_UP_ID, \ MOVE_DOWN_ID, HELP_STR_ID = [wx.NewId() for i in range(13)] self._staticbox = wx.StaticBox(self, -1, _("Menu item:")) self.owner = owner self.menu_items = wx.ListCtrl(self, LIST_ID, style=wx.LC_REPORT | \ wx.LC_SINGLE_SEL|wx.SUNKEN_BORDER) # ALB 2004-09-26: workaround to make the scroll wheel work... wx.EVT_MOUSEWHEEL(self.menu_items, lambda e: e.Skip()) self.menu_items.InsertColumn(0, _("Label")) self.menu_items.InsertColumn(1, _("Id")) self.menu_items.InsertColumn(2, _("Name")) self.menu_items.InsertColumn(3, _("Help String")) self.menu_items.InsertColumn(4, _("Type")) # ALB 2004-12-05 self.menu_items.InsertColumn(5, _("Event Handler")) self.menu_items.SetColumnWidth(0, 250) self.menu_items.SetColumnWidth(2, 250) self.menu_items.SetColumnWidth(3, 250) self.menu_items.SetColumnWidth(5, 250) # menu item fields self.id = wx.TextCtrl(self, ID_ID) self.label = wx.TextCtrl(self, LABEL_ID) self.name = wx.TextCtrl(self, NAME_ID) self.help_str = wx.TextCtrl(self, HELP_STR_ID) # ALB 2004-12-05 self.event_handler = wx.TextCtrl(self, -1) import re self.handler_re = re.compile(r'^\s*\w*\s*$') #self.checkable = wx.CheckBox(self, CHECK_ID, "") #Checkable") self.check_radio = wx.RadioBox( self, CHECK_RADIO_ID, _("Type"), choices=['Normal', 'Checkable', 'Radio'], majorDimension=3) self.add = wx.Button(self, ADD_ID, _("Add")) self.remove = wx.Button(self, REMOVE_ID, _("Remove")) self.add_sep = wx.Button(self, ADD_SEP_ID, _("Add separator")) # menu items navigation self.move_up = wx.Button(self, MOVE_UP_ID, _("Up")) self.move_down = wx.Button(self, MOVE_DOWN_ID, _("Down")) self.move_left = wx.Button(self, MOVE_LEFT_ID, " < ") self.move_right = wx.Button(self, MOVE_RIGHT_ID, " > ") self.ok = wx.Button(self, wx.ID_OK, _("OK")) self.apply = wx.Button(self, wx.ID_APPLY, _("Apply")) self.cancel = wx.Button(self, wx.ID_CANCEL, _("Cancel")) self.do_layout() self.selected_index = -1 # index of the selected element in the # wx.ListCtrl menu_items # event handlers wx.EVT_BUTTON(self, ADD_ID, self.add_menu_item) wx.EVT_BUTTON(self, REMOVE_ID, self.remove_menu_item) wx.EVT_BUTTON(self, ADD_SEP_ID, self.add_separator) wx.EVT_BUTTON(self, MOVE_LEFT_ID, self.move_item_left) wx.EVT_BUTTON(self, MOVE_RIGHT_ID, self.move_item_right) wx.EVT_BUTTON(self, MOVE_UP_ID, self.move_item_up) wx.EVT_BUTTON(self, MOVE_DOWN_ID, self.move_item_down) wx.EVT_BUTTON(self, wx.ID_APPLY, self.on_apply) wx.EVT_KILL_FOCUS(self.name, self.update_menu_item) wx.EVT_KILL_FOCUS(self.label, self.update_menu_item) wx.EVT_KILL_FOCUS(self.id, self.update_menu_item) wx.EVT_KILL_FOCUS(self.help_str, self.update_menu_item) # ALB 2004-12-05 wx.EVT_KILL_FOCUS(self.event_handler, self.update_menu_item) #wx.EVT_CHECKBOX(self, CHECK_ID, self.update_menu_item) wx.EVT_RADIOBOX(self, CHECK_RADIO_ID, self.update_menu_item) wx.EVT_LIST_ITEM_SELECTED(self, LIST_ID, self.show_menu_item) if items: self.add_items(items)
def __init__(self, parent, rows=5, id=-1): self._initvars() wx.Panel.__init__(self, parent, id, style=wx.WANTS_CHARS | wx.FULL_REPAINT_ON_RESIZE) sizer = wx.GridBagSizer() self.upbutt = wx.BitmapButton(self, self.ID_UP, getupbitmapBitmap()) sizer.Add(self.upbutt, flag=wx.EXPAND, pos=(0, 1), span=(1, 7)) self.year = wx.Button(self, self.ID_YEARBUTTON, "2003") sizer.Add(self.year, flag=wx.EXPAND, pos=(1, 0)) sizer.Add(wx.Button(self, self.ID_TODAYBUTTON, "Today"), flag=wx.EXPAND, pos=(0, 0)) p = 1 calendar.setfirstweekday(calendar.SUNDAY) for i in ("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"): sizer.Add(wx.StaticText(self, -1, i, style=wx.ALIGN_CENTER | wx.ALIGN_CENTER_VERTICAL), flag=wx.ALIGN_CENTER_VERTICAL | wx.ALIGN_CENTER_HORIZONTAL | wx.EXPAND, pos=(1, p)) sizer.AddGrowableCol(p) p += 1 self.numrows = rows self.showrow = rows / 2 self.rows = [] for i in range(0, rows): self.rows.append(self.makerow(sizer, i + 2)) self.downbutt = wx.BitmapButton(self, self.ID_DOWN, getdownbitmapBitmap()) sizer.Add(self.downbutt, flag=wx.EXPAND, pos=(2 + rows, 0), span=(1, 8)) self.label = CalendarLabel(self, map(lambda x: x[0], self.rows)) sizer.Add(self.label, flag=wx.EXPAND, pos=(2, 0), span=(self.numrows, 1)) self.sizer = sizer self.popupcalendar = PopupCalendar(self, self) wx.EVT_BUTTON(self, self.ID_UP, self.OnScrollUp) wx.EVT_BUTTON(self, self.ID_DOWN, self.OnScrollDown) wx.EVT_BUTTON(self, self.ID_YEARBUTTON, self.OnYearButton) wx.EVT_BUTTON(self, self.ID_TODAYBUTTON, self.OnTodayButton) # grab key down from all children map(lambda child: wx.EVT_KEY_DOWN(child, self.OnKeyDown), self.GetChildren()) # and mousewheel map(lambda child: wx.EVT_MOUSEWHEEL(child, self.OnMouseWheel), self.GetChildren()) # grab left down, left dclick from all cells for r in self.rows: map(lambda cell: wx.EVT_LEFT_DOWN(cell, self.OnLeftDown), r) map(lambda cell: wx.EVT_LEFT_DCLICK(cell, self.OnLeftDClick), r) self.selectedcell = (-1, -1) self.selecteddate = (-1, -1, -1) self.showday(*time.localtime()[:3] + (self.showrow, )) self.setday(*time.localtime()[:3]) self.SetSizer(sizer) sizer.Fit(self) self.SetAutoLayout(True)
def __init__(self, parent, size, keyTargetWin=None): wxgl.GLCanvas.__init__(self, parent, -1, size=size) self.error = None self.m_imgArrL = [] self.m_imgPosArr = [] self.m_imgSizeArr = [] self.m_imgRotArr = [] self.m_imgScaleMM = [] self.m_nImgs = 0 self.m_loadImgsToGfxCard = [] self.m_imgL_changed = True ## trigger initTex (also for wmpty imgList !!!) #False self.m_doViewportChange = True self.m_zoomChanged = True # // trigger a first placing of image self.m_sizeChanged = True self.m_originLeftBottom = True self.m_positionsChanged = True self.m_hideTheseImages = [] # 20051208 #20040308 lb = self.m_imgPosArr[0] self.x00 = 0#20040308 - lb[0] +10 self.y00 = 0#20040308 - lb[1] +10 #007 print self.x00, self.y00 self.m_x0=self.x00 self.m_y0=self.y00 self.m_scale=1 self.m_aspectRatio = 1. self.m_rot = 0 self.colMap = None self.m_minHistScale = 0 self.m_maxHistScale = 100 self.m_init = False self.m_gllist = None self.m_texture_list = [] self.m_moreGlLists = [] self.m_moreGlLists_enabled = [] self.m_moreMaster_enabled = True self.m_gllist_Changed = False # call defGlList() from OnPaint self.m_wheelFactor = 2 self.m_zoomDragFactor = 1.05 #//note:"ToolTip just annoys" SetToolTip(wx.String::Format("cam %d", camId)) #20041118 self.SetCursor(wx.CROSS_CURSOR) #20041202(just use defaultArrow) self.SetCursor( wx.StockCursor(wx.CURSOR_BULLSEYE) ) wx.EVT_PAINT(self, self.OnPaint) wx.EVT_ERASE_BACKGROUND(self, lambda evt: evt) # Do nothing, to avoid flashing #wx.EVT_SIZE(parent, self.OnSize) wx.EVT_SIZE(self, self.OnSize) #wx.EVT_MOVE(parent, self.OnMove) # CHECK #EVT_MIDDLE_DOWN(self, self.OnMiddleDown) wx.EVT_MOUSE_EVENTS(self, self.OnMouse) wx.EVT_MOUSEWHEEL(self, self.OnWheel) self.MakePopupMenu() ### wx.Yield() # setImage has gl-calls - so lets make the window first... ### self.setImage(imgArr) if keyTargetWin is not None: self.keyTargetWin = keyTargetWin # m_pMenuPopup = new wx.Menu wx.EVT_KEY_DOWN(self, self.OnKey)
def init(self, parent): """ Finishes initializing the editor by creating the underlying toolkit widget. """ factory = self.factory # Establish the range of the slider: low_name = high_name = '' low, high = factory.low, factory.high if high <= low: low = high = None handler = self.object.trait(self.name).handler if isinstance(handler, BaseRange): low_name, high_name = handler._low_name, handler._high_name if low_name == '': low = handler._low if high_name == '': high = handler._high elif isinstance(handler, BaseEnum): if handler.name == '': self.mapping = handler.values else: self.sync_value(handler.name, 'mapping', 'from') low, high = 0, self.high # Create the control: self.control = control = wx.Window(parent, -1, size=wx.Size(50, 18), style=wx.FULL_REPAINT_ON_RESIZE | wx.TAB_TRAVERSAL) # Set up the painting event handlers: wx.EVT_ERASE_BACKGROUND(control, self._erase_background) wx.EVT_PAINT(control, self._on_paint) wx.EVT_SET_FOCUS(control, self._set_focus) # Set up mouse event handlers: wx.EVT_LEAVE_WINDOW(control, self._leave_window) wx.EVT_ENTER_WINDOW(control, self._enter_window) wx.EVT_LEFT_DOWN(control, self._left_down) wx.EVT_LEFT_UP(control, self._left_up) wx.EVT_MOTION(control, self._motion) wx.EVT_MOUSEWHEEL(control, self._mouse_wheel) # Set up the control resize handler: wx.EVT_SIZE(control, self._resize) # Set the tooltip: self._can_set_tooltip = (not self.set_tooltip()) # Save the values we calculated: self.set(low=low, high=high) self.sync_value(low_name, 'low', 'from') self.sync_value(high_name, 'high', 'from') # Force a reset (in case low = high = None, which won't cause a # notification to fire): self._reset_scrubber()
def __init__(self, parent, dstack=None): viewpanel.ViewPanel.__init__(self, parent, -1) if (dstack is None): self.ds = example.CDataStack("test.kdf") else: self.ds = dstack self.imagepanel.SetVirtualSize( wx.Size(self.ds.getWidth(), self.ds.getHeight())) self.imagepanel.SetSize((self.ds.getWidth(), self.ds.getHeight())) self.do = example.CDisplayOpts() self.do.setDisp1Chan(0) self.do.setDisp2Chan(0) self.do.setDisp3Chan(0) if (self.ds.getNumChannels() >= 2): self.do.setDisp2Chan(1) if (self.ds.getNumChannels() >= 3): self.do.setDisp1Chan(2) self.do.Optimise(self.ds) self.rend = example.CLUT_RGBRenderer() self.rend.setDispOpts(self.do) self.cbRedChan.Append("<none>") self.cbGreenChan.Append("<none>") self.cbBlueChan.Append("<none>") for i in range(self.ds.getNumChannels()): self.cbRedChan.Append(self.ds.getChannelName(i)) self.cbGreenChan.Append(self.ds.getChannelName(i)) self.cbBlueChan.Append(self.ds.getChannelName(i)) self.scale = 2 self.crosshairs = True self.selection = True self.ResetSelection() self.SetOpts() self.updating = 0 self.showOptsPanel = 1 wx.EVT_PAINT(self.imagepanel, self.OnPaint) wx.EVT_MOUSEWHEEL(self, self.OnWheel) wx.EVT_KEY_DOWN(self.imagepanel, self.OnKeyPress) wx.EVT_LEFT_UP(self.imagepanel, self.OnLeftClick) wx.EVT_RIGHT_DOWN(self.imagepanel, self.OnRightDown) wx.EVT_RIGHT_UP(self.imagepanel, self.OnRightUp) wx.EVT_COMBOBOX(self, self.cbRedChan.GetId(), self.GetOpts) wx.EVT_COMBOBOX(self, self.cbGreenChan.GetId(), self.GetOpts) wx.EVT_COMBOBOX(self, self.cbBlueChan.GetId(), self.GetOpts) wx.EVT_COMBOBOX(self, self.cbSlice.GetId(), self.GetOpts) wx.EVT_COMBOBOX(self, self.cbScale.GetId(), self.GetOpts) wx.EVT_TEXT(self, self.tRedGain.GetId(), self.GetOpts) wx.EVT_TEXT(self, self.tRedOff.GetId(), self.GetOpts) wx.EVT_TEXT(self, self.tGreenGain.GetId(), self.GetOpts) wx.EVT_TEXT(self, self.tGreenOff.GetId(), self.GetOpts) wx.EVT_TEXT(self, self.tBlueGain.GetId(), self.GetOpts) wx.EVT_TEXT(self, self.tBlueOff.GetId(), self.GetOpts) wx.EVT_BUTTON(self, self.bOptimise.GetId(), self.Optim) wx.EVT_BUTTON(self, self.bShowOpts.GetId(), self.ShowOpts) wx.EVT_ERASE_BACKGROUND(self.imagepanel, self.DoNix) wx.EVT_ERASE_BACKGROUND(self, self.DoNix)
def __init__(self, parent): attriblist = [ wx.glcanvas.WX_GL_RGBA, wx.glcanvas.WX_GL_STENCIL_SIZE, 8, wx.glcanvas.WX_GL_DOUBLEBUFFER, 16 ] GLCanvas.__init__(self, parent, -1, attribList=attriblist) wx.EVT_PAINT(self, self.OnPaint) wx.EVT_SIZE(self, self.OnSize) wx.EVT_MOUSEWHEEL(self, self.OnWheel) wx.EVT_LEFT_DOWN(self, self.OnLeftDown) wx.EVT_LEFT_UP(self, self.OnLeftUp) wx.EVT_MIDDLE_DOWN(self, self.OnMiddleDown) wx.EVT_MIDDLE_UP(self, self.OnMiddleUp) wx.EVT_RIGHT_DOWN(self, self.OnMiddleDown) wx.EVT_RIGHT_UP(self, self.OnMiddleUp) wx.EVT_MOTION(self, self.OnMouseMove) wx.EVT_KEY_DOWN(self, self.OnKeyPress) #wx.EVT_MOVE(self, self.OnMove) self.gl_context = wx.glcanvas.GLContext(self) self.nVertices = 0 self.IScale = [1.0, 1.0, 1.0] self.zeroPt = [0, 1.0 / 3, 2.0 / 3] self.cmap = pylab.cm.hsv self.clim = [0, 1] self.alim = [0, 1] self.displayMode = '2D' #3DPersp' #one of 3DPersp, 3DOrtho, 2D self.wireframe = False self.parent = parent self.pointSize = 5 #default point size = 5nm #self.pixelsize = 5./800 #self.xmin =0 #self.xmax = self.pixelsize*self.Size[0] #self.ymin = 0 #self.ymax = self.pixelsize*self.Size[1] self.scaleBarLength = 1000 self.scaleBarOffset = (10, 10) #pixels from corner self.scaleBarDepth = 10.0 #pixels self.scaleBarColour = [1, 1, 0] self.centreCross = False self.LUTDraw = True self.mode = 'triang' self.colouring = 'area' self.drawModes = { 'triang': GL_TRIANGLES, 'quads': GL_QUADS, 'edges': GL_LINES, 'points': GL_POINTS } self.c = numpy.array([1, 1, 1]) self.a = numpy.array([1, 1, 1]) self.zmin = -10 self.zmax = 10 self.angup = 0 self.angright = 0 self.vecUp = numpy.array([0, 1, 0]) self.vecRight = numpy.array([1, 0, 0]) self.vecBack = numpy.array([0, 0, 1]) self.xc = 0 self.yc = 0 self.zc = 0 self.zc_o = 0 self.sx = 100 self.sy = 100 self.scale = 1 self.stereo = False self.eye_dist = .01 self.dragging = False self.panning = False self.edgeThreshold = 20 self.selectionSettings = SelectionSettings() self.selectionDragging = False self.layers = [] self.overlays = [] self.messageOverlay = MessageOverlay() self.overlays.append(self.messageOverlay) self.wantViewChangeNotification = WeakSet() self.pointSelectionCallbacks = [] return
def __init__(self, presenter, parent, ID): wx.html.HtmlWindow.__init__(self, parent, ID) self.presenter = presenter self.presenterListener = wxKeyFunctionSink(( ("loaded current wiki page", self.onLoadedCurrentWikiPage), ("reloaded current doc page", self.onReloadedCurrentPage), ("opened wiki", self.onOpenedWiki), ("closing current wiki", self.onClosingCurrentWiki) ), self.presenter.getMiscEvent()) self.__sinkApp = wxKeyFunctionSink(( ("options changed", self.onOptionsChanged), ), wx.GetApp().getMiscEvent()) self.__sinkDocPage = wxKeyFunctionSink(( ("updated wiki page", self.onUpdatedWikiPage), ("changed live text", self.onChangedLiveText) ), self.presenter.getCurrentDocPageProxyEvent()) self.visible = False self.outOfSync = True # HTML content is out of sync with live content self.counterResizeIgnore = 0 # How often to ignore a size event self.deferredScrollPos = None # Used by scrollDeferred() self.currentLoadedWikiWord = None self.anchor = None # Name of anchor to jump to when view gets visible self.contextHref = None # Link href on which context menu was opened # TODO Should be changed to presenter as controller self.exporterInstance = PluginManager.getExporterTypeDict( self.presenter.getMainControl(), False)[u"html_single"][0]\ (self.presenter.getMainControl()) self._DEFAULT_FONT_SIZES = self.presenter.getMainControl().presentationExt.INTHTML_FONTSIZES # TODO More elegantly self.exporterInstance.exportType = u"html_previewWX" self.exporterInstance.styleSheet = u"" self.exporterInstance.tempFileSet = TempFileSet() self._updateTempFilePrefPath() self.exporterInstance.setWikiDocument( self.presenter.getWikiDocument()) self.exporterInstance.setLinkConverter( LinkConverterForPreview(self.presenter.getWikiDocument())) wx.EVT_KEY_DOWN(self, self.OnKeyDown) wx.EVT_KEY_UP(self, self.OnKeyUp) wx.EVT_SIZE(self, self.OnSize) wx.EVT_MENU(self, GUI_ID.CMD_CLIPBOARD_COPY, self.OnClipboardCopy) wx.EVT_MENU(self, GUI_ID.CMD_SELECT_ALL, lambda evt: self.SelectAll()) wx.EVT_MENU(self, GUI_ID.CMD_ZOOM_IN, lambda evt: self.addZoom(1)) wx.EVT_MENU(self, GUI_ID.CMD_ZOOM_OUT, lambda evt: self.addZoom(-1)) wx.EVT_MENU(self, GUI_ID.CMD_ACTIVATE_THIS, self.OnActivateThis) wx.EVT_MENU(self, GUI_ID.CMD_ACTIVATE_NEW_TAB_THIS, self.OnActivateNewTabThis) wx.EVT_MENU(self, GUI_ID.CMD_ACTIVATE_NEW_TAB_BACKGROUND_THIS, self.OnActivateNewTabBackgroundThis) wx.EVT_MENU(self, GUI_ID.CMD_ACTIVATE_NEW_WINDOW_THIS, self.OnActivateNewWindowThis) wx.EVT_MENU(self, GUI_ID.CMD_OPEN_CONTAINING_FOLDER_THIS, self.OnOpenContainingFolderThis) self.Bind(wx.EVT_SET_FOCUS, self.OnSetFocus) wx.EVT_LEFT_DCLICK(self, self.OnLeftDClick) wx.EVT_MIDDLE_DOWN(self, self.OnMiddleDown) wx.EVT_MOUSEWHEEL(self, self.OnMouseWheel) wx.EVT_MOTION(self, self.OnMouseMotion)
def __init__(self, parent, wid=-1, pos=wx.DefaultPosition, size=wx.DefaultSize, **traits): AbstractWindow.__init__(self, **traits) self._timer = None self._mouse_captured = False # Due to wx wonkiness, we don't reliably get cursor position from # a wx KeyEvent. Thus, we manually keep track of when we last saw # the mouse and use that information instead. These coordinates are # in the wx coordinate space, i.e. pre-self._flip_y(). self._last_mouse_pos = (0, 0) # Create the delegate: self.control = control = self._create_control(parent, wid, pos, size) # Set up the 'erase background' event handler: wx.EVT_ERASE_BACKGROUND(control, self._on_erase_background) # Set up the 'paint' event handler: wx.EVT_PAINT(control, self._paint) wx.EVT_SIZE(control, self._on_size) # Set up mouse event handlers: wx.EVT_LEFT_DOWN(control, self._on_left_down) wx.EVT_LEFT_UP(control, self._on_left_up) wx.EVT_LEFT_DCLICK(control, self._on_left_dclick) wx.EVT_MIDDLE_DOWN(control, self._on_middle_down) wx.EVT_MIDDLE_UP(control, self._on_middle_up) wx.EVT_MIDDLE_DCLICK(control, self._on_middle_dclick) wx.EVT_RIGHT_DOWN(control, self._on_right_down) wx.EVT_RIGHT_UP(control, self._on_right_up) wx.EVT_RIGHT_DCLICK(control, self._on_right_dclick) wx.EVT_MOTION(control, self._on_mouse_move) wx.EVT_ENTER_WINDOW(control, self._on_window_enter) wx.EVT_LEAVE_WINDOW(control, self._on_window_leave) wx.EVT_MOUSEWHEEL(control, self._on_mouse_wheel) # Handle key up/down events: wx.EVT_KEY_DOWN(control, self._on_key_pressed) wx.EVT_KEY_UP(control, self._on_key_released) wx.EVT_CHAR(control, self._on_character) # Attempt to allow wxPython drag and drop events to be mapped to # Enable drag events: # Handle window close and cleanup wx.EVT_WINDOW_DESTROY(control, self._on_close) if PythonDropTarget is not None: control.SetDropTarget(LessSuckyDropTarget(self)) self._drag_over = [] # In some cases, on the Mac at least, we never get an initial EVT_SIZE # since the initial size is correct. Because of this we call _on_size # here to initialize our bounds. self._on_size(None) return