25 |
25 |
26 self.BackgroundBitmap = None |
26 self.BackgroundBitmap = None |
27 self.BackgroundAlign = wx.ALIGN_LEFT|wx.ALIGN_TOP |
27 self.BackgroundAlign = wx.ALIGN_LEFT|wx.ALIGN_TOP |
28 |
28 |
29 self.AddMenu = None |
29 self.AddMenu = None |
|
30 self.Enabled = False |
30 |
31 |
31 if wx.Platform == '__WXMSW__': |
32 if wx.Platform == '__WXMSW__': |
32 self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground) |
33 self.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBackground) |
33 else: |
34 else: |
34 self.Bind(wx.EVT_PAINT, self.OnPaint) |
35 self.Bind(wx.EVT_PAINT, self.OnPaint) |
35 self.Bind(wx.EVT_SIZE, self.OnResize) |
36 self.Bind(wx.EVT_SIZE, self.OnResize) |
|
37 self.Bind(wx.EVT_SCROLL, self.OnScroll) |
36 self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp) |
38 self.Bind(wx.EVT_LEFT_UP, self.OnLeftUp) |
37 |
39 |
38 def SetBackgroundBitmap(self, bitmap, align): |
40 def SetBackgroundBitmap(self, bitmap, align): |
39 self.BackgroundBitmap = bitmap |
41 self.BackgroundBitmap = bitmap |
40 self.BackgroundAlign = align |
42 self.BackgroundAlign = align |
41 |
43 |
42 def SetAddMenu(self, add_menu): |
44 def SetAddMenu(self, add_menu): |
43 self.AddMenu = add_menu |
45 self.AddMenu = add_menu |
|
46 |
|
47 def Enable(self, enabled): |
|
48 self.Enabled = enabled |
44 |
49 |
45 def GetBitmapRect(self): |
50 def GetBitmapRect(self): |
46 client_size = self.GetClientSize() |
51 client_size = self.GetClientSize() |
47 bitmap_size = self.BackgroundBitmap.GetSize() |
52 bitmap_size = self.BackgroundBitmap.GetSize() |
48 |
53 |
74 |
79 |
75 def OnEraseBackground(self, event): |
80 def OnEraseBackground(self, event): |
76 self.RefreshBackground(True) |
81 self.RefreshBackground(True) |
77 |
82 |
78 def OnLeftUp(self, event): |
83 def OnLeftUp(self, event): |
79 pos = event.GetPosition() |
84 if self.Enabled: |
80 item, flags = self.HitTest(pos) |
85 pos = event.GetPosition() |
81 |
86 item, flags = self.HitTest(pos) |
82 bitmap_rect = self.GetBitmapRect() |
87 |
83 if (bitmap_rect.InsideXY(pos.x, pos.y) or |
88 bitmap_rect = self.GetBitmapRect() |
84 flags & wx.TREE_HITTEST_NOWHERE) and self.AddMenu is not None: |
89 if (bitmap_rect.InsideXY(pos.x, pos.y) or |
85 self.PopupMenuXY(self.AddMenu, pos.x, pos.y) |
90 flags & wx.TREE_HITTEST_NOWHERE) and self.AddMenu is not None: |
|
91 self.PopupMenuXY(self.AddMenu, pos.x, pos.y) |
|
92 event.Skip() |
|
93 |
|
94 def OnScroll(self, event): |
|
95 print "scroll event" |
|
96 self.RefreshBackground(True) |
86 event.Skip() |
97 event.Skip() |
87 |
98 |
88 def OnResize(self, event): |
99 def OnResize(self, event): |
89 self.RefreshBackground(True) |
100 self.RefreshBackground(True) |
90 event.Skip() |
101 event.Skip() |