- Added wxImage::Rotate180() (Jeff Tupper).
- Added support for saving TGA files.
- Added wxArtProvider returning higher quality icons from Tango project.
+- wxPropertyGrid: Added "HasAlpha" attribute for wxColourProperty.
GTK:
Override in derived class to customize how colours are printed as
strings.
*/
- virtual wxString ColourToString( const wxColour& col, int index ) const;
+ virtual wxString ColourToString( const wxColour& col, int index,
+ int argFlags = 0 ) const;
/** Returns index of entry that triggers colour picker dialog
(default is last).
*/
#define wxPG_COLOUR_ALLOW_CUSTOM wxS("AllowCustom")
+/**
+ wxColourProperty and its kind: Set to True in order to support editing
+ alpha colour component.
+*/
+#define wxPG_COLOUR_HAS_ALPHA wxS("HasAlpha")
+
/** @}
*/
*/
#define wxPG_COLOUR_ALLOW_CUSTOM wxS("AllowCustom")
+/**
+ wxColourProperty and its kind: Set to True in order to support editing
+ alpha colour component.
+*/
+#define wxPG_COLOUR_HAS_ALPHA wxS("HasAlpha")
+
/** @}
*/
There are various sub-classing opportunities with this class. See
below in wxSystemColourProperty section for details.
+ Setting "HasAlpha" attribute to @true for this property allows user to
+ edit the alpha colour component.
+
@subsection wxFontProperty
Represents wxFont. Various sub-properties are used to edit individual
#endif
pid = pg->Append( new wxColourProperty(wxT("ColourProperty"),wxPG_LABEL,*wxRED) );
- //pg->SetPropertyAttribute(pid,wxPG_COLOUR_ALLOW_CUSTOM,false);
pg->SetPropertyEditor( wxT("ColourProperty"), wxPGEditor_ComboBox );
pg->GetProperty(wxT("ColourProperty"))->SetAutoUnspecified(true);
pg->SetPropertyHelpString( wxT("ColourProperty"),
wxT("wxPropertyGrid::SetPropertyEditor method has been used to change ")
wxT("editor of this property to wxPGEditor_ComboBox)"));
+ pid = pg->Append( new wxColourProperty("ColourPropertyWithAlpha",
+ wxPG_LABEL,
+ wxColour(15, 200, 95, 128)) );
+ pg->SetPropertyAttribute("ColourPropertyWithAlpha", "HasAlpha", true);
+ pg->SetPropertyHelpString("ColourPropertyWithAlpha",
+ "Attribute \"HasAlpha\" is set to true for this property.");
+
//
// This demonstrates using alternative editor for colour property
// to trigger colour dialog directly from button.
dt2.SetYear(dt2.GetYear()-10);
#endif
+ wxColour colWithAlpha(1, 128, 254, 100);
+ wxString colWithAlphaStr(colWithAlpha.GetAsString(wxC2S_CSS_SYNTAX));
+
#define FLAG_TEST_SET1 (wxCAPTION|wxCLOSE_BOX|wxSYSTEM_MENU|wxRESIZE_BORDER)
#define FLAG_TEST_SET2 (wxSTAY_ON_TOP|wxCAPTION|wxICONIZE|wxSYSTEM_MENU)
col << pgman->GetPropertyValue("ColourProperty");
if ( col != wxColour(254, 134, 11) )
RT_FAILURE();
+
+ pgman->SetPropertyValueString("ColourPropertyWithAlpha",
+ "(10, 20, 30, 128)");
+ col << pgman->GetPropertyValue("ColourPropertyWithAlpha");
+ if ( col != wxColour(10, 20, 30, 128) )
+ RT_FAILURE();
+ if ( pgman->GetPropertyValueAsString("ColourPropertyWithAlpha")
+ != "(10,20,30,128)" )
+ RT_FAILURE();
}
{
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,
index = m_choices.Index(val.m_type);
}
- return ColourToString(val.m_colour, index);
+ return ColourToString(val.m_colour, index, argFlags);
}
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() &&