Carousel
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Properties Pages
Public Member Functions | Protected Member Functions | List of all members
JsScriptingComponent Class Reference

This class represents a component, that adds JavaScript facilities using QtScript module. More...

#include <JsScriptingComponent.h>

Inherits BaseComponent.

Public Member Functions

 JsScriptingComponent (QObject *parent=nullptr)
 
- Public Member Functions inherited from BaseComponent
Availability availability () const
 
const ComponentDefinitiondefinition () const
 
void * getExtension (const QString &byTypeId) const
 
bool isCompatible (const IComponent *withOther) const
 
const QStringname () const
 
void setAvailability (Availability newMode)
 
void shutdown (IServiceLocator *serviceLocator)
 
bool started () const
 
bool startup (IServiceLocator *serviceLocator)
 
- Public Member Functions inherited from IComponent
template<typename TExtension >
TExtension * extension ()
 
template<typename TExtension >
const TExtension * extension () const
 
- Public Member Functions inherited from QObject
 QObject (QObject *parent)
 
 QObject (QObject *parent, const char *name)
 
bool blockSignals (bool block)
 
QObjectchild (const char *objName, const char *inheritsClass, bool recursiveSearch) const
 
const QObjectList & children () const
 
const char * className () const
 
bool connect (const QObject *sender, const char *signal, const char *method, Qt::ConnectionType type) const
 
void deleteLater ()
 
void destroyed (QObject *obj)
 
bool disconnect (const QObject *receiver, const char *method)
 
bool disconnect (const char *signal, const QObject *receiver, const char *method)
 
void dumpObjectInfo ()
 
void dumpObjectTree ()
 
QList< QByteArraydynamicPropertyNames () const
 
virtual bool event (QEvent *e)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
findChild (const QString &name) const
 
QList< T > findChildren (const QRegExp &regExp) const
 
QList< T > findChildren (const QString &name) const
 
bool inherits (const char *className) const
 
void insertChild (QObject *object)
 
void installEventFilter (QObject *filterObj)
 
bool isA (const char *className) const
 
bool isWidgetType () const
 
void killTimer (int id)
 
virtual const QMetaObjectmetaObject () const
 
void moveToThread (QThread *targetThread)
 
const char * name () const
 
const char * name (const char *defaultName) const
 
QString objectName () const
 
QObjectparent () const
 
QVariant property (const char *name) const
 
void removeChild (QObject *object)
 
void removeEventFilter (QObject *obj)
 
void setName (const char *name)
 
void setObjectName (const QString &name)
 
void setParent (QObject *parent)
 
bool setProperty (const char *name, const QVariant &value)
 
bool signalsBlocked () const
 
int startTimer (int interval)
 
QThreadthread () const
 

Protected Member Functions

void onShutdown (IServiceLocator *serviceLocator)
 
bool onStartup (IServiceLocator *serviceLocator)
 
- Protected Member Functions inherited from BaseComponent
 BaseComponent (const QString &name, QObject *parent=nullptr)
 
 BaseComponent (ComponentDefinition *definition, QObject *parent=nullptr)
 
void addParent (const QString &parentName, int major_version, int minor_version, int build_version=0, int revision_version=0)
 
void loadAvailability ()
 
virtual void onAvailabilityChanged (Availability newMode)
 
template<typename TExtension >
void registerExtension (TExtension *instance)
 
void saveAvailability ()
 
void setDescription (const QString &description)
 
void setProductName (const QString &productName)
 
void setProvider (const QString &provider)
 
void setShortName (const QString &name)
 
void setVersion (int major_version, int minor_version, int build_version=0, int revision_version=0)
 
- Protected Member Functions inherited from QObject
bool checkConnectArgs (const char *signal, const QObject *object, const char *method)
 
virtual void childEvent (QChildEvent *event)
 
virtual void connectNotify (const char *signal)
 
virtual void customEvent (QEvent *event)
 
virtual void disconnectNotify (const char *signal)
 
int receivers (const char *signal) const
 
QObjectsender () const
 
int senderSignalIndex () const
 
virtual void timerEvent (QTimerEvent *event)
 

Additional Inherited Members

- Public Types inherited from IComponent
enum  Availability { Enabled, Disabled, Unavailable }
 
- Signals inherited from IComponent
void availabilityChanged (IComponent::Availability)
 
- Static Public Member Functions inherited from QObject
bool connect (const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
 
bool connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type)
 
bool disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *method)
 
bool disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method)
 
QString tr (const char *sourceText, const char *disambiguation, int n)
 
QString trUtf8 (const char *sourceText, const char *disambiguation, int n)
 
- Static Protected Member Functions inherited from QObject
QByteArray normalizeSignalSlot (const char *signalSlot)
 
- Properties inherited from IComponent
Availability availability
 
const ComponentDefinition definition
 
QString name
 
bool started
 
- Properties inherited from QObject
 objectName
 

Detailed Description

This class represents a component, that adds JavaScript facilities using QtScript module.

The JsScriptingComponent provides objects that allow custom application to expose its API to the JavaScript. This component populates GUI with script console dockable widget and with simple script editor, which allows to create, save, load and run new scripts.

All objsects, registered in the IServiceLocator are available from the script. Also one more object is available in the JS global context - it is the serviceLocator:

* var cm = serviceLocator.locate("IComponentManager");
* var startedComponents = cm.startedComponents;
* var componentsCount = startedComponents.length;
*

To see all available objsects from the serviceLocator you can use serviceLocator.services() method;

To see all properties and methods in the object you can use explore() function:

* explore(serviceLocator);
* explore(cm);
*

explore() also can be used without arguments to print out global objects, types and functions.

Since all objsects, registered in the IServiceLocator are available from the script, it is possible to get references for deeper models of the component. Main flow for this the next: you get a service from the script. As soon as the service is derived from the QObject, ypu can use its properties amd methods. Usually, carousel services expose some part of the its model through the properties or slots. So, you can get some model (which is derived from the QObject too) reference via these properties, and so on.

If some component wants to extend script with new funcitons or types, or register wrappers for some non-QObject classes, it should be a child of the JsScriptingComponent. This mean a dependency of component parent name: "org.carousel.JsScripting". Then to get chance for registration, this component should also provide IScriptExtension extension. The overridden IScriptExtension::configureEngine method will be invoked every time, when QScriptEngine configuration is needed. So, in your extension you can register what ever you want in the QScriptEngine.

Registered services:

See Also
IScriptEngineConfigurationDelegate, IScriptExtension, IScriptingService

Constructor & Destructor Documentation

JsScriptingComponent::JsScriptingComponent ( QObject parent = nullptr)

Initializes a new instance of the JsScriptingComponent class.

Member Function Documentation

void JsScriptingComponent::onShutdown ( IServiceLocator serviceLocator)
protectedvirtual

Shuts down the component.

Reimplemented from BaseComponent.

bool JsScriptingComponent::onStartup ( IServiceLocator serviceLocator)
protectedvirtual

Registers IScriptingService, ScriptCollectionDialog and ScriptCollectionModel in the serviceLocator.

Reimplemented from BaseComponent.