Esempio n. 1
0
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;
}