]> git.saurik.com Git - wxWidgets.git/blobdiff - samples/debugrpt/debugrpt.cpp
Setup.h wrapper was missing propgrid section (fixes #10909)
[wxWidgets.git] / samples / debugrpt / debugrpt.cpp
index ba5cb5df9ea74fa443f53cc185fd9c5091060f91..61f58a139410ff5e0d214b92fa5a08c8c1b4347c 100644 (file)
 // ----------------------------------------------------------------------------
 
 #include "wx/app.h"
 // ----------------------------------------------------------------------------
 
 #include "wx/app.h"
+#include "wx/log.h"
 #include "wx/frame.h"
 #include "wx/frame.h"
+#include "wx/icon.h"
 #include "wx/menu.h"
 #include "wx/msgdlg.h"
 #include "wx/button.h"
 #include "wx/menu.h"
 #include "wx/msgdlg.h"
 #include "wx/button.h"
+#include "wx/dcclient.h"
 
 #include "wx/datetime.h"
 #include "wx/ffile.h"
 
 #include "wx/datetime.h"
 #include "wx/ffile.h"
@@ -112,7 +115,7 @@ public:
 // ----------------------------------------------------------------------------
 
 // just some functions to get a slightly deeper stack trace
 // ----------------------------------------------------------------------------
 
 // just some functions to get a slightly deeper stack trace
-static void bar(const wxChar *p)
+static void bar(const char *p)
 {
     char *pc = 0;
     *pc = *p;
 {
     char *pc = 0;
     *pc = *p;
@@ -122,15 +125,15 @@ static void bar(const wxChar *p)
 
 void baz(const wxString& s)
 {
 
 void baz(const wxString& s)
 {
-    printf("baz: %s\n", s.c_str());
+    printf("baz: %s\n", (const char*)s.c_str());
 }
 
 void foo(int n)
 {
     if ( n % 2 )
 }
 
 void foo(int n)
 {
     if ( n % 2 )
-        baz(wxT("odd"));
+        baz("odd");
     else
     else
-        bar(wxT("even"));
+        bar("even");
 }
 
 // ----------------------------------------------------------------------------
 }
 
 // ----------------------------------------------------------------------------
@@ -142,6 +145,7 @@ enum
     DebugRpt_Quit = wxID_EXIT,
     DebugRpt_Crash = 100,
     DebugRpt_Current,
     DebugRpt_Quit = wxID_EXIT,
     DebugRpt_Crash = 100,
     DebugRpt_Current,
+    DebugRpt_Paint,
     DebugRpt_Upload,
     DebugRpt_About = wxID_ABOUT
 };
     DebugRpt_Upload,
     DebugRpt_About = wxID_ABOUT
 };
@@ -155,10 +159,17 @@ private:
     void OnQuit(wxCommandEvent& event);
     void OnReportForCrash(wxCommandEvent& event);
     void OnReportForCurrent(wxCommandEvent& event);
     void OnQuit(wxCommandEvent& event);
     void OnReportForCrash(wxCommandEvent& event);
     void OnReportForCurrent(wxCommandEvent& event);
+    void OnReportPaint(wxCommandEvent& event);
     void OnReportUpload(wxCommandEvent& event);
     void OnAbout(wxCommandEvent& event);
 
     void OnReportUpload(wxCommandEvent& event);
     void OnAbout(wxCommandEvent& event);
 
-    DECLARE_NO_COPY_CLASS(MyFrame)
+    void OnPaint(wxPaintEvent& event);
+
+
+    // number of lines drawn in OnPaint()
+    int m_numLines;
+
+    wxDECLARE_NO_COPY_CLASS(MyFrame);
     DECLARE_EVENT_TABLE()
 };
 
     DECLARE_EVENT_TABLE()
 };
 
@@ -193,7 +204,7 @@ public:
 private:
     bool m_uploadReport;
 
 private:
     bool m_uploadReport;
 
-    DECLARE_NO_COPY_CLASS(MyApp)
+    wxDECLARE_NO_COPY_CLASS(MyApp);
 };
 
 IMPLEMENT_APP(MyApp)
 };
 
 IMPLEMENT_APP(MyApp)
