X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/be5a51fb592f3fa2ba38ac6cd1e488d6d806058c..a7a27e86fa2b5bacb450acb69d79422cc191c38e:/samples/thread/thread.cpp diff --git a/samples/thread/thread.cpp b/samples/thread/thread.cpp index 76965a7664..d85db154a4 100644 --- a/samples/thread/thread.cpp +++ b/samples/thread/thread.cpp @@ -30,6 +30,8 @@ #include "wx/progdlg.h" +#include "../sample.xpm" + // define this to use wxExecute in the exec tests, otherwise just use system #define USE_EXECUTE @@ -47,7 +49,7 @@ class MyApp : public wxApp { public: MyApp(); - virtual ~MyApp(); + virtual ~MyApp(){}; virtual bool OnInit(); @@ -132,7 +134,8 @@ private: // ID for the menu commands enum { - THREAD_QUIT = 1, + THREAD_QUIT = wxID_EXIT, + THREAD_ABOUT = wxID_ABOUT, THREAD_TEXT = 101, THREAD_CLEAR, THREAD_START_THREAD = 201, @@ -146,7 +149,6 @@ enum THREAD_EXEC_THREAD, THREAD_SHOWCPUS, - THREAD_ABOUT, WORKER_EVENT // this one gets sent from the worker thread }; @@ -171,7 +173,7 @@ public: void WriteText(const wxString& text); public: - size_t m_count; + unsigned m_count; MyFrame *m_frame; }; @@ -210,7 +212,7 @@ void MyThread::OnExit() // waiting for us if ( wxGetApp().m_waitingUntilAllDone ) { - wxGetApp().m_waitingUntilAllDone = FALSE; + wxGetApp().m_waitingUntilAllDone = false; wxGetApp().m_semAllDone.Post(); } @@ -264,7 +266,7 @@ public: public: MyFrame *m_frame; - size_t m_count; + unsigned m_count; }; MyWorkerThread::MyWorkerThread(MyFrame *frame) @@ -355,16 +357,15 @@ END_EVENT_TABLE() MyApp::MyApp() : m_semAllDone() { - m_waitingUntilAllDone = FALSE; -} - -MyApp::~MyApp() -{ + m_waitingUntilAllDone = false; } // `Main program' equivalent, creating windows and returning main app frame bool MyApp::OnInit() { + if ( !wxApp::OnInit() ) + return false; + // uncomment this to get some debugging messages from the trace code // on the console (or just set WXTRACE env variable to include "thread") //wxLog::AddTraceMask("thread"); @@ -405,27 +406,31 @@ bool MyApp::OnInit() menuBar->Append(menuHelp, _T("&Help")); frame->SetMenuBar(menuBar); - + // Show the frame - frame->Show(TRUE); + frame->Show(true); SetTopWindow(frame); - return TRUE; + return true; } // My frame constructor MyFrame::MyFrame(wxFrame *frame, const wxString& title, int x, int y, int w, int h) - : wxFrame(frame, -1, title, wxPoint(x, y), wxSize(w, h)) + : wxFrame(frame, wxID_ANY, title, wxPoint(x, y), wxSize(w, h)) { + SetIcon(wxIcon(sample_xpm)); + m_nRunning = m_nCount = 0; m_dlgProgress = (wxProgressDialog *)NULL; +#if wxUSE_STATUSBAR CreateStatusBar(2); +#endif // wxUSE_STATUSBAR - m_txtctrl = new wxTextCtrl(this, -1, _T(""), wxPoint(0, 0), wxSize(0, 0), + m_txtctrl = new wxTextCtrl(this, wxID_ANY, _T(""), wxPoint(0, 0), wxSize(0, 0), wxTE_MULTILINE | wxTE_READONLY); } @@ -450,7 +455,7 @@ MyFrame::~MyFrame() if ( count ) { // set the flag for MyThread::OnExit() - wxGetApp().m_waitingUntilAllDone = TRUE; + wxGetApp().m_waitingUntilAllDone = true; // stop all threads while ( ! threads.IsEmpty() ) @@ -492,7 +497,7 @@ MyThread *MyFrame::CreateThread() void MyFrame::OnStartThreads(wxCommandEvent& WXUNUSED(event) ) { - static long s_num = 10; + static long s_num; s_num = wxGetNumberFromUser(_T("How many threads to start: "), _T(""), _T("wxThread sample"), s_num, 1, 10000, this); @@ -503,7 +508,7 @@ void MyFrame::OnStartThreads(wxCommandEvent& WXUNUSED(event) ) return; } - size_t count = (size_t)s_num, n; + unsigned count = unsigned(s_num), n; wxArrayThread threads; @@ -525,9 +530,11 @@ void MyFrame::OnStartThreads(wxCommandEvent& WXUNUSED(event) ) threads.Add(thr); } +#if wxUSE_STATUSBAR wxString msg; msg.Printf(wxT("%d new threads created."), count); SetStatusText(msg, 1); +#endif // wxUSE_STATUSBAR // ...and then start them for ( n = 0; n < count; n++ ) @@ -545,7 +552,9 @@ void MyFrame::OnStartThread(wxCommandEvent& WXUNUSED(event) ) wxLogError(wxT("Can't start thread!")); } +#if wxUSE_STATUSBAR SetStatusText(_T("New thread started."), 1); +#endif // wxUSE_STATUSBAR } void MyFrame::OnStopThread(wxCommandEvent& WXUNUSED(event) ) @@ -570,7 +579,9 @@ void MyFrame::OnStopThread(wxCommandEvent& WXUNUSED(event) ) thread->Delete(); +#if wxUSE_STATUSBAR SetStatusText(_T("Thread stopped."), 1); +#endif // wxUSE_STATUSBAR } } @@ -591,7 +602,9 @@ void MyFrame::OnResumeThread(wxCommandEvent& WXUNUSED(event) ) { wxGetApp().m_threads[n]->Resume(); +#if wxUSE_STATUSBAR SetStatusText(_T("Thread resumed."), 1); +#endif // wxUSE_STATUSBAR } } @@ -612,7 +625,9 @@ void MyFrame::OnPauseThread(wxCommandEvent& WXUNUSED(event) ) { wxGetApp().m_threads[n]->Pause(); +#if wxUSE_STATUSBAR SetStatusText(_T("Thread paused."), 1); +#endif // wxUSE_STATUSBAR } } @@ -635,7 +650,7 @@ void MyFrame::OnIdle(wxIdleEvent& event) m_nRunning = nRunning; m_nCount = nCount; - wxLogStatus(this, wxT("%u threads total, %u running."), nCount, nRunning); + wxLogStatus(this, wxT("%u threads total, %u running."), unsigned(nCount), unsigned(nRunning)); } //else: avoid flicker - don't print anything @@ -644,7 +659,7 @@ void MyFrame::OnIdle(wxIdleEvent& event) void MyFrame::OnQuit(wxCommandEvent& WXUNUSED(event) ) { - Close(TRUE); + Close(true); } void MyFrame::OnExecMain(wxCommandEvent& WXUNUSED(event)) @@ -718,6 +733,7 @@ void MyFrame::OnStartWorker(wxCommandEvent& WXUNUSED(event)) if ( thread->Create() != wxTHREAD_NO_ERROR ) { wxLogError(wxT("Can't create thread!")); + return; } m_dlgProgress = new wxProgressDialog @@ -734,7 +750,7 @@ void MyFrame::OnStartWorker(wxCommandEvent& WXUNUSED(event)) ); // thread is not running yet, no need for crit sect - m_cancelled = FALSE; + m_cancelled = false; thread->Run(); } @@ -763,7 +779,7 @@ void MyFrame::OnWorkerEvent(wxCommandEvent& event) { wxCriticalSectionLocker lock(m_critsectWork); - m_cancelled = TRUE; + m_cancelled = true; } } #endif