*/
#define wxPG_ATTR_INLINE_HELP wxS("InlineHelp")
+/** Universal, wxArrayString. Set to enable auto-completion in any
+ wxTextCtrl-based property editor.
+*/
+#define wxPG_ATTR_AUTOCOMPLETE wxS("AutoComplete")
+
/** wxBoolProperty specific, int, default 0. When 1 sets bool property to
use checkbox instead of choice.
*/
*/
#define wxPG_ATTR_INLINE_HELP wxS("InlineHelp")
+/** Universal, wxArrayString. Set to enable auto-completion in any
+ wxTextCtrl-based property editor.
+*/
+#define wxPG_ATTR_AUTOCOMPLETE wxS("AutoComplete")
+
/** wxBoolProperty specific, int, default 0. When 1 sets bool property to
use checkbox instead of choice.
*/
Simple string property. wxPG_STRING_PASSWORD attribute may be used
to echo value as asterisks and use wxTE_PASSWORD for wxTextCtrl.
+ wxPG_ATTR_AUTOCOMPLETE attribute may be used to enable auto-completion
+ (use a wxArrayString value), and is also supported by any property that
+ happens to use a wxTextCtrl-based editor.
@remarks wxStringProperty has a special trait: if it has value of
"<composed>", and also has child properties, then its displayed
// Set value after limiting so that it will be applied
pg->SetPropertyValue( wxT("StringProperty"), wxT("some text") );
+ //
+ // Demonstrate "AutoComplete" attribute
+ pg->Append( new wxStringProperty( "StringProperty AutoComplete",
+ wxPG_LABEL ) );
+
+ wxArrayString autoCompleteStrings;
+ autoCompleteStrings.Add("One choice");
+ autoCompleteStrings.Add("Another choice");
+ autoCompleteStrings.Add("Another choice, yeah");
+ autoCompleteStrings.Add("Yet another choice");
+ autoCompleteStrings.Add("Yet another choice, bear with me");
+ pg->SetPropertyAttribute( "StringProperty AutoComplete",
+ "AutoComplete",
+ autoCompleteStrings );
+
+ pg->SetPropertyHelpString( "StringProperty AutoComplete",
+ "AutoComplete attribute has been set for this property "
+ "(try writing something beginning with 'a', 'o' or 'y').");
+
// Add string property with arbitrarily wide bitmap in front of it. We
// intentionally lower-than-typical row height here so that the ugly
// scaling code wont't be run.
int maxLen )
{
wxWindowID id = wxPG_SUBID1;
- wxPGProperty* selected = m_selected;
- wxASSERT(selected);
+ wxPGProperty* prop = m_selected;
+ wxASSERT(prop);
int tcFlags = wxTE_PROCESS_ENTER | extraStyle;
- if ( selected->HasFlag(wxPG_PROP_READONLY) )
+ if ( prop->HasFlag(wxPG_PROP_READONLY) )
tcFlags |= wxTE_READONLY;
wxPoint p(pos.x,pos.y);
SetupTextCtrlValue(value);
tc->Create(ctrlParent,id,value, p, s,tcFlags);
- wxWindow* ed = tc;
-
// Center the control vertically
if ( !hasSpecialSize )
- FixPosForTextCtrl(ed);
+ FixPosForTextCtrl(tc);
#ifdef __WXMSW__
- ed->Show();
+ tc->Show();
if ( secondary )
secondary->Show();
#endif
if ( maxLen > 0 )
tc->SetMaxLength( maxLen );
- return (wxWindow*) ed;
+ wxVariant attrVal = prop->GetAttribute(wxPG_ATTR_AUTOCOMPLETE);
+ if ( !attrVal.IsNull() )
+ {
+ wxASSERT(attrVal.GetType() == wxS("arrstring"));
+ tc->AutoComplete(attrVal.GetArrayString());
+ }
+
+ return tc;
}
// -----------------------------------------------------------------------