Eneboo - Documentación para desarrolladores
Tipos públicos | Slots públicos | Señales | Métodos públicos | Métodos públicos estáticos | Propiedades | Amigas
Referencia de la Clase QSInterpreter

The QSInterpreter class provides the public API for the Qt Script for Applications script engine. Más...

#include <qsinterpreter.h>

Diagrama de herencias de QSInterpreter
QObject Qt Qt

Lista de todos los miembros.

Tipos públicos

enum  ErrorMode { Notify, Nothing }
enum  ClassFlags { AllClasses, GlobalClasses }
enum  FunctionFlags { FunctionNames = 0, FunctionSignatures = 1, IncludeMemberFunctions = 2 }

Slots públicos

void clear ()
void stopExecution ()

Señales

void error (const QString &message, const QString &scriptName, int lineNumber)
void error (const QString &message, QObject *context, const QString &scriptName, int lineNumber)
void timeout (int runnningTime)

Métodos públicos

 QSInterpreter (QObject *parent=0, const char *name=0)
virtual ~QSInterpreter ()
QSArgument evaluate (const QString &code, QObject *context=0, const QString &scriptName=QString::null)
QSArgument call (const QString &function, const QSArgumentList &arguments=QSArgumentList(), QObject *context=0)
QObjectcurrentContext () const
bool checkSyntax (const QString &code)
void setErrorMode (ErrorMode m)
ErrorMode errorMode () const
QSProjectproject () const
QStringList functions (FunctionFlags flag=FunctionNames) const
QStringList functions (const QString &context, uint mask=FunctionNames) const
QStringList functions (QObject *context, FunctionFlags flag=FunctionNames) const
QStringList classes (ClassFlags=AllClasses) const
QStringList classes (const QString &context) const
QStringList classes (QObject *context) const
QStringList variables (bool includeStatic=false, bool includeCustom=false, bool includeMemberVariables=false) const
QStringList variables (const QString &context, bool includeStatic=false, bool includeCustom=false, bool includeMemberVariables=false) const
QStringList variables (QObject *context, bool includeStatic=false, bool includeCustom=false, bool includeMemberVariables=false) const
bool hasFunction (const QString &function) const
bool hasClass (const QString &className) const
bool hasVariable (const QString &variable) const
void addTransientVariable (const QString &variable, const QSArgument &arg, QObject *context=0)
QSArgument variable (const QString &variable, QObject *context=0) const
QObjectList presentObjects () const
void addTransientObject (QObject *object)
bool isRunning () const
void throwError (const QString &message)
void addObjectFactory (QSObjectFactory *factory)
void addWrapperFactory (QSWrapperFactory *factory)
QSStackTrace stackTrace () const
QString errorMessage () const
bool hadError () const
void addTransientSignalHandler (QObject *sender, const char *signal, const char *qtscriptFunction)
void removeTransientSignalHandler (QObject *sender, const char *signal, const char *qtscriptFunction)
void setTimeoutInterval (int msecs)
int timeoutInterval () const

Métodos públicos estáticos

static QSInterpreterdefaultInterpreter ()

Propiedades

ErrorMode errorMode
 What happens when there is an error:
int timeoutInterval
 Describes the number of milliseconds between each time the timeout() signal will be emitted by the interpreter.

Amigas

class QSProject
class QSWrapperFactory
class QSObjectFactory
class QSInterfaceFactory
class QSToolkitFactory
QuickInterpreterget_quick_interpreter (QSInterpreter *ip)

Descripción detallada

The QSInterpreter class provides the public API for the Qt Script for Applications script engine.

This class (implemented in libqsa) provides the functionality required to make Qt/C++ applications scriptable with Qt Script.

For convenience a single instance of the QSInterpreter class exists in an application; it is available as QSInterpreter::defaultInterpreter().

The functions evaluate(), call(), addTransientObject(), and clear() provide the basic functionality of the interpreter. Any string containing valid Qt Script code can be executed using evaluate(), and any state built up during evaluation is kept between calls. The function call() can be used to call script functions from C++. The function addTransientObject() will add an object to the interpreter until the interpreter is cleared. Calling clear() will clear the state of the interpreter and remove all transient objects.

The function checkSyntax() provides syntax checking without having to execute the context of the code.

QSInterpreter provides several functions for script introspection. These functions are: classes(), functions(), and variables().

If an error occurs, for example, during the execution of a script, the error() signal is emitted. The error behavior depends on the errorMode() which is set with setErrorMode(). When the interpreter stops execution because of an error, the hadError(), errorMessage(), and stackTrace() functions can be used to provide error information.

It is possible to run QSInterpreter in a separate thread when compiling against Qt 3.3 or later. This allows you to have multiple interpreters running simultaneously. Interpreters can interact with QObjects in the same thread they are running. Note that normal restrictions for threading in Qt still apply, such as interacting with objects on other threads and the GUI thread.

