]> git.saurik.com Git - wxWidgets.git/commitdiff
wxCheckListBox cleanup.
authorWłodzimierz Skiba <abx@abx.art.pl>
Thu, 29 Sep 2005 10:00:16 +0000 (10:00 +0000)
committerWłodzimierz Skiba <abx@abx.art.pl>
Thu, 29 Sep 2005 10:00:16 +0000 (10:00 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35761 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/os2/checklst.h
src/os2/checklst.cpp

index d2d75ec498f412470b3d3476a4452cc8b1573710..c689208517fa1652f6c0bb8e0385b93ab2b3e3a2 100644 (file)
@@ -1,5 +1,5 @@
 ///////////////////////////////////////////////////////////////////////////////
-// Name:        checklst.h
+// Name:        wx/os2/checklst.h
 // Purpose:     wxCheckListBox class - a listbox with checkable items
 //              Note: this is an optional class.
 // Author:      David Webster
 
 #include <stddef.h>
 
-#include "wx/setup.h"
+#include "wx/defs.h"
 
 class wxOwnerDrawn; // so the compiler knows, it is a class.
 
-class wxCheckListBoxItem; // fwd decl, define in checklst.cpp
-
-class WXDLLEXPORT wxCheckListBox : public wxListBox
+class WXDLLEXPORT wxCheckListBox : public wxCheckListBoxBase
 {
 public:
     //
@@ -52,10 +50,6 @@ public:
     // Override base class virtuals
     //
     virtual void Delete(int n);
-    virtual void InsertItems( int            nItems
-                             ,const wxString asItems[]
-                             ,int            nPos
-                            );
 
     virtual bool SetFont(const wxFont &rFont);
 
@@ -64,7 +58,7 @@ public:
     //
     bool IsChecked(size_t uiIndex) const;
     void Check( size_t uiIndex
-               ,bool   bCheck = TRUE
+               ,bool   bCheck = true
               );
 
     //
@@ -80,6 +74,8 @@ protected:
     virtual wxOwnerDrawn* CreateItem(size_t n);
     virtual long          OS2OnMeasure(WXMEASUREITEMSTRUCT* pItem);
 
+    virtual void DoInsertItems(const wxArrayString& items, int pos);
+
     //
     // Pressing space or clicking the check box toggles the item
     //
@@ -91,7 +87,7 @@ private:
 
     DECLARE_DYNAMIC_CLASS(wxCheckListBox)
     DECLARE_EVENT_TABLE()
-}; // end of CLASS wxCheckListBoxItem
+}; // end of CLASS wxCheckListBox
 
 #endif
    // _WX_CHECKLST_H_
index c1a5a5cc09618356521fc8c66a688c4b8dffe179..45004b7486cdf45b06f5bf6cedbcdee9ef373258 100644 (file)
@@ -1,5 +1,5 @@
 ///////////////////////////////////////////////////////////////////////////////
-// Name:        checklst.cpp
+// Name:        src/os2/checklst.cpp
 // Purpose:     implementation of wxCheckListBox class
 // Author:      David Webster
 // Modified by:
@@ -16,7 +16,7 @@
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
-#if wxUSE_OWNER_DRAWN
+#if wxUSE_CHECKLISTBOX && wxUSE_OWNER_DRAWN
 
 #include "wx/object.h"
 #include "wx/colour.h"
@@ -28,7 +28,7 @@
 #include "wx/settings.h"
 #include "wx/dcmemory.h"
 #include "wx/dcscreen.h"
-#include "wx/os2/checklst.h"
+#include "wx/checklst.h"
 #include "wx/log.h"
 
 #define INCL_PM
@@ -58,17 +58,17 @@ public:
     //
     // ctor
     //
