Doc fix and SetArguments implementation

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8152 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2000-08-21 17:06:38 +00:00
parent 760ac9abdd
commit 97d590469d
2 changed files with 44 additions and 7 deletions

View File

@@ -196,7 +196,7 @@ application-specific text before the explanation given by
\membersection{Parsing command line}\label{wxcmdlineparserparsing}
After the command line description was constructed and the desiredoptions were
After the command line description was constructed and the desired options were
set, you can finally call \helpref{Parse}{wxcmdlineparserparse} method.
It returns $0$ if the command line was correct and was parsed, $-1$ if the help
option was specified (this is a separate case as, normally, the program will
@@ -231,8 +231,7 @@ command line or FALSE if they were not specified.
\func{}{wxCmdLineParser}{\void}
Default constructor. You must use
\helpref{SetCmdLine}{wxcmdlineparsersetcmdlineargc} or
\helpref{SetCmdLinelater.}{wxcmdlineparsersetcmdlinestr} later.
\helpref{SetCmdLine}{wxcmdlineparsersetcmdlineargc} later.
\membersection{wxCmdLineParser::wxCmdLineParser}\label{wxcmdlineparserwxcmdlineparserargc}

View File

@@ -190,12 +190,50 @@ void wxCmdLineParserData::SetArguments(int argc, char **argv)
}
}
void wxCmdLineParserData::SetArguments(const wxString& WXUNUSED(cmdline))
void wxCmdLineParserData::SetArguments(const wxString& cmdLine)
{
// either use wxMSW wxApp::ConvertToStandardCommandArgs() or move its logic
// here and use this method from it - but don't duplicate the code
m_arguments.Empty();
wxFAIL_MSG(_T("TODO"));
m_arguments.Add(wxTheApp->GetAppName());
// Break up string
// Treat strings enclosed in double-quotes as single arguments
int i = 0;
int len = cmdLine.Length();
while (i < len)
{
// Skip whitespace
while ((i < len) && wxIsspace(cmdLine.GetChar(i)))
i ++;
if (i < len)
{
if (cmdLine.GetChar(i) == wxT('"')) // We found the start of a string
{
i ++;
int first = i;
while ((i < len) && (cmdLine.GetChar(i) != wxT('"')))
i ++;
wxString arg(cmdLine.Mid(first, (i - first)));
m_arguments.Add(arg);
if (i < len)
i ++; // Skip past 2nd quote
}
else // Unquoted argument
{
int first = i;
while ((i < len) && !wxIsspace(cmdLine.GetChar(i)))
i ++;
wxString arg(cmdLine.Mid(first, (i - first)));
m_arguments.Add(arg);
}
}
}
}
int wxCmdLineParserData::FindOption(const wxString& name)