When an object has been made accessible to the interpreter, such as through the functions addTransientObject() or evaluate() all its signals, slots and properties will be made accessible from script. QSA provides a series of automatic conversions between C++ types and Qt Script types. These are listed below.

The following table describes which script types are supported as function arguments when calling a C++ slot from QSA.

C++ Type Qt Script Type QByteArray ByteArray QByteArray* ByteArray, undefined QColor Color QColor* Color, undefined QColorGroup ColorGroup QColorGroup* ColorGroup, undefined QFont Font QFont* Font, undefined QObject* QObject, undefiend QObjectList Array (of QObjects) QObjectList* Array (of QObjects), undefined QPalette Palette QPalette* Palette, undefined QPixmap Pixmap QPixmap Pixmap, undefined QPoint Point QPoint* Point, undefined QRect Rect QRect* Rect, undefined QSize Size QSize* Size, undefined QString String, Number, undefined QString* String, Number, undefined QStringList String, Array QStringList* String, Array, undefined QValueList<int> Array QValueList<int>* Array QVariant All types except QObject* and wrapped pointer. QVariant* All types except QObject* and wrapped pointer. bool Boolean, Number (0 is FALSE), String ("", "0" and "false" is false) char Number, String (first character), undefined char* String, undefined double Number, Boolean, undefined float Number, Boolean, undefined int Number, Boolean, undefined long Number, Boolean, undefined void* Wrapped pointer, undefined short Number, Boolean, undefined uchar Number, String (first character), undefined uint Number, Boolean, undefined ulong Number, Boolean, undefined ushort Number, Boolean, undefined

The following table describes which C++ types are converted to Qt Script types when used as properties or used as return values from slots.

C++ Type Qt Script Type QObject* QObject QString String QStringList Array QVariant Variant or matching type (Font, Color, etc) bool Boolean double Number int Number uint Number void* Wrapped pointer

Note that

See the Manual for more explanations and examples.


Documentación de las enumeraciones miembro de la clase

The ClassFlags enum specifies which classes should be made available for introspection.

AllClasses All available classes in the interpreter, including those declared in QObject contexts, are matched.

GlobalClasses Only classes declared in the global scope are matched.

Valores de enumeraciones:
AllClasses 
GlobalClasses 

The ErrorMode enum describes what happens when an error occurs while parsing or executing script code.

Notify Notifies the user that an error occurred via a message box. If the application is running in console mode (QApplication::Tty), the notification will be output to stderr.

Nothing No notification is sent to the user. The interpreter still stops execution and emits the error() signal.

Valores de enumeraciones:
Notify 
Nothing 

The FunctionFlags enum describes matching rules and formatting for function introspection.

FunctionNames Returns function names only.

FunctionSignatures Returns the functions with signatures.

IncludeMemberFunctions Matches member functions also, when the context to match in is a script class.

Valores de enumeraciones:
FunctionNames 
FunctionSignatures 
IncludeMemberFunctions 

Documentación del constructor y destructor

QSInterpreter::QSInterpreter ( QObject parent = 0,
const char *  name = 0 
)

Constructs a QSInterpreter that runs without a project.

The parent and name parameters are passed on to the QObject base class.

There's a default instance accessible with QSInterpreter::defaultInterpreter().

QSInterpreter::~QSInterpreter ( ) [virtual]

Destructor


Documentación de las funciones miembro

void QSInterpreter::addObjectFactory ( QSObjectFactory factory)

Adds the object factory factory to the interpreter.

Using this function will clear the state of the interpreter, and will clear any transient objects.

void QSInterpreter::addTransientObject ( QObject object)

Makes the QObject object available to the scripting engine. All child named objects of object are also made available, recursivly.

Transient objects added to the interpreter are not persistent. This means that when the interpreter is cleared, or when a project is re-evaluated, the transient objects are removed.

Use QSProject::addObject() to add persistent objects to the interpreter.

Note on threading; If the interpreter is running in the non-GUI thread, object cannot be a QWidget subclass.

Atención:
Every object passed to this function must have a unique name. If you want to reuse names then you need to call clear() first
Ver también:
QSProject::addObject()
void QSInterpreter::addTransientSignalHandler ( QObject sender,
const char *  signal,
const char *  qtscriptFunction 
)

Adds the Qt Script function qtscriptFunction (fully qualified) as a transient signal handler for the C++ signal signal of the object sender.

Example:

  interpreter->addTransientSignalHandler( myButton, SIGNAL( clicked() ), "classA.obj.calculate" );
Ver también:
removeTransientSignalHandler()
void QSInterpreter::addTransientVariable ( const QString variableName,
const QSArgument arg,
QObject context = 0 
)

Adds the variable variableName to the scope context. The variable is given the value arg. If no context is specified, the global scope is used.

