1998-05-22 19:57:05 +00:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// Name: listctrl.h
|
|
|
|
// Purpose: wxListCtrl sample
|
|
|
|
// Author: Julian Smart
|
|
|
|
// Modified by:
|
|
|
|
// Created: 04/01/98
|
2003-03-17 11:55:54 +00:00
|
|
|
// Copyright: (c) Julian Smart
|
2010-07-13 13:29:13 +00:00
|
|
|
// Licence: wxWindows licence
|
1998-05-22 19:57:05 +00:00
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
2006-03-12 20:54:13 +00:00
|
|
|
// not all ports have support for EVT_CONTEXT_MENU yet, don't define
|
|
|
|
// USE_CONTEXT_MENU for those which don't
|
2014-05-15 23:56:58 +00:00
|
|
|
#if defined(__WXMOTIF__) || defined(__WXX11__)
|
2006-03-12 20:54:13 +00:00
|
|
|
#define USE_CONTEXT_MENU 0
|
|
|
|
#else
|
|
|
|
#define USE_CONTEXT_MENU 1
|
|
|
|
#endif
|
|
|
|
|
1998-05-22 19:57:05 +00:00
|
|
|
// Define a new application type
|
|
|
|
class MyApp: public wxApp
|
1999-12-01 22:07:25 +00:00
|
|
|
{
|
|
|
|
public:
|
2003-07-26 17:34:12 +00:00
|
|
|
MyApp() { }
|
|
|
|
|
2014-03-30 00:02:23 +00:00
|
|
|
virtual bool OnInit() wxOVERRIDE;
|
2003-07-26 17:34:12 +00:00
|
|
|
|
|
|
|
private:
|
2009-02-08 11:45:59 +00:00
|
|
|
wxDECLARE_NO_COPY_CLASS(MyApp);
|
1998-05-22 19:57:05 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
class MyListCtrl: public wxListCtrl
|
|
|
|
{
|
|
|
|
public:
|
2001-07-11 16:22:12 +00:00
|
|
|
MyListCtrl(wxWindow *parent,
|
|
|
|
const wxWindowID id,
|
|
|
|
const wxPoint& pos,
|
|
|
|
const wxSize& size,
|
|
|
|
long style)
|
2012-12-22 02:33:23 +00:00
|
|
|
: wxListCtrl(parent, id, pos, size, style)
|
1999-07-23 23:41:45 +00:00
|
|
|
{
|
2007-09-16 10:24:45 +00:00
|
|
|
m_updated = -1;
|
|
|
|
|
1999-07-23 23:41:45 +00:00
|
|
|
}
|
1999-12-01 22:07:25 +00:00
|
|
|
|
2001-07-09 15:58:24 +00:00
|
|
|
// add one item to the listctrl in report mode
|
|
|
|
void InsertItemInReportView(int i);
|
|
|
|
|
1999-08-24 20:26:06 +00:00
|
|
|
void OnColClick(wxListEvent& event);
|
2001-09-01 01:01:51 +00:00
|
|
|
void OnColRightClick(wxListEvent& event);
|
|
|
|
void OnColBeginDrag(wxListEvent& event);
|
|
|
|
void OnColDragging(wxListEvent& event);
|
|
|
|
void OnColEndDrag(wxListEvent& event);
|
1999-07-23 23:41:45 +00:00
|
|
|
void OnBeginDrag(wxListEvent& event);
|
|
|
|
void OnBeginRDrag(wxListEvent& event);
|
|
|
|
void OnBeginLabelEdit(wxListEvent& event);
|
|
|
|
void OnEndLabelEdit(wxListEvent& event);
|
|
|
|
void OnDeleteItem(wxListEvent& event);
|
2000-02-06 13:51:01 +00:00
|
|
|
void OnDeleteAllItems(wxListEvent& event);
|
1999-07-23 23:41:45 +00:00
|
|
|
void OnSelected(wxListEvent& event);
|
|
|
|
void OnDeselected(wxListEvent& event);
|
|
|
|
void OnListKeyDown(wxListEvent& event);
|
|
|
|
void OnActivated(wxListEvent& event);
|
2001-11-16 16:31:17 +00:00
|
|
|
void OnFocused(wxListEvent& event);
|
2016-01-30 17:54:09 +00:00
|
|
|
void OnItemRightClick(wxListEvent& event);
|
2015-12-17 13:29:41 +00:00
|
|
|
void OnChecked(wxListEvent& event);
|
|
|
|
void OnUnChecked(wxListEvent& event);
|
2001-07-20 00:25:09 +00:00
|
|
|
void OnCacheHint(wxListEvent& event);
|
1998-05-22 19:57:05 +00:00
|
|
|
|
1999-06-01 15:32:12 +00:00
|
|
|
void OnChar(wxKeyEvent& event);
|
2006-03-13 09:18:22 +00:00
|
|
|
|
2006-03-12 20:54:13 +00:00
|
|
|
#if USE_CONTEXT_MENU
|
|
|
|
void OnContextMenu(wxContextMenuEvent& event);
|
|
|
|
#endif
|
1999-06-01 15:32:12 +00:00
|
|
|
|
2006-05-28 18:10:10 +00:00
|
|
|
void OnRightClick(wxMouseEvent& event);
|
|
|
|
|
2000-02-24 23:40:42 +00:00
|
|
|
private:
|
2006-03-13 09:18:22 +00:00
|
|
|
void ShowContextMenu(const wxPoint& pos);
|
|
|
|
wxLog *m_logOld;
|
2001-09-02 23:47:42 +00:00
|
|
|
void SetColumnImage(int col, int image);
|
|
|
|
|
2000-02-24 23:40:42 +00:00
|
|
|
void LogEvent(const wxListEvent& event, const wxChar *eventName);
|
2002-12-04 14:11:26 +00:00
|
|
|
void LogColEvent(const wxListEvent& event, const wxChar *eventName);
|
2000-02-24 23:40:42 +00:00
|
|
|
|
2014-03-30 00:02:23 +00:00
|
|
|
virtual wxString OnGetItemText(long item, long column) const wxOVERRIDE;
|
|
|
|
virtual int OnGetItemColumnImage(long item, long column) const wxOVERRIDE;
|
2016-04-16 15:44:19 +00:00
|
|
|
virtual wxItemAttr *OnGetItemAttr(long item) const wxOVERRIDE;
|
2001-07-11 16:22:12 +00:00
|
|
|
|
2007-09-16 10:24:45 +00:00
|
|
|
long m_updated;
|
|
|
|
|
|
|
|
|
2009-02-08 11:45:59 +00:00
|
|
|
wxDECLARE_NO_COPY_CLASS(MyListCtrl);
|
2014-03-30 07:07:55 +00:00
|
|
|
wxDECLARE_EVENT_TABLE();
|
1998-05-22 19:57:05 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
// Define a new frame type
|
|
|
|
class MyFrame: public wxFrame
|
1999-07-23 23:41:45 +00:00
|
|
|
{
|
|
|
|
public:
|
2006-03-12 20:54:13 +00:00
|
|
|
MyFrame(const wxChar *title);
|
2003-11-06 19:28:24 +00:00
|
|
|
virtual ~MyFrame();
|
|
|
|
|
2002-12-04 14:11:26 +00:00
|
|
|
protected:
|
1998-05-22 19:57:05 +00:00
|
|
|
void OnQuit(wxCommandEvent& event);
|
|
|
|
void OnAbout(wxCommandEvent& event);
|
|
|
|
void OnListView(wxCommandEvent& event);
|
|
|
|
void OnReportView(wxCommandEvent& event);
|
|
|
|
void OnIconView(wxCommandEvent& event);
|
|
|
|
void OnIconTextView(wxCommandEvent& event);
|
|
|
|
void OnSmallIconView(wxCommandEvent& event);
|
|
|
|
void OnSmallIconTextView(wxCommandEvent& event);
|
2001-07-05 01:27:38 +00:00
|
|
|
void OnVirtualView(wxCommandEvent& event);
|
2005-05-22 21:31:42 +00:00
|
|
|
void OnSmallVirtualView(wxCommandEvent& event);
|
2001-07-05 01:27:38 +00:00
|
|
|
|
2009-04-25 16:23:15 +00:00
|
|
|
void OnSetItemsCount(wxCommandEvent& event);
|
|
|
|
|
|
|
|
|
2008-03-16 00:04:51 +00:00
|
|
|
void OnGoTo(wxCommandEvent& event);
|
2001-08-13 15:41:18 +00:00
|
|
|
void OnFocusLast(wxCommandEvent& event);
|
2000-03-13 17:20:39 +00:00
|
|
|
void OnToggleFirstSel(wxCommandEvent& event);
|
1998-08-23 20:06:24 +00:00
|
|
|
void OnDeselectAll(wxCommandEvent& event);
|
|
|
|
void OnSelectAll(wxCommandEvent& event);
|
2001-07-06 21:18:15 +00:00
|
|
|
void OnAdd(wxCommandEvent& event);
|
2002-05-26 10:53:51 +00:00
|
|
|
void OnEdit(wxCommandEvent& event);
|
2001-06-23 22:24:33 +00:00
|
|
|
void OnDelete(wxCommandEvent& event);
|
1999-07-23 23:41:45 +00:00
|
|
|
void OnDeleteAll(wxCommandEvent& event);
|
1999-12-01 22:07:25 +00:00
|
|
|
void OnSort(wxCommandEvent& event);
|
2000-02-08 01:07:48 +00:00
|
|
|
void OnSetFgColour(wxCommandEvent& event);
|
|
|
|
void OnSetBgColour(wxCommandEvent& event);
|
2012-12-22 02:33:23 +00:00
|
|
|
void OnSetRowLines(wxCommandEvent& event);
|
2016-04-17 15:43:09 +00:00
|
|
|
void OnCustomHeaderAttr(wxCommandEvent& event);
|
2000-02-10 18:12:44 +00:00
|
|
|
void OnToggleMultiSel(wxCommandEvent& event);
|
2000-07-15 19:51:35 +00:00
|
|
|
void OnShowColInfo(wxCommandEvent& event);
|
2001-07-07 22:42:35 +00:00
|
|
|
void OnShowSelInfo(wxCommandEvent& event);
|
2008-06-29 00:12:12 +00:00
|
|
|
void OnShowViewRect(wxCommandEvent& event);
|
2008-11-26 19:11:22 +00:00
|
|
|
#ifdef wxHAS_LISTCTRL_COLUMN_ORDER
|
|
|
|
void OnSetColOrder(wxCommandEvent& event);
|
|
|
|
void OnGetColOrder(wxCommandEvent& event);
|
|
|
|
#endif // wxHAS_LISTCTRL_COLUMN_ORDER
|
2001-11-03 17:06:29 +00:00
|
|
|
void OnFreeze(wxCommandEvent& event);
|
|
|
|
void OnThaw(wxCommandEvent& event);
|
2004-09-18 11:01:00 +00:00
|
|
|
void OnToggleLines(wxCommandEvent& event);
|
2010-03-06 00:31:00 +00:00
|
|
|
void OnToggleHeader(wxCommandEvent& event);
|
2012-10-07 22:42:27 +00:00
|
|
|
void OnToggleBell(wxCommandEvent& event);
|
2009-04-25 15:37:33 +00:00
|
|
|
#ifdef __WXOSX__
|
2007-01-07 17:28:18 +00:00
|
|
|
void OnToggleMacUseGeneric(wxCommandEvent& event);
|
2009-04-25 15:37:33 +00:00
|
|
|
#endif // __WXOSX__
|
2009-04-25 16:23:15 +00:00
|
|
|
void OnFind(wxCommandEvent& event);
|
2016-04-21 17:55:51 +00:00
|
|
|
void OnToggleItemCheckBox(wxCommandEvent& event);
|
|
|
|
void OnGetItemCheckBox(wxCommandEvent& event);
|
|
|
|
void OnToggleCheckBoxes(wxCommandEvent& event);
|
1999-07-23 23:41:45 +00:00
|
|
|
|
2010-03-06 00:31:00 +00:00
|
|
|
void OnUpdateUIEnableInReport(wxUpdateUIEvent& event);
|
2004-03-23 22:18:06 +00:00
|
|
|
void OnUpdateToggleMultiSel(wxUpdateUIEvent& event);
|
2016-04-21 17:55:51 +00:00
|
|
|
void OnUpdateToggleCheckBoxes(wxUpdateUIEvent& event);
|
2010-03-06 00:31:00 +00:00
|
|
|
void OnUpdateToggleHeader(wxUpdateUIEvent& event);
|
2012-12-22 02:33:23 +00:00
|
|
|
void OnUpdateRowLines(wxUpdateUIEvent& event);
|
1999-07-23 23:41:45 +00:00
|
|
|
|
2000-02-24 23:40:42 +00:00
|
|
|
wxImageList *m_imageListNormal;
|
|
|
|
wxImageList *m_imageListSmall;
|
|
|
|
|
2002-12-04 14:11:26 +00:00
|
|
|
wxPanel *m_panel;
|
|
|
|
MyListCtrl *m_listCtrl;
|
|
|
|
wxTextCtrl *m_logWindow;
|
|
|
|
|
2000-02-24 23:40:42 +00:00
|
|
|
private:
|
2001-07-07 16:52:27 +00:00
|
|
|
// recreate the list control with the new flags
|
2004-05-20 17:02:02 +00:00
|
|
|
void RecreateList(long flags, bool withText = true);
|
2001-07-07 16:52:27 +00:00
|
|
|
|
|
|
|
// fill the control with items depending on the view
|
|
|
|
void InitWithListItems();
|
|
|
|
void InitWithReportItems();
|
2004-05-20 17:02:02 +00:00
|
|
|
void InitWithIconItems(bool withText, bool sameIcon = false);
|
2001-07-07 16:52:27 +00:00
|
|
|
void InitWithVirtualItems();
|
|
|
|
|
2004-02-08 15:16:21 +00:00
|
|
|
// return true if the control is not in virtual view, give an error message
|
|
|
|
// and return false if it is
|
|
|
|
bool CheckNonVirtual() const;
|
|
|
|
|
|
|
|
|
2000-02-24 23:40:42 +00:00
|
|
|
wxLog *m_logOld;
|
|
|
|
|
2005-05-22 21:31:42 +00:00
|
|
|
bool m_smallVirtual;
|
|
|
|
|
2009-04-25 16:23:15 +00:00
|
|
|
// number of items to initialize list/report view with
|
|
|
|
int m_numListItems;
|
|
|
|
|
|
|
|
|
2009-02-08 11:45:59 +00:00
|
|
|
wxDECLARE_NO_COPY_CLASS(MyFrame);
|
2014-03-30 07:07:55 +00:00
|
|
|
wxDECLARE_EVENT_TABLE();
|
1998-05-22 19:57:05 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2001-07-05 01:27:38 +00:00
|
|
|
// IDs for the menu commands
|
1999-12-01 22:07:25 +00:00
|
|
|
enum
|
|
|
|
{
|
2005-03-15 11:56:58 +00:00
|
|
|
LIST_ABOUT = wxID_ABOUT,
|
|
|
|
LIST_QUIT = wxID_EXIT,
|
2001-07-06 21:18:15 +00:00
|
|
|
|
2005-03-15 11:56:58 +00:00
|
|
|
LIST_LIST_VIEW = wxID_HIGHEST,
|
2001-07-05 01:27:38 +00:00
|
|
|
LIST_ICON_VIEW,
|
|
|
|
LIST_ICON_TEXT_VIEW,
|
|
|
|
LIST_SMALL_ICON_VIEW,
|
|
|
|
LIST_SMALL_ICON_TEXT_VIEW,
|
2001-07-06 21:18:15 +00:00
|
|
|
LIST_REPORT_VIEW,
|
2001-07-05 01:27:38 +00:00
|
|
|
LIST_VIRTUAL_VIEW,
|
2005-05-22 21:31:42 +00:00
|
|
|
LIST_SMALL_VIRTUAL_VIEW,
|
2009-04-25 16:23:15 +00:00
|
|
|
LIST_SET_ITEMS_COUNT,
|
2001-07-05 01:27:38 +00:00
|
|
|
|
|
|
|
LIST_DESELECT_ALL,
|
|
|
|
LIST_SELECT_ALL,
|
|
|
|
LIST_DELETE_ALL,
|
2001-06-23 22:24:33 +00:00
|
|
|
LIST_DELETE,
|
2001-07-06 21:18:15 +00:00
|
|
|
LIST_ADD,
|
2002-05-26 10:53:51 +00:00
|
|
|
LIST_EDIT,
|
1999-12-01 22:07:25 +00:00
|
|
|
LIST_SORT,
|
2009-04-25 16:23:15 +00:00
|
|
|
LIST_FIND,
|
2000-02-08 01:07:48 +00:00
|
|
|
LIST_SET_FG_COL,
|
|
|
|
LIST_SET_BG_COL,
|
2012-12-22 02:33:23 +00:00
|
|
|
LIST_ROW_LINES,
|
2016-04-17 15:43:09 +00:00
|
|
|
LIST_CUSTOM_HEADER_ATTR,
|
2000-02-10 18:12:44 +00:00
|
|
|
LIST_TOGGLE_MULTI_SEL,
|
2010-03-06 00:31:00 +00:00
|
|
|
LIST_TOGGLE_HEADER,
|
2012-10-07 22:42:27 +00:00
|
|
|
LIST_TOGGLE_BELL,
|
2015-12-17 13:29:41 +00:00
|
|
|
LIST_TOGGLE_CHECKBOX,
|
|
|
|
LIST_GET_CHECKBOX,
|
|
|
|
LIST_TOGGLE_CHECKBOXES,
|
2000-03-13 17:20:39 +00:00
|
|
|
LIST_TOGGLE_FIRST,
|
2000-07-15 19:51:35 +00:00
|
|
|
LIST_SHOW_COL_INFO,
|
2001-07-07 22:42:35 +00:00
|
|
|
LIST_SHOW_SEL_INFO,
|
2008-06-29 00:12:12 +00:00
|
|
|
LIST_SHOW_VIEW_RECT,
|
2008-11-26 19:11:22 +00:00
|
|
|
#ifdef wxHAS_LISTCTRL_COLUMN_ORDER
|
|
|
|
LIST_SET_COL_ORDER,
|
|
|
|
LIST_GET_COL_ORDER,
|
|
|
|
#endif // wxHAS_LISTCTRL_COLUMN_ORDER
|
2008-03-16 00:04:51 +00:00
|
|
|
LIST_GOTO,
|
2001-08-13 15:41:18 +00:00
|
|
|
LIST_FOCUS_LAST,
|
2001-11-03 17:06:29 +00:00
|
|
|
LIST_FREEZE,
|
|
|
|
LIST_THAW,
|
2004-09-18 11:01:00 +00:00
|
|
|
LIST_TOGGLE_LINES,
|
2009-04-25 15:37:33 +00:00
|
|
|
#ifdef __WXOSX__
|
2007-01-07 17:28:18 +00:00
|
|
|
LIST_MAC_USE_GENERIC,
|
2009-04-25 15:37:33 +00:00
|
|
|
#endif
|
1998-05-22 19:57:05 +00:00
|
|
|
|
1999-12-01 22:07:25 +00:00
|
|
|
LIST_CTRL = 1000
|
|
|
|
};
|