]> git.saurik.com Git - wxWidgets.git/blame - wxPython/demo/wxScrolledWindow.py
Other odds and ends...
[wxWidgets.git] / wxPython / demo / wxScrolledWindow.py
CommitLineData
cf694132
RD
1
2from wxPython.wx import *
3
4#---------------------------------------------------------------------------
5
6class MyCanvas(wxScrolledWindow):
e166644c
RD
7 def __init__(self, parent, id = -1, size = wxDefaultSize):
8 wxScrolledWindow.__init__(self, parent, id, wxPoint(0, 0), size, wxSUNKEN_BORDER)
cf694132
RD
9
10 self.lines = []
bb0054cd
RD
11 self.maxWidth = 1000
12 self.maxHeight = 1000
cf694132
RD
13
14 self.SetBackgroundColour(wxNamedColor("WHITE"))
f6bcfd97
BP
15 EVT_LEFT_DOWN(self, self.OnLeftButtonEvent)
16 EVT_LEFT_UP(self, self.OnLeftButtonEvent)
17 EVT_MOTION(self, self.OnLeftButtonEvent)
18
19 EVT_PAINT(self, self.OnPaint)
20
cf694132
RD
21
22 self.SetCursor(wxStockCursor(wxCURSOR_PENCIL))
bb0054cd 23 bmp = wxBitmap('bitmaps/test2.bmp', wxBITMAP_TYPE_BMP)
5ed3dab2
RD
24 mask = wxMaskColour(bmp, wxBLUE)
25 bmp.SetMask(mask)
bb0054cd 26 self.bmp = bmp
cf694132 27
bb0054cd
RD
28 self.SetScrollbars(20, 20, self.maxWidth/20, self.maxHeight/20)
29
30 def getWidth(self):
31 return self.maxWidth
32
33 def getHeight(self):
34 return self.maxHeight
cf694132
RD
35
36
37 def OnPaint(self, event):
38 dc = wxPaintDC(self)
39 self.PrepareDC(dc)
40 self.DoDrawing(dc)
41
42
43 def DoDrawing(self, dc):
44 dc.BeginDrawing()
0569df0f 45 dc.SetPen(wxPen(wxNamedColour('RED')))
cf694132
RD
46 dc.DrawRectangle(5, 5, 50, 50)
47
48 dc.SetBrush(wxLIGHT_GREY_BRUSH)
49 dc.SetPen(wxPen(wxNamedColour('BLUE'), 4))
50 dc.DrawRectangle(15, 15, 50, 50)
51
0569df0f 52 dc.SetFont(wxFont(14, wxSWISS, wxNORMAL, wxNORMAL))
cf694132
RD
53 dc.SetTextForeground(wxColour(0xFF, 0x20, 0xFF))
54 te = dc.GetTextExtent("Hello World")
55 dc.DrawText("Hello World", 60, 65)
56
57 dc.SetPen(wxPen(wxNamedColour('VIOLET'), 4))
58 dc.DrawLine(5, 65+te[1], 60+te[0], 65+te[1])
59
60 lst = [(100,110), (150,110), (150,160), (100,160)]
61 dc.DrawLines(lst, -60)
62 dc.SetPen(wxGREY_PEN)
63 dc.DrawPolygon(lst, 75)
64 dc.SetPen(wxGREEN_PEN)
65 dc.DrawSpline(lst+[(100,100)])
66
5ed3dab2 67 dc.DrawBitmap(self.bmp, 200, 20, true)
bb0054cd
RD
68 dc.SetTextForeground(wxColour(0, 0xFF, 0x80))
69 dc.DrawText("a bitmap", 200, 85)
cf694132 70
6999b0d8
RD
71 font = wxFont(20, wxSWISS, wxNORMAL, wxNORMAL)
72 dc.SetFont(font)
73 dc.SetTextForeground(wxBLACK)
74 for a in range(0, 360, 45):
75 dc.DrawRotatedText("Rotated text...", 300, 300, a)
76
eec92d76
RD
77 dc.SetPen(wxTRANSPARENT_PEN)
78 dc.SetBrush(wxBLUE_BRUSH)
79 dc.DrawRectangle(50,500,50,50)
80 dc.DrawRectangle(100,500,50,50)
81
0569df0f 82 dc.SetPen(wxPen(wxNamedColour('RED')))
c368d904
RD
83 dc.DrawEllipticArc(200, 500, 50, 75, 0, 90)
84
cf694132
RD
85 self.DrawSavedLines(dc)
86 dc.EndDrawing()
87
88
eec92d76 89
cf694132
RD
90 def DrawSavedLines(self, dc):
91 dc.SetPen(wxPen(wxNamedColour('MEDIUM FOREST GREEN'), 4))
92 for line in self.lines:
93 for coords in line:
94 apply(dc.DrawLine, coords)
95
96
97 def SetXY(self, event):
98 self.x, self.y = self.ConvertEventCoords(event)
99
100 def ConvertEventCoords(self, event):
3ca6a5f0 101 xView, yView = self.GetViewStart()
cf694132
RD
102 xDelta, yDelta = self.GetScrollPixelsPerUnit()
103 return (event.GetX() + (xView * xDelta),
104 event.GetY() + (yView * yDelta))
105
106 def OnLeftButtonEvent(self, event):
107 if event.LeftDown():
108 self.SetXY(event)
109 self.curLine = []
714d23b4 110 self.CaptureMouse()
cf694132
RD
111
112 elif event.Dragging():
113 dc = wxClientDC(self)
114 self.PrepareDC(dc)
115 dc.BeginDrawing()
116 dc.SetPen(wxPen(wxNamedColour('MEDIUM FOREST GREEN'), 4))
117 coords = (self.x, self.y) + self.ConvertEventCoords(event)
118 self.curLine.append(coords)
119 apply(dc.DrawLine, coords)
120 self.SetXY(event)
121 dc.EndDrawing()
122
123 elif event.LeftUp():
124 self.lines.append(self.curLine)
125 self.curLine = []
714d23b4 126 self.ReleaseMouse()
cf694132
RD
127
128#---------------------------------------------------------------------------
129
130def runTest(frame, nb, log):
131 win = MyCanvas(nb)
132 return win
133
134#---------------------------------------------------------------------------
135
136
137
138
139
140
141
142
143
144
145
146
147
148overview = """\
149"""