forked from qt-creator/qt-creator
QmlDesigner: Add "Create" submenu to the 3D Editor's context menu
Allow adding Quick3D Node-based items to the 3D scene using the contxt menu. Fixes: QDS-7397 Fixes: QDS-7399 Fixes: QDS-7400 Change-Id: Ib0a9b1c0243e3e945b4925262f68d80d2460f516 Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Samuel Ghinet <samuel.ghinet@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
@@ -23,13 +23,13 @@
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "designmodewidget.h"
|
||||
#include "edit3dactions.h"
|
||||
#include "edit3dcanvas.h"
|
||||
#include "edit3dview.h"
|
||||
#include "edit3dwidget.h"
|
||||
#include "edit3dviewconfig.h"
|
||||
#include "backgroundcolorselection.h"
|
||||
#include "metainfo.h"
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
#include <coreplugin/messagebox.h>
|
||||
@@ -52,11 +52,13 @@ namespace QmlDesigner {
|
||||
Edit3DView::Edit3DView(QObject *parent)
|
||||
: AbstractView(parent)
|
||||
{
|
||||
m_compressionTimer.setInterval(1000);
|
||||
m_compressionTimer.setSingleShot(true);
|
||||
connect(&m_compressionTimer, &QTimer::timeout, this, &Edit3DView::handleEntriesChanged);
|
||||
}
|
||||
|
||||
Edit3DView::~Edit3DView()
|
||||
{
|
||||
}
|
||||
{}
|
||||
|
||||
void Edit3DView::createEdit3DWidget()
|
||||
{
|
||||
@@ -206,6 +208,31 @@ void Edit3DView::modelAttached(Model *model)
|
||||
}
|
||||
|
||||
edit3DWidget()->canvas()->busyIndicator()->show();
|
||||
|
||||
connect(model->metaInfo().itemLibraryInfo(), &ItemLibraryInfo::entriesChanged, this,
|
||||
&Edit3DView::onEntriesChanged, Qt::UniqueConnection);
|
||||
}
|
||||
|
||||
void Edit3DView::onEntriesChanged()
|
||||
{
|
||||
m_compressionTimer.start();
|
||||
}
|
||||
|
||||
void Edit3DView::handleEntriesChanged()
|
||||
{
|
||||
QMap<QString, QList<ItemLibraryEntry>> entriesMap {
|
||||
{"Camera", {}},
|
||||
{"Lights", {}},
|
||||
{"Models", {}}
|
||||
};
|
||||
|
||||
const QList<ItemLibraryEntry> itemLibEntries = model()->metaInfo().itemLibraryInfo()->entries();
|
||||
for (const ItemLibraryEntry &entry : itemLibEntries) {
|
||||
if (entry.typeName().startsWith("QtQuick3D.") && entriesMap.contains(entry.category()))
|
||||
entriesMap[entry.category()].append(entry);
|
||||
}
|
||||
|
||||
m_edit3DWidget->updateCreateSubMenu(entriesMap);
|
||||
}
|
||||
|
||||
void Edit3DView::modelAboutToBeDetached(Model *model)
|
||||
|
||||
Reference in New Issue
Block a user