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).
|
dismissed immediately as text control grabbed the focus).
|
||||||
- wxPropertyGrid: added wxPG_EX_MULTIPLE_SELECTION.
|
- wxPropertyGrid: added wxPG_EX_MULTIPLE_SELECTION.
|
||||||
- wxPropertyGrid: added functions for editing property labels.
|
- 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().
|
- wxPropertyGrid: Added wxPropertyGrid::DedicateKey().
|
||||||
- wxPropertyGridManager: added wxPG_NO_INTERNAL_BORDER,
|
- wxPropertyGridManager: added wxPG_NO_INTERNAL_BORDER,
|
||||||
wxPG_EX_NO_TOOLBAR_DIVIDER and wxPG_EX_TOOLBAR_SEPARATOR styles for finer
|
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,
|
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,
|
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. */
|
/** Defaults. */
|
||||||
wxPG_VFB_DEFAULT = wxPG_VFB_STAY_IN_PROPERTY|wxPG_VFB_BEEP,
|
wxPG_VFB_DEFAULT = wxPG_VFB_STAY_IN_PROPERTY|wxPG_VFB_BEEP,
|
||||||
|
|
||||||
|
@@ -233,10 +233,30 @@ wxPG_VFB_BEEP = 0x02,
|
|||||||
wxPG_VFB_MARK_CELL = 0x04,
|
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,
|
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.
|
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;
|
wxString msg = m_validationInfo.m_failureMessage;
|
||||||
|
|
||||||
if ( !msg.length() )
|
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);
|
DoShowPropertyError(property, msg);
|
||||||
|
|
||||||
|
if ( vfb & wxPG_VFB_SHOW_MESSAGEBOX )
|
||||||
|
::wxMessageBox(msg, _("Property Error"));
|
||||||
}
|
}
|
||||||
|
|
||||||
return (vfb & wxPG_VFB_STAY_IN_PROPERTY) ? false : true;
|
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 )
|
if ( vfb & wxPG_VFB_SHOW_MESSAGE )
|
||||||
{
|
{
|
||||||
DoHidePropertyError(property);
|
DoHidePropertyError(property);
|
||||||
|
Reference in New Issue
Block a user