From 68174df30e9dd2dc0d3b257cb2218d01f80630d4 Mon Sep 17 00:00:00 2001 From: Jaakko Salli Date: Sun, 20 Dec 2009 12:48:41 +0000 Subject: [PATCH] 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 --- include/wx/propgrid/propgrid.h | 8 ++++++++ interface/wx/propgrid/propgrid.h | 8 ++++++++ src/propgrid/editors.cpp | 31 +++++++++++++++++++++++++------ src/propgrid/property.cpp | 5 +++-- src/propgrid/propgrid.cpp | 6 ++++++ 5 files changed, 50 insertions(+), 8 deletions(-) diff --git a/include/wx/propgrid/propgrid.h b/include/wx/propgrid/propgrid.h index db6c2bb94d..494423697d 100644 --- a/include/wx/propgrid/propgrid.h +++ b/include/wx/propgrid/propgrid.h @@ -1239,6 +1239,14 @@ public: 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 virtual width should be disabled. */ void SetVirtualWidth( int width ); diff --git a/interface/wx/propgrid/propgrid.h b/interface/wx/propgrid/propgrid.h index a21f8cbcc0..c9bc3dfc0a 100644 --- a/interface/wx/propgrid/propgrid.h +++ b/interface/wx/propgrid/propgrid.h @@ -740,6 +740,14 @@ public: */ 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. */ diff --git a/src/propgrid/editors.cpp b/src/propgrid/editors.cpp index d20d1d6137..fa487428a4 100644 --- a/src/propgrid/editors.cpp +++ b/src/propgrid/editors.cpp @@ -173,6 +173,9 @@ void wxPGEditor::DrawValue( wxDC& dc, const wxRect& rect, wxPGProperty* property { if ( !property->IsValueUnspecified() ) 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 @@ -232,9 +235,9 @@ wxPGWindowList wxPGTextCtrlEditor::CreateControls( wxPropertyGrid* propGrid, property->GetChildCount() ) return NULL; - if ( !property->IsValueUnspecified() ) - text = property->GetValueAsString(property->HasFlag(wxPG_PROP_READONLY) ? - 0 : wxPG_EDITABLE_VALUE); + int argFlags = property->HasFlag(wxPG_PROP_READONLY) ? + 0 : wxPG_EDITABLE_VALUE; + text = property->GetValueAsString(argFlags); int flags = 0; 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 if ( pg ) { - wxString unspecValueText; + wxString unspecValueText = pg->GetUnspecifiedValueText(); pg->SetupTextCtrlValue(unspecValueText); tc->SetValue(unspecValueText); } @@ -987,6 +990,7 @@ bool wxPGChoiceEditor::OnEvent( wxPropertyGrid* propGrid, wxPGProperty* property if ( !cb->HasFlag(wxCB_READONLY) ) { wxString unspecValueText; + unspecValueText = propGrid->GetUnspecifiedValueText(); propGrid->SetupTextCtrlValue(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; - 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); + } } diff --git a/src/propgrid/property.cpp b/src/propgrid/property.cpp index e57a9406ce..1e9f6100bd 100644 --- a/src/propgrid/property.cpp +++ b/src/propgrid/property.cpp @@ -928,8 +928,10 @@ wxString wxPGProperty::GetValueAsString( int argFlags ) const } #endif + wxPropertyGrid* pg = GetGrid(); + if ( IsValueUnspecified() ) - return wxEmptyString; + return pg->GetUnspecifiedValueText(argFlags); if ( m_commonValue == -1 ) { @@ -939,7 +941,6 @@ wxString wxPGProperty::GetValueAsString( int argFlags ) const // // Return common value's string representation - wxPropertyGrid* pg = GetGrid(); const wxPGCommonValue* cv = pg->GetCommonValue(m_commonValue); if ( argFlags & wxPG_FULL_VALUE ) diff --git a/src/propgrid/propgrid.cpp b/src/propgrid/propgrid.cpp index 96bd168463..b35676b458 100644 --- a/src/propgrid/propgrid.cpp +++ b/src/propgrid/propgrid.cpp @@ -3629,6 +3629,12 @@ void wxPropertyGrid::CustomSetCursor( int type, bool override ) m_curcursor = type; } +wxString +wxPropertyGrid::GetUnspecifiedValueText( int WXUNUSED(argFlags) ) const +{ + return wxEmptyString; +} + // ----------------------------------------------------------------------- // wxPropertyGrid property selection, editor creation // ----------------------------------------------------------------------- -- 2.45.2