b8b8dda730
wxPython.wx import *" This is for people who are worried about namespace pollution, they can use "from wxPython import wx" and then prefix all the wxPython identifiers with "wx." Added wxTaskbarIcon for wxMSW. Made the events work for wxGrid. Added wxConfig. Added wxMiniFrame for wxGTK, (untested.) Changed many of the args and return values that were pointers to gdi objects to references to reflect changes in the wxWindows API. Other assorted fixes and additions. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1205 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
178 lines
4.8 KiB
Python
178 lines
4.8 KiB
Python
#!/bin/env python
|
|
#----------------------------------------------------------------------------
|
|
# Name: test2.py
|
|
# Purpose: Testing GDI stuff and events.
|
|
#
|
|
# Author: Robin Dunn
|
|
#
|
|
# Created:
|
|
# RCS-ID: $Id$
|
|
# Copyright: (c) 1998 by Total Control Software
|
|
# Licence: wxWindows license
|
|
#----------------------------------------------------------------------------
|
|
|
|
|
|
from wxPython.wx import *
|
|
|
|
|
|
#---------------------------------------------------------------------------
|
|
|
|
|
|
|
|
class MyCanvas(wxWindow):
|
|
def __init__(self, parent):
|
|
wxWindow.__init__(self, parent, -1, wxPoint(0, 0), wxPyDefaultSize, wxSUNKEN_BORDER)
|
|
|
|
self.SetBackgroundColour(wxNamedColor("WHITE"))
|
|
self.Connect(-1, -1, wxEVT_LEFT_DOWN, self.OnLeftButtonEvent)
|
|
self.Connect(-1, -1, wxEVT_LEFT_UP, self.OnLeftButtonEvent)
|
|
self.Connect(-1, -1, wxEVT_MOTION, self.OnLeftButtonEvent)
|
|
|
|
self.SetCursor(wxStockCursor(wxCURSOR_PENCIL))
|
|
bmp = wxBitmap('bitmaps/test2.bmp', wxBITMAP_TYPE_BMP)
|
|
print 'bmp OK:', bmp.Ok()
|
|
print 'bmp: (%dx%dx%d)' % (bmp.GetWidth(), bmp.GetHeight(), bmp.GetDepth())
|
|
self.bmp = bmp
|
|
|
|
self.lines = []
|
|
|
|
|
|
|
|
def OnPaint(self, event):
|
|
dc = wxPaintDC(self)
|
|
self.DoDrawing(dc)
|
|
|
|
|
|
|
|
def DoDrawing(self, dc):
|
|
dc.BeginDrawing()
|
|
#dc.Clear()
|
|
pen1 = wxPen(wxNamedColour('RED'))
|
|
dc.SetPen(pen1)
|
|
dc.DrawRectangle(5, 5, 50, 50)
|
|
|
|
dc.SetBrush(wxLIGHT_GREY_BRUSH)
|
|
dc.SetPen(wxPen(wxNamedColour('BLUE'), 4))
|
|
dc.DrawRectangle(15, 15, 50, 50)
|
|
|
|
font = wxFont(14, wxSWISS, wxNORMAL, wxNORMAL)
|
|
dc.SetFont(font)
|
|
dc.SetTextForeground(wxColour(0xFF, 0x20, 0xFF))
|
|
te = dc.GetTextExtent("Hello World")
|
|
dc.DrawText("Hello World", 60, 65)
|
|
|
|
dc.SetPen(wxPen(wxNamedColour('VIOLET'), 4))
|
|
dc.DrawLine(5, 65+te[1], 60+te[0], 65+te[1])
|
|
|
|
lst = [(100,110), (150,110), (150,160), (100,160)]
|
|
dc.DrawLines(lst, -60)
|
|
dc.SetPen(wxGREY_PEN)
|
|
dc.DrawPolygon(lst, 75)
|
|
dc.SetPen(wxGREEN_PEN)
|
|
dc.DrawSpline(lst+[(100,100)])
|
|
|
|
dc.DrawBitmap(self.bmp, 200, 20)
|
|
dc.SetTextForeground(wxColour(0, 0xFF, 0x80))
|
|
dc.DrawText("a bitmap", 200, 80)
|
|
|
|
self.DrawSavedLines(dc)
|
|
dc.EndDrawing()
|
|
|
|
|
|
def DrawSavedLines(self, dc):
|
|
dc.SetPen(wxPen(wxNamedColour('MEDIUM FOREST GREEN'), 4))
|
|
for line in self.lines:
|
|
for coords in line:
|
|
apply(dc.DrawLine, coords)
|
|
|
|
|
|
|
|
def OnLeftButtonEvent(self, event):
|
|
if event.LeftDown():
|
|
self.x, self.y = event.GetX(), event.GetY()
|
|
self.curLine = []
|
|
elif event.Dragging():
|
|
dc = wxClientDC(self)
|
|
dc.BeginDrawing()
|
|
dc.SetPen(wxPen(wxNamedColour('MEDIUM FOREST GREEN'), 4))
|
|
coords = (self.x, self.y, event.GetX(), event.GetY())
|
|
self.curLine.append(coords)
|
|
apply(dc.DrawLine, coords)
|
|
self.x, self.y = event.GetX(), event.GetY()
|
|
dc.EndDrawing()
|
|
elif event.LeftUp():
|
|
self.lines.append(self.curLine)
|
|
self.curLine = []
|
|
|
|
|
|
|
|
|
|
|
|
#---------------------------------------------------------------------------
|
|
|
|
class MyFrame(wxFrame):
|
|
def __init__(self, parent, id, title):
|
|
wxFrame.__init__(self, parent, id, title, wxPyDefaultPosition, wxSize(320, 200))
|
|
self.canvas = MyCanvas(self)
|
|
|
|
def OnCloseWindow(self, event):
|
|
self.Destroy()
|
|
|
|
def OnSize(self, event):
|
|
size = self.GetClientSize()
|
|
self.canvas.SetDimensions(5, 5, size.width-10, size.height-10)
|
|
|
|
|
|
#---------------------------------------------------------------------------
|
|
|
|
|
|
class MyApp(wxApp):
|
|
def OnInit(self):
|
|
frame = MyFrame(NULL, -1, "Test 2")
|
|
frame.Show(true)
|
|
self.SetTopWindow(frame)
|
|
return true
|
|
|
|
#---------------------------------------------------------------------------
|
|
|
|
|
|
def main():
|
|
app = MyApp(0)
|
|
app.MainLoop()
|
|
|
|
|
|
def t():
|
|
import pdb
|
|
pdb.run('main()')
|
|
|
|
if __name__ == '__main__':
|
|
main()
|
|
|
|
|
|
#----------------------------------------------------------------------------
|
|
#
|
|
# $Log$
|
|
# Revision 1.2 1998/12/15 20:44:34 RD
|
|
# Changed the import semantics from "from wxPython import *" to "from
|
|
# wxPython.wx import *" This is for people who are worried about
|
|
# namespace pollution, they can use "from wxPython import wx" and then
|
|
# prefix all the wxPython identifiers with "wx."
|
|
#
|
|
# Added wxTaskbarIcon for wxMSW.
|
|
#
|
|
# Made the events work for wxGrid.
|
|
#
|
|
# Added wxConfig.
|
|
#
|
|
# Added wxMiniFrame for wxGTK, (untested.)
|
|
#
|
|
# Changed many of the args and return values that were pointers to gdi
|
|
# objects to references to reflect changes in the wxWindows API.
|
|
#
|
|
# Other assorted fixes and additions.
|
|
#
|
|
# Revision 1.1 1998/08/09 08:28:05 RD
|
|
# Initial version
|
|
#
|
|
#
|