From 0ad583f3e7e5a729f07b56e4731c65cb6a5e99cd Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Fri, 26 Nov 2010 15:14:33 +0100 Subject: [PATCH] Detect the type of the shader. --- src/plugins/glsleditor/GLSLEditor.mimetypes.xml | 16 ++++++++++++++-- src/plugins/glsleditor/glsleditor.cpp | 16 ++++++++++++++-- src/plugins/glsleditor/glsleditor.h | 3 +++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/src/plugins/glsleditor/GLSLEditor.mimetypes.xml b/src/plugins/glsleditor/GLSLEditor.mimetypes.xml index d9fa822b01e..5d63307c03d 100644 --- a/src/plugins/glsleditor/GLSLEditor.mimetypes.xml +++ b/src/plugins/glsleditor/GLSLEditor.mimetypes.xml @@ -1,14 +1,26 @@ <?xml version="1.0"?> <mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'> + <mime-type type="application/x-glsl"> <alias type="text/x-glsl"/> <sub-class-of type="text/plain"/> - <comment>GLSL file</comment> + <comment>GLSL Shader file</comment> <glob pattern="*.glsl"/> <glob pattern="*.shader"/> + </mime-type> + + <mime-type type="text/x-glsl-frag"> + <sub-class-of type="text/x-glsl"/> + <comment>GLSL Fragment Shader file</comment> <glob pattern="*.frag"/> - <glob pattern="*.vert"/> <glob pattern="*.fsh"/> + </mime-type> + + <mime-type type="text/x-glsl-vert"> + <sub-class-of type="text/x-glsl"/> + <comment>GLSL Fragment Shader file</comment> + <glob pattern="*.vert"/> <glob pattern="*.vsh"/> </mime-type> + </mime-info> diff --git a/src/plugins/glsleditor/glsleditor.cpp b/src/plugins/glsleditor/glsleditor.cpp index 7d8fcc51ae3..bd782cca0be 100644 --- a/src/plugins/glsleditor/glsleditor.cpp +++ b/src/plugins/glsleditor/glsleditor.cpp @@ -276,8 +276,10 @@ void GLSLTextEditor::updateDocumentNow() Semantic sem; Scope *globalScope = engine.newNamespace(); sem.translationUnit(plugin->shaderInit()->ast, globalScope, plugin->shaderInit()->engine); - sem.translationUnit(plugin->vertexShaderInit()->ast, globalScope, plugin->vertexShaderInit()->engine); - sem.translationUnit(plugin->fragmentShaderInit()->ast, globalScope, plugin->fragmentShaderInit()->engine); + if (isVertexShader()) + sem.translationUnit(plugin->vertexShaderInit()->ast, globalScope, plugin->vertexShaderInit()->engine); + if (isFragmentShader()) + sem.translationUnit(plugin->fragmentShaderInit()->ast, globalScope, plugin->fragmentShaderInit()->engine); sem.translationUnit(ast, globalScope, &engine); QTextCharFormat errorFormat; @@ -314,3 +316,13 @@ void GLSLTextEditor::updateDocumentNow() // refresh the identifiers. m_identifiers = engine.identifiers(); } + +bool GLSLTextEditor::isVertexShader() const +{ + return mimeType() == QLatin1String("text/x-glsl-vert"); +} + +bool GLSLTextEditor::isFragmentShader() const +{ + return mimeType() == QLatin1String("text/x-glsl-frag"); +} diff --git a/src/plugins/glsleditor/glsleditor.h b/src/plugins/glsleditor/glsleditor.h index f1847802eee..9f126199bb0 100644 --- a/src/plugins/glsleditor/glsleditor.h +++ b/src/plugins/glsleditor/glsleditor.h @@ -65,6 +65,9 @@ public: QSet<QString> identifiers() const; + bool isVertexShader() const; + bool isFragmentShader() const; + public slots: virtual void setFontSettings(const TextEditor::FontSettings &); -- GitLab