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();
122 QFile file(scriptFileName);
131 file.setFileName(str +
"/scripts/" + scriptFileName);
134 std::cout <<
"Error: cannot not find the file " << qPrintable(scriptFileName)
135 <<
" neither in the current directory nor in the system one, "
136 << qPrintable(str +
"/scripts/") <<
"\n";
142 std::cout <<
"Error: cannot not find the file " << qPrintable(scriptFileName) <<
"\n";
147 if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
149 std::cout <<
"Error: cannot not open the file " << qPrintable(scriptFileName) <<
"\n";
153 std::cout <<
"executing " << qPrintable(file.fileName()) <<
" script\n";
155 QString strProgram(file.readAll());
158 QScriptEngine interpreter;
162 if (QScriptSyntaxCheckResult::Valid != interpreter.checkSyntax(strProgram).state())
164 std::cout <<
"Error: bad syntax of the file " << qPrintable(scriptFileName) <<
"\n";
182 qScriptRegisterMetaType(&interpreter, toScriptValue4ParIdx, fromScriptValue4ParIdx);
183 qScriptRegisterMetaType(&interpreter, toScriptValue4ParMode, fromScriptValue4ParMode);
184 qScriptRegisterMetaType(&interpreter, toScriptValue4ConfigDtype, fromScriptValue4ConfigDtype);
185 qScriptRegisterMetaType(&interpreter, toScriptValue4ConfigRtype, fromScriptValue4ConfigRtype);
186 qScriptRegisterMetaType(&interpreter, toScriptValue4ConfigWrMode, fromScriptValue4ConfigWrMode);
187 qScriptRegisterMetaType(&interpreter, toScriptValue4ConfigOpMode, fromScriptValue4ConfigOpMode);
188 qScriptRegisterMetaType(&interpreter, toScriptValue4ConfigOpAction, fromScriptValue4ConfigOpAction);
189 qScriptRegisterMetaType(&interpreter, toScriptValue4ConfigEpwlMode, fromScriptValue4ConfigEpwlMode);
190 qScriptRegisterMetaType(&interpreter, toScriptValue4ConfigTropZenithMap, fromScriptValue4ConfigTropZenithMap);
193 qScriptRegisterMetaType(&interpreter, toScriptValue4Band, fromScriptValue4Band);
194 qScriptRegisterMetaType(&interpreter, toScriptValue4Stn, fromScriptValue4Stn);
195 qScriptRegisterMetaType(&interpreter, toScriptValue4Bln, fromScriptValue4Bln);
196 qScriptRegisterMetaType(&interpreter, toScriptValue4Src, fromScriptValue4Src);
197 qScriptRegisterMetaType(&interpreter, toScriptValue4VlbiObs, fromScriptValue4VlbiObs);
198 qScriptRegisterMetaType(&interpreter, toScriptValue4VlbiAuxObs, fromScriptValue4VlbiAuxObs);
199 qScriptRegisterMetaType(&interpreter, toScriptValue4LogLevel, fromScriptValue4LogLevel);
200 qScriptRegisterMetaType(&interpreter, toScriptValue4LogFacility, fromScriptValue4LogFacility);
202 qScriptRegisterSequenceMetaType< QList<NsScrPrx4ParametersDescriptor::ParIdx> >(&interpreter);
203 qScriptRegisterSequenceMetaType< QList<NsScrPrx4Band*> >(&interpreter);
204 qScriptRegisterSequenceMetaType< QList<NsScrPrx4Station*> >(&interpreter);
205 qScriptRegisterSequenceMetaType< QList<NsScrPrx4Baseline*> >(&interpreter);
206 qScriptRegisterSequenceMetaType< QList<NsScrPrx4Source*> >(&interpreter);
207 qScriptRegisterSequenceMetaType< QList<NsScrPrx4VlbiObservation*> >(&interpreter);
208 qScriptRegisterSequenceMetaType< QList<NsScrPrx4VlbiAuxObservation*> >(&interpreter);
212 QScriptValue args4Script=qScriptValueFromSequence(&interpreter, args);
213 interpreter.globalObject().setProperty(
"args", args4Script);
220 QScriptValue handlerScript=interpreter.newQObject(&handlerProxy);
221 interpreter.globalObject().setProperty(
"handler", handlerScript);
225 QScriptValue scriptConfig=interpreter.newQObject(&config4Scr);
226 interpreter.globalObject().setProperty(
"config", scriptConfig);
228 QScriptValue metaScrConfig=interpreter.newQMetaObject(config4Scr.metaObject());
229 interpreter.globalObject().setProperty(
"CFG", metaScrConfig);
233 QScriptValue scriptSetup=interpreter.newQObject(&setup4Scr);
234 interpreter.globalObject().setProperty(
"setup", scriptSetup);
238 QScriptValue scriptParsDescript=interpreter.newQObject(&parsDescript4Scr);
239 interpreter.globalObject().setProperty(
"parsDescript", scriptParsDescript);
241 QScriptValue metaScrParsDescript=
242 interpreter.newQMetaObject(parsDescript4Scr.metaObject());
243 interpreter.globalObject().setProperty(
"Parameters", metaScrParsDescript);
247 QScriptValue scriptSession=interpreter.newQObject(&session4Scr);
248 interpreter.globalObject().setProperty(
"session", scriptSession);
250 QScriptValue metaScrSession=
251 interpreter.newQMetaObject(session4Scr.metaObject());
252 interpreter.globalObject().setProperty(
"Session", metaScrSession);
257 QScriptValue scriptLogger=interpreter.newQObject(&logger4Scr);
258 interpreter.globalObject().setProperty(
"logger", scriptLogger);
260 QScriptValue metaScrLogger=interpreter.newQMetaObject(logger4Scr.metaObject());
261 interpreter.globalObject().setProperty(
"Log", metaScrLogger);
270 interpreter.globalObject().setProperty(
"nsPrint", interpreter.newFunction(
myPrintFunction));
276 QScriptValue result=interpreter.evaluate(strProgram, scriptFileName);
278 if (result.isError())
280 QString strError(QString::fromLatin1(
"%0:%1: %2")
282 .arg(result.property(
"lineNumber").toInt32())
283 .arg(result.toString()));
286 QMessageBox::critical(0,
"Error running script", strError);
290 std::cerr <<
"ERROR: " << qPrintable(strError) <<
"\n";
303 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)
void setSessionProxy(NsScrPrx4Session *sProxy)
const SgTaskConfig * cfg() const
const SgParametersDescriptor * parametersDescriptor() const
const SgVlbiSession * session() const
SgParametersDescriptor parametersDescriptor