From 1e8d5236d1661849deee54d7d2ea1e9325f54c0f Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Thu, 21 Mar 2013 11:04:47 +0100 Subject: [PATCH] Disable paste if no available clipboard data p4#: 21025 --- .../ProjectDataModel/RimUiTreeView.cpp | 29 +++++++++++++++++-- .../ProjectDataModel/RimUiTreeView.h | 5 +++- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/ApplicationCode/ProjectDataModel/RimUiTreeView.cpp b/ApplicationCode/ProjectDataModel/RimUiTreeView.cpp index 59b7afd9ce..72ae486ed8 100644 --- a/ApplicationCode/ProjectDataModel/RimUiTreeView.cpp +++ b/ApplicationCode/ProjectDataModel/RimUiTreeView.cpp @@ -43,6 +43,9 @@ RimUiTreeView::RimUiTreeView(QWidget *parent /*= 0*/) : QTreeView(parent) { setHeaderHidden(true); + + m_pasteAction = new QAction(QString("Paste"), this); + connect(m_pasteAction, SIGNAL(triggered()), SLOT(slotPastePdmObjects())); } //-------------------------------------------------------------------------------------------------- @@ -57,12 +60,15 @@ RimUiTreeView::~RimUiTreeView() //-------------------------------------------------------------------------------------------------- void RimUiTreeView::contextMenuEvent(QContextMenuEvent* event) { + m_pasteAction->setEnabled(hasClipboardValidData()); + RimUiTreeModelPdm* myModel = dynamic_cast(model()); if (myModel) { caf::PdmUiTreeItem* uiItem = myModel->getTreeItemFromIndex(currentIndex()); if (uiItem && uiItem->dataObject()) { + // Range filters if (dynamic_cast(uiItem->dataObject().p())) { @@ -172,7 +178,7 @@ void RimUiTreeView::contextMenuEvent(QContextMenuEvent* event) { QMenu menu; menu.addAction(QString("Copy"), this, SLOT(slotCopyPdmObjectToClipboard())); - menu.addAction(QString("Paste"), this, SLOT(slotPastePdmObjects())); + menu.addAction(m_pasteAction); menu.addAction(QString("Close"), this, SLOT(slotCloseCase())); menu.addAction(QString("New View"), this, SLOT(slotAddView())); menu.addAction(QString("New Grid Case Group"), this, SLOT(slotAddCaseGroup())); @@ -182,14 +188,14 @@ void RimUiTreeView::contextMenuEvent(QContextMenuEvent* event) { QMenu menu; menu.addAction(QString("New Grid Case Group"), this, SLOT(slotAddCaseGroup())); - menu.addAction(QString("Paste"), this, SLOT(slotPastePdmObjects())); + menu.addAction(m_pasteAction); menu.addAction(QString("Close"), this, SLOT(slotDeleteObjectFromPdmPointersField())); menu.exec(event->globalPos()); } else if (dynamic_cast(uiItem->dataObject().p())) { QMenu menu; - menu.addAction(QString("Paste"), this, SLOT(slotPastePdmObjects())); + menu.addAction(m_pasteAction); menu.exec(event->globalPos()); } } @@ -968,3 +974,20 @@ void RimUiTreeView::keyPressEvent(QKeyEvent* keyEvent) QTreeView::keyPressEvent(keyEvent); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RimUiTreeView::hasClipboardValidData() +{ + QClipboard* clipboard = QApplication::clipboard(); + if (clipboard) + { + if (dynamic_cast(clipboard->mimeData())) + { + return true; + } + } + + return false; +} + diff --git a/ApplicationCode/ProjectDataModel/RimUiTreeView.h b/ApplicationCode/ProjectDataModel/RimUiTreeView.h index 07dc53f5cb..db6f4b9ca4 100644 --- a/ApplicationCode/ProjectDataModel/RimUiTreeView.h +++ b/ApplicationCode/ProjectDataModel/RimUiTreeView.h @@ -89,10 +89,13 @@ signals: void selectedObjectChanged( caf::PdmObject* pdmObject ); private: - void createPdmObjectsFromClipboard(caf::PdmObjectGroup* objectGroup); + bool hasClipboardValidData(); virtual void keyPressEvent(QKeyEvent* keyEvent); + +private: + QAction* m_pasteAction; };