X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/70231bce2d6387a79396906f8743a3af70d751c0..524c47aa3adf2af11a3069fd5da035a604f08f66:/src/osx/carbon/checklst.cpp diff --git a/src/osx/carbon/checklst.cpp b/src/osx/carbon/checklst.cpp deleted file mode 100644 index 218600348f..0000000000 --- a/src/osx/carbon/checklst.cpp +++ /dev/null @@ -1,273 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////// -// Name: src/mac/carbon/checklst.cpp -// Purpose: implementation of wxCheckListBox class -// Author: Stefan Csomor -// Modified by: -// Created: 1998-01-01 -// RCS-ID: $Id$ -// Copyright: (c) Stefan Csomor -// Licence: wxWindows licence -/////////////////////////////////////////////////////////////////////////////// -// -// new DataBrowser-based version - - -#include "wx/wxprec.h" - -#if wxUSE_CHECKLISTBOX - -#include "wx/checklst.h" - -#ifndef WX_PRECOMP - #include "wx/arrstr.h" -#endif - -#include "wx/osx/uma.h" - -IMPLEMENT_DYNAMIC_CLASS(wxCheckListBox, wxListBox) - -BEGIN_EVENT_TABLE(wxCheckListBox, wxListBox) -END_EVENT_TABLE() - -class wxMacDataBrowserCheckListControl : public wxMacDataBrowserListControl , public wxMacCheckListControl -{ -public: - wxMacDataBrowserCheckListControl( wxListBox *peer, const wxPoint& pos, const wxSize& size, long style ); - wxMacDataBrowserCheckListControl() {} - virtual ~wxMacDataBrowserCheckListControl(); - - virtual wxMacDataItem* CreateItem(); - - virtual bool MacIsChecked(unsigned int n) const; - virtual void MacCheck(unsigned int n, bool bCheck = true); - DECLARE_DYNAMIC_CLASS_NO_COPY(wxMacDataBrowserCheckListControl) -}; - -IMPLEMENT_DYNAMIC_CLASS( wxMacDataBrowserCheckListControl , wxMacDataBrowserListControl ) - -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, - wxWindowID id, - const wxPoint& pos, - const wxSize& size, - int n, - const wxString choices[], - long style, - const wxValidator& validator, - const wxString& name ) -{ - m_macIsUserPane = false; - - wxASSERT_MSG( !(style & wxLB_MULTIPLE) || !(style & wxLB_EXTENDED), - wxT("only one of listbox selection modes can be specified") ); - - if ( !wxListBoxBase::Create( parent, id, pos, size, style & ~(wxHSCROLL | wxVSCROLL), validator, name ) ) - return false; - - // this will be increased by our Append command - wxMacDataBrowserCheckListControl* control = new wxMacDataBrowserCheckListControl( this, pos, size, style ); - // TODO CHECK control->SetClientDataType( m_clientDataItemsType ); - m_peer = control; - - MacPostControlCreate(pos,size); - - InsertItems( n , choices , 0 ); - - // Needed because it is a wxControlWithItems - SetInitialSize( size ); - - return true; -} - -// ---------------------------------------------------------------------------- -// wxCheckListBox functions -// ---------------------------------------------------------------------------- - -bool wxCheckListBox::IsChecked(unsigned int item) const -{ - wxCHECK_MSG( IsValid(item), false, - wxT("invalid index in wxCheckListBox::IsChecked") ); - - return GetPeer()->MacIsChecked( item ); -} - -void wxCheckListBox::Check(unsigned int item, bool check) -{ - wxCHECK_RET( IsValid(item), - wxT("invalid index in wxCheckListBox::Check") ); - - bool isChecked = GetPeer()->MacIsChecked( item ); - if ( check != isChecked ) - { - GetPeer()->MacCheck( item , check ); - } -} - -wxMacCheckListControl* wxCheckListBox::GetPeer() const -{ - wxMacDataBrowserCheckListControl *lb = wxDynamicCast(m_peer,wxMacDataBrowserCheckListControl); - return lb ? wx_static_cast(wxMacCheckListControl*,lb) : 0 ; -} - -const short kCheckboxColumnId = 1026; - -wxMacDataBrowserCheckListControl::wxMacDataBrowserCheckListControl( wxListBox *peer, const wxPoint& pos, const wxSize& size, long style) - : wxMacDataBrowserListControl( peer, pos, size, style ) -{ - OSStatus err = noErr; - - DataBrowserListViewColumnDesc columnDesc; - columnDesc.headerBtnDesc.titleOffset = 0; - columnDesc.headerBtnDesc.version = kDataBrowserListViewLatestHeaderDesc; - - columnDesc.headerBtnDesc.btnFontStyle.flags = - kControlUseFontMask | kControlUseJustMask; - - columnDesc.headerBtnDesc.btnContentInfo.contentType = kControlNoContent; - columnDesc.headerBtnDesc.btnFontStyle.just = teFlushDefault; - columnDesc.headerBtnDesc.btnFontStyle.font = kControlFontViewSystemFont; - columnDesc.headerBtnDesc.btnFontStyle.style = normal; - columnDesc.headerBtnDesc.titleString = NULL; - - columnDesc.headerBtnDesc.minimumWidth = 30; - columnDesc.headerBtnDesc.maximumWidth = 30; - - columnDesc.propertyDesc.propertyID = kCheckboxColumnId; - columnDesc.propertyDesc.propertyType = kDataBrowserCheckboxType; - columnDesc.propertyDesc.propertyFlags = - kDataBrowserPropertyIsMutable - | kDataBrowserTableViewSelectionColumn - | kDataBrowserDefaultPropertyFlags; - - err = AddColumn( &columnDesc, 0 ); - verify_noerr( err ); -} - -wxMacDataBrowserCheckListControl::~wxMacDataBrowserCheckListControl() -{ - -} - -class wxMacCheckListBoxItem : public wxMacListBoxItem -{ -public : - wxMacCheckListBoxItem() - { - m_isChecked = false; - } - - virtual ~wxMacCheckListBoxItem() - { - } - - virtual OSStatus GetSetData( wxMacDataItemBrowserControl *owner , - DataBrowserPropertyID property, - DataBrowserItemDataRef itemData, - bool changeValue ) - { - OSStatus err = errDataBrowserPropertyNotSupported; - - wxCheckListBox *checklist = wxDynamicCast( owner->GetWXPeer() , wxCheckListBox ); - wxCHECK_MSG( checklist != NULL , errDataBrowserPropertyNotSupported , wxT("wxCheckListBox expected")); - - if ( !changeValue ) - { - switch (property) - { - case kCheckboxColumnId: - verify_noerr(SetDataBrowserItemDataButtonValue( itemData, m_isChecked ? kThemeButtonOn : kThemeButtonOff )); - err = noErr; - break; - - case kDataBrowserItemIsEditableProperty: - verify_noerr(SetDataBrowserItemDataBooleanValue( itemData, true )); - err = noErr; - break; - - default: - break; - } - } - else - { - switch (property) - { - case kCheckboxColumnId: - { - // we have to change this behind the back, since Check() would be triggering another update round - bool newVal = !m_isChecked; - verify_noerr(SetDataBrowserItemDataButtonValue( itemData, newVal ? kThemeButtonOn : kThemeButtonOff )); - m_isChecked = newVal; - err = noErr; - - wxCommandEvent event( wxEVT_COMMAND_CHECKLISTBOX_TOGGLED, checklist->GetId() ); - event.SetInt( owner->GetLineFromItem( this ) ); - event.SetEventObject( checklist ); - checklist->HandleWindowEvent( event ); - } - break; - - default: - break; - } - } - - if ( err == errDataBrowserPropertyNotSupported ) - err = wxMacListBoxItem::GetSetData( owner , property, itemData , changeValue); - - return err; - } - - void Check( bool check ) - { - m_isChecked = check; - } - bool IsChecked() const - { - return m_isChecked; - } - -protected : - bool m_isChecked; -}; - -wxMacDataItem* wxMacDataBrowserCheckListControl::CreateItem() -{ - return new wxMacCheckListBoxItem(); -} - -void wxMacDataBrowserCheckListControl::MacCheck( unsigned int n, bool bCheck) -{ - wxMacCheckListBoxItem* item = wx_static_cast(wxMacCheckListBoxItem*, GetItemFromLine( n) ); - item->Check( bCheck); - UpdateItem(wxMacDataBrowserRootContainer, item , kCheckboxColumnId); -} - -bool wxMacDataBrowserCheckListControl::MacIsChecked( unsigned int n) const -{ - wxMacCheckListBoxItem * item = wx_static_cast( wxMacCheckListBoxItem*, GetItemFromLine( n ) ); - return item->IsChecked(); -} - - - -#endif // wxUSE_CHECKLISTBOX