From 59c53592139b3c9ae048aaf994638394cd5c8f09 Mon Sep 17 00:00:00 2001 From: Roberto Raggi <roberto.raggi@nokia.com> Date: Fri, 26 Nov 2010 11:17:30 +0100 Subject: [PATCH] Show tooltips with the error messages. --- src/plugins/glsleditor/glsleditor.pro | 6 +- src/plugins/glsleditor/glsleditorplugin.cpp | 3 + src/plugins/glsleditor/glslhoverhandler.cpp | 73 +++++++++++++++++++++ src/plugins/glsleditor/glslhoverhandler.h | 64 ++++++++++++++++++ 4 files changed, 144 insertions(+), 2 deletions(-) create mode 100644 src/plugins/glsleditor/glslhoverhandler.cpp create mode 100644 src/plugins/glsleditor/glslhoverhandler.h diff --git a/src/plugins/glsleditor/glsleditor.pro b/src/plugins/glsleditor/glsleditor.pro index 424c0d0c334..be0cdf3b439 100644 --- a/src/plugins/glsleditor/glsleditor.pro +++ b/src/plugins/glsleditor/glsleditor.pro @@ -19,7 +19,8 @@ glslfilewizard.h \ glslhighlighter.h \ glslcodecompletion.h \ glslautocompleter.h \ -glslindenter.h +glslindenter.h \ +glslhoverhandler.h SOURCES += \ glsleditor.cpp \ @@ -31,7 +32,8 @@ glslfilewizard.cpp \ glslhighlighter.cpp \ glslcodecompletion.cpp \ glslautocompleter.cpp \ -glslindenter.cpp +glslindenter.cpp \ +glslhoverhandler.cpp OTHER_FILES += GLSLEditor.mimetypes.xml RESOURCES += glsleditor.qrc diff --git a/src/plugins/glsleditor/glsleditorplugin.cpp b/src/plugins/glsleditor/glsleditorplugin.cpp index e4adcd1fdae..a023f7198fa 100644 --- a/src/plugins/glsleditor/glsleditorplugin.cpp +++ b/src/plugins/glsleditor/glsleditorplugin.cpp @@ -33,6 +33,7 @@ #include "glsleditorfactory.h" #include "glslcodecompletion.h" #include "glslfilewizard.h" +#include "glslhoverhandler.h" #include <coreplugin/icore.h> #include <coreplugin/coreconstants.h> @@ -104,6 +105,8 @@ bool GLSLEditorPlugin::initialize(const QStringList & /*arguments*/, QString *er // m_modelManager = new ModelManager(this); // addAutoReleasedObject(m_modelManager); + addAutoReleasedObject(new GLSLHoverHandler(this)); + Core::Context context(GLSLEditor::Constants::C_GLSLEDITOR_ID); m_editor = new GLSLEditorFactory(this); diff --git a/src/plugins/glsleditor/glslhoverhandler.cpp b/src/plugins/glsleditor/glslhoverhandler.cpp new file mode 100644 index 00000000000..e2e9702f563 --- /dev/null +++ b/src/plugins/glsleditor/glslhoverhandler.cpp @@ -0,0 +1,73 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#include "glslhoverhandler.h" +#include "glsleditor.h" + +#include <coreplugin/editormanager/ieditor.h> +#include <coreplugin/editormanager/editormanager.h> +#include <coreplugin/helpmanager.h> +#include <extensionsystem/pluginmanager.h> +#include <texteditor/itexteditor.h> +#include <texteditor/basetexteditor.h> + +#include <QtGui/QTextCursor> +#include <QtCore/QUrl> + +using namespace GLSLEditor; +using namespace GLSLEditor::Internal; +using namespace Core; + +GLSLHoverHandler::GLSLHoverHandler(QObject *parent) : BaseHoverHandler(parent) +{} + +GLSLHoverHandler::~GLSLHoverHandler() +{} + +bool GLSLHoverHandler::acceptEditor(IEditor *editor) +{ + if (qobject_cast<GLSLEditorEditable *>(editor) != 0) + return true; + return false; +} + +void GLSLHoverHandler::identifyMatch(TextEditor::ITextEditor *editor, int pos) +{ + if (GLSLTextEditor *glslEditor = qobject_cast<GLSLTextEditor *>(editor->widget())) { + if (! glslEditor->extraSelectionTooltip(pos).isEmpty()) { + setToolTip(glslEditor->extraSelectionTooltip(pos)); + } + } +} + +void GLSLHoverHandler::decorateToolTip() +{ + if (Qt::mightBeRichText(toolTip())) + setToolTip(Qt::escape(toolTip())); +} diff --git a/src/plugins/glsleditor/glslhoverhandler.h b/src/plugins/glsleditor/glslhoverhandler.h new file mode 100644 index 00000000000..08e3ed72713 --- /dev/null +++ b/src/plugins/glsleditor/glslhoverhandler.h @@ -0,0 +1,64 @@ +/************************************************************************** +** +** This file is part of Qt Creator +** +** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +** +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** Commercial Usage +** +** Licensees holding valid Qt Commercial licenses may use this file in +** accordance with the Qt Commercial License Agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Nokia. +** +** GNU Lesser General Public License Usage +** +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at http://qt.nokia.com/contact. +** +**************************************************************************/ + +#ifndef GLSLHOVERHANDLER_H +#define GLSLHOVERHANDLER_H + +#include <texteditor/basehoverhandler.h> + +#include <QtCore/QObject> + +namespace Core { +class IEditor; +} + +namespace TextEditor { +class ITextEditor; +} + +namespace GLSLEditor { +namespace Internal { + +class GLSLHoverHandler : public TextEditor::BaseHoverHandler +{ + Q_OBJECT +public: + GLSLHoverHandler(QObject *parent = 0); + virtual ~GLSLHoverHandler(); + +private: + virtual bool acceptEditor(Core::IEditor *editor); + virtual void identifyMatch(TextEditor::ITextEditor *editor, int pos); + virtual void decorateToolTip(); +}; + +} // namespace Internal +} // namespace GLSLEditor + +#endif // GLSLHOVERHANDLER_H -- GitLab