]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/mediactrlcmn.cpp
added support for ellipsization and markup in wxStaticText (modified patch 1629946)
[wxWidgets.git] / src / common / mediactrlcmn.cpp
index 17620935747b4c14e8f145c57d160b2bb2018ea8..b0d93db7af568972e499f9115b370fb8bc05686d 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        common/mediactrl.cpp
+// Name:        src/common/mediactrl.cpp
 // Purpose:     wxMediaCtrl common code
 // Author:      Ryan Norton <wxprojects@comcast.net>
 // Modified by:
@@ -9,6 +9,8 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+// TODO: Platform specific backend defaults?
+
 //===========================================================================
 // Definitions
 //===========================================================================
 #include "wx/wxprec.h"
 
 #ifdef __BORLANDC__
-#pragma hdrstop
+    #pragma hdrstop
+#endif
+
+#if wxUSE_MEDIACTRL
+
+#ifndef WX_PRECOMP
+    #include "wx/hash.h"
 #endif
 
 //---------------------------------------------------------------------------
 // Includes
 //---------------------------------------------------------------------------
 #include "wx/mediactrl.h"
-#include "wx/hash.h"
-
-//---------------------------------------------------------------------------
-// Compilation guard
-//---------------------------------------------------------------------------
-#if wxUSE_MEDIACTRL
 
 //===========================================================================
 //
 // RTTI and Event implementations
 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 
-IMPLEMENT_CLASS(wxMediaCtrl, wxControl);
-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);
+IMPLEMENT_CLASS(wxMediaCtrl, wxControl)
+DEFINE_EVENT_TYPE(wxEVT_MEDIA_STATECHANGED)
+DEFINE_EVENT_TYPE(wxEVT_MEDIA_PLAY)
+DEFINE_EVENT_TYPE(wxEVT_MEDIA_PAUSE)
+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)
 
 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 //
@@ -110,7 +115,7 @@ bool wxMediaCtrl::Create(wxWindow* parent, wxWindowID id,
             }
         }
 
-        SetBestFittingSize(size);
+        SetInitialSize(size);
         return true;
     }
     else
@@ -129,7 +134,7 @@ bool wxMediaCtrl::Create(wxWindow* parent, wxWindowID id,
             {
                 if (Load(fileName))
                 {
-                    SetBestFittingSize(size);
+                    SetInitialSize(size);
                     return true;
                 }
                 else
@@ -137,7 +142,7 @@ bool wxMediaCtrl::Create(wxWindow* parent, wxWindowID id,
             }
             else
             {
-                SetBestFittingSize(size);
+                SetInitialSize(size);
                 return true;
             }
         }
@@ -173,7 +178,7 @@ bool wxMediaCtrl::Create(wxWindow* parent, wxWindowID id,
             return false;
         }
 
-        SetBestFittingSize(size);
+        SetInitialSize(size);
         return true;
     }
     else
@@ -190,7 +195,7 @@ bool wxMediaCtrl::Create(wxWindow* parent, wxWindowID id,
 
             if (Load(location))
             {
-                SetBestFittingSize(size);
+                SetInitialSize(size);
                 return true;
             }
             else
@@ -228,7 +233,7 @@ bool wxMediaCtrl::DoCreate(wxClassInfo* classInfo,
 }
 
 //---------------------------------------------------------------------------
-// wxMediaCtrl::NextBackend
+// wxMediaCtrl::NextBackend (static)
 //
 //
 // Search through the RTTI hashmap one at a
@@ -239,8 +244,7 @@ bool wxMediaCtrl::DoCreate(wxClassInfo* classInfo,
 // STL isn't compatible with and will have a compilation error
 // on a wxNode, however, wxHashTable::compatibility_iterator is
 // incompatible with the old 2.4 stable version - but since
-// we're in 2.5 only we don't need to worry about this
-// static
+// we're in 2.5+ only we don't need to worry about the new version
 //---------------------------------------------------------------------------
 wxClassInfo* wxMediaCtrl::NextBackend()
 {
@@ -413,21 +417,21 @@ wxSize wxMediaCtrl::DoGetBestSize() const
     return wxSize(0,0);
 }
 
-double wxMediaCtrl::GetVolume() 
+double wxMediaCtrl::GetVolume()
 {
     if(m_imp && m_bLoaded)
         return m_imp->GetVolume();
     return 0.0;
 }
 
-bool wxMediaCtrl::SetVolume(double dVolume) 
+bool wxMediaCtrl::SetVolume(double dVolume)
 {
     if(m_imp && m_bLoaded)
         return m_imp->SetVolume(dVolume);
     return false;
 }
 
-bool wxMediaCtrl::ShowPlayerControls(wxMediaCtrlPlayerControls flags) 
+bool wxMediaCtrl::ShowPlayerControls(wxMediaCtrlPlayerControls flags)
 {
     if(m_imp)
         return m_imp->ShowPlayerControls(flags);
@@ -464,6 +468,19 @@ void wxMediaCtrl::DoMoveWindow(int x, int y, int w, int h)
         m_imp->Move(x, y, w, h);
 }
 
+//---------------------------------------------------------------------------
+// wxMediaCtrl::MacVisibilityChanged
+//---------------------------------------------------------------------------
+#ifdef __WXMAC__
+void wxMediaCtrl::MacVisibilityChanged()
+{
+    wxControl::MacVisibilityChanged();
+
+    if(m_imp)
+        m_imp->MacVisibilityChanged();
+}
+#endif
+
 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 //
 //  wxMediaBackendCommonBase
@@ -507,12 +524,36 @@ void wxMediaBackendCommonBase::QueueEvent(wxEventType evtType)
     m_ctrl->AddPendingEvent(theEvent);
 }
 
-#include "wx/html/forcelnk.h"
-FORCE_LINK(basewxmediabackends);
+void wxMediaBackendCommonBase::QueuePlayEvent()
+{
+    QueueEvent(wxEVT_MEDIA_STATECHANGED);
+    QueueEvent(wxEVT_MEDIA_PLAY);
+}
 
-//---------------------------------------------------------------------------
-// End of compilation guard and of file
-//---------------------------------------------------------------------------
-#endif //wxUSE_MEDIACTRL
+void wxMediaBackendCommonBase::QueuePauseEvent()
+{
+    QueueEvent(wxEVT_MEDIA_STATECHANGED);
+    QueueEvent(wxEVT_MEDIA_PAUSE);
+}
 
+void wxMediaBackendCommonBase::QueueStopEvent()
+{
+    QueueEvent(wxEVT_MEDIA_STATECHANGED);
+    QueueEvent(wxEVT_MEDIA_STOP);
+}
 
+
+//
+// Force link default backends in -
+// see http://wiki.wxwidgets.org/wiki.pl?RTTI
+//
+#include "wx/html/forcelnk.h"
+
+#ifdef __WXMSW__ // MSW has huge backends so we do it seperately
+FORCE_LINK(wxmediabackend_am)
+FORCE_LINK(wxmediabackend_wmp10)
+#else
+FORCE_LINK(basewxmediabackends)
+#endif
+
+#endif //wxUSE_MEDIACTRL