From: Vadim Zeitlin Date: Sat, 7 Sep 2002 20:26:42 +0000 (+0000) Subject: don't give empty message box if Parse(FALSE) was called and there was --help on the... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/e9c54ec33655bfa9a57eb7955b114621fb940e1f 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 --- diff --git a/src/common/cmdline.cpp b/src/common/cmdline.cpp index 524ee1f43a..9697a6d3ac 100644 --- a/src/common/cmdline.cpp +++ b/src/common/cmdline.cpp @@ -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(); - wxASSERT(msgOut); - if ( showUsage ) usage = GetUsageString(); if ( msgOut ) + { + wxString usage; + if ( showUsage ) + usage = GetUsageString(); + msgOut->Printf( wxT("%s%s"), usage.c_str(), errorMsg.c_str() ); + } + else + { + wxFAIL_MSG( _T("no wxMessageOutput object?") ); + } } return ok ? 0 : helpRequested ? -1 : 1; @@ -869,10 +878,15 @@ int wxCmdLineParser::Parse(bool showUsage) void wxCmdLineParser::Usage() { - wxString usage = GetUsageString(); wxMessageOutput* msgOut = wxMessageOutput::Get(); 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() @@ -893,7 +907,7 @@ wxString wxCmdLineParser::GetUsageString() wxString usage; wxArrayString namesOptions, descOptions; - if ( !!m_data->m_logo ) + if ( !m_data->m_logo.empty() ) { usage << m_data->m_logo << _T('\n'); } @@ -1029,9 +1043,17 @@ static wxString GetTypeName(wxCmdLineParamType type) wxFAIL_MSG( _T("unknown option type") ); // still fall through - case wxCMD_LINE_VAL_STRING: s = _("str"); break; - case wxCMD_LINE_VAL_NUMBER: s = _("num"); break; - case wxCMD_LINE_VAL_DATE: s = _("date"); break; + case wxCMD_LINE_VAL_STRING: + s = _("str"); + break; + + case wxCMD_LINE_VAL_NUMBER: + s = _("num"); + break; + + case wxCMD_LINE_VAL_DATE: + s = _("date"); + break; } 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 it should be quoted: - + myprog.exe foo bar -> argc = 3, argv[1] = "foo", argv[2] = "bar" myprog.exe "foo bar" -> argc = 2, argv[1] = "foo bar"