29 #include <QtCore/QFile>
32 #if QT_VERSION >= 0x050000
33 # include <QtWidgets/QApplication>
34 # include <QtWidgets/QMessageBox>
35 # include <QtWidgets/QPushButton>
37 # include <QtGui/QApplication>
38 # include <QtGui/QMessageBox>
39 # include <QtGui/QPushButton>
97 for (
int i = 0; i < context->argumentCount(); ++i)
101 result.append(context->argument(i).toString());
103 std::cout << qPrintable(result) << std::endl;
104 return engine->undefinedValue();
121 QFile file(scriptFileName);
130 file.setFileName(str +
"/scripts/" + scriptFileName);
133 std::cout <<
"Error: cannot not find the file " << qPrintable(scriptFileName)
134 <<
" neither in the current directory nor in the system one, "
135 << qPrintable(str +
"/scripts/") <<
"\n";
141 std::cout <<
"Error: cannot not find the file " << qPrintable(scriptFileName) <<
"\n";
146 if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
148 std::cout <<
"Error: cannot not open the file " << qPrintable(scriptFileName) <<
"\n";
154 std::cout <<
"executing " << qPrintable(file.fileName()) <<
" script\n";
157 QString strProgram(file.readAll());
160 QScriptEngine interpreter;
164 if (QScriptSyntaxCheckResult::Valid != interpreter.checkSyntax(strProgram).state())
166 std::cout <<
"Error: bad syntax of the file " << qPrintable(scriptFileName) <<
"\n";
184 qScriptRegisterMetaType(&interpreter, toScriptValue4ParIdx, fromScriptValue4ParIdx);
185 qScriptRegisterMetaType(&interpreter, toScriptValue4ParMode, fromScriptValue4ParMode);
186 qScriptRegisterMetaType(&interpreter, toScriptValue4ConfigDtype, fromScriptValue4ConfigDtype);
187 qScriptRegisterMetaType(&interpreter, toScriptValue4ConfigRtype, fromScriptValue4ConfigRtype);
188 qScriptRegisterMetaType(&interpreter, toScriptValue4ConfigWrMode, fromScriptValue4ConfigWrMode);
189 qScriptRegisterMetaType(&interpreter, toScriptValue4ConfigOpMode, fromScriptValue4ConfigOpMode);
190 qScriptRegisterMetaType(&interpreter, toScriptValue4ConfigOpAction, fromScriptValue4ConfigOpAction);
191 qScriptRegisterMetaType(&interpreter, toScriptValue4ConfigEpwlMode, fromScriptValue4ConfigEpwlMode);
192 qScriptRegisterMetaType(&interpreter, toScriptValue4ConfigTropZenithMap,
193 fromScriptValue4ConfigTropZenithMap);
194 qScriptRegisterMetaType(&interpreter, toScriptValue4ConfigCableCalSource,
195 fromScriptValue4ConfigCableCalSource);
197 qScriptRegisterMetaType(&interpreter, toScriptValue4Band, fromScriptValue4Band);
198 qScriptRegisterMetaType(&interpreter, toScriptValue4Stn, fromScriptValue4Stn);
199 qScriptRegisterMetaType(&interpreter, toScriptValue4Bln, fromScriptValue4Bln);
200 qScriptRegisterMetaType(&interpreter, toScriptValue4Src, fromScriptValue4Src);
201 qScriptRegisterMetaType(&interpreter, toScriptValue4VlbiObs, fromScriptValue4VlbiObs);
202 qScriptRegisterMetaType(&interpreter, toScriptValue4VlbiAuxObs, fromScriptValue4VlbiAuxObs);
203 qScriptRegisterMetaType(&interpreter, toScriptValue4LogLevel, fromScriptValue4LogLevel);
204 qScriptRegisterMetaType(&interpreter, toScriptValue4LogFacility, fromScriptValue4LogFacility);
206 qScriptRegisterSequenceMetaType< QList<NsScrPrx4ParametersDescriptor::ParIdx> >(&interpreter);
207 qScriptRegisterSequenceMetaType< QList<NsScrPrx4Band*> >(&interpreter);
208 qScriptRegisterSequenceMetaType< QList<NsScrPrx4Station*> >(&interpreter);
209 qScriptRegisterSequenceMetaType< QList<NsScrPrx4Baseline*> >(&interpreter);
210 qScriptRegisterSequenceMetaType< QList<NsScrPrx4Source*> >(&interpreter);
211 qScriptRegisterSequenceMetaType< QList<NsScrPrx4VlbiObservation*> >(&interpreter);
212 qScriptRegisterSequenceMetaType< QList<NsScrPrx4VlbiAuxObservation*> >(&interpreter);
216 QScriptValue args4Script=qScriptValueFromSequence(&interpreter, args);
217 interpreter.globalObject().setProperty(
"args", args4Script);
224 QScriptValue handlerScript=interpreter.newQObject(&handlerProxy);
225 interpreter.globalObject().setProperty(
"handler", handlerScript);
229 QScriptValue scriptConfig=interpreter.newQObject(&config4Scr);
230 interpreter.globalObject().setProperty(
"config", scriptConfig);
232 QScriptValue metaScrConfig=interpreter.newQMetaObject(config4Scr.metaObject());
233 interpreter.globalObject().setProperty(
"CFG", metaScrConfig);
237 QScriptValue scriptSetup=interpreter.newQObject(&setup4Scr);
238 interpreter.globalObject().setProperty(
"setup", scriptSetup);
242 QScriptValue scriptParsDescript=interpreter.newQObject(&parsDescript4Scr);
243 interpreter.globalObject().setProperty(
"parsDescript", scriptParsDescript);
245 QScriptValue metaScrParsDescript=
246 interpreter.newQMetaObject(parsDescript4Scr.metaObject());
247 interpreter.globalObject().setProperty(
"Parameters", metaScrParsDescript);
251 QScriptValue scriptSession=interpreter.newQObject(&session4Scr);
252 interpreter.globalObject().setProperty(
"session", scriptSession);
254 QScriptValue metaScrSession=
255 interpreter.newQMetaObject(session4Scr.metaObject());
256 interpreter.globalObject().setProperty(
"Session", metaScrSession);
261 QScriptValue scriptLogger=interpreter.newQObject(&logger4Scr);
262 interpreter.globalObject().setProperty(
"logger", scriptLogger);
264 QScriptValue metaScrLogger=interpreter.newQMetaObject(logger4Scr.metaObject());
265 interpreter.globalObject().setProperty(
"Log", metaScrLogger);
274 interpreter.globalObject().setProperty(
"nsPrint", interpreter.newFunction(
myPrintFunction));
280 QScriptValue result=interpreter.evaluate(strProgram, scriptFileName);
283 if (result.isError())
285 QString strError(QString::fromLatin1(
"%0:%1: %2")
287 .arg(result.property(
"lineNumber").toInt32())
288 .arg(result.toString()));
291 QMessageBox::critical(0,
"Error running script", strError);
295 std::cerr <<
"ERROR: " << qPrintable(strError) <<
"\n";
304 std::cout <<
"script mode is not supported\n";
QScriptValue myPrintFunction(QScriptContext *context, QScriptEngine *engine)
int executeScript(const QString &scriptFileName, const QList< QString > args, bool hasDisplay)
int getReturnCode() const
void setSessionProxy(NsScrPrx4Session *sProxy)
const SgTaskConfig * cfg() const
const SgParametersDescriptor * parametersDescriptor() const
const SgVlbiSession * session() const
bool isEligible(LogLevel lvl, quint32 f) const
SgParametersDescriptor parametersDescriptor