Added new wxPropertyGrid property validation failure flags wxPG_VFB_SHOW_MESSAGEBOX and wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR, which allow defining the default message display behavior more accurately

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64805 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Jaakko Salli
2010-07-04 08:22:52 +00:00
parent a3669fa95b
commit 0ea0604a1e
4 changed files with 78 additions and 5 deletions

View File

@@ -496,6 +496,8 @@ All (GUI):
dismissed immediately as text control grabbed the focus).
- wxPropertyGrid: added wxPG_EX_MULTIPLE_SELECTION.
- wxPropertyGrid: added functions for editing property labels.
- wxPropertyGrid: many fixes to property validation failure behavior. Added
new flags: wxPG_VFB_SHOW_MESSAGEBOX and wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR.
- wxPropertyGrid: Added wxPropertyGrid::DedicateKey().
- wxPropertyGridManager: added wxPG_NO_INTERNAL_BORDER,
wxPG_EX_NO_TOOLBAR_DIVIDER and wxPG_EX_TOOLBAR_SEPARATOR styles for finer

View File

@@ -389,10 +389,31 @@ wxPG_VFB_BEEP = 0x02,
*/
wxPG_VFB_MARK_CELL = 0x04,
/** Display customizable text message explaining the situation.
/**
Display a text message explaining the situation.
To customize the way the message is displayed, you need to
reimplement wxPropertyGrid::DoShowPropertyError() in a
derived class. Default behavior is to display the text on
the top-level frame's status bar, if present, and otherwise
using wxMessageBox.
*/
wxPG_VFB_SHOW_MESSAGE = 0x08,
/**
Similar to wxPG_VFB_SHOW_MESSAGE, except always displays the
message using wxMessageBox.
*/
wxPG_VFB_SHOW_MESSAGEBOX = 0x10,
/**
Similar to wxPG_VFB_SHOW_MESSAGE, except always displays the
message on the status bar (when present - you can reimplement
wxPropertyGrid::GetStatusBar() in a derived class to specify
this yourself).
*/
wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR = 0x20,
/** Defaults. */
wxPG_VFB_DEFAULT = wxPG_VFB_STAY_IN_PROPERTY|wxPG_VFB_BEEP,

View File

@@ -233,10 +233,30 @@ wxPG_VFB_BEEP = 0x02,
wxPG_VFB_MARK_CELL = 0x04,
/**
Display customizable text message explaining the situation.
Display a text message explaining the situation.
To customize the way the message is displayed, you need to
reimplement wxPropertyGrid::DoShowPropertyError() in a
derived class. Default behavior is to display the text on
the top-level frame's status bar, if present, and otherwise
using wxMessageBox.
*/
wxPG_VFB_SHOW_MESSAGE = 0x08,
/**
Similar to wxPG_VFB_SHOW_MESSAGE, except always displays the
message using wxMessageBox.
*/
wxPG_VFB_SHOW_MESSAGEBOX = 0x10,
/**
Similar to wxPG_VFB_SHOW_MESSAGE, except always displays the
message on the status bar (when present - you can reimplement
wxPropertyGrid::GetStatusBar() in a derived class to specify
this yourself).
*/
wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR = 0x20,
/**
Defaults.
*/

View File

@@ -3247,14 +3247,32 @@ bool wxPropertyGrid::DoOnValidationFailure( wxPGProperty* property, wxVariant& W
}
}
if ( vfb & wxPG_VFB_SHOW_MESSAGE )
if ( vfb & (wxPG_VFB_SHOW_MESSAGE |
wxPG_VFB_SHOW_MESSAGEBOX |
wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR) )
{
wxString msg = m_validationInfo.m_failureMessage;
if ( !msg.length() )
msg = wxT("You have entered invalid value. Press ESC to cancel editing.");
msg = _("You have entered invalid value. Press ESC to cancel editing.");
#if wxUSE_STATUSBAR
if ( vfb & wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR )
{
if ( !wxPGGlobalVars->m_offline )
{
wxStatusBar* pStatusBar = GetStatusBar();
if ( pStatusBar )
pStatusBar->SetStatusText(msg);
}
}
#endif
if ( vfb & wxPG_VFB_SHOW_MESSAGE )
DoShowPropertyError(property, msg);
if ( vfb & wxPG_VFB_SHOW_MESSAGEBOX )
::wxMessageBox(msg, _("Property Error"));
}
return (vfb & wxPG_VFB_STAY_IN_PROPERTY) ? false : true;
@@ -3284,6 +3302,18 @@ void wxPropertyGrid::DoOnValidationFailureReset( wxPGProperty* property )
}
}
#if wxUSE_STATUSBAR
if ( vfb & wxPG_VFB_SHOW_MESSAGE_ON_STATUSBAR )
{
if ( !wxPGGlobalVars->m_offline )
{
wxStatusBar* pStatusBar = GetStatusBar();
if ( pStatusBar )
pStatusBar->SetStatusText(wxEmptyString);
}
}
#endif
if ( vfb & wxPG_VFB_SHOW_MESSAGE )
{
DoHidePropertyError(property);