+wxTimer::~wxTimer()
+{
+ Stop();
+
+ delete m_impl;
+}
+
+void wxTimer::Init()
+{
+ wxAppTraits * const traits = wxTheApp ? wxTheApp->GetTraits() : NULL;
+ m_impl = traits ? traits->CreateTimerImpl(this) : NULL;
+ if ( !m_impl )
+ {
+ wxFAIL_MSG( wxT("No timer implementation for this platform") );
+
+ }
+}
+
+// ============================================================================
+// rest of wxTimer implementation forwarded to wxTimerImpl
+// ============================================================================
+
+void wxTimer::SetOwner(wxEvtHandler *owner, int timerid)
+{
+ wxCHECK_RET( m_impl, wxT("uninitialized timer") );
+
+ m_impl->SetOwner(owner, timerid);
+}
+
+wxEvtHandler *wxTimer::GetOwner() const
+{
+ wxCHECK_MSG( m_impl, NULL, wxT("uninitialized timer") );
+
+ return m_impl->GetOwner();
+}
+
+bool wxTimer::Start(int milliseconds, bool oneShot)