Shuffle some FloatCanvas code around a little to avoid a circular import problem.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxPython/Phoenix/trunk@75719 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2014-01-28 03:57:37 +00:00
parent 8971a8a38b
commit 74ddaf3d64
3 changed files with 72 additions and 51 deletions

View File

@@ -0,0 +1,53 @@
#!/usr/bin/env python
#----------------------------------------------------------------------------
# Name: FCEvents.py
# Purpose: A convenient place to put all event types and binders for
# FloatCanvas, and to help avoid circular imports.
#
# Author:
#
# Created:
# Version:
# Date:
# Licence:
# Tags: phoenix-port
#----------------------------------------------------------------------------
"""
"""
import wx
## Create all the mouse events -- this is for binding to Objects
EVT_FC_ENTER_WINDOW = wx.NewEventType()
EVT_FC_LEAVE_WINDOW = wx.NewEventType()
EVT_FC_LEFT_DOWN = wx.NewEventType()
EVT_FC_LEFT_UP = wx.NewEventType()
EVT_FC_LEFT_DCLICK = wx.NewEventType()
EVT_FC_MIDDLE_DOWN = wx.NewEventType()
EVT_FC_MIDDLE_UP = wx.NewEventType()
EVT_FC_MIDDLE_DCLICK = wx.NewEventType()
EVT_FC_RIGHT_DOWN = wx.NewEventType()
EVT_FC_RIGHT_UP = wx.NewEventType()
EVT_FC_RIGHT_DCLICK = wx.NewEventType()
EVT_FC_MOTION = wx.NewEventType()
EVT_FC_MOUSEWHEEL = wx.NewEventType()
## these two are for the hit-test stuff, I never make them real Events
## fixme: could I use the PyEventBinder for the Object events too?
EVT_FC_ENTER_OBJECT = wx.NewEventType()
EVT_FC_LEAVE_OBJECT = wx.NewEventType()
##Create all mouse event binding objects -- for binding to the Canvas
EVT_LEFT_DOWN = wx.PyEventBinder(EVT_FC_LEFT_DOWN)
EVT_LEFT_UP = wx.PyEventBinder(EVT_FC_LEFT_UP)
EVT_LEFT_DCLICK = wx.PyEventBinder(EVT_FC_LEFT_DCLICK)
EVT_MIDDLE_DOWN = wx.PyEventBinder(EVT_FC_MIDDLE_DOWN)
EVT_MIDDLE_UP = wx.PyEventBinder(EVT_FC_MIDDLE_UP)
EVT_MIDDLE_DCLICK = wx.PyEventBinder(EVT_FC_MIDDLE_DCLICK)
EVT_RIGHT_DOWN = wx.PyEventBinder(EVT_FC_RIGHT_DOWN)
EVT_RIGHT_UP = wx.PyEventBinder(EVT_FC_RIGHT_UP)
EVT_RIGHT_DCLICK = wx.PyEventBinder(EVT_FC_RIGHT_DCLICK)
EVT_MOTION = wx.PyEventBinder(EVT_FC_MOTION)
EVT_ENTER_WINDOW = wx.PyEventBinder(EVT_FC_ENTER_WINDOW)
EVT_LEAVE_WINDOW = wx.PyEventBinder(EVT_FC_LEAVE_WINDOW)
EVT_MOUSEWHEEL = wx.PyEventBinder(EVT_FC_MOUSEWHEEL)

View File

@@ -67,39 +67,8 @@ class FloatCanvasError(Exception):
"""Custom FloatCanvas exception."""
pass
## Create all the mouse events -- this is for binding to Objects
EVT_FC_ENTER_WINDOW = wx.NewEventType()
EVT_FC_LEAVE_WINDOW = wx.NewEventType()
EVT_FC_LEFT_DOWN = wx.NewEventType()
EVT_FC_LEFT_UP = wx.NewEventType()
EVT_FC_LEFT_DCLICK = wx.NewEventType()
EVT_FC_MIDDLE_DOWN = wx.NewEventType()
EVT_FC_MIDDLE_UP = wx.NewEventType()
EVT_FC_MIDDLE_DCLICK = wx.NewEventType()
EVT_FC_RIGHT_DOWN = wx.NewEventType()
EVT_FC_RIGHT_UP = wx.NewEventType()
EVT_FC_RIGHT_DCLICK = wx.NewEventType()
EVT_FC_MOTION = wx.NewEventType()
EVT_FC_MOUSEWHEEL = wx.NewEventType()
## these two are for the hit-test stuff, I never make them real Events
## fixme: could I use the PyEventBinder for the Object events too?
EVT_FC_ENTER_OBJECT = wx.NewEventType()
EVT_FC_LEAVE_OBJECT = wx.NewEventType()
##Create all mouse event binding objects -- for binding to the Canvas
EVT_LEFT_DOWN = wx.PyEventBinder(EVT_FC_LEFT_DOWN)
EVT_LEFT_UP = wx.PyEventBinder(EVT_FC_LEFT_UP)
EVT_LEFT_DCLICK = wx.PyEventBinder(EVT_FC_LEFT_DCLICK)
EVT_MIDDLE_DOWN = wx.PyEventBinder(EVT_FC_MIDDLE_DOWN)
EVT_MIDDLE_UP = wx.PyEventBinder(EVT_FC_MIDDLE_UP)
EVT_MIDDLE_DCLICK = wx.PyEventBinder(EVT_FC_MIDDLE_DCLICK)
EVT_RIGHT_DOWN = wx.PyEventBinder(EVT_FC_RIGHT_DOWN)
EVT_RIGHT_UP = wx.PyEventBinder(EVT_FC_RIGHT_UP)
EVT_RIGHT_DCLICK = wx.PyEventBinder(EVT_FC_RIGHT_DCLICK)
EVT_MOTION = wx.PyEventBinder(EVT_FC_MOTION)
EVT_ENTER_WINDOW = wx.PyEventBinder(EVT_FC_ENTER_WINDOW)
EVT_LEAVE_WINDOW = wx.PyEventBinder(EVT_FC_LEAVE_WINDOW)
EVT_MOUSEWHEEL = wx.PyEventBinder(EVT_FC_MOUSEWHEEL)
## Import all EVT_* event types and event binders
from .FCEvents import *
class _MouseEvent(wx.PyCommandEvent):