@@ -210,13 +221,19 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
     EVT_MENU(DebugRpt_Quit, MyFrame::OnQuit)
     EVT_MENU(DebugRpt_Crash, MyFrame::OnReportForCrash)
     EVT_MENU(DebugRpt_Current, MyFrame::OnReportForCurrent)
     EVT_MENU(DebugRpt_Quit, MyFrame::OnQuit)
     EVT_MENU(DebugRpt_Crash, MyFrame::OnReportForCrash)
     EVT_MENU(DebugRpt_Current, MyFrame::OnReportForCurrent)
+    EVT_MENU(DebugRpt_Paint, MyFrame::OnReportPaint)
     EVT_MENU(DebugRpt_Upload, MyFrame::OnReportUpload)
     EVT_MENU(DebugRpt_About, MyFrame::OnAbout)
     EVT_MENU(DebugRpt_Upload, MyFrame::OnReportUpload)
     EVT_MENU(DebugRpt_About, MyFrame::OnAbout)
+
+    EVT_PAINT(MyFrame::OnPaint)
 END_EVENT_TABLE()
 
 MyFrame::MyFrame()
 END_EVENT_TABLE()
 
 MyFrame::MyFrame()
-       : wxFrame(NULL, wxID_ANY, _T("wxWidgets Debug Report Sample"))
+       : wxFrame(NULL, wxID_ANY, _T("wxWidgets Debug Report Sample"),
+                 wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE|wxDEFAULT_FRAME_STYLE)
 {
 {
+    m_numLines = 10;
+
     SetIcon(wxICON(sample));
 
     wxMenu *menuFile = new wxMenu;
     SetIcon(wxICON(sample));
 
     wxMenu *menuFile = new wxMenu;
@@ -227,6 +244,8 @@ MyFrame::MyFrame()
                        _T("Provoke a crash inside the program and create report for it"));
     menuReport->Append(DebugRpt_Current, _T("Report for c&urrent context\tCtrl-U"),
                        _T("Create report for the current program context"));
                        _T("Provoke a crash inside the program and create report for it"));
     menuReport->Append(DebugRpt_Current, _T("Report for c&urrent context\tCtrl-U"),
                        _T("Create report for the current program context"));
+    menuReport->Append(DebugRpt_Paint, _T("Report for &paint handler\tCtrl-P"),
+                       _T("Provoke a repeatable crash in wxEVT_PAINT handler"));
     menuReport->AppendSeparator();
     menuReport->AppendCheckItem(DebugRpt_Upload, _T("Up&load debug report"),
                        _T("You need to configure a web server accepting debug report uploads to use this function"));
     menuReport->AppendSeparator();
     menuReport->AppendCheckItem(DebugRpt_Upload, _T("Up&load debug report"),
                        _T("You need to configure a web server accepting debug report uploads to use this function"));
@@ -264,6 +283,15 @@ void MyFrame::OnReportForCurrent(wxCommandEvent& WXUNUSED(event))
     wxGetApp().GenerateReport(wxDebugReport::Context_Current);
 }
 
     wxGetApp().GenerateReport(wxDebugReport::Context_Current);
 }
 
+void MyFrame::OnReportPaint(wxCommandEvent& WXUNUSED(event))
+{
+    // this will result in a crash in OnPaint()
+    m_numLines = 0;
+
+    // ensure it's called immediately
+    Refresh();
+}
+
 void MyFrame::OnReportUpload(wxCommandEvent& event)
 {
     wxGetApp().UploadReport(event.IsChecked());
 void MyFrame::OnReportUpload(wxCommandEvent& event)
 {
     wxGetApp().UploadReport(event.IsChecked());
@@ -280,6 +308,14 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event))
     );
 }
 
     );
 }
 
+void MyFrame::OnPaint(wxPaintEvent& WXUNUSED(event))
+{
+    wxPaintDC dc(this);
+    const wxSize size = GetClientSize();
+    for ( wxCoord x = 0; x < size.x; x += size.x/m_numLines )
+        dc.DrawLine(x, 0, x, size.y);
+}
+
 // ----------------------------------------------------------------------------
 // MyApp
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 // MyApp
 // ----------------------------------------------------------------------------