]> git.saurik.com Git - wxWidgets.git/blobdiff - src/univ/checklst.cpp
Patch from Bo for recent API changes
[wxWidgets.git] / src / univ / checklst.cpp
index e4f4547272f2b4d823579a3a858c0349f6dc67a5..3a85960386ce2bd2e27bfcb9cb1434d0cee08109 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
 /////////////////////////////////////////////////////////////////////////////
-// Name:        univ/checklst.cpp
+// Name:        src/univ/checklst.cpp
 // Purpose:     wxCheckListBox implementation
 // Author:      Vadim Zeitlin
 // Modified by:
 // Purpose:     wxCheckListBox implementation
 // Author:      Vadim Zeitlin
 // Modified by:
 // headers
 // ----------------------------------------------------------------------------
 
 // headers
 // ----------------------------------------------------------------------------
 
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-    #pragma implementation "univchecklst.h"
-#endif
-
 #include "wx/wxprec.h"
 
 #ifdef __BORLANDC__
 #include "wx/wxprec.h"
 
 #ifdef __BORLANDC__
 
 #if wxUSE_CHECKLISTBOX
 
 
 #if wxUSE_CHECKLISTBOX
 
+#include "wx/checklst.h"
+
 #ifndef WX_PRECOMP
     #include "wx/log.h"
 #ifndef WX_PRECOMP
     #include "wx/log.h"
-
     #include "wx/dcclient.h"
     #include "wx/dcclient.h"
-    #include "wx/checklst.h"
     #include "wx/validate.h"
 #endif
 
     #include "wx/validate.h"
 #endif
 
 #include "wx/univ/inphand.h"
 #include "wx/univ/theme.h"
 
 #include "wx/univ/inphand.h"
 #include "wx/univ/theme.h"
 
-// ============================================================================
-// implementation of wxCheckListBoxBase
-// ============================================================================
+// ----------------------------------------------------------------------------
+// wxStdCheckListBoxInputHandler
+// ----------------------------------------------------------------------------
 
 
-wxCheckListBoxBase::wxCheckListBoxBase()
+class WXDLLEXPORT wxStdCheckListboxInputHandler : public wxStdInputHandler
 {
 {
-}
+public:
+    wxStdCheckListboxInputHandler(wxInputHandler *inphand);
+
+    virtual bool HandleKey(wxInputConsumer *consumer,
+                           const wxKeyEvent& event,
+                           bool pressed);
+    virtual bool HandleMouse(wxInputConsumer *consumer,
+                             const wxMouseEvent& event);
+};
 
 // ============================================================================
 // implementation of wxCheckListBox
 
 // ============================================================================
 // implementation of wxCheckListBox
@@ -59,28 +63,37 @@ IMPLEMENT_DYNAMIC_CLASS(wxCheckListBox, wxListBox)
 // creation
 // ----------------------------------------------------------------------------
 
 // creation
 // ----------------------------------------------------------------------------
 
-wxCheckListBox::wxCheckListBox()
+void wxCheckListBox::Init()
 {
 {
-    Init();
 }
 
 wxCheckListBox::wxCheckListBox(wxWindow *parent,
                                wxWindowID id,
 }
 
 wxCheckListBox::wxCheckListBox(wxWindow *parent,
                                wxWindowID id,
-                               const wxPoint& pos,
-                               const wxSize& size,
-                               int nStrings,
-                               const wxString *choices,
+                               const wxPoint &pos,
+                               const wxSize &size,
+                               const wxArrayString& choices,
                                long style,
                                const wxValidator& validator,
                                long style,
                                const wxValidator& validator,
-                               const wxStringname)
+                               const wxString &name)
 {
     Init();
 
 {
     Init();
 
-    Create(parent, id, pos, size, nStrings, choices, style, validator, name);
+    Create(parent, id, pos, size, choices, style, validator, name);
 }
 
 }
 
