osx new layout

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55419 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Stefan Csomor
2008-09-02 16:53:23 +00:00
parent 70231bce2d
commit 524c47aa3a
149 changed files with 10286 additions and 9751 deletions

View File

@@ -1,11 +1,11 @@
/////////////////////////////////////////////////////////////////////////////
// Name: radiobut.cpp
// Name: src/osx/carbon/radiobut.cpp
// Purpose: wxRadioButton
// Author: AUTHOR
// Author: Stefan Csomor
// Modified by: JS Lair (99/11/15) adding the cyclic group notion for radiobox
// Created: ??/??/98
// Created: 01/01/98
// RCS-ID: $Id$
// Copyright: (c) AUTHOR
// Copyright: (c) Stefan Csomor
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
@@ -14,165 +14,25 @@
#if wxUSE_RADIOBTN
#include "wx/radiobut.h"
#include "wx/osx/uma.h"
#include "wx/osx/private.h"
IMPLEMENT_DYNAMIC_CLASS(wxRadioButton, wxControl)
bool wxRadioButton::Create( wxWindow *parent,
wxWindowID id,
const wxString& label,
const wxPoint& pos,
const wxSize& size,
long style,
const wxValidator& validator,
const wxString& name )
wxWidgetImplType* wxWidgetImpl::CreateRadioButton( wxWindowMac* wxpeer,
wxWindowMac* parent,
wxWindowID id,
const wxString& label,
const wxPoint& pos,
const wxSize& size,
long style,
long extraStyle)
{
m_macIsUserPane = false;
if ( !wxControl::Create( parent, id, pos, size, style, validator, name ) )
return false;
m_labelOrig = m_label = label;
Rect bounds = wxMacGetBoundsForControl( this, pos, size );
m_peer = new wxMacControl( this );
Rect bounds = wxMacGetBoundsForControl( wxpeer , pos , size ) ;
wxMacControl* peer = new wxMacControl(wxpeer) ;
OSStatus err = CreateRadioButtonControl(
MAC_WXHWND(parent->MacGetTopLevelWindowRef()), &bounds, CFSTR(""),
0, false /* no autotoggle */, m_peer->GetControlRefAddr() );
0, false /* no autotoggle */, peer->GetControlRefAddr() );
verify_noerr( err );
MacPostControlCreate( pos, size );
m_cycle = this;
if (HasFlag( wxRB_GROUP ))
{
AddInCycle( NULL );
}
else
{
// search backward for last group start
wxRadioButton *chief = NULL;
wxWindowList::compatibility_iterator node = parent->GetChildren().GetLast();
while (node)
{
wxWindow *child = node->GetData();
if (child->IsKindOf( CLASSINFO( wxRadioButton ) ))
{
chief = (wxRadioButton*)child;
if (child->HasFlag( wxRB_GROUP ))
break;
}
node = node->GetPrevious();
}
AddInCycle( chief );
}
return true;
}
wxRadioButton::~wxRadioButton()
{
RemoveFromCycle();
}
void wxRadioButton::SetValue(bool val)
{
wxRadioButton *cycle;
if (m_peer->GetValue() == val)
return;
m_peer->SetValue( val );
if (val)
{
cycle = this->NextInCycle();
if (cycle != NULL)
{
while (cycle != this)
{
cycle->SetValue( false );
cycle = cycle->NextInCycle();
}
}
}
}
bool wxRadioButton::GetValue() const
{
return m_peer->GetValue();
}
void wxRadioButton::Command(wxCommandEvent& event)
{
SetValue( (event.GetInt() != 0) );
ProcessCommand( event );
}
wxInt32 wxRadioButton::MacControlHit( WXEVENTHANDLERREF WXUNUSED(handler), WXEVENTREF WXUNUSED(event) )
{
// if already set -> no action
if (GetValue())
return noErr;
wxRadioButton *cycle;
cycle = this->NextInCycle();
if (cycle != NULL)
{
while (cycle != this)
{
if (cycle->GetValue())
cycle->SetValue( false );
cycle = cycle->NextInCycle();
}
}
SetValue( true );
wxCommandEvent event2( wxEVT_COMMAND_RADIOBUTTON_SELECTED, m_windowId );
event2.SetEventObject( this );
event2.SetInt( true );
ProcessCommand( event2 );
return noErr;
}
wxRadioButton *wxRadioButton::AddInCycle(wxRadioButton *cycle)
{
wxRadioButton *current;
if (cycle == NULL)
{
m_cycle = this;
}
else
{
current = cycle;
while (current->m_cycle != cycle)
current = current->m_cycle;
m_cycle = cycle;
current->m_cycle = this;
}
return m_cycle;
}
void wxRadioButton::RemoveFromCycle()
{
if ((m_cycle == NULL) || (m_cycle == this))
return;
// Find the previous one and make it point to the next one
wxRadioButton* prev = this;
while (prev->m_cycle != this)
prev = prev->m_cycle;
prev->m_cycle = m_cycle;
return peer;
}
#endif