00001
00002
00003
00004
00005
00006
00007
00008
00010
00011 #ifdef __GNUG__
00012 #pragma implementation "TimedDialogEnder.h"
00013 #endif
00014
00015 #include <wxGuiTest/TimedDialogEnder.h>
00016
00017 namespace wxTst {
00018
00019
00020 IMPLEMENT_CLASS(TimedDialogEnder, wxEvtHandler)
00021
00022 BEGIN_EVENT_TABLE(TimedDialogEnder, wxEvtHandler)
00023 EVT_TIMER(-1, TimedDialogEnder::OnTimer)
00024 END_EVENT_TABLE()
00025
00026
00027 TimedDialogEnder::TimedDialogEnder (unsigned int milliseconds,
00028 const wxString &windowCaption, int returnCode)
00029 {
00030 m_success = false;
00031 m_windowCaption = windowCaption;
00032 m_returnCode = returnCode;
00033 m_timerId = ::wxNewId ();
00034 m_timer = new wxTimer (this, m_timerId);
00035 m_timer->Start (milliseconds);
00036 }
00037
00038
00039 TimedDialogEnder::~TimedDialogEnder ()
00040 {
00041 ::wxLogTrace (_T("TimedDialogEnder"),
00042 _T("~TimedDialogEnder"));
00043 this->DestroyTimer ();
00044 }
00045
00046
00047 bool TimedDialogEnder::GetSuccess () const
00048 {
00049 return m_success;
00050 }
00051
00052
00053 void TimedDialogEnder::DestroyTimer ()
00054 {
00055 if (m_timer != NULL) {
00056
00057 if (m_timer->IsRunning ()) {
00058
00059 m_timer->Stop ();
00060 }
00061 delete m_timer;
00062 m_timer = NULL;
00063 }
00064 }
00065
00066
00067 void TimedDialogEnder::OnTimer (wxTimerEvent& event)
00068 {
00069 ::wxLogTrace (_T("TimedDialogEnder"), _T("OnTimer"));
00070
00071 if (event.GetId () == m_timerId) {
00072
00073
00074
00075
00076
00077 #if defined(__WXMSW__) || defined(__WXMAC__) || defined(__WXPM__)
00078 ::wxMutexGuiLeaveOrEnter ();
00079 #endif
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098 #ifndef WIN32
00099 wxFAIL_MSG (_T("Only supported under M$ Windows"));
00100 #else
00101 HWND wdw = FindWindow (NULL, m_windowCaption);
00102 if (wdw) {
00103
00104
00105
00106
00107
00108
00109 if (EndDialog (wdw, m_returnCode)) {
00110
00111 ::wxLogTrace (_T("TimedDialogEnder"), _T("Window killed"));
00112 this->DestroyTimer ();
00113 m_success = true;
00114 }
00115 }
00116 #endif
00117
00118 #if defined(__WXMSW__) || defined(__WXMAC__) || defined(__WXPM__)
00119 ::wxMutexGuiLeaveOrEnter ();
00120 #endif
00121 }
00122 }
00123
00124 }
00125