added a timer updating a counter in the background to be able to easily check visually whether the events are processed or not during the synchronous child proces execution
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60735 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -121,7 +121,7 @@ public:
|
|||||||
void OnAbout(wxCommandEvent& event);
|
void OnAbout(wxCommandEvent& event);
|
||||||
|
|
||||||
// polling output of async processes
|
// polling output of async processes
|
||||||
void OnTimer(wxTimerEvent& event);
|
void OnIdleTimer(wxTimerEvent& event);
|
||||||
void OnIdle(wxIdleEvent& event);
|
void OnIdle(wxIdleEvent& event);
|
||||||
|
|
||||||
// for MyPipedProcess
|
// for MyPipedProcess
|
||||||
@@ -131,6 +131,9 @@ public:
|
|||||||
// for MyProcess
|
// for MyProcess
|
||||||
void OnAsyncTermination(MyProcess *process);
|
void OnAsyncTermination(MyProcess *process);
|
||||||
|
|
||||||
|
// timer updating a counter in the background
|
||||||
|
void OnBgTimer(wxTimerEvent& event);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void ShowOutput(const wxString& cmd,
|
void ShowOutput(const wxString& cmd,
|
||||||
const wxArrayString& output,
|
const wxArrayString& output,
|
||||||
@@ -173,6 +176,10 @@ private:
|
|||||||
// the idle event wake up timer
|
// the idle event wake up timer
|
||||||
wxTimer m_timerIdleWakeUp;
|
wxTimer m_timerIdleWakeUp;
|
||||||
|
|
||||||
|
// a background timer allowing to easily check visually whether the
|
||||||
|
// messages are processed or not
|
||||||
|
wxTimer m_timerBg;
|
||||||
|
|
||||||
// any class wishing to process wxWidgets events must use this macro
|
// any class wishing to process wxWidgets events must use this macro
|
||||||
DECLARE_EVENT_TABLE()
|
DECLARE_EVENT_TABLE()
|
||||||
};
|
};
|
||||||
@@ -293,6 +300,10 @@ private:
|
|||||||
// IDs for the controls and the menu commands
|
// IDs for the controls and the menu commands
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
|
// timer ids
|
||||||
|
Exec_TimerIdle = 10,
|
||||||
|
Exec_TimerBg,
|
||||||
|
|
||||||
// menu items
|
// menu items
|
||||||
Exec_Quit = 100,
|
Exec_Quit = 100,
|
||||||
Exec_Kill,
|
Exec_Kill,
|
||||||
@@ -311,7 +322,7 @@ enum
|
|||||||
Exec_DDERequest,
|
Exec_DDERequest,
|
||||||
Exec_Redirect,
|
Exec_Redirect,
|
||||||
Exec_Pipe,
|
Exec_Pipe,
|
||||||
Exec_About = 300,
|
Exec_About = wxID_ABOUT,
|
||||||
|
|
||||||
// control ids
|
// control ids
|
||||||
Exec_Btn_Send = 1000,
|
Exec_Btn_Send = 1000,
|
||||||
@@ -358,7 +369,8 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
|||||||
|
|
||||||
EVT_IDLE(MyFrame::OnIdle)
|
EVT_IDLE(MyFrame::OnIdle)
|
||||||
|
|
||||||
EVT_TIMER(wxID_ANY, MyFrame::OnTimer)
|
EVT_TIMER(Exec_TimerIdle, MyFrame::OnIdleTimer)
|
||||||
|
EVT_TIMER(Exec_TimerBg, MyFrame::OnBgTimer)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
BEGIN_EVENT_TABLE(MyPipeFrame, wxFrame)
|
BEGIN_EVENT_TABLE(MyPipeFrame, wxFrame)
|
||||||
@@ -420,7 +432,8 @@ bool MyApp::OnInit()
|
|||||||
// frame constructor
|
// frame constructor
|
||||||
MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
|
MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
|
||||||
: wxFrame((wxFrame *)NULL, wxID_ANY, title, pos, size),
|
: wxFrame((wxFrame *)NULL, wxID_ANY, title, pos, size),
|
||||||
m_timerIdleWakeUp(this)
|
m_timerIdleWakeUp(this, Exec_TimerIdle),
|
||||||
|
m_timerBg(this, Exec_TimerBg)
|
||||||
{
|
{
|
||||||
m_pidLast = 0;
|
m_pidLast = 0;
|
||||||
|
|
||||||
@@ -494,9 +507,11 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
|
|||||||
|
|
||||||
#if wxUSE_STATUSBAR
|
#if wxUSE_STATUSBAR
|
||||||
// create a status bar just for fun (by default with 1 pane only)
|
// create a status bar just for fun (by default with 1 pane only)
|
||||||
CreateStatusBar();
|
CreateStatusBar(2);
|
||||||
SetStatusText(_T("Welcome to wxWidgets exec sample!"));
|
SetStatusText(_T("Welcome to wxWidgets exec sample!"));
|
||||||
#endif // wxUSE_STATUSBAR
|
#endif // wxUSE_STATUSBAR
|
||||||
|
|
||||||
|
m_timerBg.Start(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
MyFrame::~MyFrame()
|
MyFrame::~MyFrame()
|
||||||
@@ -1054,11 +1069,17 @@ void MyFrame::OnIdle(wxIdleEvent& event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyFrame::OnTimer(wxTimerEvent& WXUNUSED(event))
|
void MyFrame::OnIdleTimer(wxTimerEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
wxWakeUpIdle();
|
wxWakeUpIdle();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnBgTimer(wxTimerEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
static unsigned long s_ticks = 0;
|
||||||
|
SetStatusText(wxString::Format("%lu ticks", s_ticks++), 1);
|
||||||
|
}
|
||||||
|
|
||||||
void MyFrame::OnProcessTerminated(MyPipedProcess *process)
|
void MyFrame::OnProcessTerminated(MyPipedProcess *process)
|
||||||
{
|
{
|
||||||
RemovePipedProcess(process);
|
RemovePipedProcess(process);
|
||||||
|
Reference in New Issue
Block a user