if ( grid->GetState() == state )
grid->DoSelectProperty(NULL, wxPG_SEL_DELETING|wxPG_SEL_NOVALIDATE);
- state->DoDelete( p );
+ state->DoDelete( p, true );
RefreshGrid(state);
}
// -----------------------------------------------------------------------
+wxPGProperty* wxPropertyGridInterface::RemoveProperty( wxPGPropArg id )
+{
+ wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxNullProperty)
+
+ wxCHECK( !p->GetChildCount() || p->HasFlag(wxPG_PROP_AGGREGATE),
+ wxNullProperty);
+
+ wxPropertyGridPageState* state = p->GetParentState();
+ wxPropertyGrid* grid = state->GetGrid();
+
+ if ( grid->GetState() == state )
+ {
+ grid->DoSelectProperty(NULL,
+ wxPG_SEL_DELETING|wxPG_SEL_NOVALIDATE);
+ }
+
+ state->DoDelete( p, false );
+
+ // Mark the property as 'unattached'
+ p->m_parentState = NULL;
+ p->m_parent = NULL;
+
+ RefreshGrid(state);
+
+ return p;
+}
+
+// -----------------------------------------------------------------------
+
wxPGProperty* wxPropertyGridInterface::ReplaceProperty( wxPGPropArg id, wxPGProperty* property )
{
wxPG_PROP_ARG_CALL_PROLOG_RETVAL(wxNullProperty)
flags |= wxPG_SEL_NOVALIDATE;
wxPropertyGridPageState* state = m_pState;
- wxPropertyGrid* pg = state->GetGrid();
- if ( pg->GetState() == state )
- return pg->DoSelectProperty(NULL, flags);
- else
- state->SetSelection(NULL);
+
+ if ( state )
+ {
+ wxPropertyGrid* pg = state->GetGrid();
+ if ( pg->GetState() == state )
+ return pg->DoSelectProperty(NULL, flags);
+ else
+ state->SetSelection(NULL);
+ }
+
return true;
}
// -----------------------------------------------------------------------
-void wxPropertyGridInterface::SetPropertyValueUnspecified( wxPGPropArg id )
-{
- wxPG_PROP_ARG_CALL_PROLOG()
- wxPropertyGrid* propGrid = p->GetGridIfDisplayed();
- if ( propGrid )
- propGrid->DoSetPropertyValueUnspecified(p);
- else
- p->GetParentState()->DoSetPropertyValueUnspecified(p);
-}
-
-// -----------------------------------------------------------------------
-
void wxPropertyGridInterface::ClearModifiedStatus()
{
unsigned int pageIndex = 0;
pageIndex++;
}
+
+ // Update active editor control, if any
+ GetPropertyGrid()->RefreshEditor();
}
// -----------------------------------------------------------------------
wxPG_PROP_ARG_CALL_PROLOG()
if ( p )
- {
p->SetValue(value);
- wxPropertyGrid* propGrid = p->GetGridIfDisplayed();
- if ( propGrid )
- propGrid->DrawItemAndValueRelated( p );
-
- }
}
// -----------------------------------------------------------------------
{
wxPG_PROP_ARG_CALL_PROLOG()
- if ( m_pState->DoSetPropertyValueString(p,value) )
- {
- wxPropertyGrid* propGrid = p->GetGridIfDisplayed();
- if ( propGrid )
- propGrid->DrawItemAndValueRelated( p );
- }
+ if ( p )
+ m_pState->DoSetPropertyValueString(p, value);
}
// -----------------------------------------------------------------------
// -----------------------------------------------------------------------
+void wxPropertyGridInterface::Sort( int flags )
+{
+ wxPropertyGrid* pg = GetPropertyGrid();
+
+ pg->ClearSelection(false);
+
+ unsigned int pageIndex = 0;
+
+ for (;;)
+ {
+ wxPropertyGridPageState* page = GetPageState(pageIndex);
+ if ( !page ) break;
+ page->DoSort(flags);
+ pageIndex++;
+ }
+}
+
+// -----------------------------------------------------------------------
+
void wxPropertyGridInterface::SetPropertyLabel( wxPGPropArg id, const wxString& newproplabel )
{
wxPG_PROP_ARG_CALL_PROLOG()