From 74ddaf3d648822b3a4e48176d11eddae9384d201 Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Tue, 28 Jan 2014 03:57:37 +0000 Subject: [PATCH] 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 --- wx/lib/floatcanvas/FCEvents.py | 53 +++++++++++++++++++++++++++++++ wx/lib/floatcanvas/FloatCanvas.py | 35 ++------------------ wx/lib/floatcanvas/GUIMode.py | 35 ++++++++++---------- 3 files changed, 72 insertions(+), 51 deletions(-) create mode 100644 wx/lib/floatcanvas/FCEvents.py diff --git a/wx/lib/floatcanvas/FCEvents.py b/wx/lib/floatcanvas/FCEvents.py new file mode 100644 index 00000000..d93b0ef1 --- /dev/null +++ b/wx/lib/floatcanvas/FCEvents.py @@ -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) diff --git a/wx/lib/floatcanvas/FloatCanvas.py b/wx/lib/floatcanvas/FloatCanvas.py index c07b3da3..a46ef645 100644 --- a/wx/lib/floatcanvas/FloatCanvas.py +++ b/wx/lib/floatcanvas/FloatCanvas.py @@ -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): diff --git a/wx/lib/floatcanvas/GUIMode.py b/wx/lib/floatcanvas/GUIMode.py index b30332c9..b75c1180 100644 --- a/wx/lib/floatcanvas/GUIMode.py +++ b/wx/lib/floatcanvas/GUIMode.py @@ -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)