// TODO: Platform specific backend defaults?
//===========================================================================
-// Definitions
+// Declarations
//===========================================================================
//---------------------------------------------------------------------------
-// Pre-compiled header stuff
+// Includes
//---------------------------------------------------------------------------
#include "wx/wxprec.h"
#ifndef WX_PRECOMP
#include "wx/hash.h"
+ #include "wx/log.h"
#endif
-//---------------------------------------------------------------------------
-// Includes
-//---------------------------------------------------------------------------
#include "wx/mediactrl.h"
//===========================================================================
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
IMPLEMENT_CLASS(wxMediaCtrl, wxControl)
-DEFINE_EVENT_TYPE(wxEVT_MEDIA_STATECHANGED)
-DEFINE_EVENT_TYPE(wxEVT_MEDIA_PLAY)
-DEFINE_EVENT_TYPE(wxEVT_MEDIA_PAUSE)
+wxDEFINE_EVENT( wxEVT_MEDIA_STATECHANGED, wxMediaEvent );
+wxDEFINE_EVENT( wxEVT_MEDIA_PLAY, wxMediaEvent );
+wxDEFINE_EVENT( wxEVT_MEDIA_PAUSE, wxMediaEvent );
IMPLEMENT_CLASS(wxMediaBackend, wxObject)
IMPLEMENT_DYNAMIC_CLASS(wxMediaEvent, wxEvent)
-DEFINE_EVENT_TYPE(wxEVT_MEDIA_FINISHED)
-DEFINE_EVENT_TYPE(wxEVT_MEDIA_LOADED)
-DEFINE_EVENT_TYPE(wxEVT_MEDIA_STOP)
+wxDEFINE_EVENT( wxEVT_MEDIA_FINISHED, wxMediaEvent );
+wxDEFINE_EVENT( wxEVT_MEDIA_LOADED, wxMediaEvent );
+wxDEFINE_EVENT( wxEVT_MEDIA_STOP, wxMediaEvent );
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//
}
else
{
- wxClassInfo::sm_classTable->BeginFind();
+ wxClassInfo::const_iterator it = wxClassInfo::begin_classinfo();
- wxClassInfo* classInfo;
+ const wxClassInfo* classInfo;
- while((classInfo = NextBackend()) != NULL)
+ while((classInfo = NextBackend(&it)) != NULL)
{
+ wxLogMessage( classInfo->GetClassName() );
if(!DoCreate(classInfo, parent, id,
pos, size, style, validator, name))
continue;
}
else
{
- wxClassInfo::sm_classTable->BeginFind();
+ wxClassInfo::const_iterator it = wxClassInfo::begin_classinfo();
- wxClassInfo* classInfo;
+ const wxClassInfo* classInfo;
- while((classInfo = NextBackend()) != NULL)
+ while((classInfo = NextBackend(&it)) != NULL)
{
if(!DoCreate(classInfo, parent, id,
pos, size, style, validator, name))
//
// Attempts to create the control from a backend
//---------------------------------------------------------------------------
-bool wxMediaCtrl::DoCreate(wxClassInfo* classInfo,
+bool wxMediaCtrl::DoCreate(const wxClassInfo* classInfo,
wxWindow* parent, wxWindowID id,
const wxPoint& pos,
const wxSize& size,
// incompatible with the old 2.4 stable version - but since
// we're in 2.5+ only we don't need to worry about the new version
//---------------------------------------------------------------------------
-wxClassInfo* wxMediaCtrl::NextBackend()
+const wxClassInfo* wxMediaCtrl::NextBackend(wxClassInfo::const_iterator* it)
{
- wxHashTable::compatibility_iterator
- node = wxClassInfo::sm_classTable->Next();
- while (node)
+ for ( wxClassInfo::const_iterator end = wxClassInfo::end_classinfo();
+ *it != end; ++(*it) )
{
- wxClassInfo* classInfo = (wxClassInfo *)node->GetData();
+ const wxClassInfo* classInfo = **it;
if ( classInfo->IsKindOf(CLASSINFO(wxMediaBackend)) &&
classInfo != CLASSINFO(wxMediaBackend) )
{
+ ++(*it);
return classInfo;
}
- node = wxClassInfo::sm_classTable->Next();
}
//
//---------------------------------------------------------------------------
// wxMediaCtrl::MacVisibilityChanged
//---------------------------------------------------------------------------
-#ifdef __WXMAC__
+#ifdef __WXOSX_CARBON__
void wxMediaCtrl::MacVisibilityChanged()
{
wxControl::MacVisibilityChanged();
{
wxMediaEvent theEvent(wxEVT_MEDIA_STOP, m_ctrl->GetId());
- return !m_ctrl->ProcessEvent(theEvent) || theEvent.IsAllowed();
+ return !m_ctrl->GetEventHandler()->ProcessEvent(theEvent) || theEvent.IsAllowed();
}
void wxMediaBackendCommonBase::QueueEvent(wxEventType evtType)
{
wxMediaEvent theEvent(evtType, m_ctrl->GetId());
- m_ctrl->AddPendingEvent(theEvent);
+ m_ctrl->GetEventHandler()->AddPendingEvent(theEvent);
}
void wxMediaBackendCommonBase::QueuePlayEvent()
#ifdef __WXMSW__ // MSW has huge backends so we do it seperately
FORCE_LINK(wxmediabackend_am)
FORCE_LINK(wxmediabackend_wmp10)
-#else
+#elif !defined(__WXOSX_COCOA__)
FORCE_LINK(basewxmediabackends)
#endif