diff --git a/src/common/choiccmn.cpp b/src/common/choiccmn.cpp new file mode 100644 index 0000000000..9f5dfeade9 --- /dev/null +++ b/src/common/choiccmn.cpp @@ -0,0 +1,117 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: common/choiccmn.cpp +// Purpose: common (to all ports) wxChoice functions +// Author: Vadim Zeitlin +// Modified by: +// Created: 26.07.99 +// RCS-ID: $Id$ +// Copyright: (c) wxWindows team +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + +#ifdef __GNUG__ + #pragma implementation "choicebase.h" +#endif + +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/choice.h" + #include "wx/log.h" +#endif + +// ============================================================================ +// implementation +// ============================================================================ + +// ---------------------------------------------------------------------------- +// events +// ---------------------------------------------------------------------------- + +void wxChoiceBase::Command(wxCommandEvent &event) +{ + SetSelection(event.GetInt()); + (void)ProcessEvent(event); +} + +// ---------------------------------------------------------------------------- +// string selection management +// ---------------------------------------------------------------------------- + +wxString wxChoiceBase::GetStringSelection() const +{ + int sel = GetSelection(); + wxString str; + wxCHECK_MSG( sel != wxNOT_FOUND, str, _T("no selection, hence no string") ); + + str = GetString(sel); + return str; +} + +bool wxChoiceBase::SetStringSelection(const wxString& sel) +{ + int selIndex = FindString(sel); + wxCHECK_MSG( selIndex != wxNOT_FOUND, FALSE, + _T("can't set selection to string not in the control") ); + + SetSelection(selIndex); + + return TRUE; +} + +// ---------------------------------------------------------------------------- +// client data +// ---------------------------------------------------------------------------- + +void wxChoiceBase::SetClientObject(int n, wxClientData *data) +{ + wxASSERT_MSG( m_clientDataItemsType != ClientData_Void, + _T("can't have both object and void client data") ); + + wxClientData *clientDataOld = DoGetClientObject(n); + if ( clientDataOld ) + delete clientDataOld; + + DoSetClientObject(n, data); + m_clientDataItemsType = ClientData_Object; +} + +wxClientData *wxChoiceBase::GetClientObject(int n) const +{ + wxASSERT_MSG( m_clientDataItemsType == ClientData_Object, + _T("this window doesn't have object client data") ); + + return DoGetClientObject(n); +} + +void wxChoiceBase::SetClientData(int n, void *data) +{ + wxASSERT_MSG( m_clientDataItemsType != ClientData_Object, + _T("can't have both object and void client data") ); + + DoSetClientData(n, data); + m_clientDataItemsType = ClientData_Void; +} + +void *wxChoiceBase::GetClientData(int n) const +{ + wxASSERT_MSG( m_clientDataItemsType == ClientData_Void, + _T("this window doesn't have void client data") ); + + return DoGetClientData(n); +} + + diff --git a/src/common/ctrlcmn.cpp b/src/common/ctrlcmn.cpp new file mode 100644 index 0000000000..b58927733f --- /dev/null +++ b/src/common/ctrlcmn.cpp @@ -0,0 +1,72 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: ctrlcmn.cpp +// Purpose: wxControl common interface +// Author: Vadim Zeitlin +// Modified by: +// Created: 26.07.99 +// RCS-ID: $Id$ +// Copyright: (c) wxWindows team +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +// ============================================================================ +// declarations +// ============================================================================ + +// ---------------------------------------------------------------------------- +// headers +// ---------------------------------------------------------------------------- + +#ifdef __GNUG__ + #pragma implementation "choicebase.h" +#endif + +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ + #pragma hdrstop +#endif + +#ifndef WX_PRECOMP + #include "wx/control.h" + #include "wx/log.h" +#endif + +// ============================================================================ +// implementation +// ============================================================================ + +bool wxControlBase::CreateControl(wxWindowBase *parent, + wxWindowID id, + const wxPoint& pos, + const wxSize& size, + long style, + const wxValidator& validator, + const wxString& name) +{ + // even if it's possible to create controls without parents in some port, + // it should surely be discouraged because it doesn't work at all under + // Windows + wxCHECK_MSG( parent, FALSE, _T("all controls must have parents") ); + + if ( !CreateBase(parent, id, pos, size, style, validator, name) ) + return FALSE; + + parent->AddChild(this); + + return TRUE; +} + +// inherit colour and font settings from the parent window +void wxControlBase::InheritAttributes() +{ + SetBackgroundColour(GetParent()->GetBackgroundColour()); + SetForegroundColour(GetParent()->GetForegroundColour()); + SetFont(GetParent()->GetFont()); +} + +void wxControlBase::Command(wxCommandEvent& event) +{ + (void)ProcessEvent(event); +}