From 25c19eb1d18d93c1fc443393e575924e598bfe21 Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@nokia.com> Date: Fri, 18 Jun 2010 11:09:00 +0200 Subject: [PATCH] Add show in editor task handler * Add a taskhandler used to show the file/line a task is referring to in the editor. * This is not yet used! --- .../projectexplorer/projectexplorer.cpp | 3 + .../projectexplorer/projectexplorer.pro | 2 + .../projectexplorerconstants.h | 2 + .../showineditortaskhandler.cpp | 65 +++++++++++++++++++ .../projectexplorer/showineditortaskhandler.h | 53 +++++++++++++++ 5 files changed, 125 insertions(+) create mode 100644 src/plugins/projectexplorer/showineditortaskhandler.cpp create mode 100644 src/plugins/projectexplorer/showineditortaskhandler.h diff --git a/src/plugins/projectexplorer/projectexplorer.cpp b/src/plugins/projectexplorer/projectexplorer.cpp index 40a1246e9b2..f2bf78cd7af 100644 --- a/src/plugins/projectexplorer/projectexplorer.cpp +++ b/src/plugins/projectexplorer/projectexplorer.cpp @@ -33,6 +33,7 @@ #include "projectexplorersettings.h" #include "target.h" #include "targetsettingspanel.h" +#include "showineditortaskhandler.h" #include "applicationrunconfiguration.h" #include "allprojectsfilter.h" #include "allprojectsfind.h" @@ -279,6 +280,8 @@ bool ProjectExplorerPlugin::initialize(const QStringList &arguments, QString *er addAutoReleasedObject(d->m_projectsMode); d->m_proWindow->layout()->addWidget(new Core::FindToolBarPlaceHolder(d->m_proWindow)); + addAutoReleasedObject(new ShowInEditorTaskHandler); + d->m_buildManager = new BuildManager(this); connect(d->m_buildManager, SIGNAL(buildStateChanged(ProjectExplorer::Project *)), this, SLOT(buildStateChanged(ProjectExplorer::Project *))); diff --git a/src/plugins/projectexplorer/projectexplorer.pro b/src/plugins/projectexplorer/projectexplorer.pro index 2a6bc5fe228..3964d145642 100644 --- a/src/plugins/projectexplorer/projectexplorer.pro +++ b/src/plugins/projectexplorer/projectexplorer.pro @@ -18,6 +18,7 @@ HEADERS += projectexplorer.h \ targetsettingspanel.h \ task.h \ itaskhandler.h \ + showineditortaskhandler.h \ taskwindow.h \ outputwindow.h \ persistentsettings.h \ @@ -96,6 +97,7 @@ SOURCES += projectexplorer.cpp \ projectconfiguration.cpp \ gnumakeparser.cpp \ task.cpp \ + showineditortaskhandler.cpp \ taskwindow.cpp \ outputwindow.cpp \ persistentsettings.cpp \ diff --git a/src/plugins/projectexplorer/projectexplorerconstants.h b/src/plugins/projectexplorer/projectexplorerconstants.h index 390ba26fc4f..ac4eeedda72 100644 --- a/src/plugins/projectexplorer/projectexplorerconstants.h +++ b/src/plugins/projectexplorer/projectexplorerconstants.h @@ -76,6 +76,8 @@ const char * const OPENTERMIANLHERE = "ProjectExplorer.OpenTerminalHere"; const char * const REMOVEFILE = "ProjectExplorer.RemoveFile"; const char * const RENAMEFILE = "ProjectExplorer.RenameFile"; +const char * const SHOW_TASK_IN_EDITOR = "ProjectExplorer.ShowTaskInEditor"; + // Run modes const char * const RUNMODE = "ProjectExplorer.RunMode"; const char * const DEBUGMODE = "ProjectExplorer.DebugMode"; diff --git a/src/plugins/projectexplorer/showineditortaskhandler.cpp b/src/plugins/projectexplorer/showineditortaskhandler.cpp new file mode 100644 index 00000000000..53c3af1aaa6 --- /dev/null +++ b/src/plugins/projectexplorer/showineditortaskhandler.cpp @@ -0,0 +1,65 @@ +/************************************************************************** +** +** 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 "showineditortaskhandler.h" + +#include "projectexplorerconstants.h" +#include "task.h" + +#include <coreplugin/editormanager/editormanager.h> +#include <texteditor/basetexteditor.h> + +#include <QtGui/QAction> +#include <QtCore/QFileInfo> + +using namespace ProjectExplorer::Internal; + +ShowInEditorTaskHandler::ShowInEditorTaskHandler() : + ITaskHandler(QLatin1String(Constants::SHOW_TASK_IN_EDITOR)) +{ } + +bool ShowInEditorTaskHandler::canHandle(const ProjectExplorer::Task &task) +{ + QFileInfo fi(task.file); + return fi.exists() && fi.isFile() && fi.isReadable(); +} + +void ShowInEditorTaskHandler::handle(const ProjectExplorer::Task &task) +{ + QFileInfo fi(task.file); + TextEditor::BaseTextEditor::openEditorAt(fi.canonicalFilePath(), task.line); + Core::EditorManager::instance()->ensureEditorManagerVisible(); +} + +QAction *ShowInEditorTaskHandler::createAction(QObject *parent) +{ + QAction *showAction = new QAction(tr("&Show in editor"), parent); + showAction->setToolTip(tr("Show task location in an editor")); + return showAction; +} diff --git a/src/plugins/projectexplorer/showineditortaskhandler.h b/src/plugins/projectexplorer/showineditortaskhandler.h new file mode 100644 index 00000000000..a440f2f7514 --- /dev/null +++ b/src/plugins/projectexplorer/showineditortaskhandler.h @@ -0,0 +1,53 @@ +/************************************************************************** +** +** 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 PROJECTEXPLORER_SHOWINEDITORTASKHANDLER_H +#define PROJECTEXPLORER_SHOWINEDITORTASKHANDLER_H + +#include "projectexplorer_export.h" + +#include "itaskhandler.h" + +namespace ProjectExplorer { +namespace Internal { + +class PROJECTEXPLORER_EXPORT ShowInEditorTaskHandler : public ITaskHandler +{ +public: + ShowInEditorTaskHandler(); + + bool canHandle(const Task &); + void handle(const Task &task); + QAction *createAction(QObject *parent = 0); +}; + +} // namespace Internal +} // namespace ProjectExplorer + +#endif // PROJECTEXPLORER_SHOWINEDITORTASKHANDLER_H -- GitLab