]> git.saurik.com Git - wxWidgets.git/blobdiff - src/propgrid/advprops.cpp
No real changes, just make wxWindow::CanScroll() virtual.
[wxWidgets.git] / src / propgrid / advprops.cpp
index b29d63a48cbcf287ca2b1e468837025fd97920f7..2d7ab44cf469462a90d95a46f0977969a3482b17 100644 (file)
@@ -4,7 +4,6 @@
 // Author:      Jaakko Salli
 // Modified by:
 // Created:     2004-09-25
 // Author:      Jaakko Salli
 // Modified by:
 // Created:     2004-09-25
-// RCS-ID:      $Id$
 // Copyright:   (c) Jaakko Salli
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 // Copyright:   (c) Jaakko Salli
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
@@ -457,7 +456,7 @@ wxPGWindowList wxPGDatePickerCtrlEditor::CreateControls( wxPropertyGrid* propgri
                                                          const wxPoint& pos,
                                                          const wxSize& sz ) const
 {
                                                          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.") );
 
                  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;
                                               wxWindow* wnd ) const
 {
     wxDatePickerCtrl* ctrl = (wxDatePickerCtrl*) wnd;
-    wxASSERT( ctrl && ctrl->IsKindOf(CLASSINFO(wxDatePickerCtrl)) );
+    wxASSERT( wxDynamicCast(ctrl, wxDatePickerCtrl) );
 
     wxDateTime dateValue(wxInvalidDateTime);
     wxVariant v(property->GetValue());
 
     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;
 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();
 
 
     variant = ctrl->GetValue();
 
@@ -534,7 +533,7 @@ void wxPGDatePickerCtrlEditor::SetValueToUnspecified( wxPGProperty* property,
                                                       wxWindow* wnd ) const
 {
     wxDatePickerCtrl* ctrl = (wxDatePickerCtrl*) wnd;
                                                       wxWindow* wnd ) const
 {
     wxDatePickerCtrl* ctrl = (wxDatePickerCtrl*) wnd;
-    wxASSERT( ctrl && ctrl->IsKindOf(CLASSINFO(wxDatePickerCtrl)) );
+    wxASSERT( wxDynamicCast(ctrl, wxDatePickerCtrl) );
 
     wxDateProperty* prop = wxDynamicCast(property, wxDateProperty);
 
 
     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
 
     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);
 
          wxPGGlobalVars->m_fontFamilyChoices->Index(faceName) == wxNOT_FOUND )
         wxPGGlobalVars->m_fontFamilyChoices->AddAsSorted(faceName);
 
@@ -668,7 +667,7 @@ void wxFontProperty::OnSetValue()
     wxFont font;
     font << m_value;
 
     wxFont font;
     font << m_value;
 
-    if ( !font.Ok() )
+    if ( !font.IsOk() )
     {
         m_value << *wxNORMAL_FONT;
     }
     {
         m_value << *wxNORMAL_FONT;
     }
