X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/780cccd730e73416229d87c2d437839b597d3cb7..3d777efedc1e05bd6c2a7c34a00a65895b62bb13:/src/propgrid/advprops.cpp diff --git a/src/propgrid/advprops.cpp b/src/propgrid/advprops.cpp index b29d63a48c..2d7ab44cf4 100644 --- a/src/propgrid/advprops.cpp +++ b/src/propgrid/advprops.cpp @@ -4,7 +4,6 @@ // Author: Jaakko Salli // Modified by: // Created: 2004-09-25 -// RCS-ID: $Id$ // Copyright: (c) Jaakko Salli // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// @@ -457,7 +456,7 @@ wxPGWindowList wxPGDatePickerCtrlEditor::CreateControls( wxPropertyGrid* propgri const wxPoint& pos, const wxSize& sz ) const { - wxCHECK_MSG( property->IsKindOf(CLASSINFO(wxDateProperty)), + wxCHECK_MSG( wxDynamicCast(property, wxDateProperty), NULL, wxT("DatePickerCtrl editor can only be used with wxDateProperty or derivative.") ); @@ -498,7 +497,7 @@ void wxPGDatePickerCtrlEditor::UpdateControl( wxPGProperty* property, wxWindow* wnd ) const { wxDatePickerCtrl* ctrl = (wxDatePickerCtrl*) wnd; - wxASSERT( ctrl && ctrl->IsKindOf(CLASSINFO(wxDatePickerCtrl)) ); + wxASSERT( wxDynamicCast(ctrl, wxDatePickerCtrl) ); wxDateTime dateValue(wxInvalidDateTime); wxVariant v(property->GetValue()); @@ -523,7 +522,7 @@ bool wxPGDatePickerCtrlEditor::OnEvent( wxPropertyGrid* WXUNUSED(propgrid), bool wxPGDatePickerCtrlEditor::GetValueFromControl( wxVariant& variant, wxPGProperty* WXUNUSED(property), wxWindow* wnd ) const { wxDatePickerCtrl* ctrl = (wxDatePickerCtrl*) wnd; - wxASSERT( ctrl && ctrl->IsKindOf(CLASSINFO(wxDatePickerCtrl)) ); + wxASSERT( wxDynamicCast(ctrl, wxDatePickerCtrl) ); variant = ctrl->GetValue(); @@ -534,7 +533,7 @@ void wxPGDatePickerCtrlEditor::SetValueToUnspecified( wxPGProperty* property, wxWindow* wnd ) const { wxDatePickerCtrl* ctrl = (wxDatePickerCtrl*) wnd; - wxASSERT( ctrl && ctrl->IsKindOf(CLASSINFO(wxDatePickerCtrl)) ); + wxASSERT( wxDynamicCast(ctrl, wxDatePickerCtrl) ); wxDateProperty* prop = wxDynamicCast(property, wxDateProperty); @@ -634,7 +633,7 @@ wxFontProperty::wxFontProperty( const wxString& label, const wxString& name, wxString faceName = font.GetFaceName(); // If font was not in there, add it now - if ( faceName.length() && + if ( !faceName.empty() && wxPGGlobalVars->m_fontFamilyChoices->Index(faceName) == wxNOT_FOUND ) wxPGGlobalVars->m_fontFamilyChoices->AddAsSorted(faceName); @@ -668,7 +667,7 @@ void wxFontProperty::OnSetValue() wxFont font; font << m_value; - if ( !font.Ok() ) + if ( !font.IsOk() ) { m_value << *wxNORMAL_FONT; } @@ -797,7 +796,7 @@ void wxFontProperty::OnCustomPaint(wxDC& dc, else drawFace = m_value_wxFont.GetFaceName(); - if ( drawFace.length() ) + if ( !drawFace.empty() ) { // Draw the background dc.SetBrush( wxColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE)) ); @@ -906,7 +905,7 @@ void wxSystemColourProperty::Init( int type, const wxColour& colour ) { wxColourPropertyValue cpv; - if ( colour.Ok() ) + if ( colour.IsOk() ) cpv.Init( type, colour ); else cpv.Init( type, *wxWHITE ); @@ -1097,7 +1096,7 @@ void wxSystemColourProperty::OnSetValue() cpv << m_value; wxColour col = cpv.m_colour; - if ( !col.Ok() ) + if ( !col.IsOk() ) { SetValueToUnspecified(); SetIndex(wxNOT_FOUND); @@ -1120,7 +1119,7 @@ void wxSystemColourProperty::OnSetValue() wxColour col; col << m_value; - if ( !col.Ok() ) + if ( !col.IsOk() ) { SetValueToUnspecified(); SetIndex(wxNOT_FOUND); @@ -1143,15 +1142,35 @@ wxColour wxSystemColourProperty::GetColour( int index ) const return wxSystemSettings::GetColour( (wxSystemColour)index ); } -wxString wxSystemColourProperty::ColourToString( const wxColour& col, int index ) const +wxString wxSystemColourProperty::ColourToString( const wxColour& col, + int index, + int argFlags ) const { + if ( index == wxNOT_FOUND ) - return wxString::Format(wxT("(%i,%i,%i)"), - (int)col.Red(), - (int)col.Green(), - (int)col.Blue()); + { + + if ( (argFlags & wxPG_FULL_VALUE) || + GetAttributeAsLong(wxPG_COLOUR_HAS_ALPHA, 0) ) + { + return wxString::Format(wxS("(%i,%i,%i,%i)"), + (int)col.Red(), + (int)col.Green(), + (int)col.Blue(), + (int)col.Alpha()); + } + else + { + return wxString::Format(wxS("(%i,%i,%i)"), + (int)col.Red(), + (int)col.Green(), + (int)col.Blue()); + } + } else + { return m_choices.GetLabel(index); + } } wxString wxSystemColourProperty::ValueToString( wxVariant& value, @@ -1178,7 +1197,7 @@ wxString wxSystemColourProperty::ValueToString( wxVariant& value, index = m_choices.Index(val.m_type); } - return ColourToString(val.m_colour, index); + return ColourToString(val.m_colour, index, argFlags); } @@ -1267,7 +1286,7 @@ bool wxSystemColourProperty::OnEvent( wxPropertyGrid* propgrid, // switched to one that has wxButton as well. askColour = true; } - else if ( event.GetEventType() == wxEVT_COMMAND_COMBOBOX_SELECTED ) + else if ( event.GetEventType() == wxEVT_COMBOBOX ) { // Must override index detection since at this point GetIndex() // will return old value. @@ -1300,7 +1319,7 @@ public: const wxPropertyGrid* propertyGrid, wxPGProperty* property, int WXUNUSED(column), int item, int WXUNUSED(flags) ) const { - wxASSERT( property->IsKindOf(CLASSINFO(wxSystemColourProperty)) ); + wxASSERT( wxDynamicCast(property, wxSystemColourProperty) ); wxSystemColourProperty* prop = wxStaticCast(property, wxSystemColourProperty); dc.SetPen(*wxBLACK_PEN); @@ -1363,7 +1382,7 @@ void wxSystemColourProperty::OnCustomPaint( wxDC& dc, const wxRect& rect, col = GetVal().m_colour; } - if ( col.Ok() ) + if ( col.IsOk() ) { dc.SetBrush(col); dc.DrawRectangle(rect); @@ -1383,13 +1402,32 @@ bool wxSystemColourProperty::StringToValue( wxVariant& value, const wxString& te if ( colStr != custColName ) { - // Convert (R,G,B) to rgb(R,G,B) if ( colStr.Find(wxS("(")) == 0 ) { - colStr = wxS("rgb") + colStr; + // Eliminate whitespace + colStr.Replace(wxS(" "), wxEmptyString); + + int commaCount = colStr.Freq(wxS(',')); + if ( commaCount == 2 ) + { + // Convert (R,G,B) to rgb(R,G,B) + colStr = wxS("rgb") + colStr; + } + else if ( commaCount == 3 ) + { + // We have int alpha, CSS format that wxColour takes as + // input processes float alpha. So, let's parse the colour + // ourselves instead of trying to convert it to a format + // that wxColour::FromString() understands. + int r = -1, g = -1, b = -1, a = -1; + wxSscanf(colStr, wxS("(%i,%i,%i,%i)"), &r, &g, &b, &a); + customColour.Set(r, g, b, a); + conversionSuccess = customColour.IsOk(); + } } - conversionSuccess = customColour.Set(colStr); + if ( !conversionSuccess ) + conversionSuccess = customColour.Set(colStr); } if ( !conversionSuccess && m_choices.GetCount() && @@ -1398,7 +1436,7 @@ bool wxSystemColourProperty::StringToValue( wxVariant& value, const wxString& te { if ( !(argFlags & wxPG_EDITABLE_VALUE )) { - // This really should not occurr... + // This really should not occur... // wxASSERT(false); ResetNextIndex(); return false; @@ -1546,7 +1584,7 @@ wxColourProperty::~wxColourProperty() void wxColourProperty::Init( wxColour colour ) { - if ( !colour.Ok() ) + if ( !colour.IsOk() ) colour = *wxWHITE; wxVariant variant; variant << colour; @@ -1743,7 +1781,7 @@ void wxCursorProperty::OnCustomPaint( wxDC&, const wxRect&, wxPGPaintData& ) { } const wxString& wxPGGetDefaultImageWildcard() { // Form the wildcard, if not done yet - if ( !wxPGGlobalVars->m_pDefaultImageWildcard.length() ) + if ( wxPGGlobalVars->m_pDefaultImageWildcard.empty() ) { wxString str; @@ -1825,7 +1863,7 @@ void wxImageFileProperty::OnCustomPaint( wxDC& dc, const wxRect& rect, wxPGPaintData& ) { - if ( m_pBitmap || (m_pImage && m_pImage->Ok() ) ) + if ( m_pBitmap || (m_pImage && m_pImage->IsOk() ) ) { // Draw the thumbnail @@ -2140,7 +2178,7 @@ wxString wxDateProperty::ValueToString( wxVariant& value, if ( !dateTime.IsValid() ) return wxT("Invalid"); - if ( !ms_defaultDateFormat.length() ) + if ( ms_defaultDateFormat.empty() ) { #if wxUSE_DATEPICKCTRL bool showCentury = m_dpStyle & wxDP_SHOWCENTURY ? true : false; @@ -2150,7 +2188,7 @@ wxString wxDateProperty::ValueToString( wxVariant& value, ms_defaultDateFormat = DetermineDefaultDateFormat( showCentury ); } - if ( m_format.length() && + if ( !m_format.empty() && !(argFlags & wxPG_FULL_VALUE) ) format = m_format.c_str(); @@ -2165,7 +2203,7 @@ wxString wxDateProperty::ValueToString( wxVariant& value, wxString wxDateProperty::DetermineDefaultDateFormat( bool showCentury ) { - // This code is basicly copied from datectlg.cpp's SetFormat + // This code is basically copied from datectlg.cpp's SetFormat // wxString format;