#include "wx/listctrl.h"
#include "wx/timer.h" // for wxStopWatch
#include "wx/colordlg.h" // for wxGetColourFromUser
+#include "wx/settings.h"
#include "listtest.h"
EVT_LIST_CACHE_HINT(LIST_CTRL, MyListCtrl::OnCacheHint)
+#if USE_CONTEXT_MENU
+ EVT_CONTEXT_MENU(MyListCtrl::OnContextMenu)
+#endif
EVT_CHAR(MyListCtrl::OnChar)
END_EVENT_TABLE()
bool MyApp::OnInit()
{
// Create the main frame window
- MyFrame *frame = new MyFrame(wxT("wxListCtrl Test"), 50, 50, 450, 340);
+ MyFrame *frame = new MyFrame(wxT("wxListCtrl Test"));
// Show the frame
frame->Show(true);
}
// My frame constructor
-MyFrame::MyFrame(const wxChar *title, int x, int y, int w, int h)
- : wxFrame(NULL, wxID_ANY, title, wxPoint(x, y), wxSize(w, h))
+MyFrame::MyFrame(const wxChar *title)
+ : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxDefaultSize))
{
+ if (wxSystemSettings::GetScreenType() > wxSYS_SCREEN_SMALL)
+ SetSize(wxSize(450, 340));
+
m_listCtrl = NULL;
m_logWindow = NULL;
m_smallVirtual = false;
buf.Printf(_T("Item %d in column 2"), i);
SetItem(i, 2, buf);
}
+
+#if USE_CONTEXT_MENU
+void MyListCtrl::OnContextMenu(wxContextMenuEvent& event)
+{
+ wxPoint point = event.GetPosition();
+ // If from keyboard
+ if (point.x == -1 && point.y == -1) {
+ wxSize size = GetSize();
+ point.x = size.x / 2;
+ point.y = size.y / 2;
+ } else {
+ point = ScreenToClient(point);
+ }
+ ShowContextMenu(point);
+}
+#endif
+
+void MyListCtrl::ShowContextMenu(const wxPoint& pos)
+{
+ wxMenu menu;
+
+ menu.Append(wxID_ABOUT, _T("&About"));
+ menu.AppendSeparator();
+ menu.Append(wxID_EXIT, _T("E&xit"));
+
+ PopupMenu(&menu, pos.x, pos.y);
+}
+
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
+// 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__) || defined(__WXMGL__)
+ #define USE_CONTEXT_MENU 0
+#else
+ #define USE_CONTEXT_MENU 1
+#endif
+
// Define a new application type
class MyApp: public wxApp
{
: wxListCtrl(parent, id, pos, size, style),
m_attr(*wxBLUE, *wxLIGHT_GREY, wxNullFont)
{
+#ifdef __POCKETPC__
+ EnableContextMenu();
+#endif
}
// add one item to the listctrl in report mode
void OnCacheHint(wxListEvent& event);
void OnChar(wxKeyEvent& event);
+#if USE_CONTEXT_MENU
+ void OnContextMenu(wxContextMenuEvent& event);
+#endif
private:
void SetColumnImage(int col, int image);
class MyFrame: public wxFrame
{
public:
- MyFrame(const wxChar *title, int x, int y, int w, int h);
+ MyFrame(const wxChar *title);
virtual ~MyFrame();
void DoSize();