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