FiveServerOptions::FiveServerOptions(QCoreApplication *app, QObject *parent) : QObject(parent) { m_parser.setApplicationDescription("Server daemon for dotFive"); m_parser.addHelpOption(); m_parser.addVersionOption(); QCommandLineOption hostOption(QStringList() << "H" << "host", tr("Run server to listen on IP <host>."), tr("host")); hostOption.setDefaultValue(five::ADDRESS_ANY); m_parser.addOption(hostOption); QCommandLineOption portOption(QStringList() << "p" << "port", tr("Run server to listen on port <port>."), tr("port")); portOption.setDefaultValue(five::PORT_DEFAULT); m_parser.addOption(portOption); QCommandLineOption timeOption(QStringList() << "t" << "timeout", tr("Set the timeout of <timeout> ms before closing connection, 0 to disable."), tr("timeout")); timeOption.setDefaultValue(five::TIMEOUT_DEFAULT); m_parser.addOption(timeOption); QCommandLineOption heartOption(QStringList() << "b" << "heartbeat", tr("Set the heartbeat sending timeout to <heartbeat> ms, 0 to disable."), tr("heartbeat")); heartOption.setDefaultValue(five::HEARTBEAT_DEFAULT); m_parser.addOption(heartOption); m_parser.process(*app); }
cCommandLineInterface::cCommandLineInterface(QCoreApplication *qapplication) { // text from http://sourceforge.net/projects/mandelbulber/ parser.setApplicationDescription("Mandelbulber is an easy to use, " "handy application designed to help you render 3D Mandelbrot fractals called Mandelbulb " "and some other kind of 3D fractals like Mandelbox, Bulbbox, Juliabulb, Menger Sponge"); parser.addHelpOption(); parser.addVersionOption(); QCommandLineOption noguiOption(QStringList() << "n" << "nogui", QCoreApplication::translate("main", "Start program without GUI.")); QCommandLineOption keyframeOption(QStringList() << "K" << "keyframe", QCoreApplication::translate("main", "Render keyframe animation")); QCommandLineOption flightOption(QStringList() << "F" << "flight", QCoreApplication::translate("main", "Render flight animation")); QCommandLineOption startOption(QStringList() << "s" << "start", QCoreApplication::translate("main", "Start rendering from frame number <N>."), QCoreApplication::translate("main", "N")); QCommandLineOption endOption(QStringList() << "e" << "end", QCoreApplication::translate("main", "Stop rendering on frame number <N>."), QCoreApplication::translate("main", "N")); QCommandLineOption overrideOption(QStringList() << "O" << "override", QCoreApplication::translate("main", "Override item '<KEY>' from settings file with new value '<value>'.\n" "Specify multiple KEY=VALUE pairs by separating with a '#' (KEY1=VALUE1#KEY2=VALUE2). Quote whole expression to avoid whitespace parsing issues\n" "Override fractal parameter in the form 'fractal<N>_KEY=VALUE' with <N> as index of fractal"), QCoreApplication::translate("main", "KEY=VALUE")); QCommandLineOption listOption(QStringList() << "L" << "list", QCoreApplication::translate("main", "List all possible parameters '<KEY>' with corresponding default value '<value>'.")); QCommandLineOption formatOption(QStringList() << "f" << "format", QCoreApplication::translate("main", "Image output format:\n" "jpg - JPEG format\n" "png - PNG format\n" "png16 - 16-bit PNG format\n" "png16alpha - 16-bit PNG with alpha channel format\n" "exr - EXR format"), QCoreApplication::translate("main", "FORMAT")); QCommandLineOption resOption(QStringList() << "r" << "res", QCoreApplication::translate("main", "Override image resolution."), QCoreApplication::translate("main", "WIDTHxHEIGHT")); QCommandLineOption fpkOption("fpk", QCoreApplication::translate("main", "Override frames per key parameter."), QCoreApplication::translate("main", "N")); QCommandLineOption serverOption(QStringList() << "S" << "server", QCoreApplication::translate("main", "Set application as a server listening for clients.")); QCommandLineOption hostOption(QStringList() << "H" << "host", QCoreApplication::translate("main", "Set application as a client connected to server of given Host address" " (Host can be of type IPv4, IPv6 and Domain name address)."), QCoreApplication::translate("main", "N.N.N.N")); QCommandLineOption portOption(QStringList() << "p" << "port", QCoreApplication::translate("main", "Set network port number for Netrender (default 5555)."), QCoreApplication::translate("main", "N")); QCommandLineOption noColorOption(QStringList() << "C" << "no-cli-color", QCoreApplication::translate("main", "Start program without ANSI colors, when execution on CLI.")); QCommandLineOption outputOption(QStringList() << "o" << "output", QCoreApplication::translate("main", "Save rendered image(s) to this file / folder."), QCoreApplication::translate("main", "N")); QCommandLineOption queueOption(QStringList() << "q" << "queue", QCoreApplication::translate("main", "Render all images from common queue.")); QCommandLineOption statsOption(QStringList() << "stats", QCoreApplication::translate("main", "Show statistics while renderering in CLI mode.")); QCommandLineOption helpInputOption(QStringList() << "help-input", QCoreApplication::translate("main", "Show help about input.")); parser.addPositionalArgument("settings_file", QCoreApplication::translate("main", "file with fractal settings (program also tries\nto find file in ./mandelbulber/settings directory)\n" "When settings_file is put as a command line argument then program will start in noGUI mode" "<settings_file> can also be specified as a list, see all options with --help-input" )); parser.addOption(noguiOption); parser.addOption(outputOption); parser.addOption(keyframeOption); parser.addOption(flightOption); parser.addOption(startOption); parser.addOption(endOption); parser.addOption(overrideOption); parser.addOption(listOption); parser.addOption(formatOption); parser.addOption(resOption); parser.addOption(fpkOption); parser.addOption(serverOption); parser.addOption(hostOption); parser.addOption(portOption); parser.addOption(noColorOption); parser.addOption(queueOption); parser.addOption(statsOption); parser.addOption(helpInputOption); // Process the actual command line arguments given by the user parser.process(*qapplication); args = parser.positionalArguments(); cliData.nogui = parser.isSet(noguiOption); cliData.keyframe = parser.isSet(keyframeOption); cliData.flight = parser.isSet(flightOption); cliData.startFrameText = parser.value(startOption); cliData.endFrameText = parser.value(endOption); cliData.overrideParametersText = parser.value(overrideOption); cliData.imageFileFormat = parser.value(formatOption); cliData.resolution = parser.value(resOption); cliData.fpkText = parser.value(fpkOption); cliData.server = parser.isSet(serverOption); cliData.host = parser.value(hostOption); cliData.portText = parser.value(portOption); cliData.outputText = parser.value(outputOption); cliData.listParameters = parser.isSet(listOption); cliData.queue = parser.isSet(queueOption); cliData.showInputHelp = parser.isSet(helpInputOption); systemData.statsOnCLI = parser.isSet(statsOption); #ifdef WIN32 /* WINDOWS */ systemData.useColor = false; #else systemData.useColor = !parser.isSet(noColorOption); #endif /* WINDOWS */ if(cliData.listParameters) cliData.nogui = true; if(cliData.queue) cliData.nogui = true; cliTODO = modeBootOnly; }