mirror of
https://github.com/wxWidgets/Phoenix.git
synced 2025-09-05 01:10:12 +02:00
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxPython/Phoenix/trunk@72352 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
129 lines
4.0 KiB
Python
129 lines
4.0 KiB
Python
import imp_unittest, unittest
|
|
import wtc
|
|
import wx
|
|
|
|
#---------------------------------------------------------------------------
|
|
|
|
class vlbox_Tests(wtc.WidgetTestCase):
|
|
|
|
def test_vlbox1(self):
|
|
with self.assertRaises(TypeError):
|
|
lb = wx.VListBox()
|
|
|
|
def test_vlbox2(self):
|
|
with self.assertRaises(TypeError):
|
|
lb = wx.VListBox(self.frame)
|
|
|
|
|
|
def test_vlbox3(self):
|
|
panel = wx.Panel(self.frame)
|
|
self.frame.SendSizeEvent()
|
|
|
|
lb = MyVListBox(panel, pos=(10,10), size=(100,150), style=wx.BORDER_THEME)
|
|
lb.data = ['zero', 'one two', 'three four', 'five six', 'seven eight', 'nine ten']
|
|
lb.SetItemCount(len(lb.data))
|
|
self.myYield()
|
|
|
|
# check the ItemCount property
|
|
self.assertEqual(len(lb.data), lb.ItemCount)
|
|
|
|
# check that the overridden virtuals were called
|
|
self.assertTrue(len(lb.drawItemCalls) > 0)
|
|
self.assertTrue(len(lb.drawBackgroundCalls) > 0)
|
|
self.assertTrue(len(lb.drawSeparatorCalls) > 0)
|
|
self.assertTrue(len(lb.measureItemCalls) > 0)
|
|
|
|
lb.SetSelection(2)
|
|
self.myYield()
|
|
self.assertEqual(lb.GetSelectedCount(), 1)
|
|
self.assertEqual(lb.GetSelection(), 2)
|
|
self.assertTrue(lb.IsSelected(2))
|
|
self.assertFalse(lb.IsSelected(3))
|
|
|
|
|
|
|
|
def test_vlbox4(self):
|
|
panel = wx.Panel(self.frame)
|
|
self.frame.SendSizeEvent()
|
|
|
|
lb = MyVListBox(panel, pos=(10,10), size=(100,150),
|
|
style=wx.BORDER_SIMPLE|wx.LB_MULTIPLE)
|
|
lb.data = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten']
|
|
lb.SetItemCount(len(lb.data))
|
|
self.myYield()
|
|
|
|
lb.Select(2)
|
|
lb.Select(5)
|
|
lb.Select(7)
|
|
lb.Select(8)
|
|
self.myYield()
|
|
|
|
self.assertTrue(lb.IsSelected(2))
|
|
self.assertTrue(lb.IsSelected(8))
|
|
self.assertFalse(lb.IsSelected(3))
|
|
|
|
sel = list()
|
|
idx, cookie = lb.GetFirstSelected()
|
|
while idx != wx.NOT_FOUND:
|
|
sel.append(idx)
|
|
idx, cookie = lb.GetNextSelected(cookie)
|
|
|
|
self.assertEqual(sel, [2,5,7,8])
|
|
|
|
|
|
|
|
class MyVListBox(wx.VListBox):
|
|
def __init__(self, *args, **kw):
|
|
wx.VListBox.__init__(self, *args, **kw)
|
|
self.data = list()
|
|
self.drawItemCalls = list()
|
|
self.drawBackgroundCalls = list()
|
|
self.drawSeparatorCalls = list()
|
|
self.measureItemCalls = list()
|
|
|
|
# overridable methods
|
|
def OnDrawItem(self, dc, rect, idx):
|
|
self.drawItemCalls.append(idx)
|
|
assert isinstance(dc, wx.DC)
|
|
color = 'black'
|
|
if self.IsSelected(idx):
|
|
color = 'white'
|
|
dc.SetTextForeground(color)
|
|
dc.DrawLabel(self.data[idx], rect)
|
|
|
|
def OnDrawBackground(self, dc, rect, idx):
|
|
self.drawBackgroundCalls.append(idx)
|
|
assert isinstance(dc, wx.DC)
|
|
color = 'white'
|
|
if self.IsSelected(idx):
|
|
color = self.GetSelectionBackground()
|
|
if not color:
|
|
color = 'navy'
|
|
dc.SetPen(wx.Pen(color, 1))
|
|
dc.SetBrush(wx.Brush(color))
|
|
dc.DrawRectangle(rect)
|
|
|
|
def OnDrawSeparator(self, dc, rect, idx):
|
|
self.drawSeparatorCalls.append(idx)
|
|
if idx == 0:
|
|
return
|
|
assert isinstance(dc, wx.DC)
|
|
dc.SetPen(wx.Pen('#c0c0c0', 1, wx.PENSTYLE_DOT_DASH))
|
|
dc.SetBrush(wx.TRANSPARENT_BRUSH)
|
|
assert isinstance(rect, wx.Rect)
|
|
dc.DrawLine(rect.x, rect.y, rect.right, rect.y)
|
|
rect.y += 1
|
|
rect.height -= 2
|
|
|
|
def OnMeasureItem(self, idx):
|
|
self.measureItemCalls.append(idx)
|
|
#dc = wx.ClientDC(self)
|
|
w, h = self.GetTextExtent(self.data[idx])
|
|
return h + 6
|
|
|
|
|
|
#---------------------------------------------------------------------------
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|