The variable will persist until the interpreter is cleared. It is for that reason not wise to use this function on an interpreter that belongs to a QSProject

Ver también:
QSProject, addTransientObject()
void QSInterpreter::addWrapperFactory ( QSWrapperFactory factory)

Adds the wrapper factory factory to the interpreter.

Using this function will clear the state of the interpreter, and will clear any transient objects.

QSArgument QSInterpreter::call ( const QString function,
const QSArgumentList arguments = QSArgumentList(),
QObject context = 0 
)

Calls the function function with the given arguments. The arguments are first converted into Qt Script datatypes.

Functions which were passed to evaluate() in previous calls or which are defined in the current project, can be called from this function.

If context is 0 (the default), the function is called in the global scope. If a context is given, the function is called in the scope of that object.

Interpreters that belong to a project are subject to re-evaluation, since the code which has been passed previously into evaluate() gets lost when calling one of these functions. This happens when the project or the scripts in it are modified.

bool QSInterpreter::checkSyntax ( const QString code)

Checks whether the script code code is free of syntax errors. Returns TRUE if the code is free of syntax errors; otherwise returns FALSE.

QStringList QSInterpreter::classes ( const QString context) const

Returns all the classes declared in the fully qualified context context.

Ver también:
functions(), variables()
QStringList QSInterpreter::classes ( ClassFlags  flags = AllClasses) const

Returns the classes in the interpreter.

If flags is AllClasses (the default), all the classes in the interpreter are returned, including those declared in object contexts. If flags is GlobalClasses, only those classes declared in the global context are returned.

Ver también:
functions(), variables()
QStringList QSInterpreter::classes ( QObject context) const

Returns all the classes declared in the context context.

Ver también:
functions(), variables()
void QSInterpreter::clear ( void  ) [slot]

Clears the state of the interpreter.

When the interpreter is cleared, all declarations parsed using the function QSInterpreter::evaluate() are removed. The state of all variables will also be cleared.

Clearing the interpreter will also remove any transient objects. Transient objects are those added with the function QSInterpreter::addTransientObject() or by evaluating code in the context of a QObject using QSInterpreter::evaluate();

This function does not clear persistent application objects added by the function QSProject::addObject().

QObject * QSInterpreter::currentContext ( ) const

Returns the current execution context of the interpreter. This is either a QObject pointer or 0.

QSInterpreter * QSInterpreter::defaultInterpreter ( ) [static]

Returns the default interpreter.

The default interpreter runs without a project.

This function will automatically create the interpreter if it doesn't already exist.

void QSInterpreter::error ( const QString message,
QObject context,
const QString scriptName,
int  lineNumber 
) [signal]

This signal is emitted if an error occurs when running or parsing a script. message contains the error message from the interpreter, context is a pointer to the QObject context in which the error occurred or 0, if the context is the global context, scriptName contains the script name (if known) in which the error occurred, and lineNumber contains the line number at which the error occurred.

void QSInterpreter::error ( const QString message,
const QString scriptName,
int  lineNumber 
) [signal]

This signal is emitted if an error occurs when running or parsing a script. message contains the error message from the interpreter, scriptName contains the script name (if known) in which the error occurred, and lineNumber contains the line number at which the error occurred.

QString QSInterpreter::errorMessage ( ) const

Returns the error message that was last reported if there was an error; otherwise returns QString::null

ErrorMode QSInterpreter::errorMode ( ) const
QSArgument QSInterpreter::evaluate ( const QString code,
QObject context = 0,
const QString scriptName = QString::null 
)

Executes the string of Qt Script in code and returns any value produced by that code.

This function executes the code passed in as code. The code can use and reference code (functions, classes, variables, etc.) which have been passed to this function previously or which are defined in the current project, if present. Also, application objects which have been added via addObject() can be accessed.

If context is 0 (the default), the code is executed as global code. If a context is given, the code is executed in the context of that object.

Interpreters that belong to a project are subject to re-evaluation, since the code which has been passed previously into evaluate() gets lost when calling one of these functions. This happens when the project or the scripts in it are modified.

scriptName is used for error reporting and debugging.

QStringList QSInterpreter::functions ( FunctionFlags  flags = FunctionNames) const

Returns all the functions in the global context.

If flags includes FunctionSignatures, then each function name returned will be of the following form:

  functionName( typeOfArg1, typeOfArg2, ... )

Otherwise just the names will be returned (which is the default).

Ver también:
classes(), variables()
QStringList QSInterpreter::functions ( const QString context,
uint  flags = FunctionNames 
) const

Returns all the script functions in the context context (this can be for example, a class or a form). If context is empty, the functions of the global context (global functions) are returned.

context can be fully qualified.

If flags includes FunctionSignatures, then each function name returned will be of the following form:

  functionName( typeOfArg1, typeOfArg2, ... )

