X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c47711479ece3eb4bacfdb9a64326a73c313d6f6..4e15d1caa03346c126015019c1fdf093033ef40b:/samples/listctrl/listtest.h diff --git a/samples/listctrl/listtest.h b/samples/listctrl/listtest.h index b303d90559..dafb92384b 100644 --- a/samples/listctrl/listtest.h +++ b/samples/listctrl/listtest.h @@ -5,52 +5,110 @@ // Modified by: // Created: 04/01/98 // RCS-ID: $Id$ -// Copyright: (c) Julian Smart and Markus Holzem -// Licence: wxWindows license +// Copyright: (c) Julian Smart +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +// not all ports have support for EVT_CONTEXT_MENU yet, don't define +// USE_CONTEXT_MENU for those which don't +#if defined(__WXMOTIF__) || defined(__WXPM__) || defined(__WXX11__) + #define USE_CONTEXT_MENU 0 +#else + #define USE_CONTEXT_MENU 1 +#endif + // Define a new application type class MyApp: public wxApp -{ public: - bool OnInit(void); +{ +public: + MyApp() { } - wxImageList *m_imageListNormal; - wxImageList *m_imageListSmall; + virtual bool OnInit(); + +private: + wxDECLARE_NO_COPY_CLASS(MyApp); }; class MyListCtrl: public wxListCtrl { public: - MyListCtrl(wxWindow *parent, const wxWindowID id, const wxPoint& pos, - const wxSize& size, long style): - wxListCtrl(parent, id, pos, size, style) - { - } - - void OnBeginDrag(wxListEvent& event); - void OnBeginRDrag(wxListEvent& event); - void OnBeginLabelEdit(wxListEvent& event); - void OnEndLabelEdit(wxListEvent& event); - void OnDeleteItem(wxListEvent& event); - void OnGetInfo(wxListEvent& event); - void OnSetInfo(wxListEvent& event); - void OnSelected(wxListEvent& event); - void OnDeselected(wxListEvent& event); - void OnKeyDown(wxListEvent& event); - - DECLARE_EVENT_TABLE() + MyListCtrl(wxWindow *parent, + const wxWindowID id, + const wxPoint& pos, + const wxSize& size, + long style) + : wxListCtrl(parent, id, pos, size, style), + m_attr(*wxBLUE, *wxLIGHT_GREY, wxNullFont) + { + m_updated = -1; + +#ifdef __POCKETPC__ + EnableContextMenu(); +#endif + } + + // add one item to the listctrl in report mode + void InsertItemInReportView(int i); + + void OnColClick(wxListEvent& event); + void OnColRightClick(wxListEvent& event); + void OnColBeginDrag(wxListEvent& event); + void OnColDragging(wxListEvent& event); + void OnColEndDrag(wxListEvent& event); + void OnBeginDrag(wxListEvent& event); + void OnBeginRDrag(wxListEvent& event); + void OnBeginLabelEdit(wxListEvent& event); + void OnEndLabelEdit(wxListEvent& event); + void OnDeleteItem(wxListEvent& event); + void OnDeleteAllItems(wxListEvent& event); + void OnSelected(wxListEvent& event); + void OnDeselected(wxListEvent& event); + void OnListKeyDown(wxListEvent& event); + void OnActivated(wxListEvent& event); + void OnFocused(wxListEvent& event); + void OnCacheHint(wxListEvent& event); + + void OnChar(wxKeyEvent& event); + +#if USE_CONTEXT_MENU + void OnContextMenu(wxContextMenuEvent& event); +#endif + + void OnRightClick(wxMouseEvent& event); + +private: + void ShowContextMenu(const wxPoint& pos); + wxLog *m_logOld; + void SetColumnImage(int col, int image); + + void LogEvent(const wxListEvent& event, const wxChar *eventName); + void LogColEvent(const wxListEvent& event, const wxChar *eventName); + + virtual wxString OnGetItemText(long item, long column) const; + virtual int OnGetItemColumnImage(long item, long column) const; + virtual wxListItemAttr *OnGetItemAttr(long item) const; + + wxListItemAttr m_attr; + + long m_updated; + + + wxDECLARE_NO_COPY_CLASS(MyListCtrl); + DECLARE_EVENT_TABLE() }; // Define a new frame type class MyFrame: public wxFrame -{ public: - MyListCtrl *m_listCtrl; - wxTextCtrl *m_logWindow; +{ +public: + MyFrame(const wxChar *title); + virtual ~MyFrame(); + + void DoSize(); + +protected: + void OnSize(wxSizeEvent& event); - MyFrame(wxFrame *frame, char *title, int x, int y, int w, int h); - ~MyFrame(void); - - public: void OnQuit(wxCommandEvent& event); void OnAbout(wxCommandEvent& event); void OnListView(wxCommandEvent& event); @@ -59,26 +117,126 @@ class MyFrame: public wxFrame void OnIconTextView(wxCommandEvent& event); void OnSmallIconView(wxCommandEvent& event); void OnSmallIconTextView(wxCommandEvent& event); - bool OnClose(void) { return TRUE; } + void OnVirtualView(wxCommandEvent& event); + void OnSmallVirtualView(wxCommandEvent& event); + + void OnSetItemsCount(wxCommandEvent& event); + + + void OnGoTo(wxCommandEvent& event); + void OnFocusLast(wxCommandEvent& event); + void OnToggleFirstSel(wxCommandEvent& event); void OnDeselectAll(wxCommandEvent& event); void OnSelectAll(wxCommandEvent& event); + void OnAdd(wxCommandEvent& event); + void OnEdit(wxCommandEvent& event); + void OnDelete(wxCommandEvent& event); + void OnDeleteAll(wxCommandEvent& event); + void OnSort(wxCommandEvent& event); + void OnSetFgColour(wxCommandEvent& event); + void OnSetBgColour(wxCommandEvent& event); + void OnToggleMultiSel(wxCommandEvent& event); + void OnShowColInfo(wxCommandEvent& event); + void OnShowSelInfo(wxCommandEvent& event); + void OnShowViewRect(wxCommandEvent& event); +#ifdef wxHAS_LISTCTRL_COLUMN_ORDER + void OnSetColOrder(wxCommandEvent& event); + void OnGetColOrder(wxCommandEvent& event); +#endif // wxHAS_LISTCTRL_COLUMN_ORDER + void OnFreeze(wxCommandEvent& event); + void OnThaw(wxCommandEvent& event); + void OnToggleLines(wxCommandEvent& event); + void OnToggleHeader(wxCommandEvent& event); + void OnToggleBell(wxCommandEvent& event); +#ifdef __WXOSX__ + void OnToggleMacUseGeneric(wxCommandEvent& event); +#endif // __WXOSX__ + void OnFind(wxCommandEvent& event); + + void OnUpdateUIEnableInReport(wxUpdateUIEvent& event); + void OnUpdateToggleMultiSel(wxUpdateUIEvent& event); + void OnUpdateToggleHeader(wxUpdateUIEvent& event); + + wxImageList *m_imageListNormal; + wxImageList *m_imageListSmall; + + wxPanel *m_panel; + MyListCtrl *m_listCtrl; + wxTextCtrl *m_logWindow; + +private: + // recreate the list control with the new flags + void RecreateList(long flags, bool withText = true); + + // fill the control with items depending on the view + void InitWithListItems(); + void InitWithReportItems(); + void InitWithIconItems(bool withText, bool sameIcon = false); + void InitWithVirtualItems(); + + // return true if the control is not in virtual view, give an error message + // and return false if it is + bool CheckNonVirtual() const; + + + wxLog *m_logOld; - DECLARE_EVENT_TABLE() + bool m_smallVirtual; + + // number of items to initialize list/report view with + int m_numListItems; + + + wxDECLARE_NO_COPY_CLASS(MyFrame); + DECLARE_EVENT_TABLE() }; -// ID for the menu quit command -#define LIST_QUIT 1 -#define LIST_LIST_VIEW 2 -#define LIST_ICON_VIEW 3 -#define LIST_ICON_TEXT_VIEW 4 -#define LIST_SMALL_ICON_VIEW 5 -#define LIST_SMALL_ICON_TEXT_VIEW 6 -#define LIST_REPORT_VIEW 7 -#define LIST_DESELECT_ALL 8 -#define LIST_SELECT_ALL 9 -#define LIST_ABOUT 102 +// IDs for the menu commands +enum +{ + LIST_ABOUT = wxID_ABOUT, + LIST_QUIT = wxID_EXIT, -#define LIST_CTRL 1000 + LIST_LIST_VIEW = wxID_HIGHEST, + LIST_ICON_VIEW, + LIST_ICON_TEXT_VIEW, + LIST_SMALL_ICON_VIEW, + LIST_SMALL_ICON_TEXT_VIEW, + LIST_REPORT_VIEW, + LIST_VIRTUAL_VIEW, + LIST_SMALL_VIRTUAL_VIEW, + LIST_SET_ITEMS_COUNT, + LIST_DESELECT_ALL, + LIST_SELECT_ALL, + LIST_DELETE_ALL, + LIST_DELETE, + LIST_ADD, + LIST_EDIT, + LIST_SORT, + LIST_FIND, + LIST_SET_FG_COL, + LIST_SET_BG_COL, + LIST_TOGGLE_MULTI_SEL, + LIST_TOGGLE_HEADER, + LIST_TOGGLE_BELL, + LIST_TOGGLE_FIRST, + LIST_SHOW_COL_INFO, + LIST_SHOW_SEL_INFO, + LIST_SHOW_VIEW_RECT, +#ifdef wxHAS_LISTCTRL_COLUMN_ORDER + LIST_SET_COL_ORDER, + LIST_GET_COL_ORDER, +#endif // wxHAS_LISTCTRL_COLUMN_ORDER + LIST_GOTO, + LIST_FOCUS_LAST, + LIST_FREEZE, + LIST_THAW, + LIST_TOGGLE_LINES, +#ifdef __WXOSX__ + LIST_MAC_USE_GENERIC, +#endif + LIST_CTRL = 1000 +};