return wxEmptyString;
}
-void wxPGProperty::GenerateComposedValue( wxString& text,
- int argFlags,
- const wxVariantList* valueOverrides,
- wxPGHashMapS2S* childResults ) const
+void wxPGProperty::DoGenerateComposedValue( wxString& text,
+ int argFlags,
+ const wxVariantList* valueOverrides,
+ wxPGHashMapS2S* childResults ) const
{
int i;
int iMax = m_children.size();
childValue.GetType() == wxPG_VARIANT_TYPE_LIST )
{
wxVariantList& childList = childValue.GetList();
- GenerateComposedValue(s, argFlags|wxPG_COMPOSITE_FRAGMENT,
- &childList, childResults);
+ DoGenerateComposedValue(s, argFlags|wxPG_COMPOSITE_FRAGMENT,
+ &childList, childResults);
}
else
{
"implementation only works if value is m_value." );
wxString text;
- GenerateComposedValue(text, argFlags);
+ DoGenerateComposedValue(text, argFlags);
return text;
}
wxVariantList temp_list;
wxVariant list(temp_list);
- int propagatedFlags = argFlags & wxPG_REPORT_ERROR;
+ int propagatedFlags = argFlags & (wxPG_REPORT_ERROR|wxPG_PROGRAMMATIC_VALUE);
#ifdef __WXDEBUG__
bool debug_print = false;
if ( !addOnlyIfNotEmpty || len > 0 )
{
const wxPGProperty* child = Item(curChild);
+ wxVariant variant(child->GetValue());
+ variant.SetName(child->GetBaseName());
+
#ifdef __WXDEBUG__
if ( debug_print )
wxLogDebug(wxT("token = '%s', child = %s"),token.c_str(),child->GetLabel().c_str());
#endif
- if ( len > 0 )
+ // Add only if editable or setting programmatically
+ if ( (argFlags & wxPG_PROGRAMMATIC_VALUE) ||
+ !child->HasFlag(wxPG_PROP_DISABLED|wxPG_PROP_READONLY) )
{
- bool wasUnspecified = child->IsValueUnspecified();
-
- wxVariant variant(child->GetValueRef());
- if ( child->StringToValue(variant, token, propagatedFlags|wxPG_COMPOSITE_FRAGMENT) )
+ if ( len > 0 )
{
- variant.SetName(child->GetBaseName());
+ bool wasUnspecified = child->IsValueUnspecified();
- // Clear unspecified flag only if OnSetValue() didn't
- // affect it.
- if ( child->IsValueUnspecified() &&
- (wasUnspecified || !UsesAutoUnspecified()) )
+ if ( child->StringToValue(variant, token, propagatedFlags|wxPG_COMPOSITE_FRAGMENT) )
{
- variant = child->GetDefaultValue();
- }
+ // Clear unspecified flag only if OnSetValue() didn't
+ // affect it.
+ if ( child->IsValueUnspecified() &&
+ (wasUnspecified || !UsesAutoUnspecified()) )
+ {
+ variant = child->GetDefaultValue();
+ }
- list.Append(variant);
+ list.Append(variant);
+ changed = true;
+ }
+ }
+ else
+ {
+ // Empty, becomes unspecified
+ variant.MakeNull();
+ list.Append(variant);
changed = true;
}
}
- else
- {
- // Empty, becomes unspecified
- wxVariant variant2;
- variant2.SetName(child->GetBaseName());
- list.Append(variant2);
- changed = true;
- }
curChild++;
if ( curChild >= iMax )
wxVariant oldChildValue = child->GetValue();
wxVariant variant(oldChildValue);
- bool stvRes = child->StringToValue( variant, token, propagatedFlags );
- if ( stvRes || (variant != oldChildValue) )
+
+ if ( (argFlags & wxPG_PROGRAMMATIC_VALUE) ||
+ !child->HasFlag(wxPG_PROP_DISABLED|wxPG_PROP_READONLY) )
{
- if ( stvRes )
+ bool stvRes = child->StringToValue( variant, token, propagatedFlags );
+ if ( stvRes || (variant != oldChildValue) )
+ {
+ if ( stvRes )
+ changed = true;
+ }
+ else
+ {
+ // Failed, becomes unspecified
+ variant.MakeNull();
changed = true;
- }
- else
- {
- // Failed, becomes unspecified
- variant.MakeNull();
- changed = true;
+ }
}
variant.SetName(child->GetBaseName());
!parent->IsCategory() && !parent->IsRoot() )
{
wxString s;
- parent->GenerateComposedValue(s);
+ parent->DoGenerateComposedValue(s);
parent->m_value = s;
return parent->UpdateParentValues();
}