-    wxCheckListBoxItem( wxCheckListBox* pParent
-                       ,size_t          nIndex
+    wxCheckListBoxItem( wxCheckListBox* pParent,
+                        size_t          nIndex
                       );
 
     //
     // Drawing functions
     //
-    virtual bool OnDrawItem( wxDC&         rDc
-                            ,const wxRect& rRect
-                            ,wxODAction    eAct
-                            ,wxODStatus    eStat
+    virtual bool OnDrawItem( wxDC&         rDc,
+                             const wxRect& rRect,
+                             wxODAction    eAct,
+                             wxODStatus    eStat
                            );
 
     //
@@ -79,20 +79,18 @@ public:
     void Toggle(void) { Check(!IsChecked()); }
 
 private:
-    bool                            m_bChecked;
-    wxCheckListBox*                 m_pParent;
-    size_t                          m_nIndex;
+    bool            m_bChecked;
+    wxCheckListBox* m_pParent;
+    size_t          m_nIndex;
 }; // end of CLASS wxCheckListBoxItem
 
-wxCheckListBoxItem::wxCheckListBoxItem (
-  wxCheckListBox*                   pParent
-, size_t                            nIndex
-)
-: wxOwnerDrawn( wxEmptyString
-               ,TRUE // checkable
-              )
+
+
+wxCheckListBoxItem::wxCheckListBoxItem ( wxCheckListBox* pParent,
+                                         size_t nIndex)
+                   :wxOwnerDrawn( wxEmptyString, true /* checkable */ )
 {
-    m_bChecked = FALSE;
+    m_bChecked = false;
     m_pParent  = pParent;
     m_nIndex   = nIndex;
 
@@ -104,18 +102,16 @@ wxCheckListBoxItem::wxCheckListBoxItem (
     SetMarginWidth(GetDefaultMarginWidth());
 } // end of wxCheckListBoxItem::wxCheckListBoxItem
 
-bool wxCheckListBoxItem::OnDrawItem (
-  wxDC&                             rDc
-, const wxRect&                     rRect
-, wxODAction                        eAct
-, wxODStatus                        eStat
-)
+
+
+bool wxCheckListBoxItem::OnDrawItem ( wxDC& rDc,
+                                      const wxRect& rRect,
+                                      wxODAction eAct,
+                                      wxODStatus eStat )
 {
-    wxRect                          vRect = rRect;
+    wxRect vRect = rRect;
 
-    ::WinQueryWindowRect( m_pParent->GetHWND()
-                         ,&rDc.m_vRclPaint
-                        );
+    ::WinQueryWindowRect( m_pParent->GetHWND(), &rDc.m_vRclPaint );
     if (IsChecked())
         eStat = (wxOwnerDrawn::wxODStatus)(eStat | wxOwnerDrawn::wxODChecked);
 
@@ -126,39 +122,28 @@ bool wxCheckListBoxItem::OnDrawItem (
     //
     vRect.x += 5;
     vRect.y -= 3;
-    if (wxOwnerDrawn::OnDrawItem( rDc
-                                 ,vRect
-                                 ,eAct
-                                 ,eStat))
+    if (wxOwnerDrawn::OnDrawItem( rDc, vRect, eAct, eStat))
     {
-        size_t                      nCheckWidth  = GetDefaultMarginWidth();
-        size_t                      nCheckHeight = m_pParent->GetItemHeight();
-        int                         nParentHeight;
-        int                         nX = rRect.GetX();
-        int                         nY = rRect.GetY();
-        int                         nOldY = nY;
-        wxColour                    vColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
-        wxPen                       vPenBack;
-        wxPen                       vPenGray;
-        wxPen                       vPenPrev;
-
-        m_pParent->GetSize( NULL
-                           ,&nParentHeight
-                          );
+        size_t    nCheckWidth  = GetDefaultMarginWidth();
+        size_t    nCheckHeight = m_pParent->GetItemHeight();
+        int       nParentHeight;
+        int       nX = rRect.GetX();
+        int       nY = rRect.GetY();
+        int       nOldY = nY;
+        wxColour  vColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW));
+        wxPen     vPenBack;
+        wxPen     vPenPrev;
+
+        m_pParent->GetSize( NULL, &nParentHeight);
 
         nY = nParentHeight - nY - nCheckHeight;
         vPenBack = wxPen(vColour, 1, wxSOLID);
-        vPenGray = wxPen(wxColour(127, 127, 127), 1, wxSOLID);
 
         //
         // Erase the 1-pixel border
         //
         rDc.SetPen(vPenBack);
-        rDc.DrawRectangle( nX
-                          ,nY
-                          ,nCheckWidth
-                          ,nCheckHeight
-                         );
+        rDc.DrawRectangle( nX, nY, nCheckWidth, nCheckHeight );
 
         //
         // Now we draw the smaller rectangle
@@ -170,12 +155,8 @@ bool wxCheckListBoxItem::OnDrawItem (
         //
         // Draw hollow gray rectangle
         //
-        rDc.SetPen(vPenGray);
-        rDc.DrawRectangle( nX
-                          ,nY
-                          ,nCheckWidth
-                          ,nCheckHeight
-                         );
+        rDc.SetPen(*wxGREY_PEN);
+        rDc.DrawRectangle( nX, nY, nCheckWidth, nCheckHeight );
 
         nX++;
         if (IsChecked())
@@ -183,31 +164,27 @@ bool wxCheckListBoxItem::OnDrawItem (
             //
             // Draw the check by loading the sys standard bitmap and drawing it
             //
-            HBITMAP                 hChkBmp = ::WinGetSysBitmap( HWND_DESKTOP
-                                                                ,SBMP_MENUCHECK
-                                                               );
-            POINTL                  vPoint = {nX, nOldY + 3};
-
-            ::WinDrawBitmap( rDc.GetHPS()
-                            ,hChkBmp
-                            ,NULL
-                            ,&vPoint
-                            ,NULL
-                            ,NULL
-                            ,DBM_NORMAL
+            HBITMAP hChkBmp = ::WinGetSysBitmap( HWND_DESKTOP, SBMP_MENUCHECK );
+            POINTL  vPoint = {nX, nOldY + 3};
+
+            ::WinDrawBitmap( rDc.GetHPS(),
+                             hChkBmp,
+                             NULL,
+                             &vPoint,
+                             NULL,
+                             NULL,
+                             DBM_NORMAL
                            );
         }
-        return TRUE;
+        return true;
     }
-    return FALSE;
+    return false;
 } // end of wxCheckListBoxItem::OnDrawItem
 
 //
 // Change the state of the item and redraw it
 //
-void wxCheckListBoxItem::Check (
-  bool                              bCheck
-)
+void wxCheckListBoxItem::Check ( bool bCheck )
 {
     m_bChecked = bCheck;
 
@@ -219,7 +196,7 @@ void wxCheckListBoxItem::Check (
         //
         // Update it
         //
-        int                         nIndex = m_pParent->GetItemIndex(this);
+        int nIndex = m_pParent->GetItemIndex(this);
 
         wxASSERT_MSG(nIndex != wxNOT_FOUND, wxT("what does this item do here?"));
 
@@ -227,15 +204,14 @@ void wxCheckListBoxItem::Check (
     }
 
 
-    wxCommandEvent                  vEvent( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED
-                                           ,m_pParent->GetId()
-                                          );
+    wxCommandEvent vEvent( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED,m_pParent->GetId());
 
     vEvent.SetInt(m_nIndex);
     vEvent.SetEventObject(m_pParent);
     m_pParent->ProcessCommand(vEvent);
 } // end of wxCheckListBoxItem::Check
 
+
 // ----------------------------------------------------------------------------
 // implementation of wxCheckListBox class
 // ----------------------------------------------------------------------------
@@ -243,10 +219,12 @@ void wxCheckListBoxItem::Check (
 // define event table
 // ------------------
 BEGIN_EVENT_TABLE(wxCheckListBox, wxListBox)
-  EVT_CHAR(wxCheckListBox::OnChar)
-  EVT_LEFT_DOWN(wxCheckListBox::OnLeftClick)
+    EVT_CHAR(wxCheckListBox::OnChar)
+    EVT_LEFT_DOWN(wxCheckListBox::OnLeftClick)
 END_EVENT_TABLE()
 
+
+
 //
 // Control creation
 // ----------------
@@ -256,119 +234,84 @@ END_EVENT_TABLE()
 // Default ctor: use Create() to really create the control
 //
 wxCheckListBox::wxCheckListBox()
-: wxListBox()
+               :wxCheckListBoxBase()
 {
 } // end of wxCheckListBox::wxCheckListBox
 
 //
 // Ctor which creates the associated control
 //
-wxCheckListBox::wxCheckListBox (
-  wxWindow*                         pParent
-, wxWindowID                        vId
-, const wxPoint&                    rPos
-, const wxSize&                     rSize
-, int                               nStrings
-, const wxString                    asChoices[]
-, long                              lStyle
-, const wxValidator&                rVal
-, const wxString&                   rsName
-)
-              : wxListBox()
+wxCheckListBox::wxCheckListBox ( wxWindow* pParent,
+                                 wxWindowID vId,
+                                 const wxPoint& rPos,
+                                 const wxSize& rSize,
+                                 int nStrings,
+                                 const wxString asChoices[],
+                                 long lStyle,
+                                 const wxValidator& rVal,
+                                 const wxString& rsName)
+               :wxCheckListBoxBase()
 {
-    Create( pParent
-           ,vId
-           ,rPos
-           ,rSize
-           ,nStrings
-           ,asChoices
-           ,lStyle | wxLB_OWNERDRAW
-           ,rVal
-           ,rsName
-          );
+    Create( pParent, vId, rPos, rSize, nStrings, asChoices, lStyle | wxLB_OWNERDRAW, rVal, rsName );
 } // end of wxCheckListBox::wxCheckListBox
 
-wxCheckListBox::wxCheckListBox (
-  wxWindow*                         pParent
-, wxWindowID                        vId
-, const wxPoint&                    rPos
-, const wxSize&                     rSize
-, const wxArrayString&              asChoices
-, long                              lStyle
-, const wxValidator&                rVal
-, const wxString&                   rsName
-)
-              : wxListBox()
+wxCheckListBox::wxCheckListBox ( wxWindow* pParent,
+                                 wxWindowID vId,
+                                 const wxPoint& rPos,
+                                 const wxSize& rSize,
+                                 const wxArrayString& asChoices,
+                                 long lStyle,
+                                 const wxValidator& rVal,
+                                 const wxString& rsName )
+               :wxCheckListBoxBase()
 {
     wxCArrayString chs(asChoices);
-    Create( pParent
-           ,vId
-           ,rPos
-           ,rSize
-           ,chs.GetCount()
-           ,chs.GetStrings()
-           ,lStyle | wxLB_OWNERDRAW
-           ,rVal
-           ,rsName
-          );
+    Create( pParent, vId, rPos, rSize, chs.GetCount(), chs.GetStrings(),
+            lStyle | wxLB_OWNERDRAW, rVal, rsName );
 } // end of wxCheckListBox::wxCheckListBox
 
-void wxCheckListBox::Delete(
-  int                               N
-)
+void wxCheckListBox::Delete( int n )
 {
-    wxCHECK_RET( N >= 0 && N < m_nNumItems,
-                 wxT("invalid index in wxListBox::Delete") );
-    wxListBox::Delete(N);
+    wxCHECK_RET( n >= 0 && n < m_nNumItems,
+                 wxT("invalid index in wxCheckListBox::Delete") );
+    wxListBox::Delete(n);
 
     //
     // Free memory
     //
-    delete m_aItems[N];
-    m_aItems.RemoveAt(N);
+    delete m_aItems[n];
+    m_aItems.RemoveAt(n);
 } // end of wxCheckListBox::Delete
 
-void wxCheckListBox::InsertItems (
-  int                               nItems
-, const wxString                    asItems[]
-, int                               nPos
-)
+void wxCheckListBox::DoInsertItems(const wxArrayString& items, int pos)
 {
-    int                             i;
-
-    wxCHECK_RET( nPos >= 0 && nPos <= m_nNumItems,
-                 wxT("invalid index in wxCheckListBox::InsertItems") );
-
-    wxListBox::InsertItems( nItems
-                           ,asItems
-                           ,nPos
-                          );
-    for (i = 0; i < nItems; i++)
+    // pos is validated in wxListBox
+    wxListBox::DoInsertItems( items, pos );
+    int n = items.GetCount();
+    for (int i = 0; i < n; i++)
     {
-        wxOwnerDrawn*               pNewItem = CreateItem((size_t)(nPos + i));
-
-        pNewItem->SetName(asItems[i]);
-        m_aItems.Insert(pNewItem, (size_t)(nPos + i));
-        ::WinSendMsg( (HWND)GetHWND()
-                     ,LM_SETITEMHANDLE
-                     ,(MPARAM)(i + nPos)
-                     ,MPFROMP(pNewItem)
+        wxOwnerDrawn* pNewItem = CreateItem((size_t)(pos + i));
+
+        pNewItem->SetName(items[i]);
+        m_aItems.Insert(pNewItem, (size_t)(pos + i));
+        ::WinSendMsg( (HWND)GetHWND(),
+                      LM_SETITEMHANDLE,
+                      (MPARAM)(i + pos),
+                      MPFROMP(pNewItem)
                     );
     }
 } // end of wxCheckListBox::InsertItems
 
-bool wxCheckListBox::SetFont (
-  const wxFont&                     rFont
-)
+bool wxCheckListBox::SetFont ( const wxFont& rFont )
 {
-    size_t                          i;
-
-    for (i = 0; i < m_aItems.GetCount(); i++)
+    for (size_t i = 0; i < m_aItems.GetCount(); i++)
         m_aItems[i]->SetFont(rFont);
     wxListBox::SetFont(rFont);
-    return TRUE;
+    return true;
 } // end of wxCheckListBox::SetFont
 
+
+
 //
 // Create/retrieve item
 // --------------------
@@ -377,29 +320,25 @@ bool wxCheckListBox::SetFont (
 //
 // Create a check list box item
 //
-wxOwnerDrawn* wxCheckListBox::CreateItem (
-  size_t                            nIndex
-)
+wxOwnerDrawn* wxCheckListBox::CreateItem ( size_t nIndex )
 {
-    wxCheckListBoxItem*             pItem = new wxCheckListBoxItem( this
-                                                                   ,nIndex
-                                                                  );
+    wxCheckListBoxItem* pItem = new wxCheckListBoxItem( this, nIndex );
     return pItem;
 } // end of wxCheckListBox::CreateItem
 
+
+
 //
 // Return item size
 // ----------------
 //
-long wxCheckListBox::OS2OnMeasure (
-  WXMEASUREITEMSTRUCT*             pItem
-)
+long wxCheckListBox::OS2OnMeasure ( WXMEASUREITEMSTRUCT* pItem )
 {
     if (!pItem)
         pItem = (WXMEASUREITEMSTRUCT*)new OWNERITEM;
-    if (wxListBox::OS2OnMeasure(pItem) )
+    if (wxListBox::OS2OnMeasure(pItem))
     {
-        POWNERITEM                  pStruct = (POWNERITEM)pItem;
+        POWNERITEM pStruct = (POWNERITEM)pItem;
 
         //
         // Save item height
@@ -415,32 +354,29 @@ long wxCheckListBox::OS2OnMeasure (
     return 0L;
 } // end of wxCheckListBox::CreateItem
 
+
+
 //
 // Check items
 // -----------
 //
-bool wxCheckListBox::IsChecked (
-  size_t                            uiIndex
-) const
+bool wxCheckListBox::IsChecked ( size_t uiIndex) const
 {
     return GetItem(uiIndex)->IsChecked();
 } // end of wxCheckListBox::IsChecked
 
-void wxCheckListBox::Check (
-  size_t                            uiIndex
-, bool                              bCheck
-)
+void wxCheckListBox::Check ( size_t uiIndex, bool bCheck )
 {
     GetItem(uiIndex)->Check(bCheck);
 } // end of wxCheckListBox::Check
 
+
+
 //
 // Process events
 // --------------
 //
-void wxCheckListBox::OnChar (
-  wxKeyEvent&                       rEvent
-)
+void wxCheckListBox::OnChar ( wxKeyEvent& rEvent )
 {
     if (rEvent.GetKeyCode() == WXK_SPACE)
         GetItem(GetSelection())->Toggle();
@@ -448,9 +384,7 @@ void wxCheckListBox::OnChar (
         rEvent.Skip();
 } // end of wxCheckListBox::OnChar
 
-void wxCheckListBox::OnLeftClick (
-  wxMouseEvent&                     rEvent
-)
+void wxCheckListBox::OnLeftClick ( wxMouseEvent& rEvent )
 {
     //
     // Clicking on the item selects it, clicking on the checkmark toggles
@@ -461,20 +395,18 @@ void wxCheckListBox::OnLeftClick (
         wxScreenDC                  vDc;
         wxCoord                     vHeight;
 
-        GetSize( NULL
-                ,&nParentHeight
-               );
+        GetSize( NULL, &nParentHeight );
         vDc.SetFont(GetFont());
         vHeight = (wxCoord)(vDc.GetCharHeight() * 2.5);
 
         //
         // This, of course, will not work if the LB is scrolled
         //
-        int                         nY = rEvent.GetY();
+        int nY = rEvent.GetY();
 
         nY = nParentHeight - (nY + vHeight);
 
-        size_t                      nItem = (size_t)(nY / vHeight);
+        size_t nItem = (size_t)(nY / vHeight);
 
         if (nItem < (size_t)m_nNumItems)
             GetItem(nItem)->Toggle();
@@ -491,5 +423,4 @@ void wxCheckListBox::OnLeftClick (
     }
 } // end of wxCheckListBox::OnLeftClick
 
-#endif
-
+#endif // wxUSE_CHECKLISTBOX && wxUSE_OWNER_DRAWN