-void wxCheckListBox::Init()
+bool wxCheckListBox::Create(wxWindow *parent,
+                            wxWindowID id,
+                            const wxPoint &pos,
+                            const wxSize &size,
+                            const wxArrayString& choices,
+                            long style,
+                            const wxValidator& validator,
+                            const wxString &name)
 {
 {
+    wxCArrayString chs(choices);
+
+    return Create(parent, id, pos, size, chs.GetCount(), chs.GetStrings(),
+                  style, validator, name);
 }
 
 bool wxCheckListBox::Create(wxWindow *parent,
 }
 
 bool wxCheckListBox::Create(wxWindow *parent,
@@ -95,28 +108,28 @@ bool wxCheckListBox::Create(wxWindow *parent,
 {
     if ( !wxListBox::Create(parent, id, pos, size,
                             n, choices, style, validator, name) )
 {
     if ( !wxListBox::Create(parent, id, pos, size,
                             n, choices, style, validator, name) )
-        return FALSE;
+        return false;
 
     CreateInputHandler(wxINP_HANDLER_CHECKLISTBOX);
 
 
     CreateInputHandler(wxINP_HANDLER_CHECKLISTBOX);
 
-    return TRUE;
+    return true;
 }
 
 // ----------------------------------------------------------------------------
 // wxCheckListBox functions
 // ----------------------------------------------------------------------------
 
 }
 
 // ----------------------------------------------------------------------------
 // wxCheckListBox functions
 // ----------------------------------------------------------------------------
 
-bool wxCheckListBox::IsChecked(size_t item) const
+bool wxCheckListBox::IsChecked(unsigned int item) const
 {
 {
-    wxCHECK_MSG( item < m_checks.GetCount(), FALSE,
+    wxCHECK_MSG( IsValid(item), false,
                  _T("invalid index in wxCheckListBox::IsChecked") );
 
     return m_checks[item] != 0;
 }
 
                  _T("invalid index in wxCheckListBox::IsChecked") );
 
     return m_checks[item] != 0;
 }
 
-void wxCheckListBox::Check(size_t item, bool check)
+void wxCheckListBox::Check(unsigned int item, bool check)
 {
 {
-    wxCHECK_RET( item < m_checks.GetCount(),
+    wxCHECK_RET( IsValid(item),
                  _T("invalid index in wxCheckListBox::Check") );
 
     // intermediate var is needed to avoid compiler warning with VC++
                  _T("invalid index in wxCheckListBox::Check") );
 
     // intermediate var is needed to avoid compiler warning with VC++
@@ -133,46 +146,16 @@ void wxCheckListBox::Check(size_t item, bool check)
 // methods forwarded to wxListBox
 // ----------------------------------------------------------------------------
 
 // methods forwarded to wxListBox
 // ----------------------------------------------------------------------------
 
-void wxCheckListBox::Delete(int n)
+void wxCheckListBox::DoDeleteOneItem(unsigned int n)
 {
 {
-    wxCHECK_RET( n < GetCount(), _T("invalid index in wxListBox::Delete") );
-
-    wxListBox::Delete(n);
+    wxListBox::DoDeleteOneItem(n);
 
     m_checks.RemoveAt(n);
 }
 
 
     m_checks.RemoveAt(n);
 }
 
-int wxCheckListBox::DoAppend(const wxString& item)
-{
-    int pos = wxListBox::DoAppend(item);
-
-    // the item is initially unchecked
-    m_checks.Insert(FALSE, pos);
-
-    return pos;
-}
-
-void wxCheckListBox::DoInsertItems(const wxArrayString& items, int pos)
-{
-    wxListBox::DoInsertItems(items, pos);
-
-    size_t count = items.GetCount();
-    for ( size_t n = 0; n < count; n++ )
-    {
-        m_checks.Insert(FALSE, pos + n);
-    }
-}
-
-void wxCheckListBox::DoSetItems(const wxArrayString& items, void **clientData)
+void wxCheckListBox::OnItemInserted(unsigned int pos)
 {
 {
-    // call it first as it does DoClear()
-    wxListBox::DoSetItems(items, clientData);
-
-    size_t count = items.GetCount();
-    for ( size_t n = 0; n < count; n++ )
-    {
-        m_checks.Add(FALSE);
-    }
+    m_checks.Insert(false, pos);
 }
 
 void wxCheckListBox::DoClear()
 }
 
 void wxCheckListBox::DoClear()
@@ -226,7 +209,15 @@ bool wxCheckListBox::PerformAction(const wxControlAction& action,
         return wxListBox::PerformAction(action, numArg, strArg);
     }
 
         return wxListBox::PerformAction(action, numArg, strArg);
     }
 
-    return TRUE;
+    return true;
+}
+
+/* static */
+wxInputHandler *wxCheckListBox::GetStdInputHandler(wxInputHandler *handlerDef)
+{
+    static wxStdCheckListboxInputHandler s_handler(handlerDef);
+
+    return &s_handler;
 }
 
 // ----------------------------------------------------------------------------
 }
 
 // ----------------------------------------------------------------------------
@@ -235,7 +226,7 @@ bool wxCheckListBox::PerformAction(const wxControlAction& action,
 
 wxStdCheckListboxInputHandler::
 wxStdCheckListboxInputHandler(wxInputHandler *inphand)
 
 wxStdCheckListboxInputHandler::
 wxStdCheckListboxInputHandler(wxInputHandler *inphand)
-    : wxStdListboxInputHandler(inphand)
+    : wxStdInputHandler(wxListBox::GetStdInputHandler(inphand))
 {
 }
 
 {
 }
 
@@ -246,7 +237,7 @@ bool wxStdCheckListboxInputHandler::HandleKey(wxInputConsumer *consumer,
     if ( pressed && (event.GetKeyCode() == WXK_SPACE) )
         consumer->PerformAction(wxACTION_CHECKLISTBOX_TOGGLE);
 
     if ( pressed && (event.GetKeyCode() == WXK_SPACE) )
         consumer->PerformAction(wxACTION_CHECKLISTBOX_TOGGLE);
 
-    return wxStdListboxInputHandler::HandleKey(consumer, event, pressed);
+    return wxStdInputHandler::HandleKey(consumer, event, pressed);
 }
 
 bool wxStdCheckListboxInputHandler::HandleMouse(wxInputConsumer *consumer,
 }
 
 bool wxStdCheckListboxInputHandler::HandleMouse(wxInputConsumer *consumer,
@@ -268,15 +259,15 @@ bool wxStdCheckListboxInputHandler::HandleMouse(wxInputConsumer *consumer,
         if ( x >= 0 &&
              x < renderer->GetCheckBitmapSize().x &&
              item >= 0 &&
         if ( x >= 0 &&
              x < renderer->GetCheckBitmapSize().x &&
              item >= 0 &&
-             item < lbox->GetCount() )
+             (unsigned int)item < lbox->GetCount() )
         {
             lbox->PerformAction(wxACTION_CHECKLISTBOX_TOGGLE, item);
 
         {
             lbox->PerformAction(wxACTION_CHECKLISTBOX_TOGGLE, item);
 
-            return TRUE;
+            return true;
         }
     }
 
         }
     }
 
-    return wxStdListboxInputHandler::HandleMouse(consumer, event);
+    return wxStdInputHandler::HandleMouse(consumer, event);
 }
 
 #endif // wxUSE_CHECKLISTBOX
 }
 
 #endif // wxUSE_CHECKLISTBOX