View File

@@ -23,12 +23,11 @@ version of the code.
"""
import wx
## fixme: events should live in their own module, so all of FloatCanvas
## wouldn't have to be imported here.
from . import FloatCanvas, Resources
from .Utilities import BBox
import numpy as N
from . import FCEvents, Resources
from .Utilities import BBox
class Cursors(object):
"""
Class to hold the standard Cursors
@@ -134,58 +133,58 @@ class GUIMouse(GUIBase):
# Handlers
def OnLeftDown(self, event):
EventType = FloatCanvas.EVT_FC_LEFT_DOWN
EventType = FCEvents.EVT_FC_LEFT_DOWN
if not self.Canvas.HitTest(event, EventType):
self.Canvas._RaiseMouseEvent(event, EventType)
def OnLeftUp(self, event):
EventType = FloatCanvas.EVT_FC_LEFT_UP
EventType = FCEvents.EVT_FC_LEFT_UP
if not self.Canvas.HitTest(event, EventType):
self.Canvas._RaiseMouseEvent(event, EventType)
def OnLeftDouble(self, event):
EventType = FloatCanvas.EVT_FC_LEFT_DCLICK
EventType = FCEvents.EVT_FC_LEFT_DCLICK
if not self.Canvas.HitTest(event, EventType):
self.Canvas._RaiseMouseEvent(event, EventType)
def OnMiddleDown(self, event):
EventType = FloatCanvas.EVT_FC_MIDDLE_DOWN
EventType = FCEvents.EVT_FC_MIDDLE_DOWN
if not self.Canvas.HitTest(event, EventType):
self.Canvas._RaiseMouseEvent(event, EventType)
def OnMiddleUp(self, event):
EventType = FloatCanvas.EVT_FC_MIDDLE_UP
EventType = FCEvents.EVT_FC_MIDDLE_UP
if not self.Canvas.HitTest(event, EventType):
self.Canvas._RaiseMouseEvent(event, EventType)
def OnMiddleDouble(self, event):
EventType = FloatCanvas.EVT_FC_MIDDLE_DCLICK
EventType = FCEvents.EVT_FC_MIDDLE_DCLICK
if not self.Canvas.HitTest(event, EventType):
self.Canvas._RaiseMouseEvent(event, EventType)
def OnRightDown(self, event):
EventType = FloatCanvas.EVT_FC_RIGHT_DOWN
EventType = FCEvents.EVT_FC_RIGHT_DOWN
if not self.Canvas.HitTest(event, EventType):
self.Canvas._RaiseMouseEvent(event, EventType)
def OnRightUp(self, event):
EventType = FloatCanvas.EVT_FC_RIGHT_UP
EventType = FCEvents.EVT_FC_RIGHT_UP
if not self.Canvas.HitTest(event, EventType):
self.Canvas._RaiseMouseEvent(event, EventType)
def OnRightDouble(self, event):
EventType = FloatCanvas.EVT_FC_RIGHT_DCLICK
EventType = FCEvents.EVT_FC_RIGHT_DCLICK
if not self.Canvas.HitTest(event, EventType):
self.Canvas._RaiseMouseEvent(event, EventType)
def OnWheel(self, event):
EventType = FloatCanvas.EVT_FC_MOUSEWHEEL
EventType = FCEvents.EVT_FC_MOUSEWHEEL
self.Canvas._RaiseMouseEvent(event, EventType)
def OnMove(self, event):
## The Move event always gets raised, even if there is a hit-test
self.Canvas.MouseOverTest(event)
self.Canvas._RaiseMouseEvent(event,FloatCanvas.EVT_FC_MOTION)
self.Canvas._RaiseMouseEvent(event,FCEvents.EVT_FC_MOTION)
class GUIMove(GUIBase):
@@ -220,7 +219,7 @@ class GUIMove(GUIBase):
def OnMove(self, event):
# Always raise the Move event.
self.Canvas._RaiseMouseEvent(event, FloatCanvas.EVT_FC_MOTION)
self.Canvas._RaiseMouseEvent(event, FCEvents.EVT_FC_MOTION)
if event.Dragging() and event.LeftIsDown() and not self.StartMove is None:
self.EndMove = N.array(event.GetPosition())
self.MoveImage(event)
@@ -337,7 +336,7 @@ class GUIZoomIn(GUIBase):
def OnMove(self, event):
# Always raise the Move event.
self.Canvas._RaiseMouseEvent(event,FloatCanvas.EVT_FC_MOTION)
self.Canvas._RaiseMouseEvent(event,FCEvents.EVT_FC_MOTION)
if event.Dragging() and event.LeftIsDown() and not (self.StartRBBox is None):
xy0 = self.StartRBBox
xy1 = N.array( event.GetPosition() )
@@ -399,5 +398,5 @@ class GUIZoomOut(GUIBase):
def OnMove(self, event):
# Always raise the Move event.
self.Canvas._RaiseMouseEvent(event,FloatCanvas.EVT_FC_MOTION)
self.Canvas._RaiseMouseEvent(event,FCEvents.EVT_FC_MOTION)