Lots of wx namespace updates for the wx.lib package and the demo from
Jeff Grimmett with some tweaks and changes from Robin git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24889 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -9,13 +9,19 @@
|
||||
# Copyright: (c) 2002 by db-X Corporation
|
||||
# Licence: wxWindows license
|
||||
#---------------------------------------------------------------------------
|
||||
# 12/14/2003 - Jeff Grimmett (grimmtooth@softhome.net)
|
||||
#
|
||||
# o 2.5 compatability update.
|
||||
# o Tested, but there is an anomaly between first use and subsequent uses.
|
||||
# First use is odd, subsequent uses seem to be OK. Init error?
|
||||
# -- No, the first time it uses an aspect ratio, but after the reset it doesn't.
|
||||
#
|
||||
|
||||
"""
|
||||
A mixin class for doing "RubberBand"-ing on a window.
|
||||
"""
|
||||
|
||||
from wxPython.wx import *
|
||||
|
||||
import wx
|
||||
|
||||
#
|
||||
# Some miscellaneous mathematical and geometrical functions
|
||||
@@ -125,8 +131,9 @@ class RubberBand:
|
||||
self.currentBox = None
|
||||
self.__enabled = 1
|
||||
self.__currentCursor = None
|
||||
EVT_MOUSE_EVENTS(drawingSurface, self.__handleMouseEvents)
|
||||
EVT_PAINT(drawingSurface, self.__handleOnPaint)
|
||||
|
||||
drawingSurface.Bind(wx.EVT_MOUSE_EVENTS, self.__handleMouseEvents)
|
||||
drawingSurface.Bind(wx.EVT_PAINT, self.__handleOnPaint)
|
||||
|
||||
def __setEnabled(self, enabled):
|
||||
self.__enabled = enabled
|
||||
@@ -143,19 +150,19 @@ class RubberBand:
|
||||
Return True if the current cursor is one used to
|
||||
mean moving the rubberband.
|
||||
"""
|
||||
return self.__currentCursor == wxCURSOR_HAND
|
||||
return self.__currentCursor == wx.CURSOR_HAND
|
||||
|
||||
def __isSizingCursor(self):
|
||||
"""
|
||||
Return True if the current cursor is one of the ones
|
||||
I may use to signify sizing.
|
||||
"""
|
||||
sizingCursors = [wxCURSOR_SIZENESW,
|
||||
wxCURSOR_SIZENS,
|
||||
wxCURSOR_SIZENWSE,
|
||||
wxCURSOR_SIZEWE,
|
||||
wxCURSOR_SIZING,
|
||||
wxCURSOR_CROSS]
|
||||
sizingCursors = [wx.CURSOR_SIZENESW,
|
||||
wx.CURSOR_SIZENS,
|
||||
wx.CURSOR_SIZENWSE,
|
||||
wx.CURSOR_SIZEWE,
|
||||
wx.CURSOR_SIZING,
|
||||
wx.CURSOR_CROSS]
|
||||
try:
|
||||
sizingCursors.index(self.__currentCursor)
|
||||
return 1
|
||||
@@ -177,7 +184,7 @@ class RubberBand:
|
||||
# First make sure we have started a box.
|
||||
if self.currentBox == None and not event.LeftDown():
|
||||
# No box started yet. Set cursor to the initial kind.
|
||||
self.__setCursor(wxCURSOR_CROSS)
|
||||
self.__setCursor(wx.CURSOR_CROSS)
|
||||
return
|
||||
|
||||
if event.LeftDown():
|
||||
@@ -228,9 +235,9 @@ class RubberBand:
|
||||
# Implement the correct behavior for dragging a side
|
||||
# of the box: Only change one dimension.
|
||||
if not self.aspectRatio:
|
||||
if self.__currentCursor == wxCURSOR_SIZENS:
|
||||
if self.__currentCursor == wx.CURSOR_SIZENS:
|
||||
x = None
|
||||
elif self.__currentCursor == wxCURSOR_SIZEWE:
|
||||
elif self.__currentCursor == wx.CURSOR_SIZEWE:
|
||||
y = None
|
||||
|
||||
x0,y0,w0,h0 = self.currentBox
|
||||
@@ -274,18 +281,18 @@ class RubberBand:
|
||||
if pointOnBox(x, y, self.currentBox, thickness=self.__THICKNESS):
|
||||
position = getCursorPosition(x, y, self.currentBox, thickness=self.__THICKNESS)
|
||||
cursor = [
|
||||
wxCURSOR_SIZENWSE,
|
||||
wxCURSOR_SIZENS,
|
||||
wxCURSOR_SIZENESW,
|
||||
wxCURSOR_SIZEWE,
|
||||
wxCURSOR_SIZENWSE,
|
||||
wxCURSOR_SIZENS,
|
||||
wxCURSOR_SIZENESW,
|
||||
wxCURSOR_SIZEWE
|
||||
wx.CURSOR_SIZENWSE,
|
||||
wx.CURSOR_SIZENS,
|
||||
wx.CURSOR_SIZENESW,
|
||||
wx.CURSOR_SIZEWE,
|
||||
wx.CURSOR_SIZENWSE,
|
||||
wx.CURSOR_SIZENS,
|
||||
wx.CURSOR_SIZENESW,
|
||||
wx.CURSOR_SIZEWE
|
||||
] [position]
|
||||
self.__setCursor(cursor)
|
||||
elif pointInBox(x, y, self.currentBox):
|
||||
self.__setCursor(wxCURSOR_HAND)
|
||||
self.__setCursor(wx.CURSOR_HAND)
|
||||
else:
|
||||
self.__setCursor()
|
||||
|
||||
@@ -295,9 +302,9 @@ class RubberBand:
|
||||
"""
|
||||
if self.__currentCursor != id: # Avoid redundant calls
|
||||
if id:
|
||||
self.drawingSurface.SetCursor(wxStockCursor(id))
|
||||
self.drawingSurface.SetCursor(wx.StockCursor(id))
|
||||
else:
|
||||
self.drawingSurface.SetCursor(wxNullCursor)
|
||||
self.drawingSurface.SetCursor(wx.NullCursor)
|
||||
self.__currentCursor = id
|
||||
|
||||
def __moveCenterTo(self, x, y):
|
||||
@@ -320,14 +327,17 @@ class RubberBand:
|
||||
"""
|
||||
Draw one box shape and possibly erase another.
|
||||
"""
|
||||
dc = wxClientDC(self.drawingSurface)
|
||||
dc = wx.ClientDC(self.drawingSurface)
|
||||
dc.BeginDrawing()
|
||||
dc.SetPen(wxPen(wxWHITE, 1, wxDOT))
|
||||
dc.SetBrush(wxTRANSPARENT_BRUSH)
|
||||
dc.SetLogicalFunction(wxXOR)
|
||||
dc.SetPen(wx.Pen(wx.WHITE, 1, wx.DOT))
|
||||
dc.SetBrush(wx.TRANSPARENT_BRUSH)
|
||||
dc.SetLogicalFunction(wx.XOR)
|
||||
if boxToErase:
|
||||
dc.DrawRectangle(*boxToErase)
|
||||
dc.DrawRectangle(*boxToDraw)
|
||||
r = wx.Rect(*boxToErase)
|
||||
dc.DrawRectangleRect(r)
|
||||
|
||||
r = wx.Rect(*boxToDraw)
|
||||
dc.DrawRectangleRect(r)
|
||||
dc.EndDrawing()
|
||||
|
||||
def __dumpMouseEvent(self, event):
|
||||
@@ -369,12 +379,12 @@ class RubberBand:
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app = wxPySimpleApp()
|
||||
frame = wxFrame(None, -1, title='RubberBand Test', size=(300,300))
|
||||
app = wx.PySimpleApp()
|
||||
frame = wx.Frame(None, -1, title='RubberBand Test', size=(300,300))
|
||||
|
||||
# Add a panel that the rubberband will work on.
|
||||
panel = wxPanel(frame, -1)
|
||||
panel.SetBackgroundColour(wxBLUE)
|
||||
panel = wx.Panel(frame, -1)
|
||||
panel.SetBackgroundColour(wx.BLUE)
|
||||
|
||||
# Create the rubberband
|
||||
frame.rubberBand = RubberBand(drawingSurface=panel)
|
||||
@@ -383,13 +393,13 @@ if __name__ == '__main__':
|
||||
# Add a button that creates a new rubberband
|
||||
def __newRubberBand(event):
|
||||
frame.rubberBand.reset()
|
||||
button = wxButton(frame, 100, 'Reset Rubberband')
|
||||
EVT_BUTTON(frame, 100, __newRubberBand)
|
||||
button = wx.Button(frame, 100, 'Reset Rubberband')
|
||||
frame.Bind(wx.EVT_BUTTON, __newRubberBand, button)
|
||||
|
||||
# Layout the frame
|
||||
sizer = wxBoxSizer(wxVERTICAL)
|
||||
sizer.Add(panel, 1, wxEXPAND | wxALL, 5)
|
||||
sizer.Add(button, 0, wxALIGN_CENTER | wxALL, 5)
|
||||
sizer = wx.BoxSizer(wx.VERTICAL)
|
||||
sizer.Add(panel, 1, wx.EXPAND | wx.ALL, 5)
|
||||
sizer.Add(button, 0, wx.ALIGN_CENTER | wx.ALL, 5)
|
||||
frame.SetAutoLayout(1)
|
||||
frame.SetSizer(sizer)
|
||||
frame.Show(1)
|
||||
|
Reference in New Issue
Block a user