b8192cb8e1
Add wxCMD_LINE_HIDDEN wxCmdLineParser flag allowing to hide options and/or parameters. A hidden/unlisted argument is processed as usual, but not shown in the output given by Usage(). A use case for such could be diagnostics switches that should exist but are not useful to the end user. Closes https://github.com/wxWidgets/wxWidgets/pull/390
124 lines
3.7 KiB
C++
124 lines
3.7 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: samples/console/console.cpp
|
|
// Purpose: A sample console (as opposed to GUI) program using wxWidgets
|
|
// Author: Vadim Zeitlin
|
|
// Modified by:
|
|
// Created: 04.10.99
|
|
// Copyright: (c) 1999 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// ============================================================================
|
|
// declarations
|
|
// ============================================================================
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// headers
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// For compilers that support precompilation, includes "wx/wx.h".
|
|
#include "wx/wxprec.h"
|
|
|
|
#ifdef __BORLANDC__
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
// for all others, include the necessary headers (this file is usually all you
|
|
// need because it includes almost all "standard" wxWidgets headers)
|
|
#ifndef WX_PRECOMP
|
|
#include "wx/wx.h"
|
|
#endif
|
|
|
|
#include <wx/app.h>
|
|
#include <wx/cmdline.h>
|
|
|
|
// ============================================================================
|
|
// implementation
|
|
// ============================================================================
|
|
|
|
static const wxCmdLineEntryDesc cmdLineDesc[] =
|
|
{
|
|
{ wxCMD_LINE_SWITCH, "h", "help", "show this help message",
|
|
wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP },
|
|
{ wxCMD_LINE_SWITCH, "d", "dummy", "a dummy switch" },
|
|
{ wxCMD_LINE_SWITCH, "s", "secret", "a secret switch",
|
|
wxCMD_LINE_VAL_NONE, wxCMD_LINE_HIDDEN },
|
|
// ... your other command line options here...
|
|
|
|
{ wxCMD_LINE_NONE }
|
|
};
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
wxApp::CheckBuildOptions(WX_BUILD_OPTIONS_SIGNATURE, "program");
|
|
|
|
wxInitializer initializer;
|
|
if ( !initializer )
|
|
{
|
|
fprintf(stderr, "Failed to initialize the wxWidgets library, aborting.");
|
|
return -1;
|
|
}
|
|
|
|
wxCmdLineParser parser(cmdLineDesc, argc, argv);
|
|
switch ( parser.Parse() )
|
|
{
|
|
case -1:
|
|
// help was given, terminating
|
|
break;
|
|
|
|
case 0:
|
|
// everything is ok; proceed
|
|
if (parser.Found("d"))
|
|
{
|
|
wxPrintf("Dummy switch was given...\n");
|
|
|
|
while (1)
|
|
{
|
|
wxChar input[128];
|
|
wxPrintf("Try to guess the magic number (type 'quit' to escape): ");
|
|
if ( !wxFgets(input, WXSIZEOF(input), stdin) )
|
|
break;
|
|
|
|
// kill the last '\n'
|
|
input[wxStrlen(input) - 1] = 0;
|
|
|
|
if (wxStrcmp(input, "quit") == 0)
|
|
break;
|
|
|
|
long val;
|
|
if (!wxString(input).ToLong(&val))
|
|
{
|
|
wxPrintf("Invalid number...\n");
|
|
continue;
|
|
}
|
|
|
|
if (val == 42)
|
|
wxPrintf("You guessed!\n");
|
|
else
|
|
wxPrintf("Bad luck!\n");
|
|
}
|
|
}
|
|
if (parser.Found("s"))
|
|
{
|
|
wxPrintf("Secret switch was given...\n");
|
|
}
|
|
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
if ( argc == 1 )
|
|
{
|
|
// If there were no command-line options supplied, emit a message
|
|
// otherwise it's not obvious that the sample ran successfully
|
|
wxPrintf("Welcome to the wxWidgets 'console' sample!\n");
|
|
wxPrintf("For more information, run it again with the --help option\n");
|
|
}
|
|
|
|
// do something useful here
|
|
|
|
return 0;
|
|
}
|