int elektraWresolverOpen (Plugin * handle, Key * errorKey) { KeySet * resolverConfig = elektraPluginGetConfig (handle); const char * path = keyString (ksLookupByName (resolverConfig, "/path", 0)); if (!path) { ELEKTRA_SET_ERROR (34, errorKey, "Could not find file configuration"); return -1; } resolverHandles * p = elektraMalloc (sizeof (resolverHandles)); // switch is only present to forget no namespace and to get // a warning whenever a new namespace is present. // (also used below in close) // In fact its linear code executed: switch (KEY_NS_SPEC) { case KEY_NS_SPEC: resolverInit (&p->spec, path); elektraResolveSpec (&p->spec, errorKey); case KEY_NS_DIR: resolverInit (&p->dir, path); elektraResolveDir (&p->dir, errorKey); case KEY_NS_USER: resolverInit (&p->user, path); elektraResolveUser (&p->user, errorKey); case KEY_NS_SYSTEM: resolverInit (&p->system, path); elektraResolveSystem (&p->system, errorKey); case KEY_NS_PROC: case KEY_NS_EMPTY: case KEY_NS_NONE: case KEY_NS_META: case KEY_NS_CASCADING: break; } elektraPluginSetData (handle, p); return 0; /* success */ }
void QtScriptResolver::init() { QFile scriptFile( filePath() ); if( !scriptFile.open( QIODevice::ReadOnly ) ) { qWarning() << "Failed to read contents of file:" << filePath() << scriptFile.errorString(); return; } const QByteArray scriptContents = scriptFile.readAll(); m_engine->mainFrame()->setHtml( "<html><body></body></html>" ); // add c++ part of tomahawk javascript library m_engine->mainFrame()->addToJavaScriptWindowObject( "Tomahawk", m_resolverHelper ); // add rest of it m_engine->setScriptPath( "tomahawk.js" ); QFile jslib( RESPATH "js/tomahawk.js" ); jslib.open( QIODevice::ReadOnly ); m_engine->mainFrame()->evaluateJavaScript( jslib.readAll() ); jslib.close(); // add resolver m_engine->setScriptPath( filePath() ); m_engine->mainFrame()->evaluateJavaScript( scriptContents ); // init resolver resolverInit(); QVariantMap m = resolverSettings(); m_name = m.value( "name" ).toString(); m_weight = m.value( "weight", 0 ).toUInt(); m_timeout = m.value( "timeout", 25 ).toUInt() * 1000; // load config widget and apply settings loadUi(); QVariantMap config = resolverUserConfig(); fillDataInWidgets( config ); qDebug() << "JS" << filePath() << "READY," << "name" << m_name << "weight" << m_weight << "timeout" << m_timeout; m_ready = true; Tomahawk::Pipeline::instance()->addResolver( this ); }