X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e90c1d2a19361551eb07778280f22be3e759cf64..64ea838d8f4d1853b7d850db93ee565e901d099a:/src/common/choiccmn.cpp diff --git a/src/common/choiccmn.cpp b/src/common/choiccmn.cpp index e37017f0ee..dc925335a2 100644 --- a/src/common/choiccmn.cpp +++ b/src/common/choiccmn.cpp @@ -1,12 +1,12 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: common/choiccmn.cpp +// Name: src/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 +// Copyright: (c) wxWidgets team +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -17,10 +17,6 @@ // headers // ---------------------------------------------------------------------------- -#ifdef __GNUG__ - #pragma implementation "choiccmn.h" -#endif - // For compilers that support precompilation, includes "wx.h". #include "wx/wxprec.h" @@ -28,90 +24,93 @@ #pragma hdrstop #endif +#if wxUSE_CHOICE + +#include "wx/choice.h" + #ifndef WX_PRECOMP - #include "wx/choice.h" - #include "wx/log.h" #endif +const char wxChoiceNameStr[] = "choice"; + + +wxDEFINE_FLAGS( wxChoiceStyle ) +wxBEGIN_FLAGS( wxChoiceStyle ) +// new style border flags, we put them first to +// use them for streaming out +wxFLAGS_MEMBER(wxBORDER_SIMPLE) +wxFLAGS_MEMBER(wxBORDER_SUNKEN) +wxFLAGS_MEMBER(wxBORDER_DOUBLE) +wxFLAGS_MEMBER(wxBORDER_RAISED) +wxFLAGS_MEMBER(wxBORDER_STATIC) +wxFLAGS_MEMBER(wxBORDER_NONE) + +// old style border flags +wxFLAGS_MEMBER(wxSIMPLE_BORDER) +wxFLAGS_MEMBER(wxSUNKEN_BORDER) +wxFLAGS_MEMBER(wxDOUBLE_BORDER) +wxFLAGS_MEMBER(wxRAISED_BORDER) +wxFLAGS_MEMBER(wxSTATIC_BORDER) +wxFLAGS_MEMBER(wxBORDER) + +// standard window styles +wxFLAGS_MEMBER(wxTAB_TRAVERSAL) +wxFLAGS_MEMBER(wxCLIP_CHILDREN) +wxFLAGS_MEMBER(wxTRANSPARENT_WINDOW) +wxFLAGS_MEMBER(wxWANTS_CHARS) +wxFLAGS_MEMBER(wxFULL_REPAINT_ON_RESIZE) +wxFLAGS_MEMBER(wxALWAYS_SHOW_SB ) +wxFLAGS_MEMBER(wxVSCROLL) +wxFLAGS_MEMBER(wxHSCROLL) + +wxEND_FLAGS( wxChoiceStyle ) + +wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxChoice, wxControl, "wx/choice.h") + +wxBEGIN_PROPERTIES_TABLE(wxChoice) +wxEVENT_PROPERTY( Select, wxEVT_COMMAND_CHOICE_SELECTED, wxCommandEvent ) + +wxPROPERTY( Font, wxFont, SetFont, GetFont , wxEMPTY_PARAMETER_VALUE, \ + 0 /*flags*/, wxT("Helpstring"), wxT("group")) +wxPROPERTY_COLLECTION( Choices, wxArrayString, wxString, AppendString, \ + GetStrings, 0 /*flags*/, wxT("Helpstring"), wxT("group")) +wxPROPERTY( Selection,int, SetSelection, GetSelection, wxEMPTY_PARAMETER_VALUE, \ + 0 /*flags*/, wxT("Helpstring"), wxT("group")) + +/* + TODO PROPERTIES + selection (long) + content (list) + item + */ + +wxPROPERTY_FLAGS( WindowStyle, wxChoiceStyle, long, SetWindowStyleFlag, \ + GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \ + wxT("Helpstring"), wxT("group")) // style +wxEND_PROPERTIES_TABLE() + +wxEMPTY_HANDLERS_TABLE(wxChoice) + +wxCONSTRUCTOR_4( wxChoice, wxWindow*, Parent, wxWindowID, Id, \ + wxPoint, Position, wxSize, Size ) + // ============================================================================ // implementation // ============================================================================ -// ---------------------------------------------------------------------------- -// events -// ---------------------------------------------------------------------------- - -void wxChoiceBase::Command(wxCommandEvent &event) +wxChoiceBase::~wxChoiceBase() { - SetSelection(event.GetInt()); - (void)ProcessEvent(event); + // this destructor is required for Darwin } // ---------------------------------------------------------------------------- -// string selection management +// misc // ---------------------------------------------------------------------------- -wxString wxChoiceBase::GetStringSelection() const +void wxChoiceBase::Command(wxCommandEvent& event) { - 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); + SetSelection(event.GetInt()); + (void)GetEventHandler()->ProcessEvent(event); } - +#endif // wxUSE_CHOICE