Doc fix and SetArguments implementation
authorJulian Smart <julian@anthemion.co.uk>
Mon, 21 Aug 2000 17:06:38 +0000 (17:06 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Mon, 21 Aug 2000 17:06:38 +0000 (17:06 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@8152 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/cmdlpars.tex
src/common/cmdline.cpp

index 5fe7725f159cc74db6e710769e84502db81a4071..c7164c01632853cde963c35dac85a1c0ac9d0c9a 100644 (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}
 
index 965d1143deb36f346267b1b27deb3a67f82a6e49..a8764a296f9b635b49de4bff10d9fd31b86bbfd6 100644 (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();
+
+    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)));
 
-    wxFAIL_MSG(_T("TODO"));
+                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)