void LinkPrivate::populateImportedTypes(Imports *imports, Document::Ptr doc) { importableModuleApis.clear(); // implicit imports: the <default> package is always available loadImplicitDefaultImports(imports); // implicit imports: // qml files in the same directory are available without explicit imports if (doc->isQmlDocument()) loadImplicitDirectoryImports(imports, doc); // explicit imports, whether directories, files or libraries foreach (const ImportInfo &info, doc->bind()->imports()) { Import import = importCache.value(ImportCacheKey(info)); // ensure usage of the right ImportInfo, the cached import // can have a different 'as' clause... import.info = info; if (!import.object) { switch (info.type()) { case ImportType::File: case ImportType::Directory: case ImportType::QrcFile: case ImportType::QrcDirectory: import = importFileOrDirectory(doc, info); break; case ImportType::Library: import = importNonFile(doc, info); break; case ImportType::UnknownFile: imports->setImportFailed(); if (info.ast()) { error(doc, info.ast()->fileNameToken, Link::tr("File or directory not found.")); } break; default: break; } if (import.object) importCache.insert(ImportCacheKey(info), import); } if (import.object) imports->append(import); } }
void QuickToolBar::apply(TextEditor::BaseTextEditorWidget *editorWidget, Document::Ptr document, const ScopeChain *scopeChain, AST::Node *node, bool update, bool force) { if (!QuickToolBarSettings::get().enableContextPane && !force && !update) { contextWidget()->hide(); return; } if (document.isNull()) return; if (update && editorWidget != m_editorWidget) return; //do not update for different editor m_blockWriting = true; const ObjectValue *scopeObject = document->bind()->findQmlObject(node); bool isPropertyChanges = false; if (scopeChain && scopeObject) { m_prototypes.clear(); foreach (const ObjectValue *object, PrototypeIterator(scopeObject, scopeChain->context()).all()) { m_prototypes.append(object->className()); } if (m_prototypes.contains(QLatin1String("PropertyChanges"))) { isPropertyChanges = true; const ObjectValue *targetObject = getPropertyChangesTarget(node, *scopeChain); m_prototypes.clear(); if (targetObject) { foreach (const ObjectValue *object, PrototypeIterator(targetObject, scopeChain->context()).all()) { m_prototypes.append(object->className()); } } }