Otherwise just the names will be returned (which is the default).

If flags includes IncludeMemberFunctions and context represents a class declared in script, this function will return both static and non-static functions; otherwise it only returns static functions.

Ver también:
classes(), variables()
QStringList QSInterpreter::functions ( QObject context,
FunctionFlags  flags = FunctionNames 
) const

Returns all script functions which have been defined in the context context.

If flags includes FunctionSignatures, then each function name returned will be of the following form:

  functionName( typeOfArg1, typeOfArg2, ... )

Otherwise just the names will be returned (which is the default).

Ver también:
classes(), variables()
bool QSInterpreter::hadError ( ) const

Returns TRUE if the interpreter had an error during the last execution; otherwise returns FALSE.

bool QSInterpreter::hasClass ( const QString className) const

Returns TRUE if the class className exists; otherwise returns FALSE.

The class name can be a fully qualified in the form:

  myclass.innerClass
bool QSInterpreter::hasFunction ( const QString function) const

Returns TRUE if the function function exists; otherwise returns FALSE.

The function can be a fully qualified in the form:

  myclass.function
bool QSInterpreter::hasVariable ( const QString variable) const

Returns TRUE if the variable variable exists; otherwise returns FALSE.

The variable name can be fully qualified in the form:

  myobject.otherobject.var
bool QSInterpreter::isRunning ( ) const [inline]

Return TRUE if the interpreter is currently evaluating code; otherwise returns FALSE.

QObjectList QSInterpreter::presentObjects ( ) const

Returns the list of objects currently available for scripting in this interpreter.

QSProject * QSInterpreter::project ( ) const

Returns the current project of the interpreter or 0 if there is no project.

void QSInterpreter::removeTransientSignalHandler ( QObject sender,
const char *  signal,
const char *  qtscriptFunction 
)

Removes the connection between the signal signal of the object sender and the fully qualified signal handler qtscriptFunction.

Ver también:
addTransientSignalHandler()
void QSInterpreter::setErrorMode ( ErrorMode  m)
void QSInterpreter::setTimeoutInterval ( int  msecs)
QSStackTrace QSInterpreter::stackTrace ( ) const

Returns the stack trace describing the call stack of the last reported error if there was an error; otherwise returns an empty stack trace.

void QSInterpreter::stopExecution ( ) [slot]

Stops a running interpreter by throwing an error.

void QSInterpreter::throwError ( const QString message)

Informs the interpreter that an error has occurred. The error is treated like a normal Qt Script error. The error message is passed in message.

void QSInterpreter::timeout ( int  elapsedTime) [signal]

This signal is emitted on intervals specified by timeoutInterval

The elapsedTime parameter describes the number of milliseconds the interpreter has been running.

int QSInterpreter::timeoutInterval ( ) const
QSArgument QSInterpreter::variable ( const QString variableName,
QObject context = 0 
) const

Returns the value of the variableName in the scope of context. If the context is 0 (the default) the global scope is used. The variable name can be fully qualified in the form:

  a.b.c
QStringList QSInterpreter::variables ( const QString context,
bool  includeStatic = false,
bool  includeCustom = false,
bool  includeMemberVariables = false 
) const

Returns all the variables declared in the fully qualified context context.

Ver también:
functions(), classes()
QStringList QSInterpreter::variables ( bool  includeStatic = false,
bool  includeCustom = false,
bool  includeMemberVariables = false 
) const

Returns all the variables declared in the global context.

Ver también:
functions(), classes()
QStringList QSInterpreter::variables ( QObject context,
bool  includeStatic = false,
bool  includeCustom = false,
bool  includeMemberVariables = false 
) const

Returns all the variables declared in the contenxt context.

Ver también:
functions(), classes()

Documentación de las funciones relacionadas y clases amigas

QuickInterpreter* get_quick_interpreter ( QSInterpreter ip) [friend]
friend class QSInterfaceFactory [friend]
friend class QSObjectFactory [friend]
friend class QSProject [friend]
friend class QSToolkitFactory [friend]
friend class QSWrapperFactory [friend]

Documentación de propiedades

QSInterpreter::ErrorMode QSInterpreter::errorMode [read, write]

What happens when there is an error:

int QSInterpreter::timeoutInterval [read, write]

Describes the number of milliseconds between each time the timeout() signal will be emitted by the interpreter.

The timeout can be used to perform monitoring of the interpreter, such as forcing it to terminate if it has not terminated after 10 seconds. A negative value, the default, will turn off the timeout() signal.

Ver también:
timeout()

La documentación para esta clase fue generada a partir de los siguientes ficheros:
 Todo Clases Namespaces Archivos Funciones Variables 'typedefs' Enumeraciones Valores de enumeraciones Propiedades Amigas 'defines'