git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56015
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
// Call for after sub-properties added with AddChild
void PrepareSubProperties();
// Call for after sub-properties added with AddChild
void PrepareSubProperties();
+ // Removes child property with given pointer. Does not delete it.
+ void RemoveChild( wxPGProperty* p );
+
void SetParentalType( int flag )
{
m_flags &= ~(wxPG_PROP_PROPERTY|wxPG_PROP_PARENTAL_FLAGS);
void SetParentalType( int flag )
{
m_flags &= ~(wxPG_PROP_PROPERTY|wxPG_PROP_PARENTAL_FLAGS);
+void wxPGProperty::RemoveChild( wxPGProperty* p )
+{
+ wxArrayPGProperty::iterator it;
+ wxArrayPGProperty& children = m_children;
+
+ for ( it=children.begin(); it != children.end(); it++ )
+ {
+ if ( *it == p )
+ {
+ m_children.erase(it);
+ break;
+ }
+ }
+}
void wxPGProperty::AdaptListToValue( wxVariant& list, wxVariant* value ) const
{
void wxPGProperty::AdaptListToValue( wxVariant& list, wxVariant* value ) const
{
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
+#if wxUSE_STL
+#include <algorithm>
+
+static bool wxPG_SortFunc(wxPGProperty *p1, wxPGProperty *p2)
+{
+ return p1->GetLabel() < p2->GetLabel();
+}
+
+#else
+
static int wxPG_SortFunc(wxPGProperty **p1, wxPGProperty **p2)
{
wxPGProperty *pp1 = *p1;
static int wxPG_SortFunc(wxPGProperty **p1, wxPGProperty **p2)
{
wxPGProperty *pp1 = *p1;
return pp1->GetLabel().compare( pp2->GetLabel() );
}
return pp1->GetLabel().compare( pp2->GetLabel() );
}
void wxPropertyGridPageState::SortChildren( wxPGProperty* p )
{
if ( !p )
void wxPropertyGridPageState::SortChildren( wxPGProperty* p )
{
if ( !p )
if ( pwc->GetChildCount() < 1 )
return;
if ( pwc->GetChildCount() < 1 )
return;
+#if wxUSE_STL
+ std::sort(pwc->m_children.begin(), pwc->m_children.end(), wxPG_SortFunc);
+#else
pwc->m_children.Sort( wxPG_SortFunc );
pwc->m_children.Sort( wxPG_SortFunc );
// Fix indexes
pwc->FixIndexesOfChildren();
// Fix indexes
pwc->FixIndexesOfChildren();
wxPGProperty * p = pwc->Item( i );
wxASSERT( p != NULL );
if ( !p->IsCategory() )
wxPGProperty * p = pwc->Item( i );
wxASSERT( p != NULL );
if ( !p->IsCategory() )
- m_abcArray->m_children.Remove( p );
+ m_abcArray->RemoveChild(p);
}
if ( IsInNonCatMode() )
}
if ( IsInNonCatMode() )
if ( !item->IsCategory() && item->GetParent()->IsCategory() )
{
if ( m_abcArray )
if ( !item->IsCategory() && item->GetParent()->IsCategory() )
{
if ( m_abcArray )
- {
- m_abcArray->m_children.Remove( item );
- }
+ m_abcArray->RemoveChild(item);
}
// categorized mode - categorized array
}
// categorized mode - categorized array
- item->m_parent->m_children.RemoveAt(indinparent);
- item->m_parent->FixIndexesOfChildren(/*indinparent*/);
+ wxArrayPGProperty& parentsChildren = item->m_parent->m_children;
+ parentsChildren.erase( parentsChildren.begin() + indinparent );
+ item->m_parent->FixIndexesOfChildren();
- cat_parent->m_children.RemoveAt(cat_index);
+ cat_parent->m_children.erase(cat_parent->m_children.begin()+cat_index);
// non-categorized mode - non-categorized array
if ( !item->IsCategory() )
{
wxASSERT( item->m_parent == m_abcArray );
// non-categorized mode - non-categorized array
if ( !item->IsCategory() )
{
wxASSERT( item->m_parent == m_abcArray );
- item->m_parent->m_children.RemoveAt(indinparent);
+ wxArrayPGProperty& parentsChildren = item->m_parent->m_children;
+ parentsChildren.erase(parentsChildren.begin() + indinparent);
item->m_parent->FixIndexesOfChildren(indinparent);
}
}
item->m_parent->FixIndexesOfChildren(indinparent);
}
}