]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/osx/listbox.h
Applied Peter Most's EVT_SPIN crash fix
[wxWidgets.git] / include / wx / osx / listbox.h
index 078ca2a4ece38457731cd07d82329a06d4c801a7..bf01a78fecd5de48c6ec094cd02b9f3d277dda27 100644 (file)
@@ -1,5 +1,175 @@
-#ifdef __WXMAC_CLASSIC__
-#include "wx/osx/classic/listbox.h"
-#else
-#include "wx/osx/carbon/listbox.h"
-#endif
+/////////////////////////////////////////////////////////////////////////////
+// Name:        wx/mac/carbon/listbox.h
+// Purpose:     wxListBox class
+// Author:      Stefan Csomor
+// Modified by:
+// Created:     1998-01-01
+// RCS-ID:      $Id$
+// Copyright:   (c) Stefan Csomor
+// Licence:     wxWindows licence
+/////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_LISTBOX_H_
+#define _WX_LISTBOX_H_
+
+// ----------------------------------------------------------------------------
+// simple types
+// ----------------------------------------------------------------------------
+#include  "wx/dynarray.h"
+#include  "wx/arrstr.h"
+
+// forward decl for GetSelections()
+class wxArrayInt;
+
+// forward decl for wxListWidgetImpl implementation type.
+class wxListWidgetImpl;
+
+// List box item
+
+WX_DEFINE_ARRAY( char* , wxListDataArray );
+
+// ----------------------------------------------------------------------------
+// List box control
+// ----------------------------------------------------------------------------
+
+class WXDLLIMPEXP_FWD_CORE wxListWidgetColumn;
+
+class WXDLLIMPEXP_FWD_CORE wxListWidgetCellValue;
+
+class WXDLLIMPEXP_CORE wxListBox : public wxListBoxBase
+{
+public:
+    // ctors and such
+    wxListBox();
+
+    wxListBox(
+        wxWindow *parent,
+        wxWindowID winid,
+        const wxPoint& pos = wxDefaultPosition,
+        const wxSize& size = wxDefaultSize,
+        int n = 0, const wxString choices[] = NULL,
+        long style = 0,
+        const wxValidator& validator = wxDefaultValidator,
+        const wxString& name = wxListBoxNameStr)
+    {
+        Create(parent, winid, pos, size, n, choices, style, validator, name);
+    }
+
+    wxListBox(
+        wxWindow *parent,
+        wxWindowID winid,
+        const wxPoint& pos,
+        const wxSize& size,
+        const wxArrayString& choices,
+        long style = 0,
+        const wxValidator& validator = wxDefaultValidator,
+        const wxString& name = wxListBoxNameStr)
+    {
+        Create(parent, winid, pos, size, choices, style, validator, name);
+    }
+
+    bool Create(
+        wxWindow *parent,
+        wxWindowID winid,
+        const wxPoint& pos = wxDefaultPosition,
+        const wxSize& size = wxDefaultSize,
+        int n = 0,
+        const wxString choices[] = NULL,
+        long style = 0,
+        const wxValidator& validator = wxDefaultValidator,
+        const wxString& name = wxListBoxNameStr);
+
+    bool Create(
+        wxWindow *parent,
+        wxWindowID winid,
+        const wxPoint& pos,
+        const wxSize& size,
+        const wxArrayString& choices,
+        long style = 0,
+        const wxValidator& validator = wxDefaultValidator,
+        const wxString& name = wxListBoxNameStr);
+
+    virtual ~wxListBox();
+    
+    // implement base class pure virtuals
+    virtual void Refresh(bool eraseBack = true, const wxRect *rect = NULL);
+
+    virtual unsigned int GetCount() const;
+    virtual wxString GetString(unsigned int n) const;
+    virtual void SetString(unsigned int n, const wxString& s);
+    virtual int FindString(const wxString& s, bool bCase = false) const;
+
+    // data callbacks
+    virtual void GetValueCallback( unsigned int n, wxListWidgetColumn* col , wxListWidgetCellValue& value );
+    virtual void SetValueCallback( unsigned int n, wxListWidgetColumn* col , wxListWidgetCellValue& value );
+    
+    virtual bool IsSelected(int n) const;
+    virtual int GetSelection() const;
+    virtual int GetSelections(wxArrayInt& aSelections) const;
+
+    virtual void EnsureVisible(int n);
+
+    virtual wxVisualAttributes GetDefaultAttributes() const
+    {
+        return GetClassDefaultAttributes(GetWindowVariant());
+    }
+
+    // wxCheckListBox support
+    static wxVisualAttributes
+    GetClassDefaultAttributes(wxWindowVariant variant = wxWINDOW_VARIANT_NORMAL);
+
+    wxListWidgetImpl* GetListPeer() const;
+    
+    bool MacGetBlockEvents() const { return m_blockEvents; }
+
+    virtual void HandleLineEvent( unsigned int n, bool doubleClick );
+protected:
+    // callback for derived classes which may have to insert additional data
+    // at a certain line - which cannot be predetermined for sorted list data
+    virtual void OnItemInserted(unsigned int pos);
+
+    virtual void DoClear();
+    virtual void DoDeleteOneItem(unsigned int n);
+
+    // from wxItemContainer
+    virtual int DoInsertItems(const wxArrayStringsAdapter& items,
+                              unsigned int pos,
+                              void **clientData, wxClientDataType type);
+
+    virtual void DoSetItemClientData(unsigned int n, void* clientData);
+    virtual void* DoGetItemClientData(unsigned int n) const;
+
+    // from wxListBoxBase
+    virtual void DoSetSelection(int n, bool select);
+    virtual void DoSetFirstItem(int n);
+    virtual int DoListHitTest(const wxPoint& point) const;
+
+    // free memory (common part of Clear() and dtor)
+    // prevent collision with some BSD definitions of macro Free()
+    void FreeData();
+
+    virtual wxSize DoGetBestSize() const;
+
+    bool m_blockEvents;
+    
+    wxListWidgetColumn* m_textColumn;
+    
+    // data storage (copied from univ)
+    
+    // the array containing all items (it is sorted if the listbox has
+    // wxLB_SORT style)
+    union
+    {
+        wxArrayString *unsorted;
+        wxSortedArrayString *sorted;
+    } m_strings;
+
+    // and this one the client data (either void or wxClientData)
+    wxArrayPtrVoid m_itemsClientData;
+    
+private:
+    DECLARE_DYNAMIC_CLASS(wxListBox)
+    DECLARE_EVENT_TABLE()
+};
+
+#endif // _WX_LISTBOX_H_