Added wxPropertyGrid::GetUnspecifiedValueText(). Use it instead of assuming that the unspecified value text is always an empty string.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62955 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Jaakko Salli
2009-12-20 12:48:41 +00:00
parent 0871417690
commit 68174df30e
5 changed files with 50 additions and 8 deletions

View File

@@ -1239,6 +1239,14 @@ public:
return m_sortFunction; return m_sortFunction;
} }
/**
Returns (visual) text representation of the unspecified
property value.
@param argFlags For internal use only.
*/
wxString GetUnspecifiedValueText( int argFlags = 0 ) const;
/** Set virtual width for this particular page. Width -1 indicates that the /** Set virtual width for this particular page. Width -1 indicates that the
virtual width should be disabled. */ virtual width should be disabled. */
void SetVirtualWidth( int width ); void SetVirtualWidth( int width );

View File

@@ -740,6 +740,14 @@ public:
*/ */
wxTextCtrl* GetEditorTextCtrl() const; wxTextCtrl* GetEditorTextCtrl() const;
/**
Returns (visual) text representation of the unspecified
property value.
@param argFlags For internal use only.
*/
wxString GetUnspecifiedValueText( int argFlags = 0 ) const;
/** /**
Returns current vertical spacing. Returns current vertical spacing.
*/ */

View File

@@ -173,6 +173,9 @@ void wxPGEditor::DrawValue( wxDC& dc, const wxRect& rect, wxPGProperty* property
{ {
if ( !property->IsValueUnspecified() ) if ( !property->IsValueUnspecified() )
dc.DrawText( text, rect.x+wxPG_XBEFORETEXT, rect.y ); dc.DrawText( text, rect.x+wxPG_XBEFORETEXT, rect.y );
else
dc.DrawText( property->GetGrid()->GetUnspecifiedValueText(),
rect.x+wxPG_XBEFORETEXT, rect.y );
} }
bool wxPGEditor::GetValueFromControl( wxVariant&, wxPGProperty*, wxWindow* ) const bool wxPGEditor::GetValueFromControl( wxVariant&, wxPGProperty*, wxWindow* ) const
@@ -232,9 +235,9 @@ wxPGWindowList wxPGTextCtrlEditor::CreateControls( wxPropertyGrid* propGrid,
property->GetChildCount() ) property->GetChildCount() )
return NULL; return NULL;
if ( !property->IsValueUnspecified() ) int argFlags = property->HasFlag(wxPG_PROP_READONLY) ?
text = property->GetValueAsString(property->HasFlag(wxPG_PROP_READONLY) ? 0 : wxPG_EDITABLE_VALUE;
0 : wxPG_EDITABLE_VALUE); text = property->GetValueAsString(argFlags);
int flags = 0; int flags = 0;
if ( (property->GetFlags() & wxPG_PROP_PASSWORD) && if ( (property->GetFlags() & wxPG_PROP_PASSWORD) &&
@@ -371,7 +374,7 @@ void wxPGTextCtrlEditor::SetValueToUnspecified( wxPGProperty* property, wxWindow
wxASSERT(pg); // Really, property grid should exist if editor does wxASSERT(pg); // Really, property grid should exist if editor does
if ( pg ) if ( pg )
{ {
wxString unspecValueText; wxString unspecValueText = pg->GetUnspecifiedValueText();
pg->SetupTextCtrlValue(unspecValueText); pg->SetupTextCtrlValue(unspecValueText);
tc->SetValue(unspecValueText); tc->SetValue(unspecValueText);
} }
@@ -987,6 +990,7 @@ bool wxPGChoiceEditor::OnEvent( wxPropertyGrid* propGrid, wxPGProperty* property
if ( !cb->HasFlag(wxCB_READONLY) ) if ( !cb->HasFlag(wxCB_READONLY) )
{ {
wxString unspecValueText; wxString unspecValueText;
unspecValueText = propGrid->GetUnspecifiedValueText();
propGrid->SetupTextCtrlValue(unspecValueText); propGrid->SetupTextCtrlValue(unspecValueText);
cb->GetTextCtrl()->SetValue(unspecValueText); cb->GetTextCtrl()->SetValue(unspecValueText);
} }
@@ -1036,10 +1040,25 @@ void wxPGChoiceEditor::SetControlIntValue( wxPGProperty* WXUNUSED(property), wxW
} }
void wxPGChoiceEditor::SetValueToUnspecified( wxPGProperty* WXUNUSED(property), wxWindow* ctrl ) const void wxPGChoiceEditor::SetValueToUnspecified( wxPGProperty* property,
wxWindow* ctrl ) const
{ {
wxOwnerDrawnComboBox* cb = (wxOwnerDrawnComboBox*)ctrl; wxOwnerDrawnComboBox* cb = (wxOwnerDrawnComboBox*)ctrl;
cb->SetSelection(-1);
if ( !cb->HasFlag(wxCB_READONLY) )
{
wxPropertyGrid* pg = property->GetGrid();
if ( pg )
{
wxString tcText = pg->GetUnspecifiedValueText();
pg->SetupTextCtrlValue(tcText);
cb->SetValue(tcText);
}
}
else
{
cb->SetSelection(-1);
}
} }

View File

@@ -928,8 +928,10 @@ wxString wxPGProperty::GetValueAsString( int argFlags ) const
} }
#endif #endif
wxPropertyGrid* pg = GetGrid();
if ( IsValueUnspecified() ) if ( IsValueUnspecified() )
return wxEmptyString; return pg->GetUnspecifiedValueText(argFlags);
if ( m_commonValue == -1 ) if ( m_commonValue == -1 )
{ {
@@ -939,7 +941,6 @@ wxString wxPGProperty::GetValueAsString( int argFlags ) const
// //
// Return common value's string representation // Return common value's string representation
wxPropertyGrid* pg = GetGrid();
const wxPGCommonValue* cv = pg->GetCommonValue(m_commonValue); const wxPGCommonValue* cv = pg->GetCommonValue(m_commonValue);
if ( argFlags & wxPG_FULL_VALUE ) if ( argFlags & wxPG_FULL_VALUE )

View File

@@ -3629,6 +3629,12 @@ void wxPropertyGrid::CustomSetCursor( int type, bool override )
m_curcursor = type; m_curcursor = type;
} }
wxString
wxPropertyGrid::GetUnspecifiedValueText( int WXUNUSED(argFlags) ) const
{
return wxEmptyString;
}
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
// wxPropertyGrid property selection, editor creation // wxPropertyGrid property selection, editor creation
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------