Updated wxListCtrl sample with check-boxes functionality.
This commit is contained in:
@@ -154,11 +154,15 @@ wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
|||||||
EVT_MENU(LIST_MAC_USE_GENERIC, MyFrame::OnToggleMacUseGeneric)
|
EVT_MENU(LIST_MAC_USE_GENERIC, MyFrame::OnToggleMacUseGeneric)
|
||||||
#endif // __WXOSX__
|
#endif // __WXOSX__
|
||||||
EVT_MENU(LIST_FIND, MyFrame::OnFind)
|
EVT_MENU(LIST_FIND, MyFrame::OnFind)
|
||||||
|
EVT_MENU(LIST_TOGGLE_CHECKBOX, MyFrame::OnToggleItemCheckbox)
|
||||||
|
EVT_MENU(LIST_GET_CHECKBOX, MyFrame::OnGetItemCheckbox)
|
||||||
|
EVT_MENU(LIST_TOGGLE_CHECKBOXES, MyFrame::OnToggleCheckboxes)
|
||||||
|
|
||||||
EVT_UPDATE_UI(LIST_SHOW_COL_INFO, MyFrame::OnUpdateUIEnableInReport)
|
EVT_UPDATE_UI(LIST_SHOW_COL_INFO, MyFrame::OnUpdateUIEnableInReport)
|
||||||
EVT_UPDATE_UI(LIST_TOGGLE_HEADER, MyFrame::OnUpdateUIEnableInReport)
|
EVT_UPDATE_UI(LIST_TOGGLE_HEADER, MyFrame::OnUpdateUIEnableInReport)
|
||||||
|
|
||||||
EVT_UPDATE_UI(LIST_TOGGLE_MULTI_SEL, MyFrame::OnUpdateToggleMultiSel)
|
EVT_UPDATE_UI(LIST_TOGGLE_MULTI_SEL, MyFrame::OnUpdateToggleMultiSel)
|
||||||
|
EVT_UPDATE_UI(LIST_TOGGLE_CHECKBOXES, MyFrame::OnUpdateToggleCheckboxes)
|
||||||
EVT_UPDATE_UI(LIST_TOGGLE_HEADER, MyFrame::OnUpdateToggleHeader)
|
EVT_UPDATE_UI(LIST_TOGGLE_HEADER, MyFrame::OnUpdateToggleHeader)
|
||||||
EVT_UPDATE_UI(LIST_ROW_LINES, MyFrame::OnUpdateRowLines)
|
EVT_UPDATE_UI(LIST_ROW_LINES, MyFrame::OnUpdateRowLines)
|
||||||
wxEND_EVENT_TABLE()
|
wxEND_EVENT_TABLE()
|
||||||
@@ -261,6 +265,12 @@ MyFrame::MyFrame(const wxChar *title)
|
|||||||
menuList->AppendCheckItem(LIST_TOGGLE_HEADER, "Toggle &header\tCtrl-H");
|
menuList->AppendCheckItem(LIST_TOGGLE_HEADER, "Toggle &header\tCtrl-H");
|
||||||
menuList->Check(LIST_TOGGLE_HEADER, true);
|
menuList->Check(LIST_TOGGLE_HEADER, true);
|
||||||
menuList->AppendCheckItem(LIST_TOGGLE_BELL, "Toggle &bell on no match");
|
menuList->AppendCheckItem(LIST_TOGGLE_BELL, "Toggle &bell on no match");
|
||||||
|
menuList->AppendSeparator();
|
||||||
|
menuList->AppendCheckItem(LIST_TOGGLE_CHECKBOXES,
|
||||||
|
wxT("&Enable Checkboxes"));
|
||||||
|
menuList->Check(LIST_TOGGLE_CHECKBOXES, true);
|
||||||
|
menuList->Append(LIST_TOGGLE_CHECKBOX, wxT("Toggle the item checkbox state"));
|
||||||
|
menuList->Append(LIST_GET_CHECKBOX, wxT("Get the item checkbox state"));
|
||||||
|
|
||||||
wxMenu *menuCol = new wxMenu;
|
wxMenu *menuCol = new wxMenu;
|
||||||
menuCol->Append(LIST_SET_FG_COL, wxT("&Foreground colour..."));
|
menuCol->Append(LIST_SET_FG_COL, wxT("&Foreground colour..."));
|
||||||
@@ -835,6 +845,22 @@ void MyFrame::OnUpdateToggleMultiSel(wxUpdateUIEvent& event)
|
|||||||
event.Check(!m_listCtrl->HasFlag(wxLC_SINGLE_SEL));
|
event.Check(!m_listCtrl->HasFlag(wxLC_SINGLE_SEL));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnToggleCheckboxes(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
m_listCtrl->EnableCheckboxes(!m_listCtrl->HasCheckboxes());
|
||||||
|
|
||||||
|
m_logWindow->WriteText(wxString::Format(wxT("Checkboxes: %s\n"),
|
||||||
|
m_listCtrl->HasCheckboxes() ? wxT("enabled") : wxT("disabled")));
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnUpdateToggleCheckboxes(wxUpdateUIEvent& event)
|
||||||
|
{
|
||||||
|
bool cbEnabled = m_listCtrl->HasCheckboxes();
|
||||||
|
event.Check(cbEnabled);
|
||||||
|
GetMenuBar()->Enable(LIST_TOGGLE_CHECKBOX, cbEnabled);
|
||||||
|
GetMenuBar()->Enable(LIST_GET_CHECKBOX, cbEnabled);
|
||||||
|
}
|
||||||
|
|
||||||
void MyFrame::OnUpdateToggleHeader(wxUpdateUIEvent& event)
|
void MyFrame::OnUpdateToggleHeader(wxUpdateUIEvent& event)
|
||||||
{
|
{
|
||||||
event.Check(!m_listCtrl->HasFlag(wxLC_NO_HEADER));
|
event.Check(!m_listCtrl->HasFlag(wxLC_NO_HEADER));
|
||||||
@@ -893,6 +919,33 @@ void MyFrame::OnEdit(wxCommandEvent& WXUNUSED(event))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnToggleItemCheckbox(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
long item = m_listCtrl->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
|
||||||
|
while (item != -1)
|
||||||
|
{
|
||||||
|
bool checked = m_listCtrl->IsItemChecked(item);
|
||||||
|
m_listCtrl->CheckItem(item, !checked);
|
||||||
|
|
||||||
|
item = m_listCtrl->GetNextItem(item, wxLIST_NEXT_ALL,
|
||||||
|
wxLIST_STATE_SELECTED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnGetItemCheckbox(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
long item = m_listCtrl->GetNextItem(-1, wxLIST_NEXT_ALL, wxLIST_STATE_SELECTED);
|
||||||
|
while (item != -1)
|
||||||
|
{
|
||||||
|
bool checked = m_listCtrl->IsItemChecked(item);
|
||||||
|
|
||||||
|
wxLogMessage(wxT("Item %ld is %s"), item, checked ? wxT("checked") : wxT("unchecked"));
|
||||||
|
|
||||||
|
item = m_listCtrl->GetNextItem(item, wxLIST_NEXT_ALL,
|
||||||
|
wxLIST_STATE_SELECTED);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MyFrame::OnDelete(wxCommandEvent& WXUNUSED(event))
|
void MyFrame::OnDelete(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
if ( m_listCtrl->GetItemCount() )
|
if ( m_listCtrl->GetItemCount() )
|
||||||
@@ -935,6 +988,8 @@ wxBEGIN_EVENT_TABLE(MyListCtrl, wxListCtrl)
|
|||||||
EVT_LIST_KEY_DOWN(LIST_CTRL, MyListCtrl::OnListKeyDown)
|
EVT_LIST_KEY_DOWN(LIST_CTRL, MyListCtrl::OnListKeyDown)
|
||||||
EVT_LIST_ITEM_ACTIVATED(LIST_CTRL, MyListCtrl::OnActivated)
|
EVT_LIST_ITEM_ACTIVATED(LIST_CTRL, MyListCtrl::OnActivated)
|
||||||
EVT_LIST_ITEM_FOCUSED(LIST_CTRL, MyListCtrl::OnFocused)
|
EVT_LIST_ITEM_FOCUSED(LIST_CTRL, MyListCtrl::OnFocused)
|
||||||
|
EVT_LIST_ITEM_CHECKED(LIST_CTRL, MyListCtrl::OnChecked)
|
||||||
|
EVT_LIST_ITEM_UNCHECKED(LIST_CTRL, MyListCtrl::OnUnChecked)
|
||||||
|
|
||||||
EVT_LIST_COL_CLICK(LIST_CTRL, MyListCtrl::OnColClick)
|
EVT_LIST_COL_CLICK(LIST_CTRL, MyListCtrl::OnColClick)
|
||||||
EVT_LIST_COL_RIGHT_CLICK(LIST_CTRL, MyListCtrl::OnColRightClick)
|
EVT_LIST_COL_RIGHT_CLICK(LIST_CTRL, MyListCtrl::OnColRightClick)
|
||||||
@@ -1118,6 +1173,20 @@ void MyListCtrl::OnFocused(wxListEvent& event)
|
|||||||
event.Skip();
|
event.Skip();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyListCtrl::OnChecked(wxListEvent& event)
|
||||||
|
{
|
||||||
|
LogEvent(event, wxT("OnChecked"));
|
||||||
|
|
||||||
|
event.Skip();
|
||||||
|
}
|
||||||
|
|
||||||
|
void MyListCtrl::OnUnChecked(wxListEvent& event)
|
||||||
|
{
|
||||||
|
LogEvent(event, wxT("OnUnChecked"));
|
||||||
|
|
||||||
|
event.Skip();
|
||||||
|
}
|
||||||
|
|
||||||
void MyListCtrl::OnListKeyDown(wxListEvent& event)
|
void MyListCtrl::OnListKeyDown(wxListEvent& event)
|
||||||
{
|
{
|
||||||
long item;
|
long item;
|
||||||
|
@@ -61,6 +61,8 @@ public:
|
|||||||
void OnListKeyDown(wxListEvent& event);
|
void OnListKeyDown(wxListEvent& event);
|
||||||
void OnActivated(wxListEvent& event);
|
void OnActivated(wxListEvent& event);
|
||||||
void OnFocused(wxListEvent& event);
|
void OnFocused(wxListEvent& event);
|
||||||
|
void OnChecked(wxListEvent& event);
|
||||||
|
void OnUnChecked(wxListEvent& event);
|
||||||
void OnCacheHint(wxListEvent& event);
|
void OnCacheHint(wxListEvent& event);
|
||||||
|
|
||||||
void OnChar(wxKeyEvent& event);
|
void OnChar(wxKeyEvent& event);
|
||||||
@@ -146,9 +148,13 @@ protected:
|
|||||||
void OnToggleMacUseGeneric(wxCommandEvent& event);
|
void OnToggleMacUseGeneric(wxCommandEvent& event);
|
||||||
#endif // __WXOSX__
|
#endif // __WXOSX__
|
||||||
void OnFind(wxCommandEvent& event);
|
void OnFind(wxCommandEvent& event);
|
||||||
|
void OnToggleItemCheckbox(wxCommandEvent& event);
|
||||||
|
void OnGetItemCheckbox(wxCommandEvent& event);
|
||||||
|
void OnToggleCheckboxes(wxCommandEvent& event);
|
||||||
|
|
||||||
void OnUpdateUIEnableInReport(wxUpdateUIEvent& event);
|
void OnUpdateUIEnableInReport(wxUpdateUIEvent& event);
|
||||||
void OnUpdateToggleMultiSel(wxUpdateUIEvent& event);
|
void OnUpdateToggleMultiSel(wxUpdateUIEvent& event);
|
||||||
|
void OnUpdateToggleCheckboxes(wxUpdateUIEvent& event);
|
||||||
void OnUpdateToggleHeader(wxUpdateUIEvent& event);
|
void OnUpdateToggleHeader(wxUpdateUIEvent& event);
|
||||||
void OnUpdateRowLines(wxUpdateUIEvent& event);
|
void OnUpdateRowLines(wxUpdateUIEvent& event);
|
||||||
|
|
||||||
@@ -217,6 +223,9 @@ enum
|
|||||||
LIST_TOGGLE_MULTI_SEL,
|
LIST_TOGGLE_MULTI_SEL,
|
||||||
LIST_TOGGLE_HEADER,
|
LIST_TOGGLE_HEADER,
|
||||||
LIST_TOGGLE_BELL,
|
LIST_TOGGLE_BELL,
|
||||||
|
LIST_TOGGLE_CHECKBOX,
|
||||||
|
LIST_GET_CHECKBOX,
|
||||||
|
LIST_TOGGLE_CHECKBOXES,
|
||||||
LIST_TOGGLE_FIRST,
|
LIST_TOGGLE_FIRST,
|
||||||
LIST_SHOW_COL_INFO,
|
LIST_SHOW_COL_INFO,
|
||||||
LIST_SHOW_SEL_INFO,
|
LIST_SHOW_SEL_INFO,
|
||||||
|
Reference in New Issue
Block a user