Materials: External interface refinements (#21524)
This commit is contained in:
@@ -32,6 +32,7 @@
|
||||
|
||||
#include <Mod/Material/App/MaterialLibrary.h>
|
||||
|
||||
#include "MaterialsEditor.h"
|
||||
#include "MaterialSave.h"
|
||||
#include "ui_MaterialSave.h"
|
||||
|
||||
@@ -360,7 +361,7 @@ void MaterialSave::showSelectedTree()
|
||||
if (ui->comboLibrary->count() > 0) {
|
||||
auto variant = ui->comboLibrary->currentData();
|
||||
auto library = variant.value<std::shared_ptr<Materials::MaterialLibrary>>();
|
||||
QIcon icon(library->getIconPath());
|
||||
auto icon = MaterialsEditor::getIcon(library);
|
||||
QIcon folderIcon(QStringLiteral(":/icons/folder.svg"));
|
||||
_libraryName = library->getName();
|
||||
_selectedPath = QStringLiteral("/") + _libraryName;
|
||||
|
||||
@@ -572,7 +572,7 @@ void MaterialTreeWidget::fillMaterialTree()
|
||||
lib->setFlags(Qt::ItemIsEnabled);
|
||||
addExpanded(model, lib, param);
|
||||
|
||||
QIcon icon(library->getIconPath());
|
||||
auto icon = MaterialsEditor::getIcon(library);
|
||||
QIcon folderIcon(QStringLiteral(":/icons/folder.svg"));
|
||||
|
||||
addMaterials(*lib, materialTree, folderIcon, icon, param);
|
||||
@@ -619,7 +619,7 @@ void MaterialTreeWidget::addRecents(QStandardItem* parent)
|
||||
for (auto& uuid : _recents) {
|
||||
try {
|
||||
auto material = getMaterialManager().getMaterial(uuid);
|
||||
QIcon icon(material->getLibrary()->getIconPath());
|
||||
auto icon = MaterialsEditor::getIcon(material->getLibrary());
|
||||
auto card = new QStandardItem(icon, material->getName());
|
||||
card->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
|
||||
card->setData(QVariant(uuid), Qt::UserRole);
|
||||
@@ -636,7 +636,7 @@ void MaterialTreeWidget::addFavorites(QStandardItem* parent)
|
||||
for (auto& uuid : _favorites) {
|
||||
try {
|
||||
auto material = getMaterialManager().getMaterial(uuid);
|
||||
QIcon icon(material->getLibrary()->getIconPath());
|
||||
auto icon = MaterialsEditor::getIcon(material->getLibrary());
|
||||
auto card = new QStandardItem(icon, material->getName());
|
||||
card->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
|
||||
card->setData(QVariant(uuid), Qt::UserRole);
|
||||
|
||||
@@ -801,6 +801,33 @@ void MaterialsEditor::createAppearanceTree()
|
||||
connect(delegate, &MaterialDelegate::propertyChange, this, &MaterialsEditor::propertyChange);
|
||||
}
|
||||
|
||||
QIcon MaterialsEditor::getIcon(const std::shared_ptr<Materials::Library>& library)
|
||||
{
|
||||
// Load from the QByteArray if available
|
||||
QIcon icon;
|
||||
if (library->hasIcon()) {
|
||||
QImage image;
|
||||
if (!image.loadFromData(library->getIcon())) {
|
||||
Base::Console().log("Unable to load icon image for library '%s'\n",
|
||||
library->getName().toStdString().c_str());
|
||||
return QIcon();
|
||||
}
|
||||
icon = QIcon(QPixmap::fromImage(image));
|
||||
}
|
||||
|
||||
return icon;
|
||||
}
|
||||
|
||||
QIcon MaterialsEditor::getIcon(const std::shared_ptr<Materials::ModelLibrary>& library)
|
||||
{
|
||||
return getIcon(std::static_pointer_cast<Materials::Library>(library));
|
||||
}
|
||||
|
||||
QIcon MaterialsEditor::getIcon(const std::shared_ptr<Materials::MaterialLibrary>& library)
|
||||
{
|
||||
return getIcon(std::static_pointer_cast<Materials::Library>(library));
|
||||
}
|
||||
|
||||
void MaterialsEditor::addRecents(QStandardItem* parent)
|
||||
{
|
||||
auto tree = ui->treeMaterials;
|
||||
@@ -808,13 +835,13 @@ void MaterialsEditor::addRecents(QStandardItem* parent)
|
||||
try {
|
||||
auto material = getMaterialManager().getMaterial(uuid);
|
||||
// if (material->getLibrary()->isLocal()) {
|
||||
QIcon icon = QIcon(material->getLibrary()->getIconPath());
|
||||
auto card = new QStandardItem(icon, libraryPath(material));
|
||||
card->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled
|
||||
| Qt::ItemIsDropEnabled);
|
||||
card->setData(QVariant(uuid), Qt::UserRole);
|
||||
QIcon icon = getIcon(material->getLibrary());
|
||||
auto card = new QStandardItem(icon, libraryPath(material));
|
||||
card->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled
|
||||
| Qt::ItemIsDropEnabled);
|
||||
card->setData(QVariant(uuid), Qt::UserRole);
|
||||
|
||||
addExpanded(tree, parent, card);
|
||||
addExpanded(tree, parent, card);
|
||||
// }
|
||||
}
|
||||
catch (const Materials::MaterialNotFound&) {
|
||||
@@ -828,7 +855,7 @@ void MaterialsEditor::addFavorites(QStandardItem* parent)
|
||||
for (auto& uuid : _favorites) {
|
||||
try {
|
||||
auto material = getMaterialManager().getMaterial(uuid);
|
||||
QIcon icon = QIcon(material->getLibrary()->getIconPath());
|
||||
QIcon icon = getIcon(material->getLibrary());
|
||||
auto card = new QStandardItem(icon, libraryPath(material));
|
||||
card->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled
|
||||
| Qt::ItemIsDropEnabled);
|
||||
@@ -877,7 +904,7 @@ void MaterialsEditor::fillMaterialTree()
|
||||
lib->setFlags(Qt::ItemIsEnabled | Qt::ItemIsDragEnabled | Qt::ItemIsDropEnabled);
|
||||
addExpanded(tree, model, lib, param);
|
||||
|
||||
QIcon icon(library->getIconPath());
|
||||
QIcon icon = getIcon(library);
|
||||
QIcon folderIcon(QStringLiteral(":/icons/folder.svg"));
|
||||
|
||||
addMaterials(*lib, materialTree, folderIcon, icon, param);
|
||||
|
||||
@@ -87,6 +87,10 @@ public:
|
||||
|
||||
static QString libraryPath(const std::shared_ptr<Materials::Material>& material);
|
||||
|
||||
static QIcon getIcon(const std::shared_ptr<Materials::MaterialLibrary>& library);
|
||||
static QIcon getIcon(const std::shared_ptr<Materials::ModelLibrary>& library);
|
||||
static QIcon getIcon(const std::shared_ptr<Materials::Library>& library);
|
||||
|
||||
void updateMaterialAppearance();
|
||||
void updateMaterialProperties();
|
||||
void updateMaterialGeneral();
|
||||
|
||||
@@ -33,6 +33,7 @@
|
||||
#include <Gui/Command.h>
|
||||
#include <Gui/WaitCursor.h>
|
||||
|
||||
#include "MaterialsEditor.h"
|
||||
#include "ModelSelect.h"
|
||||
#include "ui_ModelSelect.h"
|
||||
|
||||
@@ -272,7 +273,7 @@ void ModelSelect::addRecents(QStandardItem* parent)
|
||||
auto model = Materials::ModelManager::getManager().getModel(uuid);
|
||||
|
||||
if (Materials::ModelManager::getManager().passFilter(_filter, model->getType())) {
|
||||
QIcon icon = QIcon(model->getLibrary()->getIconPath());
|
||||
auto icon = MaterialsEditor::getIcon(model->getLibrary());
|
||||
auto card = new QStandardItem(icon, model->getName());
|
||||
card->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled
|
||||
| Qt::ItemIsDropEnabled);
|
||||
@@ -294,7 +295,7 @@ void ModelSelect::addFavorites(QStandardItem* parent)
|
||||
auto model = Materials::ModelManager::getManager().getModel(uuid);
|
||||
|
||||
if (Materials::ModelManager::getManager().passFilter(_filter, model->getType())) {
|
||||
QIcon icon = QIcon(model->getLibrary()->getIconPath());
|
||||
auto icon = MaterialsEditor::getIcon(model->getLibrary());
|
||||
auto card = new QStandardItem(icon, model->getName());
|
||||
card->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDragEnabled
|
||||
| Qt::ItemIsDropEnabled);
|
||||
@@ -350,7 +351,7 @@ void ModelSelect::fillTree()
|
||||
addExpanded(tree, model, lib);
|
||||
|
||||
auto modelTree = Materials::ModelManager::getManager().getModelTree(library, _filter);
|
||||
addModels(*lib, modelTree, QIcon(library->getIconPath()));
|
||||
addModels(*lib, modelTree, MaterialsEditor::getIcon(library));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -153,7 +153,7 @@ void DlgMigrateExternal::migrate()
|
||||
|
||||
void DlgMigrateExternal::statusUpdate(const QString& status)
|
||||
{
|
||||
Base::Console().Log("%s\n", status.toStdString().c_str());
|
||||
Base::Console().log("%s\n", status.toStdString().c_str());
|
||||
ui->textStatus->append(status);
|
||||
|
||||
// This is required to update in real time
|
||||
|
||||
Reference in New Issue
Block a user