Beispiel #1
0
void QuickInterpreter::clear()
{
//     printf("QuickInterpreter::clear()\n");
    // Clear all connections
    while (m_script_connections.size()) {
        QHash<int, QSAConnection>::Iterator it = m_script_connections.begin();
//         printf(" -> removing connection: %d\n", it.key());
        removeConnection(it->sender, it->signal.toLatin1(), it->function_ref);
    }

    // clean out slots
    delete m_dynamic_slots;
    m_dynamic_slots = 0;

    sourceIdNames.clear();
    debuggerEngine()->clear();
    qsKillTimers(env());
    invalidateWrappers();

    if(toplevel)
	toplevel->clear();
    QSEngine::clear();
    QSEngine::init();
    init();
}
void QuickInterpreter::clear()
{
    sourceIdNames.clear();
    debuggerEngine()->clear();
    stopAllTimers();
    invalidateWrappers();
    if( toplevel )
	toplevel->clear();
    QSEngine::clear();
    QSEngine::init();
    init();
}
Beispiel #3
0
void QuickInterpreter::stop()
{
    qsKillTimers(env());
    debuggerEngine()->clear();
}
Beispiel #4
0
void QuickInterpreter::init()
{
    m_dynamic_slots = new QSMetaObject(this);

    qsa_setup_meta_objects();
    debuggerEngine()->clear();

    staticGlobals.clear();

    staticGlobals << QString::fromLatin1("NaN")
                  << QString::fromLatin1("undefined")
                  << QString::fromLatin1("Infinity")
                  << QString::fromLatin1("Application");

    // add some common objects to the Global object
    QSObject global(env()->globalObject());
    QSClass *objClass = env()->objectClass();

    wrpClass = new QSWrapperClass(objClass);
    ptrClass = new QSPointerClass(objClass);
    varClass = new QSVariantClass(objClass);
    appClass = new QSApplicationClass(objClass);
    global.put(QString::fromLatin1("Application"), appClass->createWritable());

    pntClass = new QSPointClass(objClass, this);
    registerType(pntClass);
    sizClass = new QSSizeClass(objClass, this);
    registerType(sizClass);
    rctClass = new QSRectClass(objClass, this);
    registerType(rctClass);
    baClass = new QSByteArrayClass(objClass);
    registerType(baClass);
#ifndef QSA_NO_GUI
    colClass = new QSColorClass(objClass);
    registerType(colClass);
    fntClass = new QSFontClass(objClass);
    registerType(fntClass);
    pixClass = new QSPixmapClass(objClass, this);
    registerType(pixClass);
    palClass = new QSPaletteClass(objClass);
    registerType(palClass);
    colGrpClass = new QSColorGroupClass(objClass);
    registerType(colGrpClass);
#endif

    enableDebug(); // adds "debug" function which uses qDebug()
//     //
    env()->globalClass()->addMember(QString::fromLatin1("connect"), QSMember(qsa_connect));
    env()->globalClass()->addMember(QString::fromLatin1("disconnect"), QSMember(qsa_disconnect));
    env()->globalClass()->addMember(QString::fromLatin1("startTimer"), QSMember(qsStartTimer));
    env()->globalClass()->addMember(QString::fromLatin1("killTimer"), QSMember(qsKillTimer));
    env()->globalClass()->addMember(QString::fromLatin1("killTimers"), QSMember(qsKillTimers));

    QMap<QString,QObject*> statDescr = factory->staticDescriptors();
    QMap<QString,QString> instDescr = factory->instanceDescriptors();

    QList<QString> features = instDescr.keys();
    for (QList<QString>::ConstIterator it = features.begin();
	  it != features.end(); ++it) {
        if (env()->globalClass()->definedMembers()->contains(*it)) {
            qWarning("QSObjectFactory: Trying to register existing class: '%s'", (*it).toLatin1().constData());
            continue;
        }
	QSObject staticInst;
	if(statDescr.contains(*it)) { // has static?
	    QObject *sinst = statDescr[ *it ];
	    Q_ASSERT(sinst);
	    staticInst = wrap(sinst);
	    statDescr.remove(*it);
	}
	QSObjectConstructor *constr =
	    new QSObjectConstructor(objClass, *it);
	QSFactoryObjectProxy *ptype =
	    new QSFactoryObjectProxy(env()->typeClass(), staticInst, constr);
        constr->setFactoryObjectProxy(ptype);
	QSObject proxy(ptype, env()->typeClass()->createTypeShared(constr));
	env()->globalClass()->addStaticVariableMember(constr->identifier(),
						       proxy,
						       AttributeExecutable);
    }

    for(QMap<QString,QObject*>::ConstIterator sit = statDescr.begin();
	 sit != statDescr.end(); ++sit) {
        if (env()->globalClass()->definedMembers()->contains(sit.key())) {
            qWarning("QSObjectFactory: Trying to register existing class: '%s'", sit.key().toLatin1().constData());
            continue;
        }
	QSObject staticInst;
	QObject *sinst = statDescr[ sit.key() ];
	Q_ASSERT(sinst);
	staticInst = wrap(sinst);
	env()->globalClass()->addStaticVariableMember(sit.key(), staticInst, AttributeNone);
    }
}
void QuickInterpreter::stop()
{
    stopAllTimers();
    debuggerEngine()->clear();
}