EVT_LIST_KEY_DOWN(LIST_CTRL, MyListCtrl::OnListKeyDown)
EVT_LIST_ITEM_ACTIVATED(LIST_CTRL, MyListCtrl::OnActivated)
EVT_LIST_COL_CLICK(LIST_CTRL, MyListCtrl::OnColClick)
+ EVT_LIST_CACHE_HINT(LIST_CTRL, MyListCtrl::OnCacheHint)
EVT_CHAR(MyListCtrl::OnChar)
END_EVENT_TABLE()
wxStopWatch sw;
- wxString buf;
for ( int i = 0; i < NUM_ITEMS; i++ )
{
- buf.Printf(_T("This is item %d"), i);
- long tmp = m_listCtrl->InsertItem(i, buf, 0);
- m_listCtrl->SetItemData(tmp, i);
-
- buf.Printf(_T("Col 1, item %d"), i);
- tmp = m_listCtrl->SetItem(i, 1, buf);
-
- buf.Printf(_T("Item %d in column 2"), i);
- tmp = m_listCtrl->SetItem(i, 2, buf);
+ m_listCtrl->InsertItemInReportView(i);
}
m_logWindow->WriteText(wxString::Format(_T("%d items inserted in %ldms\n"),
// MyListCtrl
+void MyListCtrl::OnCacheHint(wxListEvent& event)
+{
+ wxLogMessage( "OnCacheHint: cache items %ld..%ld",
+ event.GetCacheFrom(), event.GetCacheTo() );
+}
+
void MyListCtrl::OnColClick(wxListEvent& event)
{
wxLogMessage( "OnColumnClick at %d.", event.GetColumn() );
void MyListCtrl::OnListKeyDown(wxListEvent& event)
{
- LogEvent(event, _T("OnListKeyDown"));
+ switch ( event.GetCode() )
+ {
+ case 'c':
+ {
+ wxListItem info;
+ info.m_itemId = event.GetIndex();
+ GetItem(info);
+
+ wxListItemAttr *attr = info.GetAttributes();
+ if ( !attr || !attr->HasTextColour() )
+ {
+ info.SetTextColour(*wxCYAN);
+
+ SetItem(info);
+ }
+ }
+ break;
- event.Skip();
+ case WXK_DELETE:
+ {
+ long item = GetNextItem(-1,
+ wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
+ while ( item != -1 )
+ {
+ DeleteItem(item);
+
+ wxLogMessage(_T("Item %ld deleted"), item);
+
+ // -1 because the indices were shifted by DeleteItem()
+ item = GetNextItem(item - 1,
+ wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
+ }
+ }
+ break;
+
+ case WXK_INSERT:
+ if ( GetWindowStyle() & wxLC_REPORT )
+ {
+ if ( GetWindowStyle() & wxLC_VIRTUAL )
+ {
+ SetItemCount(GetItemCount() + 1);
+ }
+ else // !virtual
+ {
+ InsertItemInReportView(event.GetIndex());
+ }
+ }
+ //else: fall through
+
+ default:
+ LogEvent(event, _T("OnListKeyDown"));
+
+ event.Skip();
+ }
}
void MyListCtrl::OnChar(wxKeyEvent& event)
return 0;
}
+wxListItemAttr *MyListCtrl::OnGetItemAttr(long item) const
+{
+ return item % 2 ? NULL : (wxListItemAttr *)&m_attr;
+}
+
+void MyListCtrl::InsertItemInReportView(int i)
+{
+ wxString buf;
+ buf.Printf(_T("This is item %d"), i);
+ long tmp = InsertItem(i, buf, 0);
+ SetItemData(tmp, i);
+
+ buf.Printf(_T("Col 1, item %d"), i);
+ SetItem(i, 1, buf);
+
+ buf.Printf(_T("Item %d in column 2"), i);
+ SetItem(i, 2, buf);
+}
+