Added 'HasAlpha' attribute for wxColourProperty. Setting it to true allows user to edit the alpha component.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66520 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -451,6 +451,7 @@ All (GUI):
|
||||
- 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:
|
||||
|
||||
|
@@ -203,7 +203,8 @@ public:
|
||||
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).
|
||||
|
@@ -697,6 +697,12 @@ wxPG_PROP_BEING_DELETED = 0x00200000
|
||||
*/
|
||||
#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")
|
||||
|
||||
/** @}
|
||||
*/
|
||||
|
||||
|
@@ -173,6 +173,12 @@
|
||||
*/
|
||||
#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")
|
||||
|
||||
/** @}
|
||||
*/
|
||||
|
||||
@@ -527,6 +533,9 @@ wxPG_PROP_BEING_DELETED = 0x00200000
|
||||
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
|
||||
|
@@ -1259,13 +1259,19 @@ void FormMain::PopulateWithExamples ()
|
||||
#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.
|
||||
|
@@ -616,6 +616,9 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
|
||||
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)
|
||||
|
||||
@@ -762,6 +765,15 @@ bool FormMain::RunTests( bool fullTest, bool interactive )
|
||||
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();
|
||||
}
|
||||
|
||||
{
|
||||
|
@@ -1143,15 +1143,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)"),
|
||||
{
|
||||
|
||||
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 +1198,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);
|
||||
}
|
||||
|
||||
|
||||
@@ -1383,12 +1403,31 @@ 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 )
|
||||
{
|
||||
// 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();
|
||||
}
|
||||
}
|
||||
|
||||
if ( !conversionSuccess )
|
||||
conversionSuccess = customColour.Set(colStr);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user