forked from qt-creator/qt-creator
QmlDesigner: Refactor update bundle imported state
Remove the useless round trip from model to view and back Change-Id: I38a5826e165014f64d7855139b58e9691b0f6310 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
@@ -98,8 +98,10 @@ void ContentLibraryEffectsModel::createImporter()
|
|||||||
[&](const QmlDesigner::TypeName &typeName) {
|
[&](const QmlDesigner::TypeName &typeName) {
|
||||||
m_importerRunning = false;
|
m_importerRunning = false;
|
||||||
emit importerRunningChanged();
|
emit importerRunningChanged();
|
||||||
if (typeName.size())
|
if (typeName.size()) {
|
||||||
emit bundleItemImported(typeName);
|
emit bundleItemImported(typeName);
|
||||||
|
updateImportedState();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
#else
|
#else
|
||||||
connect(m_importer,
|
connect(m_importer,
|
||||||
@@ -108,8 +110,10 @@ void ContentLibraryEffectsModel::createImporter()
|
|||||||
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
||||||
m_importerRunning = false;
|
m_importerRunning = false;
|
||||||
emit importerRunningChanged();
|
emit importerRunningChanged();
|
||||||
if (metaInfo.isValid())
|
if (metaInfo.isValid()) {
|
||||||
emit bundleItemImported(metaInfo);
|
emit bundleItemImported(metaInfo);
|
||||||
|
updateImportedState();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -119,6 +123,7 @@ void ContentLibraryEffectsModel::createImporter()
|
|||||||
m_importerRunning = false;
|
m_importerRunning = false;
|
||||||
emit importerRunningChanged();
|
emit importerRunningChanged();
|
||||||
emit bundleItemUnimported(metaInfo);
|
emit bundleItemUnimported(metaInfo);
|
||||||
|
updateImportedState();
|
||||||
});
|
});
|
||||||
|
|
||||||
resetModel();
|
resetModel();
|
||||||
@@ -244,8 +249,20 @@ void ContentLibraryEffectsModel::setSearchText(const QString &searchText)
|
|||||||
updateIsEmpty();
|
updateIsEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContentLibraryEffectsModel::updateImportedState(const QStringList &importedItems)
|
void ContentLibraryEffectsModel::updateImportedState()
|
||||||
{
|
{
|
||||||
|
if (!m_importer)
|
||||||
|
return;
|
||||||
|
|
||||||
|
QString bundleId = m_bundleObj.value("id").toString();
|
||||||
|
Utils::FilePath bundlePath = m_importer->resolveBundleImportPath(bundleId);
|
||||||
|
|
||||||
|
QStringList importedItems;
|
||||||
|
if (bundlePath.exists()) {
|
||||||
|
importedItems = transform(bundlePath.dirEntries({{"*.qml"}, QDir::Files}),
|
||||||
|
[](const Utils::FilePath &f) { return f.baseName(); });
|
||||||
|
}
|
||||||
|
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
for (ContentLibraryEffectsCategory *cat : std::as_const(m_bundleCategories))
|
for (ContentLibraryEffectsCategory *cat : std::as_const(m_bundleCategories))
|
||||||
changed |= cat->updateImportedState(importedItems);
|
changed |= cat->updateImportedState(importedItems);
|
||||||
|
@@ -35,7 +35,7 @@ public:
|
|||||||
|
|
||||||
void loadBundle();
|
void loadBundle();
|
||||||
void setSearchText(const QString &searchText);
|
void setSearchText(const QString &searchText);
|
||||||
void updateImportedState(const QStringList &importedItems);
|
void updateImportedState();
|
||||||
|
|
||||||
void setQuick3DImportVersion(int major, int minor);
|
void setQuick3DImportVersion(int major, int minor);
|
||||||
|
|
||||||
|
@@ -217,8 +217,10 @@ void ContentLibraryMaterialsModel::createImporter()
|
|||||||
[&](const QmlDesigner::TypeName &typeName) {
|
[&](const QmlDesigner::TypeName &typeName) {
|
||||||
m_importerRunning = false;
|
m_importerRunning = false;
|
||||||
emit importerRunningChanged();
|
emit importerRunningChanged();
|
||||||
if (typeName.size())
|
if (typeName.size()) {
|
||||||
emit bundleMaterialImported(typeName);
|
emit bundleMaterialImported(typeName);
|
||||||
|
updateImportedState();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
#else
|
#else
|
||||||
connect(m_importer,
|
connect(m_importer,
|
||||||
@@ -227,8 +229,10 @@ void ContentLibraryMaterialsModel::createImporter()
|
|||||||
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
||||||
m_importerRunning = false;
|
m_importerRunning = false;
|
||||||
emit importerRunningChanged();
|
emit importerRunningChanged();
|
||||||
if (metaInfo.isValid())
|
if (metaInfo.isValid()) {
|
||||||
emit bundleMaterialImported(metaInfo);
|
emit bundleMaterialImported(metaInfo);
|
||||||
|
updateImportedState();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -238,6 +242,7 @@ void ContentLibraryMaterialsModel::createImporter()
|
|||||||
m_importerRunning = false;
|
m_importerRunning = false;
|
||||||
emit importerRunningChanged();
|
emit importerRunningChanged();
|
||||||
emit bundleMaterialUnimported(metaInfo);
|
emit bundleMaterialUnimported(metaInfo);
|
||||||
|
updateImportedState();
|
||||||
});
|
});
|
||||||
|
|
||||||
resetModel();
|
resetModel();
|
||||||
@@ -355,11 +360,23 @@ void ContentLibraryMaterialsModel::setSearchText(const QString &searchText)
|
|||||||
updateIsEmpty();
|
updateIsEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContentLibraryMaterialsModel::updateImportedState(const QStringList &importedMats)
|
void ContentLibraryMaterialsModel::updateImportedState()
|
||||||
{
|
{
|
||||||
|
if (!m_importer)
|
||||||
|
return;
|
||||||
|
|
||||||
|
QString bundleId = m_matBundleObj.value("id").toString();
|
||||||
|
Utils::FilePath bundlePath = m_importer->resolveBundleImportPath(bundleId);
|
||||||
|
|
||||||
|
QStringList importedItems;
|
||||||
|
if (bundlePath.exists()) {
|
||||||
|
importedItems = transform(bundlePath.dirEntries({{"*.qml"}, QDir::Files}),
|
||||||
|
[](const Utils::FilePath &f) { return f.baseName(); });
|
||||||
|
}
|
||||||
|
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
for (ContentLibraryMaterialsCategory *cat : std::as_const(m_bundleCategories))
|
for (ContentLibraryMaterialsCategory *cat : std::as_const(m_bundleCategories))
|
||||||
changed |= cat->updateImportedState(importedMats);
|
changed |= cat->updateImportedState(importedItems);
|
||||||
|
|
||||||
if (changed)
|
if (changed)
|
||||||
resetModel();
|
resetModel();
|
||||||
|
@@ -35,7 +35,7 @@ public:
|
|||||||
QHash<int, QByteArray> roleNames() const override;
|
QHash<int, QByteArray> roleNames() const override;
|
||||||
|
|
||||||
void setSearchText(const QString &searchText);
|
void setSearchText(const QString &searchText);
|
||||||
void updateImportedState(const QStringList &importedMats);
|
void updateImportedState();
|
||||||
|
|
||||||
void setQuick3DImportVersion(int major, int minor);
|
void setQuick3DImportVersion(int major, int minor);
|
||||||
|
|
||||||
|
@@ -209,7 +209,7 @@ TypeName ContentLibraryUserModel::qmlToModule(const QString &qmlName) const
|
|||||||
{
|
{
|
||||||
return QLatin1String("%1.%2.%3").arg(QmlDesignerPlugin::instance()->documentManager()
|
return QLatin1String("%1.%2.%3").arg(QmlDesignerPlugin::instance()->documentManager()
|
||||||
.generatedComponentUtils().componentBundlesTypePrefix(),
|
.generatedComponentUtils().componentBundlesTypePrefix(),
|
||||||
m_bundleId,
|
m_bundleIdMaterial,
|
||||||
qmlName.chopped(4)).toLatin1(); // chopped(4): remove .qml
|
qmlName.chopped(4)).toLatin1(); // chopped(4): remove .qml
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -233,8 +233,10 @@ void ContentLibraryUserModel::createImporter()
|
|||||||
[&](const QmlDesigner::TypeName &typeName) {
|
[&](const QmlDesigner::TypeName &typeName) {
|
||||||
m_importerRunning = false;
|
m_importerRunning = false;
|
||||||
emit importerRunningChanged();
|
emit importerRunningChanged();
|
||||||
if (typeName.size())
|
if (typeName.size()) {
|
||||||
emit bundleMaterialImported(typeName);
|
emit bundleMaterialImported(typeName);
|
||||||
|
updateImportedState();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
#else
|
#else
|
||||||
connect(m_importer,
|
connect(m_importer,
|
||||||
@@ -243,8 +245,10 @@ void ContentLibraryUserModel::createImporter()
|
|||||||
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
||||||
m_importerRunning = false;
|
m_importerRunning = false;
|
||||||
emit importerRunningChanged();
|
emit importerRunningChanged();
|
||||||
if (metaInfo.isValid())
|
if (metaInfo.isValid()) {
|
||||||
emit bundleMaterialImported(metaInfo);
|
emit bundleMaterialImported(metaInfo);
|
||||||
|
updateImportedState();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -254,6 +258,7 @@ void ContentLibraryUserModel::createImporter()
|
|||||||
m_importerRunning = false;
|
m_importerRunning = false;
|
||||||
emit importerRunningChanged();
|
emit importerRunningChanged();
|
||||||
emit bundleMaterialUnimported(metaInfo);
|
emit bundleMaterialUnimported(metaInfo);
|
||||||
|
updateImportedState();
|
||||||
});
|
});
|
||||||
|
|
||||||
resetModel();
|
resetModel();
|
||||||
@@ -299,7 +304,7 @@ void ContentLibraryUserModel::loadMaterialBundle()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
m_bundleId = m_bundleObj.value("id").toString();
|
m_bundleIdMaterial = m_bundleObj.value("id").toString();
|
||||||
|
|
||||||
// parse materials
|
// parse materials
|
||||||
const QJsonObject matsObj = m_bundleObj.value("materials").toObject();
|
const QJsonObject matsObj = m_bundleObj.value("materials").toObject();
|
||||||
@@ -390,15 +395,28 @@ void ContentLibraryUserModel::setSearchText(const QString &searchText)
|
|||||||
updateIsEmpty();
|
updateIsEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContentLibraryUserModel::updateImportedState(const QStringList &importedMats)
|
void ContentLibraryUserModel::updateImportedState()
|
||||||
{
|
{
|
||||||
|
if (!m_importer)
|
||||||
|
return;
|
||||||
|
|
||||||
|
QString bundleId = m_bundleObj.value("id").toString();
|
||||||
|
Utils::FilePath bundlePath = m_importer->resolveBundleImportPath(bundleId);
|
||||||
|
|
||||||
|
QStringList importedItems;
|
||||||
|
if (bundlePath.exists()) {
|
||||||
|
importedItems = transform(bundlePath.dirEntries({{"*.qml"}, QDir::Files}),
|
||||||
|
[](const Utils::FilePath &f) { return f.baseName(); });
|
||||||
|
}
|
||||||
|
|
||||||
bool changed = false;
|
bool changed = false;
|
||||||
|
|
||||||
for (ContentLibraryMaterial *mat : std::as_const(m_userMaterials))
|
for (ContentLibraryMaterial *mat : std::as_const(m_userMaterials))
|
||||||
changed |= mat->setImported(importedMats.contains(mat->qml().chopped(4)));
|
changed |= mat->setImported(importedItems.contains(mat->qml().chopped(4)));
|
||||||
|
|
||||||
if (changed)
|
if (changed) {
|
||||||
resetModel();
|
int matSectionIdx = 0;
|
||||||
|
emit dataChanged(index(matSectionIdx), index(matSectionIdx));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContentLibraryUserModel::setQuick3DImportVersion(int major, int minor)
|
void ContentLibraryUserModel::setQuick3DImportVersion(int major, int minor)
|
||||||
|
@@ -41,7 +41,7 @@ public:
|
|||||||
QHash<int, QByteArray> roleNames() const override;
|
QHash<int, QByteArray> roleNames() const override;
|
||||||
|
|
||||||
void setSearchText(const QString &searchText);
|
void setSearchText(const QString &searchText);
|
||||||
void updateImportedState(const QStringList &importedMats);
|
void updateImportedState();
|
||||||
|
|
||||||
QPair<QString, QString> getUniqueLibMaterialNameAndQml(const QString &matName) const;
|
QPair<QString, QString> getUniqueLibMaterialNameAndQml(const QString &matName) const;
|
||||||
TypeName qmlToModule(const QString &qmlName) const;
|
TypeName qmlToModule(const QString &qmlName) const;
|
||||||
@@ -102,7 +102,7 @@ private:
|
|||||||
|
|
||||||
ContentLibraryWidget *m_widget = nullptr;
|
ContentLibraryWidget *m_widget = nullptr;
|
||||||
QString m_searchText;
|
QString m_searchText;
|
||||||
QString m_bundleId;
|
QString m_bundleIdMaterial;
|
||||||
|
|
||||||
QList<ContentLibraryMaterial *> m_userMaterials;
|
QList<ContentLibraryMaterial *> m_userMaterials;
|
||||||
QList<ContentLibraryTexture *> m_userTextures;
|
QList<ContentLibraryTexture *> m_userTextures;
|
||||||
|
@@ -114,7 +114,6 @@ WidgetInfo ContentLibraryView::widgetInfo()
|
|||||||
this,
|
this,
|
||||||
[&](const QmlDesigner::TypeName &typeName) {
|
[&](const QmlDesigner::TypeName &typeName) {
|
||||||
applyBundleMaterialToDropTarget({}, typeName);
|
applyBundleMaterialToDropTarget({}, typeName);
|
||||||
updateBundleMaterialsImportedState();
|
|
||||||
});
|
});
|
||||||
#else
|
#else
|
||||||
connect(materialsModel,
|
connect(materialsModel,
|
||||||
@@ -122,7 +121,6 @@ WidgetInfo ContentLibraryView::widgetInfo()
|
|||||||
this,
|
this,
|
||||||
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
||||||
applyBundleMaterialToDropTarget({}, metaInfo);
|
applyBundleMaterialToDropTarget({}, metaInfo);
|
||||||
updateBundleMaterialsImportedState();
|
|
||||||
});
|
});
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -141,9 +139,6 @@ WidgetInfo ContentLibraryView::widgetInfo()
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(materialsModel, &ContentLibraryMaterialsModel::bundleMaterialUnimported, this,
|
|
||||||
&ContentLibraryView::updateBundleMaterialsImportedState);
|
|
||||||
|
|
||||||
ContentLibraryEffectsModel *effectsModel = m_widget->effectsModel().data();
|
ContentLibraryEffectsModel *effectsModel = m_widget->effectsModel().data();
|
||||||
|
|
||||||
#ifdef QDS_USE_PROJECTSTORAGE
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
@@ -167,7 +162,6 @@ WidgetInfo ContentLibraryView::widgetInfo()
|
|||||||
selectModelNode(newEffNode);
|
selectModelNode(newEffNode);
|
||||||
});
|
});
|
||||||
|
|
||||||
updateBundleEffectsImportedState();
|
|
||||||
m_bundleEffectTarget = {};
|
m_bundleEffectTarget = {};
|
||||||
m_bundleEffectPos = {};
|
m_bundleEffectPos = {};
|
||||||
});
|
});
|
||||||
@@ -196,7 +190,6 @@ WidgetInfo ContentLibraryView::widgetInfo()
|
|||||||
selectModelNode(newEffNode);
|
selectModelNode(newEffNode);
|
||||||
});
|
});
|
||||||
|
|
||||||
updateBundleEffectsImportedState();
|
|
||||||
m_bundleEffectTarget = {};
|
m_bundleEffectTarget = {};
|
||||||
m_bundleEffectPos = {};
|
m_bundleEffectPos = {};
|
||||||
});
|
});
|
||||||
@@ -212,9 +205,6 @@ WidgetInfo ContentLibraryView::widgetInfo()
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(effectsModel, &ContentLibraryEffectsModel::bundleItemUnimported, this,
|
|
||||||
&ContentLibraryView::updateBundleEffectsImportedState);
|
|
||||||
|
|
||||||
connectUserBundle();
|
connectUserBundle();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -252,7 +242,6 @@ void ContentLibraryView::connectUserBundle()
|
|||||||
this,
|
this,
|
||||||
[&](const QmlDesigner::TypeName &typeName) {
|
[&](const QmlDesigner::TypeName &typeName) {
|
||||||
applyBundleMaterialToDropTarget({}, typeName);
|
applyBundleMaterialToDropTarget({}, typeName);
|
||||||
updateBundleUserMaterialsImportedState();
|
|
||||||
});
|
});
|
||||||
#else
|
#else
|
||||||
connect(userModel,
|
connect(userModel,
|
||||||
@@ -260,7 +249,6 @@ void ContentLibraryView::connectUserBundle()
|
|||||||
this,
|
this,
|
||||||
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
[&](const QmlDesigner::NodeMetaInfo &metaInfo) {
|
||||||
applyBundleMaterialToDropTarget({}, metaInfo);
|
applyBundleMaterialToDropTarget({}, metaInfo);
|
||||||
updateBundleUserMaterialsImportedState();
|
|
||||||
});
|
});
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -278,9 +266,6 @@ void ContentLibraryView::connectUserBundle()
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
connect(userModel, &ContentLibraryUserModel::bundleMaterialUnimported, this,
|
|
||||||
&ContentLibraryView::updateBundleUserMaterialsImportedState);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContentLibraryView::modelAttached(Model *model)
|
void ContentLibraryView::modelAttached(Model *model)
|
||||||
@@ -308,9 +293,9 @@ void ContentLibraryView::modelAttached(Model *model)
|
|||||||
m_widget->userModel()->loadMaterialBundle();
|
m_widget->userModel()->loadMaterialBundle();
|
||||||
m_widget->userModel()->loadTextureBundle();
|
m_widget->userModel()->loadTextureBundle();
|
||||||
|
|
||||||
updateBundleMaterialsImportedState();
|
m_widget->materialsModel()->updateImportedState();
|
||||||
updateBundleEffectsImportedState();
|
m_widget->effectsModel()->updateImportedState();
|
||||||
updateBundleUserMaterialsImportedState();
|
m_widget->userModel()->updateImportedState();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ContentLibraryView::modelAboutToBeDetached(Model *model)
|
void ContentLibraryView::modelAboutToBeDetached(Model *model)
|
||||||
@@ -769,65 +754,6 @@ ModelNode ContentLibraryView::createMaterial(const NodeMetaInfo &metaInfo)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void ContentLibraryView::updateBundleMaterialsImportedState()
|
|
||||||
{
|
|
||||||
using namespace Utils;
|
|
||||||
|
|
||||||
if (!m_widget->materialsModel()->bundleImporter())
|
|
||||||
return;
|
|
||||||
|
|
||||||
QStringList importedBundleMats;
|
|
||||||
|
|
||||||
// TODO: this will be refactored next: no need for the round trip from model to view then back to model
|
|
||||||
// (same applies for the similar cases for effects and user material bundles)
|
|
||||||
FilePath materialBundlePath = m_widget->materialsModel()->bundleImporter()->resolveBundleImportPath("MaterialBundle");
|
|
||||||
|
|
||||||
if (materialBundlePath.exists()) {
|
|
||||||
importedBundleMats = transform(materialBundlePath.dirEntries({{"*.qml"}, QDir::Files}),
|
|
||||||
[](const FilePath &f) { return f.fileName().chopped(4); });
|
|
||||||
}
|
|
||||||
|
|
||||||
m_widget->materialsModel()->updateImportedState(importedBundleMats);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ContentLibraryView::updateBundleUserMaterialsImportedState()
|
|
||||||
{
|
|
||||||
using namespace Utils;
|
|
||||||
|
|
||||||
if (!m_widget->userModel()->bundleImporter())
|
|
||||||
return;
|
|
||||||
|
|
||||||
QStringList importedBundleMats;
|
|
||||||
|
|
||||||
FilePath bundlePath = m_widget->userModel()->bundleImporter()->resolveBundleImportPath("UserMaterialBundle");
|
|
||||||
|
|
||||||
if (bundlePath.exists()) {
|
|
||||||
importedBundleMats = transform(bundlePath.dirEntries({{"*.qml"}, QDir::Files}),
|
|
||||||
[](const FilePath &f) { return f.fileName().chopped(4); });
|
|
||||||
}
|
|
||||||
|
|
||||||
m_widget->userModel()->updateImportedState(importedBundleMats);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ContentLibraryView::updateBundleEffectsImportedState()
|
|
||||||
{
|
|
||||||
using namespace Utils;
|
|
||||||
|
|
||||||
if (!m_widget->effectsModel()->bundleImporter())
|
|
||||||
return;
|
|
||||||
|
|
||||||
QStringList importedBundleEffs;
|
|
||||||
|
|
||||||
FilePath bundlePath = m_widget->effectsModel()->bundleImporter()->resolveBundleImportPath("EffectBundle");
|
|
||||||
|
|
||||||
if (bundlePath.exists()) {
|
|
||||||
importedBundleEffs = transform(bundlePath.dirEntries({{"*.qml"}, QDir::Files}),
|
|
||||||
[](const FilePath &f) { return f.fileName().chopped(4); });
|
|
||||||
}
|
|
||||||
|
|
||||||
m_widget->effectsModel()->updateImportedState(importedBundleEffs);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ContentLibraryView::updateBundlesQuick3DVersion()
|
void ContentLibraryView::updateBundlesQuick3DVersion()
|
||||||
{
|
{
|
||||||
bool hasImport = false;
|
bool hasImport = false;
|
||||||
|
@@ -50,9 +50,6 @@ public:
|
|||||||
private:
|
private:
|
||||||
void connectUserBundle();
|
void connectUserBundle();
|
||||||
void active3DSceneChanged(qint32 sceneId);
|
void active3DSceneChanged(qint32 sceneId);
|
||||||
void updateBundleMaterialsImportedState();
|
|
||||||
void updateBundleUserMaterialsImportedState();
|
|
||||||
void updateBundleEffectsImportedState();
|
|
||||||
void updateBundlesQuick3DVersion();
|
void updateBundlesQuick3DVersion();
|
||||||
void addLibMaterial(const ModelNode &mat, const QPixmap &icon);
|
void addLibMaterial(const ModelNode &mat, const QPixmap &icon);
|
||||||
void addLibAssets(const QStringList &paths);
|
void addLibAssets(const QStringList &paths);
|
||||||
|
Reference in New Issue
Block a user