X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/94aff5ff86189e39b7a95fc62e886374c060a2cf..74a8f67d96591cec101def2a7d47c64072aff7fd:/src/common/btncmn.cpp?ds=sidebyside diff --git a/src/common/btncmn.cpp b/src/common/btncmn.cpp index 92e8103586..4ddc6a5bad 100644 --- a/src/common/btncmn.cpp +++ b/src/common/btncmn.cpp @@ -23,11 +23,76 @@ #pragma hdrstop #endif +#if wxUSE_BUTTON + #ifndef WX_PRECOMP #include "wx/button.h" #include "wx/toplevel.h" #endif //WX_PRECOMP +extern WXDLLEXPORT_DATA(const char) wxButtonNameStr[] = "button"; + +// ---------------------------------------------------------------------------- +// XTI +// ---------------------------------------------------------------------------- + +wxDEFINE_FLAGS( wxButtonStyle ) +wxBEGIN_FLAGS( wxButtonStyle ) +// 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) + +wxFLAGS_MEMBER(wxBU_LEFT) +wxFLAGS_MEMBER(wxBU_RIGHT) +wxFLAGS_MEMBER(wxBU_TOP) +wxFLAGS_MEMBER(wxBU_BOTTOM) +wxFLAGS_MEMBER(wxBU_EXACTFIT) +wxEND_FLAGS( wxButtonStyle ) + +wxIMPLEMENT_DYNAMIC_CLASS_XTI(wxButton, wxControl, "wx/button.h") + +wxBEGIN_PROPERTIES_TABLE(wxButton) +wxEVENT_PROPERTY( Click, wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEvent ) + +wxPROPERTY( Font, wxFont, SetFont, GetFont, wxEMPTY_PARAMETER_VALUE, \ + 0 /*flags*/, wxT("The font associated with the button label"), wxT("group")) +wxPROPERTY( Label, wxString, SetLabel, GetLabel, wxString(), \ + 0 /*flags*/, wxT("The button label"), wxT("group") ) + +wxPROPERTY_FLAGS( WindowStyle, wxButtonStyle, long, SetWindowStyleFlag, \ + GetWindowStyleFlag, wxEMPTY_PARAMETER_VALUE, 0 /*flags*/, \ + wxT("The button style"), wxT("group")) // style +wxEND_PROPERTIES_TABLE() + +wxEMPTY_HANDLERS_TABLE(wxButton) + +wxCONSTRUCTOR_6( wxButton, wxWindow*, Parent, wxWindowID, Id, wxString, \ + Label, wxPoint, Position, wxSize, Size, long, WindowStyle ) + + // ============================================================================ // implementation // ============================================================================ @@ -37,8 +102,21 @@ wxWindow *wxButtonBase::SetDefault() wxTopLevelWindow * const tlw = wxDynamicCast(wxGetTopLevelParent(this), wxTopLevelWindow); - wxCHECK_MSG( tlw, NULL, _T("button without top level window?") ); + wxCHECK_MSG( tlw, NULL, wxT("button without top level window?") ); return tlw->SetDefaultItem(this); } +void wxAnyButtonBase::SetBitmapPosition(wxDirection dir) +{ + wxASSERT_MSG( !(dir & ~wxDIRECTION_MASK), "non-direction flag used" ); + wxASSERT_MSG( !!(dir & wxLEFT) + + !!(dir & wxRIGHT) + + !!(dir & wxTOP) + + !!(dir & wxBOTTOM) == 1, + "exactly one direction flag must be set" ); + + DoSetBitmapPosition(dir); + +} +#endif // wxUSE_BUTTON