26int main(
int argc,
char **argv)
28 KLocalizedString::setApplicationDomain(
"kritarunner");
29 QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts,
true);
35 app.setApplicationDisplayName(
"Krita Script Runner");
36 app.setApplicationName(
"kritarunner");
37 app.setOrganizationDomain(
"krita.org");
39 QCommandLineParser parser;
40 parser.setApplicationDescription(
"kritarunner executes one python script and then returns.");
41 parser.addVersionOption();
42 parser.addHelpOption();
44 QCommandLineOption scriptOption(
QStringList() <<
"s" <<
"script",
"The script to run. Do not append the .py extension.",
"script");
45 parser.addOption(scriptOption);
47 QCommandLineOption functionOption(
QStringList() <<
"f" <<
"function",
48 "The function to call (by default __main__ is called).",
"function",
"__main__");
49 parser.addOption(functionOption);
51 parser.addPositionalArgument(
"[argument(s)]",
"The arguments for the script");
54 if (!parser.isSet(scriptOption)) {
55 qDebug(
"No script given, aborting.");
59 qDebug() <<
"running:" << parser.value(scriptOption) << parser.value(functionOption);
60 qDebug() << parser.positionalArguments();
62 app.addResourceTypes();
63 app.registerResources();
67 QByteArray pythonPath = qgetenv(
"PYTHONPATH");
68 qDebug() <<
"\tPython path:" << pythonPath;
70 qDebug() <<
"Creating engine";
80 qWarning() << i18n(
"Cannot load Python library");
83 qWarning() << i18n(
"Cannot set Python paths");
86 qWarning() << i18n(
"Cannot load built-in pykrita module");
89 qWarning() << i18n(
"Unexpected error initializing python plugin.");
93 qDebug() <<
"Try to import the pykrita module";
98 if (!pykritaPackage) {
99 qDebug(
"Cannot load the PyKrita module, aborting");
103 PyObject *argsList = PyList_New(0);
104 Q_FOREACH(
const QString arg, parser.positionalArguments()) {
105 PyObject*
const u = py.
unicode(arg);
106 PyList_Append(argsList,
u);
110 PyObject *args = PyTuple_New(1);
111 PyTuple_SetItem(args, 0, argsList);
113 py.
functionCall(parser.value(functionOption).toUtf8().constData(), parser.value(scriptOption).toUtf8().constData(), args);
int main(int argc, char **argv)