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:
@@ -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
|
||||
|
@@ -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,
|
||||
|
||||
|
@@ -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.
|
||||
*/
|
||||
|
@@ -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.");
|
||||
|
||||
DoShowPropertyError(property, msg);
|
||||
#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);
|
||||
|
Reference in New Issue
Block a user