blob: 69c5ee1a009f822a12a85bd6c316f428b47aa5b4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include <qmldesigner/components/propertyeditor/qmlanchorbindingproxy.h>
#include <qmldesigner/components/propertyeditor/qmlmodelnodeproxy.h>
#include <coreplugin/icontext.h>
#include <QFrame>
#include <QFuture>
#include <QUrl>
class StudioQuickWidget;
QT_BEGIN_NAMESPACE
class QTimer;
QT_END_NAMESPACE
namespace EffectComposer {
class EffectComposerView;
class EffectComposerModel;
class EffectComposerNodesModel;
class EffectComposerWidget : public QFrame
{
Q_OBJECT
public:
EffectComposerWidget(EffectComposerView *view);
~EffectComposerWidget() = default;
void contextHelp(const Core::IContext::HelpCallback &callback) const;
static QString qmlSourcesPath();
void clearSearchFilter();
void delayedUpdateModel();
void updateModel();
void initView();
void openComposition(const QString &path);
StudioQuickWidget *quickWidget() const;
QPointer<EffectComposerModel> effectComposerModel() const;
QPointer<EffectComposerNodesModel> effectComposerNodesModel() const;
Q_INVOKABLE void addEffectNode(const QString &nodeQenPath);
Q_INVOKABLE void removeEffectNodeFromLibrary(const QString &nodeName);
Q_INVOKABLE void focusSection(int section);
Q_INVOKABLE void doOpenComposition();
Q_INVOKABLE QRect screenRect() const;
Q_INVOKABLE QPoint globalPos(const QPoint &point) const;
Q_INVOKABLE QString uniformDefaultImage(const QString &nodeName,
const QString &uniformName) const;
Q_INVOKABLE QString imagesPath() const;
Q_INVOKABLE bool isEffectAsset(const QUrl &url) const;
Q_INVOKABLE void dropAsset(const QUrl &url);
Q_INVOKABLE bool isEffectNode(const QByteArray &mimeData) const;
Q_INVOKABLE void dropNode(const QByteArray &mimeData);
Q_INVOKABLE void updateCanBeAdded();
Q_INVOKABLE bool isMCUProject() const;
QSize sizeHint() const override;
private:
void reloadQmlSource();
void handleImportScanTimer();
QPointer<EffectComposerModel> m_effectComposerModel;
QPointer<EffectComposerView> m_effectComposerView;
QPointer<StudioQuickWidget> m_quickWidget;
QmlDesigner::QmlModelNodeProxy m_backendModelNode;
QmlDesigner::QmlAnchorBindingProxy m_backendAnchorBinding;
struct ImportScanData {
QFuture<void> future;
int counter = 0;
QTimer *timer = nullptr;
QmlDesigner::TypeName type;
Utils::FilePath path;
};
ImportScanData m_importScan;
QString m_compositionPath;
};
} // namespace EffectComposer
|