@@ -797,7 +796,7 @@ void wxFontProperty::OnCustomPaint(wxDC& dc,
     else
         drawFace = m_value_wxFont.GetFaceName();
 
     else
         drawFace = m_value_wxFont.GetFaceName();
 
-    if ( drawFace.length() )
+    if ( !drawFace.empty() )
     {
         // Draw the background
         dc.SetBrush( wxColour(wxSystemSettings::GetColour(wxSYS_COLOUR_BTNFACE)) );
     {
         // 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;
 
 {
     wxColourPropertyValue cpv;
 
-    if ( colour.Ok() )
+    if ( colour.IsOk() )
         cpv.Init( type, colour );
     else
         cpv.Init( type, *wxWHITE );
         cpv.Init( type, colour );
     else
         cpv.Init( type, *wxWHITE );
@@ -1097,7 +1096,7 @@ void wxSystemColourProperty::OnSetValue()
         cpv << m_value;
         wxColour col = cpv.m_colour;
 
         cpv << m_value;
         wxColour col = cpv.m_colour;
 
-        if ( !col.Ok() )
+        if ( !col.IsOk() )
         {
             SetValueToUnspecified();
             SetIndex(wxNOT_FOUND);
         {
             SetValueToUnspecified();
             SetIndex(wxNOT_FOUND);
@@ -1120,7 +1119,7 @@ void wxSystemColourProperty::OnSetValue()
         wxColour col;
         col << m_value;
 
         wxColour col;
         col << m_value;
 
-        if ( !col.Ok() )
+        if ( !col.IsOk() )
         {
             SetValueToUnspecified();
             SetIndex(wxNOT_FOUND);
         {
             SetValueToUnspecified();
             SetIndex(wxNOT_FOUND);
@@ -1143,15 +1142,35 @@ wxColour wxSystemColourProperty::GetColour( int index ) const
     return wxSystemSettings::GetColour( (wxSystemColour)index );
 }
 
     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 )
     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
     else
+    {
         return m_choices.GetLabel(index);
         return m_choices.GetLabel(index);
+    }
 }
 
 wxString wxSystemColourProperty::ValueToString( wxVariant& value,
 }
 
 wxString wxSystemColourProperty::ValueToString( wxVariant& value,
@@ -1178,7 +1197,7 @@ wxString wxSystemColourProperty::ValueToString( wxVariant& value,
         index = m_choices.Index(val.m_type);
     }
 
         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;
     }
         // 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.
     {
         // 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
     {
                          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);
         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;
     }
 
         col = GetVal().m_colour;
     }
 
-    if ( col.Ok() )
+    if ( col.IsOk() )
     {
         dc.SetBrush(col);
         dc.DrawRectangle(rect);
     {
         dc.SetBrush(col);
         dc.DrawRectangle(rect);
@@ -1383,13 +1402,32 @@ bool wxSystemColourProperty::StringToValue( wxVariant& value, const wxString& te
 
     if ( colStr != custColName )
     {
 
     if ( colStr != custColName )
     {
-        // Convert (R,G,B) to rgb(R,G,B)
         if ( colStr.Find(wxS("(")) == 0 )
         {
         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() &&
     }
 
     if ( !conversionSuccess && m_choices.GetCount() &&
@@ -1398,7 +1436,7 @@ bool wxSystemColourProperty::StringToValue( wxVariant& value, const wxString& te
     {
         if ( !(argFlags & wxPG_EDITABLE_VALUE ))
         {
     {
         if ( !(argFlags & wxPG_EDITABLE_VALUE ))
         {
-            // This really should not occurr...
+            // This really should not occur...
             // wxASSERT(false);
             ResetNextIndex();
             return false;
             // wxASSERT(false);
             ResetNextIndex();
             return false;
@@ -1546,7 +1584,7 @@ wxColourProperty::~wxColourProperty()
 
 void wxColourProperty::Init( wxColour colour )
 {
 
 void wxColourProperty::Init( wxColour colour )
 {
-    if ( !colour.Ok() )
+    if ( !colour.IsOk() )
         colour = *wxWHITE;
     wxVariant variant;
     variant << colour;
         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
 const wxString& wxPGGetDefaultImageWildcard()
 {
     // Form the wildcard, if not done yet
-    if ( !wxPGGlobalVars->m_pDefaultImageWildcard.length() )
+    if ( wxPGGlobalVars->m_pDefaultImageWildcard.empty() )
     {
 
         wxString str;
     {
 
         wxString str;
@@ -1825,7 +1863,7 @@ void wxImageFileProperty::OnCustomPaint( wxDC& dc,
                                          const wxRect& rect,
                                          wxPGPaintData& )
 {
                                          const wxRect& rect,
                                          wxPGPaintData& )
 {
-    if ( m_pBitmap || (m_pImage && m_pImage->Ok() ) )
+    if ( m_pBitmap || (m_pImage && m_pImage->IsOk() ) )
     {
         // Draw the thumbnail
 
     {
         // Draw the thumbnail
 
@@ -2140,7 +2178,7 @@ wxString wxDateProperty::ValueToString( wxVariant& value,
     if ( !dateTime.IsValid() )
         return wxT("Invalid");
 
     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;
     {
 #if wxUSE_DATEPICKCTRL
         bool showCentury = m_dpStyle & wxDP_SHOWCENTURY ? true : false;
@@ -2150,7 +2188,7 @@ wxString wxDateProperty::ValueToString( wxVariant& value,
         ms_defaultDateFormat = DetermineDefaultDateFormat( showCentury );
     }
 
         ms_defaultDateFormat = DetermineDefaultDateFormat( showCentury );
     }
 
-    if ( m_format.length() &&
+    if ( !m_format.empty() &&
          !(argFlags & wxPG_FULL_VALUE) )
             format = m_format.c_str();
 
          !(argFlags & wxPG_FULL_VALUE) )
             format = m_format.c_str();
 
@@ -2165,7 +2203,7 @@ wxString wxDateProperty::ValueToString( wxVariant& value,
 
 wxString wxDateProperty::DetermineDefaultDateFormat( bool showCentury )
 {
 
 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;
 
     //
     wxString format;