// Copyright (C) 2020 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #pragma once #include #include #include #include #include #include #include "itemlibraryinfo.h" #include namespace QmlDesigner { class Edit3DView; class Edit3DCanvas; class ToolBox; struct ItemLibraryDetails { QString name; QIcon icon; QList entryList; ItemLibraryDetails( const QString &name = QString(), const QIcon &icon = QIcon()) : name (name) , icon(icon) {} }; class Edit3DWidget : public QWidget { Q_OBJECT public: Edit3DWidget(Edit3DView *view); Edit3DCanvas *canvas() const; Edit3DView *view() const; void contextHelp(const Core::IContext::HelpCallback &callback) const; void showCanvas(bool show); QMenu *visibilityTogglesMenu() const; void showVisibilityTogglesMenu(bool show, const QPoint &pos); QMenu *backgroundColorMenu() const; void showBackgroundColorMenu(bool show, const QPoint &pos); void showContextMenu(const QPoint &pos, const ModelNode &modelNode, const QVector3D &pos3d); void updateCreateSubMenu(const QList &entriesList); private slots: void onCreateAction(); protected: void dragEnterEvent(QDragEnterEvent *dragEnterEvent) override; void dropEvent(QDropEvent *dropEvent) override; private: void linkActivated(const QString &link); void createContextMenu(); bool isPasteAvailable() const; bool isSceneLocked() const; QPointer m_edit3DView; QPointer m_view; QPointer m_canvas; QPointer m_onboardingLabel; QPointer m_toolBox; Core::IContext *m_context = nullptr; QPointer m_visibilityTogglesMenu; QPointer m_backgroundColorMenu; QPointer m_contextMenu; QPointer m_editComponentAction; QPointer m_editMaterialAction; QPointer m_duplicateAction; QPointer m_copyAction; QPointer m_pasteAction; QPointer m_deleteAction; QPointer m_fitSelectedAction; QPointer m_alignCameraAction; QPointer m_alignViewAction; QPointer m_selectParentAction; QPointer m_toggleGroupAction; QPointer m_createSubMenu; ModelNode m_contextMenuTarget; QVector3D m_contextMenuPos3d; QHash m_nameToEntry; ItemLibraryEntry m_draggedEntry; }; } // namespace QmlDesigner