Added support for 'AutoComplete' attribute, automatically used by any wxTextCtrl-based property editor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59429 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -515,6 +515,11 @@ wxPG_PROP_CLASS_SPECIFIC_2 = 0x00100000
|
|||||||
*/
|
*/
|
||||||
#define wxPG_ATTR_INLINE_HELP wxS("InlineHelp")
|
#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
|
/** wxBoolProperty specific, int, default 0. When 1 sets bool property to
|
||||||
use checkbox instead of choice.
|
use checkbox instead of choice.
|
||||||
*/
|
*/
|
||||||
|
@@ -46,6 +46,11 @@
|
|||||||
*/
|
*/
|
||||||
#define wxPG_ATTR_INLINE_HELP wxS("InlineHelp")
|
#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
|
/** wxBoolProperty specific, int, default 0. When 1 sets bool property to
|
||||||
use checkbox instead of choice.
|
use checkbox instead of choice.
|
||||||
*/
|
*/
|
||||||
@@ -193,6 +198,9 @@
|
|||||||
|
|
||||||
Simple string property. wxPG_STRING_PASSWORD attribute may be used
|
Simple string property. wxPG_STRING_PASSWORD attribute may be used
|
||||||
to echo value as asterisks and use wxTE_PASSWORD for wxTextCtrl.
|
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
|
@remarks wxStringProperty has a special trait: if it has value of
|
||||||
"<composed>", and also has child properties, then its displayed
|
"<composed>", and also has child properties, then its displayed
|
||||||
|
@@ -1531,6 +1531,25 @@ void FormMain::PopulateWithExamples ()
|
|||||||
// Set value after limiting so that it will be applied
|
// Set value after limiting so that it will be applied
|
||||||
pg->SetPropertyValue( wxT("StringProperty"), wxT("some text") );
|
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
|
// Add string property with arbitrarily wide bitmap in front of it. We
|
||||||
// intentionally lower-than-typical row height here so that the ugly
|
// intentionally lower-than-typical row height here so that the ugly
|
||||||
// scaling code wont't be run.
|
// scaling code wont't be run.
|
||||||
|
@@ -1633,12 +1633,12 @@ wxWindow* wxPropertyGrid::GenerateEditorTextCtrl( const wxPoint& pos,
|
|||||||
int maxLen )
|
int maxLen )
|
||||||
{
|
{
|
||||||
wxWindowID id = wxPG_SUBID1;
|
wxWindowID id = wxPG_SUBID1;
|
||||||
wxPGProperty* selected = m_selected;
|
wxPGProperty* prop = m_selected;
|
||||||
wxASSERT(selected);
|
wxASSERT(prop);
|
||||||
|
|
||||||
int tcFlags = wxTE_PROCESS_ENTER | extraStyle;
|
int tcFlags = wxTE_PROCESS_ENTER | extraStyle;
|
||||||
|
|
||||||
if ( selected->HasFlag(wxPG_PROP_READONLY) )
|
if ( prop->HasFlag(wxPG_PROP_READONLY) )
|
||||||
tcFlags |= wxTE_READONLY;
|
tcFlags |= wxTE_READONLY;
|
||||||
|
|
||||||
wxPoint p(pos.x,pos.y);
|
wxPoint p(pos.x,pos.y);
|
||||||
@@ -1675,14 +1675,12 @@ wxWindow* wxPropertyGrid::GenerateEditorTextCtrl( const wxPoint& pos,
|
|||||||
SetupTextCtrlValue(value);
|
SetupTextCtrlValue(value);
|
||||||
tc->Create(ctrlParent,id,value, p, s,tcFlags);
|
tc->Create(ctrlParent,id,value, p, s,tcFlags);
|
||||||
|
|
||||||
wxWindow* ed = tc;
|
|
||||||
|
|
||||||
// Center the control vertically
|
// Center the control vertically
|
||||||
if ( !hasSpecialSize )
|
if ( !hasSpecialSize )
|
||||||
FixPosForTextCtrl(ed);
|
FixPosForTextCtrl(tc);
|
||||||
|
|
||||||
#ifdef __WXMSW__
|
#ifdef __WXMSW__
|
||||||
ed->Show();
|
tc->Show();
|
||||||
if ( secondary )
|
if ( secondary )
|
||||||
secondary->Show();
|
secondary->Show();
|
||||||
#endif
|
#endif
|
||||||
@@ -1691,7 +1689,14 @@ wxWindow* wxPropertyGrid::GenerateEditorTextCtrl( const wxPoint& pos,
|
|||||||
if ( maxLen > 0 )
|
if ( maxLen > 0 )
|
||||||
tc->SetMaxLength( maxLen );
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------
|
// -----------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user