fixes error/usage messages given by the cmd line parsing logic in wxApp;
also fixed the handling of long-only options in the usage messages git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13058 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -63,6 +63,10 @@ Unix ports:
|
|||||||
2.3.3
|
2.3.3
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
All:
|
||||||
|
|
||||||
|
- fixes to the command line parsing error and usage messages
|
||||||
|
|
||||||
wxMSW:
|
wxMSW:
|
||||||
|
|
||||||
- fixed flicker in wxTreeCtrl::SetItemXXX()
|
- fixed flicker in wxTreeCtrl::SetItemXXX()
|
||||||
|
@@ -405,12 +405,20 @@ Add a parameter of the given {\it type} to the command line description.
|
|||||||
|
|
||||||
\membersection{wxCmdLineParser::Parse}\label{wxcmdlineparserparse}
|
\membersection{wxCmdLineParser::Parse}\label{wxcmdlineparserparse}
|
||||||
|
|
||||||
\func{int}{Parse}{\void}
|
\func{int}{Parse}{\param{bool }{giveUsage = {\tt TRUE}}}
|
||||||
|
|
||||||
Parse the command line, return $0$ if ok, $-1$ if {\tt "-h"} or {\tt "--help"}
|
Parse the command line, return $0$ if ok, $-1$ if {\tt "-h"} or {\tt "--help"}
|
||||||
option was encountered and the help message was given or a positive value if a
|
option was encountered and the help message was given or a positive value if a
|
||||||
syntax error occured.
|
syntax error occured.
|
||||||
|
|
||||||
|
\wxheading{Parameters}
|
||||||
|
|
||||||
|
\docparam{giveUsage}{If {\tt TRUE} (default), the usage message is given if a
|
||||||
|
syntax error was encountered while parsing the command line or if help was
|
||||||
|
requested. If {\tt FALSE}, only error messages about possible syntax errors
|
||||||
|
are given, use \helpref{Usage}{wxcmdlineparserusage} to show the usage message
|
||||||
|
from the caller if needed.}
|
||||||
|
|
||||||
\membersection{wxCmdLineParser::Usage}\label{wxcmdlineparserusage}
|
\membersection{wxCmdLineParser::Usage}\label{wxcmdlineparserusage}
|
||||||
|
|
||||||
\func{void}{Usage}{\void}
|
\func{void}{Usage}{\void}
|
||||||
|
@@ -162,7 +162,10 @@ public:
|
|||||||
// parse the command line, return 0 if ok, -1 if "-h" or "--help" option
|
// parse the command line, return 0 if ok, -1 if "-h" or "--help" option
|
||||||
// was encountered and the help message was given or a positive value if a
|
// was encountered and the help message was given or a positive value if a
|
||||||
// syntax error occured
|
// syntax error occured
|
||||||
int Parse();
|
//
|
||||||
|
// if showUsage is true, Usage() is called in case of syntax error or if
|
||||||
|
// help was requested
|
||||||
|
int Parse(bool showUsage = TRUE);
|
||||||
|
|
||||||
// give the usage message describing all program options
|
// give the usage message describing all program options
|
||||||
void Usage();
|
void Usage();
|
||||||
|
@@ -166,7 +166,7 @@ bool wxAppBase::OnInit()
|
|||||||
OnInitCmdLine(parser);
|
OnInitCmdLine(parser);
|
||||||
|
|
||||||
bool cont;
|
bool cont;
|
||||||
switch ( parser.Parse() )
|
switch ( parser.Parse(FALSE /* don't show usage */) )
|
||||||
{
|
{
|
||||||
case -1:
|
case -1:
|
||||||
cont = OnCmdLineHelp(parser);
|
cont = OnCmdLineHelp(parser);
|
||||||
@@ -287,7 +287,7 @@ bool wxAppBase::OnCmdLineParsed(wxCmdLineParser& parser)
|
|||||||
if ( !SetDisplayMode(wxDisplayModeInfo(w, h, bpp)) )
|
if ( !SetDisplayMode(wxDisplayModeInfo(w, h, bpp)) )
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif // __WXMGL__
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@@ -109,7 +109,9 @@ struct wxCmdLineOption
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
wxCmdLineEntryType kind;
|
wxCmdLineEntryType kind;
|
||||||
wxString shortName, longName, description;
|
wxString shortName,
|
||||||
|
longName,
|
||||||
|
description;
|
||||||
wxCmdLineParamType type;
|
wxCmdLineParamType type;
|
||||||
int flags;
|
int flags;
|
||||||
|
|
||||||
@@ -476,7 +478,7 @@ void wxCmdLineParser::Reset()
|
|||||||
// the real work is done here
|
// the real work is done here
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
int wxCmdLineParser::Parse()
|
int wxCmdLineParser::Parse(bool showUsage)
|
||||||
{
|
{
|
||||||
bool maybeOption = TRUE; // can the following arg be an option?
|
bool maybeOption = TRUE; // can the following arg be an option?
|
||||||
bool ok = TRUE; // TRUE until an error is detected
|
bool ok = TRUE; // TRUE until an error is detected
|
||||||
@@ -803,7 +805,7 @@ int wxCmdLineParser::Parse()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( !ok )
|
if ( !ok && showUsage )
|
||||||
{
|
{
|
||||||
Usage();
|
Usage();
|
||||||
}
|
}
|
||||||
@@ -849,13 +851,30 @@ void wxCmdLineParser::Usage()
|
|||||||
brief << _T('[');
|
brief << _T('[');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( !opt.shortName.empty() )
|
||||||
|
{
|
||||||
brief << chSwitch << opt.shortName;
|
brief << chSwitch << opt.shortName;
|
||||||
|
}
|
||||||
|
else if ( !opt.longName.empty() )
|
||||||
|
{
|
||||||
|
brief << _T("--") << opt.longName;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
wxFAIL_MSG( _T("option without neither short nor long name?") );
|
||||||
|
}
|
||||||
|
|
||||||
wxString option;
|
wxString option;
|
||||||
option << _T(" ") << chSwitch << opt.shortName;
|
|
||||||
if ( !!opt.longName )
|
if ( !opt.shortName.empty() )
|
||||||
{
|
{
|
||||||
option << _T(" --") << opt.longName;
|
option << _T(" ") << chSwitch << opt.shortName;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !opt.longName.empty() )
|
||||||
|
{
|
||||||
|
option << (option.empty() ? _T(" ") : _T(", "))
|
||||||
|
<< _T("--") << opt.longName;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( opt.kind != wxCMD_LINE_SWITCH )
|
if ( opt.kind != wxCMD_LINE_SWITCH )
|
||||||
@@ -904,7 +923,13 @@ void wxCmdLineParser::Usage()
|
|||||||
wxLogMessage(m_data->m_logo);
|
wxLogMessage(m_data->m_logo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// in console mode we want to show the brief usage message first, then the
|
||||||
|
// detailed one but in GUI build we give the details first and then the
|
||||||
|
// summary - like this, the brief message appears in the wxLogGui dialog,
|
||||||
|
// as expected
|
||||||
|
#if !wxUSE_GUI
|
||||||
wxLogMessage(brief);
|
wxLogMessage(brief);
|
||||||
|
#endif // !wxUSE_GUI
|
||||||
|
|
||||||
// now construct the detailed help message
|
// now construct the detailed help message
|
||||||
size_t len, lenMax = 0;
|
size_t len, lenMax = 0;
|
||||||
@@ -927,6 +952,11 @@ void wxCmdLineParser::Usage()
|
|||||||
}
|
}
|
||||||
|
|
||||||
wxLogMessage(detailed);
|
wxLogMessage(detailed);
|
||||||
|
|
||||||
|
// do it now if not done above
|
||||||
|
#if wxUSE_GUI
|
||||||
|
wxLogMessage(brief);
|
||||||
|
#endif // wxUSE_GUI
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
Reference in New Issue
Block a user