forked from qt-creator/qt-creator
EffectComposer: Disable effect composer on MCU projects
Fixes: QDS-11867 Change-Id: I2b405faf68623272fd674662b97cb3f0e50170e4 Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
@@ -15,6 +15,8 @@ ColumnLayout {
|
||||
|
||||
spacing: 1
|
||||
|
||||
readonly property var backendModel: EffectComposerBackend.effectComposerModel
|
||||
|
||||
property var draggedSec: null
|
||||
property var secsY: []
|
||||
property int moveFromIdx: 0
|
||||
@@ -32,9 +34,9 @@ ColumnLayout {
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: EffectComposerBackend.effectComposerModel
|
||||
target: root.backendModel
|
||||
function onIsEmptyChanged() {
|
||||
if (EffectComposerBackend.effectComposerModel.isEmpty)
|
||||
if (root.backendModel.isEmpty)
|
||||
saveAsDialog.close()
|
||||
}
|
||||
}
|
||||
@@ -49,7 +51,7 @@ ColumnLayout {
|
||||
anchors.centerIn: parent
|
||||
|
||||
onSave: {
|
||||
if (EffectComposerBackend.effectComposerModel.currentComposition === "") {
|
||||
if (root.backendModel.currentComposition === "") {
|
||||
// if current composition is unsaved, show save as dialog and clear afterwards
|
||||
saveAsDialog.clearOnClose = true
|
||||
saveAsDialog.open()
|
||||
@@ -67,27 +69,27 @@ ColumnLayout {
|
||||
Layout.fillWidth: true
|
||||
|
||||
onAddClicked: {
|
||||
root.onSaveChangesCallback = () => { EffectComposerBackend.effectComposerModel.clear(true) }
|
||||
root.onSaveChangesCallback = () => { root.backendModel.clear(true) }
|
||||
|
||||
if (EffectComposerBackend.effectComposerModel.hasUnsavedChanges)
|
||||
if (root.backendModel.hasUnsavedChanges)
|
||||
saveChangesDialog.open()
|
||||
else
|
||||
EffectComposerBackend.effectComposerModel.clear(true)
|
||||
root.backendModel.clear(true)
|
||||
}
|
||||
|
||||
onSaveClicked: {
|
||||
let name = EffectComposerBackend.effectComposerModel.currentComposition
|
||||
let name = root.backendModel.currentComposition
|
||||
|
||||
if (name === "")
|
||||
saveAsDialog.open()
|
||||
else
|
||||
EffectComposerBackend.effectComposerModel.saveComposition(name)
|
||||
root.backendModel.saveComposition(name)
|
||||
}
|
||||
|
||||
onSaveAsClicked: saveAsDialog.open()
|
||||
|
||||
onAssignToSelectedClicked: {
|
||||
EffectComposerBackend.effectComposerModel.assignToSelected()
|
||||
root.backendModel.assignToSelected()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -153,9 +155,9 @@ ColumnLayout {
|
||||
style: StudioTheme.Values.viewBarButtonStyle
|
||||
buttonIcon: StudioTheme.Constants.clearList_medium
|
||||
tooltip: qsTr("Remove all effect nodes.")
|
||||
enabled: !EffectComposerBackend.effectComposerModel.isEmpty
|
||||
enabled: !root.backendModel.isEmpty
|
||||
|
||||
onClicked: EffectComposerBackend.effectComposerModel.clear()
|
||||
onClicked: root.backendModel.clear()
|
||||
}
|
||||
|
||||
HelperWidgets.AbstractButton {
|
||||
@@ -199,7 +201,7 @@ ColumnLayout {
|
||||
id: repeater
|
||||
|
||||
width: parent.width
|
||||
model: EffectComposerBackend.effectComposerModel
|
||||
model: root.backendModel
|
||||
|
||||
onCountChanged: {
|
||||
HelperWidgets.Controller.setCount("EffectComposer", repeater.count)
|
||||
@@ -231,7 +233,7 @@ ColumnLayout {
|
||||
if (root.moveFromIdx === root.moveToIdx)
|
||||
root.draggedSec.y = root.secsY[root.moveFromIdx]
|
||||
else
|
||||
EffectComposerBackend.effectComposerModel.moveNode(root.moveFromIdx, root.moveToIdx)
|
||||
root.backendModel.moveNode(root.moveFromIdx, root.moveToIdx)
|
||||
|
||||
highlightBorder = false
|
||||
root.draggedSec = null
|
||||
@@ -271,13 +273,14 @@ ColumnLayout {
|
||||
} // ScrollView
|
||||
|
||||
Text {
|
||||
text: qsTr("Add an effect node to start")
|
||||
text: root.backendModel.isEnabled ? qsTr("Add an effect node to start")
|
||||
: qsTr("Effect Composer is disabled on MCU projects")
|
||||
color: StudioTheme.Values.themeTextColor
|
||||
font.pixelSize: StudioTheme.Values.baseFontSize
|
||||
|
||||
anchors.centerIn: parent
|
||||
|
||||
visible: EffectComposerBackend.effectComposerModel.isEmpty
|
||||
visible: root.backendModel.isEmpty
|
||||
}
|
||||
} // Item
|
||||
} // Column
|
||||
|
@@ -13,6 +13,8 @@ Rectangle {
|
||||
height: StudioTheme.Values.toolbarHeight
|
||||
color: StudioTheme.Values.themeToolbarBackground
|
||||
|
||||
readonly property var backendModel: EffectComposerBackend.effectComposerModel
|
||||
|
||||
signal addClicked
|
||||
signal saveClicked
|
||||
signal saveAsClicked
|
||||
@@ -26,7 +28,7 @@ Rectangle {
|
||||
style: StudioTheme.Values.viewBarButtonStyle
|
||||
buttonIcon: StudioTheme.Constants.add_medium
|
||||
tooltip: qsTr("Add new composition")
|
||||
|
||||
enabled: root.backendModel.isEnabled
|
||||
onClicked: root.addClicked()
|
||||
}
|
||||
|
||||
@@ -34,8 +36,8 @@ Rectangle {
|
||||
style: StudioTheme.Values.viewBarButtonStyle
|
||||
buttonIcon: StudioTheme.Constants.save_medium
|
||||
tooltip: qsTr("Save current composition")
|
||||
enabled: EffectComposerBackend.effectComposerModel.hasUnsavedChanges
|
||||
|| EffectComposerBackend.effectComposerModel.currentComposition === ""
|
||||
enabled: root.backendModel.isEnabled && (root.backendModel.hasUnsavedChanges
|
||||
|| root.backendModel.currentComposition === "")
|
||||
|
||||
onClicked: root.saveClicked()
|
||||
}
|
||||
@@ -44,7 +46,7 @@ Rectangle {
|
||||
style: StudioTheme.Values.viewBarButtonStyle
|
||||
buttonIcon: StudioTheme.Constants.saveAs_medium
|
||||
tooltip: qsTr("Save current composition with a new name")
|
||||
enabled: !EffectComposerBackend.effectComposerModel.isEmpty
|
||||
enabled: root.backendModel.isEnabled && !root.backendModel.isEmpty
|
||||
|
||||
onClicked: root.saveAsClicked()
|
||||
}
|
||||
@@ -53,7 +55,7 @@ Rectangle {
|
||||
style: StudioTheme.Values.viewBarButtonStyle
|
||||
buttonIcon: StudioTheme.Constants.assignTo_medium
|
||||
tooltip: qsTr("Assign current composition to selected item")
|
||||
enabled: EffectComposerBackend.effectComposerModel.currentComposition !== ""
|
||||
enabled: root.backendModel.isEnabled && root.backendModel.currentComposition !== ""
|
||||
|
||||
onClicked: root.assignToSelectedClicked()
|
||||
}
|
||||
@@ -61,7 +63,7 @@ Rectangle {
|
||||
|
||||
|
||||
Text {
|
||||
readonly property string compName: EffectComposerBackend.effectComposerModel.currentComposition
|
||||
readonly property string compName: root.backendModel.currentComposition
|
||||
|
||||
text: compName !== "" ? compName : qsTr("Untitled")
|
||||
anchors.centerIn: parent
|
||||
|
@@ -1475,6 +1475,19 @@ void EffectComposerModel::setShadersUpToDate(bool UpToDate)
|
||||
emit shadersUpToDateChanged();
|
||||
}
|
||||
|
||||
bool EffectComposerModel::isEnabled() const
|
||||
{
|
||||
return m_isEnabled;
|
||||
}
|
||||
|
||||
void EffectComposerModel::setIsEnabled(bool enabled)
|
||||
{
|
||||
if (m_isEnabled == enabled)
|
||||
return;
|
||||
m_isEnabled = enabled;
|
||||
emit isEnabledChanged();
|
||||
}
|
||||
|
||||
// Returns name for image mipmap property.
|
||||
// e.g. "myImage" -> "myImageMipmap".
|
||||
QString EffectComposerModel::mipmapPropertyName(const QString &name) const
|
||||
|
@@ -46,6 +46,7 @@ class EffectComposerModel : public QAbstractListModel
|
||||
Q_PROPERTY(int selectedIndex MEMBER m_selectedIndex NOTIFY selectedIndexChanged)
|
||||
Q_PROPERTY(bool hasUnsavedChanges MEMBER m_hasUnsavedChanges WRITE setHasUnsavedChanges NOTIFY hasUnsavedChangesChanged)
|
||||
Q_PROPERTY(bool shadersUpToDate READ shadersUpToDate WRITE setShadersUpToDate NOTIFY shadersUpToDateChanged)
|
||||
Q_PROPERTY(bool isEnabled READ isEnabled WRITE setIsEnabled NOTIFY isEnabledChanged)
|
||||
Q_PROPERTY(QString qmlComponentString READ qmlComponentString)
|
||||
Q_PROPERTY(QString currentComposition READ currentComposition WRITE setCurrentComposition NOTIFY currentCompositionChanged)
|
||||
|
||||
@@ -73,6 +74,9 @@ public:
|
||||
bool shadersUpToDate() const;
|
||||
void setShadersUpToDate(bool newShadersUpToDate);
|
||||
|
||||
bool isEnabled() const;
|
||||
void setIsEnabled(bool enabled);
|
||||
|
||||
QString fragmentShader() const;
|
||||
void setFragmentShader(const QString &newFragmentShader);
|
||||
|
||||
@@ -105,6 +109,7 @@ signals:
|
||||
void selectedIndexChanged(int idx);
|
||||
void effectErrorChanged();
|
||||
void shadersUpToDateChanged();
|
||||
void isEnabledChanged();
|
||||
void shadersBaked();
|
||||
void currentCompositionChanged();
|
||||
void nodesChanged();
|
||||
@@ -201,6 +206,7 @@ private:
|
||||
QString m_previewEffectPropertiesString;
|
||||
QString m_qmlComponentString;
|
||||
bool m_loadComponentImages = true;
|
||||
bool m_isEnabled = true;
|
||||
QString m_currentComposition;
|
||||
|
||||
const QRegularExpression m_spaceReg = QRegularExpression("\\s+");
|
||||
|
@@ -7,6 +7,7 @@
|
||||
#include "effectcomposernodesmodel.h"
|
||||
#include "effectcomposerwidget.h"
|
||||
|
||||
#include <designermcumanager.h>
|
||||
#include <documentmanager.h>
|
||||
#include <modelnodeoperations.h>
|
||||
#include <qmldesignerconstants.h>
|
||||
@@ -59,7 +60,7 @@ QmlDesigner::WidgetInfo EffectComposerView::widgetInfo()
|
||||
Core::ICore::addContextObject(context);
|
||||
}
|
||||
|
||||
return createWidgetInfo(m_widget.data(), "Effect Composer",
|
||||
return createWidgetInfo(m_widget.data(), "EffectComposer",
|
||||
QmlDesigner::WidgetInfo::LeftPane, 0, tr("Effect Composer [beta]"));
|
||||
}
|
||||
|
||||
@@ -82,9 +83,11 @@ void EffectComposerView::modelAttached(QmlDesigner::Model *model)
|
||||
|
||||
QString currProjectPath = QmlDesigner::DocumentManager::currentProjectDirPath().toString();
|
||||
|
||||
// if starting a new project, clear the effect composer
|
||||
if (m_currProjectPath != currProjectPath)
|
||||
if (m_currProjectPath != currProjectPath) { // starting a new project
|
||||
m_widget->effectComposerModel()->clear(true);
|
||||
m_widget->effectComposerModel()->setIsEnabled(
|
||||
!QmlDesigner::DesignerMcuManager::instance().isMCUProject());
|
||||
}
|
||||
|
||||
m_currProjectPath = currProjectPath;
|
||||
|
||||
|
@@ -5,6 +5,8 @@
|
||||
|
||||
#include <coreplugin/icore.h>
|
||||
|
||||
#include "qmldesignercomponents_global.h"
|
||||
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
#include <QSet>
|
||||
@@ -12,7 +14,7 @@
|
||||
|
||||
namespace QmlDesigner {
|
||||
|
||||
class DesignerMcuManager
|
||||
class QMLDESIGNERCOMPONENTS_EXPORT DesignerMcuManager
|
||||
{
|
||||
public:
|
||||
struct Version {
|
||||
|
@@ -493,7 +493,8 @@ void DesignModeWidget::setup()
|
||||
|
||||
static bool isMcuDisabledView(const QString viewId)
|
||||
{
|
||||
static const QStringList mcuDisabledViews = {"Editor3D", "MaterialEditor", "MaterialBrowser", "TextureEditor"};
|
||||
static const QStringList mcuDisabledViews = {"Editor3D", "MaterialEditor", "MaterialBrowser",
|
||||
"TextureEditor", "EffectComposer"};
|
||||
return mcuDisabledViews.contains(viewId);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user