diff options
3 files changed, 14 insertions, 3 deletions
diff --git a/share/qtcreator/qmldesigner/effectComposerQmlSources/SaveAsDialog.qml b/share/qtcreator/qmldesigner/effectComposerQmlSources/SaveAsDialog.qml index d139ba92055..65b01be4573 100644 --- a/share/qtcreator/qmldesigner/effectComposerQmlSources/SaveAsDialog.qml +++ b/share/qtcreator/qmldesigner/effectComposerQmlSources/SaveAsDialog.qml @@ -50,11 +50,13 @@ StudioControls.Dialog { if (/[^A-Za-z0-9_]+/.test(text)) errMsg = qsTr("Name contains invalid characters.") else if (!/^[A-Z]/.test(text)) - errMsg = qsTr("Name must start with a capital letter") + errMsg = qsTr("Name must start with a capital letter.") else if (text.length < 3) - errMsg = qsTr("Name must have at least 3 characters") + errMsg = qsTr("Name must have at least 3 characters.") else if (/\s/.test(text)) - errMsg = qsTr("Name cannot contain white space") + errMsg = qsTr("Name cannot contain white space.") + else if (EffectComposerBackend.effectComposerModel.nameExists(text)) + errMsg = qsTr("Name is already taken.") emptyText.text = errMsg btnSave.enabled = errMsg.length === 0 diff --git a/src/plugins/effectcomposer/effectcomposermodel.cpp b/src/plugins/effectcomposer/effectcomposermodel.cpp index 394b85aa552..606ca8e93e2 100644 --- a/src/plugins/effectcomposer/effectcomposermodel.cpp +++ b/src/plugins/effectcomposer/effectcomposermodel.cpp @@ -224,6 +224,14 @@ QString EffectComposerModel::getUniqueEffectName() const return QString("Effect%1").arg(num, 2, 10, QChar('0')); } +bool EffectComposerModel::nameExists(const QString &name) const +{ + const QString effectsDir = QmlDesigner::ModelNodeOperations::getEffectsDefaultDirectory(); + const QString path = effectsDir + QDir::separator() + "%1" + ".qep"; + + return QFile::exists(path.arg(name)); +} + QString EffectComposerModel::fragmentShader() const { return m_fragmentShader; diff --git a/src/plugins/effectcomposer/effectcomposermodel.h b/src/plugins/effectcomposer/effectcomposermodel.h index e92213d12a5..0c1b6355f9e 100644 --- a/src/plugins/effectcomposer/effectcomposermodel.h +++ b/src/plugins/effectcomposer/effectcomposermodel.h @@ -71,6 +71,7 @@ public: Q_INVOKABLE void clear(bool clearName = false); Q_INVOKABLE void assignToSelected(); Q_INVOKABLE QString getUniqueEffectName() const; + Q_INVOKABLE bool nameExists(const QString &name) const; bool shadersUpToDate() const; void setShadersUpToDate(bool newShadersUpToDate); |