Robot Framework Integrated Development Environment (RIDE)
list.py
Go to the documentation of this file.
1 # Copyright 2008-2015 Nokia Networks
2 # Copyright 2016- Robot Framework Foundation
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 # http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15 
16 import os
17 
18 import wx
19 from wx import Colour
20 from wx.lib.mixins.listctrl import ListCtrlAutoWidthMixin
21 
22 IS_WINDOWS = os.sep == '\\'
23 
24 
25 class VirtualList(wx.ListCtrl, ListCtrlAutoWidthMixin):
26 
29  _style = wx.LC_REPORT|wx.LC_SINGLE_SEL|wx.LC_HRULES|wx.LC_VIRTUAL
30 
31  def __init__(self, parent, headers, model):
32  wx.ListCtrl.__init__(self, parent, style=self._style_style)
33  ListCtrlAutoWidthMixin.__init__(self)
34  """
35  self.SetBackgroundColour(Colour(200, 222, 40))
36  self.SetOwnBackgroundColour(Colour(200, 222, 40))
37  self.SetForegroundColour(Colour(7, 0, 70))
38  self.SetOwnForegroundColour(Colour(7, 0, 70))
39  """
40  self._model_model = model
41  self._selection_listeners_selection_listeners = []
42  self._create_headers_create_headers(headers)
43  self.Bind(wx.EVT_LIST_ITEM_SELECTED, self.OnListItemSelectedOnListItemSelected)
44  if IS_WINDOWS:
45  self.Bind(wx.EVT_LEFT_DOWN, self.OnLeftDownOnLeftDown)
46  self.SetItemCount(model.count)
47  self.SetImageList(model.images, wx.IMAGE_LIST_SMALL)
48 
49  def OnLeftDown(self, event):
50  item, flags = self.HitTest(event.Position)
51  if flags | wx.LIST_HITTEST_ONITEM:
52  wx.CallAfter(self._inform_listeners_inform_listeners, item)
53  event.Skip()
54 
55  def _create_headers(self, headers):
56  for idx, name in enumerate(headers):
57  self.InsertColumn(idx, name)
58  self.SetColumnWidth(0, 200)
59  self.SetColumnWidth(1, 160)
60 
61  def refresh(self):
62  self.SetItemCount(self._model_model.count)
63  self.SetImageList(self._model_model.images, wx.IMAGE_LIST_SMALL)
64 
65  def add_selection_listener(self, listener):
66  self._selection_listeners_selection_listeners.append(listener)
67 
68  def OnListItemSelected(self, event):
69  self._inform_listeners_inform_listeners(event.Index)
70 
71  def _inform_listeners(self, selected_index):
72  for listener in self._selection_listeners_selection_listeners:
73  listener(selected_index)
74 
75  def OnGetItemText(self, row, col):
76  return self._model_model.item_text(row, col)
77 
78  def OnGetItemImage(self, item):
79  return self._model_model.image(item)
80 
81  def OnGetItemAttr(self, item):
82  return self._model_model.item_attributes(item)
83 
84 
85 class ListModel():
86 
87  @property
88  count = property
89 
90  def count(self):
91  return 0
92 
93  @property
94  images = property
95 
96  def images(self):
97  return None
98 
99  def item_text(self, row, col):
100  return ''
101 
102  def image(self, row):
103  return -1
104 
105  def item_attributes(self, row):
106  return None
107 
def item_text(self, row, col)
Definition: list.py:99
def image(self, row)
Definition: list.py:102
def item_attributes(self, row)
Definition: list.py:105
def _inform_listeners(self, selected_index)
Definition: list.py:71
def OnGetItemImage(self, item)
Definition: list.py:78
def OnListItemSelected(self, event)
Definition: list.py:68
def _create_headers(self, headers)
Definition: list.py:55
def OnGetItemText(self, row, col)
Definition: list.py:75
def __init__(self, parent, headers, model)
Definition: list.py:31
def add_selection_listener(self, listener)
Definition: list.py:65
def OnLeftDown(self, event)
Definition: list.py:49
def OnGetItemAttr(self, item)
Definition: list.py:81