don't give empty message box if Parse(FALSE) was called and there was --help on the cmd line

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@17058 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2002-09-07 20:26:42 +00:00
parent b35191eb54
commit e9c54ec336

View File

@@ -850,14 +850,23 @@ int wxCmdLineParser::Parse(bool showUsage)
} }
} }
if ( !ok && (errorMsg.length() != 0 || helpRequested) ) // if there was an error during parsing the command line, show this error
// and also the usage message if it had been requested
if ( !ok && (!errorMsg.empty() || (helpRequested && showUsage)) )
{ {
wxString usage;
wxMessageOutput* msgOut = wxMessageOutput::Get(); wxMessageOutput* msgOut = wxMessageOutput::Get();
wxASSERT(msgOut);
if ( showUsage ) usage = GetUsageString();
if ( msgOut ) if ( msgOut )
{
wxString usage;
if ( showUsage )
usage = GetUsageString();
msgOut->Printf( wxT("%s%s"), usage.c_str(), errorMsg.c_str() ); msgOut->Printf( wxT("%s%s"), usage.c_str(), errorMsg.c_str() );
}
else
{
wxFAIL_MSG( _T("no wxMessageOutput object?") );
}
} }
return ok ? 0 : helpRequested ? -1 : 1; return ok ? 0 : helpRequested ? -1 : 1;
@@ -869,10 +878,15 @@ int wxCmdLineParser::Parse(bool showUsage)
void wxCmdLineParser::Usage() void wxCmdLineParser::Usage()
{ {
wxString usage = GetUsageString();
wxMessageOutput* msgOut = wxMessageOutput::Get(); wxMessageOutput* msgOut = wxMessageOutput::Get();
if ( msgOut ) if ( msgOut )
msgOut->Printf( wxT("%s"), usage.c_str() ); {
msgOut->Printf( wxT("%s"), GetUsageString().c_str() );
}
else
{
wxFAIL_MSG( _T("no wxMessageOutput object?") );
}
} }
wxString wxCmdLineParser::GetUsageString() wxString wxCmdLineParser::GetUsageString()
@@ -893,7 +907,7 @@ wxString wxCmdLineParser::GetUsageString()
wxString usage; wxString usage;
wxArrayString namesOptions, descOptions; wxArrayString namesOptions, descOptions;
if ( !!m_data->m_logo ) if ( !m_data->m_logo.empty() )
{ {
usage << m_data->m_logo << _T('\n'); usage << m_data->m_logo << _T('\n');
} }
@@ -1029,9 +1043,17 @@ static wxString GetTypeName(wxCmdLineParamType type)
wxFAIL_MSG( _T("unknown option type") ); wxFAIL_MSG( _T("unknown option type") );
// still fall through // still fall through
case wxCMD_LINE_VAL_STRING: s = _("str"); break; case wxCMD_LINE_VAL_STRING:
case wxCMD_LINE_VAL_NUMBER: s = _("num"); break; s = _("str");
case wxCMD_LINE_VAL_DATE: s = _("date"); break; break;
case wxCMD_LINE_VAL_NUMBER:
s = _("num");
break;
case wxCMD_LINE_VAL_DATE:
s = _("date");
break;
} }
return s; return s;
@@ -1094,7 +1116,7 @@ static wxString GetLongOptionName(const wxChar *p)
In particular, to pass a single argument containing a space to the program In particular, to pass a single argument containing a space to the program
it should be quoted: it should be quoted:
myprog.exe foo bar -> argc = 3, argv[1] = "foo", argv[2] = "bar" myprog.exe foo bar -> argc = 3, argv[1] = "foo", argv[2] = "bar"
myprog.exe "foo bar" -> argc = 2, argv[1] = "foo bar" myprog.exe "foo bar" -> argc = 2, argv[1] = "foo bar"