From 0ad583f3e7e5a729f07b56e4731c65cb6a5e99cd Mon Sep 17 00:00:00 2001 From: Roberto Raggi 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 @@ + - GLSL file + GLSL Shader file + + + + + GLSL Fragment Shader file - + + + + + GLSL Fragment Shader file + + 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 identifiers() const; + bool isVertexShader() const; + bool isFragmentShader() const; + public slots: virtual void setFontSettings(const TextEditor::FontSettings &);