aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/clearcase
diff options
context:
space:
mode:
authorKnut Petter Svendsen <knutpett@pvv.org>2013-12-03 17:45:26 +0100
committerKnut Petter Svendsen <knutpett@pvv.org>2013-12-05 13:48:04 +0100
commitc5a8e15b70f67b8dfc5cad18905d54e73c43ce83 (patch)
treedd7b0387fd93effed836f4ebb4c1ed60c0667ef9 /src/plugins/clearcase
parent48fdbe244deb7e51bf84d67100aa7f008477c52a (diff)
ClearCase: Give warning if editing a Derived Object
Derived objects (DO) are created during builds with ClearCase build tools (e.g., clearmake). They are used for build avoidance and derived object sharing. DOs are typically object files, but can also be source code generated from code generation tools. It is probably never a good idea to edit such a file. Change-Id: If4248f09409424ee771aab720851bb6ce1aa40c9 Reviewed-by: Orgad Shaneh <orgads@gmail.com>
Diffstat (limited to 'src/plugins/clearcase')
-rw-r--r--src/plugins/clearcase/clearcaseplugin.cpp29
-rw-r--r--src/plugins/clearcase/clearcaseplugin.h1
2 files changed, 30 insertions, 0 deletions
diff --git a/src/plugins/clearcase/clearcaseplugin.cpp b/src/plugins/clearcase/clearcaseplugin.cpp
index 5f9d37e028f..bc9750c61be 100644
--- a/src/plugins/clearcase/clearcaseplugin.cpp
+++ b/src/plugins/clearcase/clearcaseplugin.cpp
@@ -48,6 +48,7 @@
#include <coreplugin/documentmanager.h>
#include <coreplugin/editormanager/editormanager.h>
#include <coreplugin/icore.h>
+#include <coreplugin/infobar.h>
#include <coreplugin/messagemanager.h>
#include <coreplugin/mimedatabase.h>
#include <coreplugin/progressmanager/progressmanager.h>
@@ -244,6 +245,32 @@ void ClearCasePlugin::updateStatusForFile(const QString &absFile)
setStatus(absFile, getFileStatus(absFile), false);
}
+/// Give warning if a derived object is edited
+void ClearCasePlugin::updateEditDerivedObjectWarning(const QString &fileName,
+ const FileStatus::Status status)
+{
+ if (!isDynamic())
+ return;
+
+ Core::IDocument *curDocument = Core::EditorManager::currentDocument();
+ if (!curDocument)
+ return;
+
+ Core::InfoBar *infoBar = curDocument->infoBar();
+ const Core::Id derivedObjectWarning("ClearCase.DerivedObjectWarning");
+
+ if (status == FileStatus::Derived) {
+ if (!infoBar->canInfoBeAdded(derivedObjectWarning))
+ return;
+
+ infoBar->addInfo(Core::InfoBarEntry(derivedObjectWarning,
+ tr("Editing Derived Object: %1")
+ .arg(fileName)));
+ } else {
+ infoBar->removeInfo(derivedObjectWarning);
+ }
+}
+
FileStatus::Status ClearCasePlugin::getFileStatus(const QString &fileName) const
{
QTC_CHECK(!fileName.isEmpty());
@@ -788,6 +815,8 @@ void ClearCasePlugin::updateStatusActions()
checkAndReIndexUnknownFile(absoluteFileName);
fileStatus = vcsStatus(absoluteFileName);
+ updateEditDerivedObjectWarning(absoluteFileName, fileStatus.status);
+
if (Constants::debug)
qDebug() << Q_FUNC_INFO << absoluteFileName << ", status = "
<< fileStatusToText(fileStatus.status) << "(" << fileStatus.status << ")";
diff --git a/src/plugins/clearcase/clearcaseplugin.h b/src/plugins/clearcase/clearcaseplugin.h
index af7af67800b..3f263e67f6c 100644
--- a/src/plugins/clearcase/clearcaseplugin.h
+++ b/src/plugins/clearcase/clearcaseplugin.h
@@ -264,6 +264,7 @@ private:
FileStatus::Status getFileStatus(const QString &fileName) const;
void updateStatusForFile(const QString &absFile);
+ void updateEditDerivedObjectWarning(const QString &fileName, const FileStatus::Status status);
ClearCaseSettings m_settings;