Replaced 'InlineHelp' property attribute with 'Hint'; Use SetHint() wxTextCtrl and wxComboCtrl member function to set it; Added a small section about help string and hint text in propgrid overview
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62990 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
107defe36a
commit
534090e354
@ -35,6 +35,7 @@ should carefully read final section in @ref propgrid_compat.
|
||||
@li @ref propgrid_processingvalues
|
||||
@li @ref propgrid_iterating
|
||||
@li @ref propgrid_events
|
||||
@li @ref propgrid_tooltipandhint
|
||||
@li @ref propgrid_validating
|
||||
@li @ref propgrid_populating
|
||||
@li @ref propgrid_cellrender
|
||||
@ -637,6 +638,19 @@ void MyForm::OnPropertyGridChanging( wxPropertyGridEvent& event )
|
||||
to obtain its topmost non-category parent (useful, if you have deeply nested
|
||||
properties).
|
||||
|
||||
@section propgrid_tooltipandhint Help String, Hint and Tool Tips
|
||||
|
||||
For each property you can specify two different types of help text. First,
|
||||
you can use wxPropertyGridInterface::SetPropertyHelpString() or
|
||||
wxPGProperty::SetHelpString() to set property's help text. Second, you
|
||||
can use wxPGProperty::SetAttribute() to set property's "Hint" attribute.
|
||||
|
||||
Difference between hint and help string is that the hint is shown in an empty
|
||||
property value cell, while help string is shown either in the description text
|
||||
box, as a tool tip, or on the status bar, whichever of these is available.
|
||||
|
||||
To enable display of help string as tool tips, you must explicitly use
|
||||
the wxPG_EX_HELP_AS_TOOLTIPS extra window style.
|
||||
|
||||
@section propgrid_validating Validating Property Values
|
||||
|
||||
@ -946,6 +960,8 @@ without warnings or errors.
|
||||
- wxPropertyGridEvent::HasProperty() is removed. You can use GetProperty()
|
||||
as immediate replacement when checking if event has a property.
|
||||
|
||||
- "InlineHelp" property has been replaced with "Hint".
|
||||
|
||||
@subsection propgrid_compat_propdev Property and Editor Sub-classing Changes
|
||||
|
||||
- Confusing custom property macros have been eliminated.
|
||||
|
@ -546,10 +546,17 @@ wxPG_PROP_BEING_DELETED = 0x00200000
|
||||
*/
|
||||
#define wxPG_ATTR_UNITS wxS("Units")
|
||||
|
||||
/** Universal, string. When set, will be shown in property's value cell
|
||||
when displayed value string is empty, or value is unspecified.
|
||||
/** When set, will be shown as 'greyed' text in property's value cell when
|
||||
the actual displayed value is blank.
|
||||
*/
|
||||
#define wxPG_ATTR_HINT wxS("Hint")
|
||||
|
||||
#if wxPG_COMPATIBILITY_1_4
|
||||
/**
|
||||
@deprecated Use "Hint" (wxPG_ATTR_INLINE_HELP) instead.
|
||||
*/
|
||||
#define wxPG_ATTR_INLINE_HELP wxS("InlineHelp")
|
||||
#endif
|
||||
|
||||
/** Universal, wxArrayString. Set to enable auto-completion in any
|
||||
wxTextCtrl-based property editor.
|
||||
@ -683,8 +690,12 @@ wxPG_PROP_BEING_DELETED = 0x00200000
|
||||
#define wxPG_ATTR_MAX wxPGGlobalVars->m_strMax
|
||||
#undef wxPG_ATTR_UNITS
|
||||
#define wxPG_ATTR_UNITS wxPGGlobalVars->m_strUnits
|
||||
#undef wxPG_ATTR_HINT
|
||||
#define wxPG_ATTR_HINT wxPGGlobalVars->m_strHint
|
||||
#if wxPG_COMPATIBILITY_1_4
|
||||
#undef wxPG_ATTR_INLINE_HELP
|
||||
#define wxPG_ATTR_INLINE_HELP wxPGGlobalVars->m_strInlineHelp
|
||||
#endif
|
||||
|
||||
#endif // !SWIG
|
||||
|
||||
@ -1638,6 +1649,11 @@ public:
|
||||
return GetValueAsString(0);
|
||||
}
|
||||
|
||||
/**
|
||||
Returns property's hint text (shown in empty value cell).
|
||||
*/
|
||||
inline wxString GetHintText() const;
|
||||
|
||||
/** Returns property grid where property lies. */
|
||||
wxPropertyGrid* GetGrid() const;
|
||||
|
||||
|
@ -87,7 +87,10 @@ public:
|
||||
wxPGCachedString m_strMin;
|
||||
wxPGCachedString m_strMax;
|
||||
wxPGCachedString m_strUnits;
|
||||
wxPGCachedString m_strHint;
|
||||
#if wxPG_COMPATIBILITY_1_4
|
||||
wxPGCachedString m_strInlineHelp;
|
||||
#endif
|
||||
|
||||
// If true then some things are automatically translated
|
||||
bool m_autoGetTranslation;
|
||||
@ -2146,6 +2149,22 @@ inline unsigned int wxPropertyGridPageState::GetActualVirtualHeight() const
|
||||
}
|
||||
#endif
|
||||
|
||||
wxString wxPGProperty::GetHintText() const
|
||||
{
|
||||
wxVariant vHintText = GetAttribute(wxPGGlobalVars->m_strHint);
|
||||
|
||||
#if wxPG_COMPATIBILITY_1_4
|
||||
// Try the old, deprecated "InlineHelp"
|
||||
if ( vHintText.IsNull() )
|
||||
vHintText = GetAttribute(wxPGGlobalVars->m_strInlineHelp);
|
||||
#endif
|
||||
|
||||
if ( !vHintText.IsNull() )
|
||||
return vHintText.GetString();
|
||||
|
||||
return wxEmptyString;
|
||||
}
|
||||
|
||||
inline int wxPGProperty::GetDisplayedCommonValueCount() const
|
||||
{
|
||||
if ( HasFlag(wxPG_PROP_USES_COMMON_VALUE) )
|
||||
|
@ -41,8 +41,13 @@
|
||||
*/
|
||||
#define wxPG_ATTR_UNITS wxS("Units")
|
||||
|
||||
/** Universal, string. When set, will be shown in property's value cell
|
||||
when displayed value string is empty, or value is unspecified.
|
||||
/** When set, will be shown as 'greyed' text in property's value cell when
|
||||
the actual displayed value is blank.
|
||||
*/
|
||||
#define wxPG_ATTR_HINT wxS("Hint")
|
||||
|
||||
/**
|
||||
@deprecated Use "Hint" (wxPG_ATTR_INLINE_HELP) instead.
|
||||
*/
|
||||
#define wxPG_ATTR_INLINE_HELP wxS("InlineHelp")
|
||||
|
||||
|
@ -1319,10 +1319,16 @@ void FormMain::PopulateWithStandardItems ()
|
||||
pg->SetPropertyAttribute(wxT("Height"), wxPG_ATTR_MAX, (long)2048 );
|
||||
pg->SetPropertyAttribute(wxT("Height"), wxPG_ATTR_UNITS, wxT("Pixels") );
|
||||
|
||||
// Set value to unspecified so that InlineHelp attribute will be demonstrated
|
||||
pg->SetPropertyValueUnspecified(wxT("Height"));
|
||||
pg->SetPropertyAttribute(wxT("Height"), wxPG_ATTR_INLINE_HELP, wxT("Enter new height for window") );
|
||||
pg->SetPropertyHelpString(wxT("Height"), wxT("This property uses attributes \"Units\" and \"InlineHelp\".") );
|
||||
// Set value to unspecified so that Hint attribute will be demonstrated
|
||||
pg->SetPropertyValueUnspecified("Height");
|
||||
pg->SetPropertyAttribute("Height", wxPG_ATTR_HINT,
|
||||
"Enter new height for window" );
|
||||
|
||||
// Difference between hint and help string is that the hint is shown in
|
||||
// an empty value cell, while help string is shown either in the
|
||||
// description text box, as a tool tip, or on the status bar.
|
||||
pg->SetPropertyHelpString("Height",
|
||||
"This property uses attributes \"Units\" and \"InlineHelp\"." );
|
||||
|
||||
pg->Append( new wxIntProperty(wxT("Width"),wxPG_LABEL,640) );
|
||||
pg->SetPropertyAttribute(wxT("Width"), wxPG_ATTR_MIN, (long)10 );
|
||||
@ -1547,6 +1553,7 @@ void FormMain::PopulateWithExamples ()
|
||||
soc.Add( wxT("Look, it continues"), 200 );
|
||||
soc.Add( wxT("Even More"), 240 );
|
||||
soc.Add( wxT("And More"), 280 );
|
||||
soc.Add( "", 300 );
|
||||
soc.Add( wxT("True End of the List"), 320 );
|
||||
|
||||
// Test custom colours ([] operator of wxPGChoices returns
|
||||
@ -1569,6 +1576,12 @@ void FormMain::PopulateWithExamples ()
|
||||
pg->Append( new wxEnumProperty(wxT("EnumProperty 3"),wxPG_LABEL,
|
||||
soc, 240 ) );
|
||||
|
||||
// Test Hint attribute in EnumProperty
|
||||
pg->GetProperty("EnumProperty 3")->SetAttribute("Hint", "Dummy Hint");
|
||||
|
||||
pg->SetPropertyHelpString("EnumProperty 3",
|
||||
"This property uses \"Hint\" attribute.");
|
||||
|
||||
// 'soc' plus one exclusive extra choice "4th only"
|
||||
pg->Append( new wxEnumProperty(wxT("EnumProperty 4"),wxPG_LABEL,
|
||||
soc, 240 ) );
|
||||
@ -1680,6 +1693,9 @@ void FormMain::PopulateWithExamples ()
|
||||
eech,
|
||||
"Choice not in the list") );
|
||||
|
||||
// Test Hint attribute in EditEnumProperty
|
||||
pg->GetProperty("EditEnumProperty")->SetAttribute("Hint", "Dummy Hint");
|
||||
|
||||
//wxString v_;
|
||||
//wxTextValidator validator1(wxFILTER_NUMERIC,&v_);
|
||||
//pg->SetPropertyValidator( wxT("EditEnumProperty"), validator1 );
|
||||
|
@ -482,7 +482,7 @@ void wxPGTextCtrlEditor_OnFocus( wxPGProperty* property,
|
||||
wxTextCtrl* tc )
|
||||
{
|
||||
// Make sure there is correct text (instead of unspecified value
|
||||
// indicator or inline help)
|
||||
// indicator or hint text)
|
||||
int flags = property->HasFlag(wxPG_PROP_READONLY) ?
|
||||
0 : wxPG_EDITABLE_VALUE;
|
||||
wxString correctText = property->GetValueAsString(flags);
|
||||
@ -656,7 +656,17 @@ public:
|
||||
int flags ) const
|
||||
{
|
||||
wxPropertyGrid* pg = GetGrid();
|
||||
pg->OnComboItemPaint( this, item, &dc, (wxRect&)rect, flags );
|
||||
|
||||
// Handle hint text via super class
|
||||
if ( (flags & wxODCB_PAINTING_CONTROL) &&
|
||||
ShouldUseHintText(flags) )
|
||||
{
|
||||
wxOwnerDrawnComboBox::OnDrawItem(dc, rect, item, flags);
|
||||
}
|
||||
else
|
||||
{
|
||||
pg->OnComboItemPaint( this, item, &dc, (wxRect&)rect, flags );
|
||||
}
|
||||
}
|
||||
|
||||
virtual wxCoord OnMeasureItem( size_t item ) const
|
||||
@ -1032,7 +1042,11 @@ wxWindow* wxPGChoiceEditor::CreateControlsBase( wxPropertyGrid* propGrid,
|
||||
cb->SetButtonPosition(si.y,0,wxRIGHT);
|
||||
cb->SetMargins(wxPG_XBEFORETEXT-1);
|
||||
|
||||
wxPGChoiceEditor_SetCustomPaintWidth( propGrid, cb, property->GetCommonValue() );
|
||||
// Set hint text
|
||||
cb->SetHint(property->GetHintText());
|
||||
|
||||
wxPGChoiceEditor_SetCustomPaintWidth( propGrid, cb,
|
||||
property->GetCommonValue() );
|
||||
|
||||
if ( index >= 0 && index < (int)cb->GetCount() )
|
||||
{
|
||||
@ -1898,6 +1912,9 @@ wxWindow* wxPropertyGrid::GenerateEditorTextCtrl( const wxPoint& pos,
|
||||
tc->AutoComplete(attrVal.GetArrayString());
|
||||
}
|
||||
|
||||
// Set hint text
|
||||
tc->SetHint(prop->GetHintText());
|
||||
|
||||
return tc;
|
||||
}
|
||||
|
||||
|
@ -259,12 +259,12 @@ void wxPGDefaultRenderer::Render( wxDC& dc, const wxRect& rect,
|
||||
|
||||
if ( text.length() == 0 )
|
||||
{
|
||||
// Try to show inline help if no text
|
||||
wxVariant vInlineHelp = property->GetAttribute(wxPGGlobalVars->m_strInlineHelp);
|
||||
if ( !vInlineHelp.IsNull() )
|
||||
text = property->GetHintText();
|
||||
if ( text.length() > 0 )
|
||||
{
|
||||
text = vInlineHelp.GetString();
|
||||
dc.SetTextForeground(propertyGrid->GetCellDisabledTextColour());
|
||||
const wxColour& hCol =
|
||||
propertyGrid->GetCellDisabledTextColour();
|
||||
dc.SetTextForeground(hCol);
|
||||
|
||||
// Must make the editor NULL to override it's own rendering
|
||||
// code.
|
||||
|
@ -200,7 +200,10 @@ wxPGGlobalVarsClass::wxPGGlobalVarsClass()
|
||||
m_strMin = wxS("Min");
|
||||
m_strMax = wxS("Max");
|
||||
m_strUnits = wxS("Units");
|
||||
m_strHint = wxS("Hint");
|
||||
#if wxPG_COMPATIBILITY_1_4
|
||||
m_strInlineHelp = wxS("InlineHelp");
|
||||
#endif
|
||||
|
||||
m_warnings = 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user