Disable paste if no available clipboard data

p4#: 21025
This commit is contained in:
Magne Sjaastad 2013-03-21 11:04:47 +01:00
parent 359964092d
commit 1e8d5236d1
2 changed files with 30 additions and 4 deletions

View File

@ -43,6 +43,9 @@ RimUiTreeView::RimUiTreeView(QWidget *parent /*= 0*/)
: QTreeView(parent) : QTreeView(parent)
{ {
setHeaderHidden(true); 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) void RimUiTreeView::contextMenuEvent(QContextMenuEvent* event)
{ {
m_pasteAction->setEnabled(hasClipboardValidData());
RimUiTreeModelPdm* myModel = dynamic_cast<RimUiTreeModelPdm*>(model()); RimUiTreeModelPdm* myModel = dynamic_cast<RimUiTreeModelPdm*>(model());
if (myModel) if (myModel)
{ {
caf::PdmUiTreeItem* uiItem = myModel->getTreeItemFromIndex(currentIndex()); caf::PdmUiTreeItem* uiItem = myModel->getTreeItemFromIndex(currentIndex());
if (uiItem && uiItem->dataObject()) if (uiItem && uiItem->dataObject())
{ {
// Range filters // Range filters
if (dynamic_cast<RimReservoirView*>(uiItem->dataObject().p())) if (dynamic_cast<RimReservoirView*>(uiItem->dataObject().p()))
{ {
@ -172,7 +178,7 @@ void RimUiTreeView::contextMenuEvent(QContextMenuEvent* event)
{ {
QMenu menu; QMenu menu;
menu.addAction(QString("Copy"), this, SLOT(slotCopyPdmObjectToClipboard())); 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("Close"), this, SLOT(slotCloseCase()));
menu.addAction(QString("New View"), this, SLOT(slotAddView())); menu.addAction(QString("New View"), this, SLOT(slotAddView()));
menu.addAction(QString("New Grid Case Group"), this, SLOT(slotAddCaseGroup())); menu.addAction(QString("New Grid Case Group"), this, SLOT(slotAddCaseGroup()));
@ -182,14 +188,14 @@ void RimUiTreeView::contextMenuEvent(QContextMenuEvent* event)
{ {
QMenu menu; QMenu menu;
menu.addAction(QString("New Grid Case Group"), this, SLOT(slotAddCaseGroup())); 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.addAction(QString("Close"), this, SLOT(slotDeleteObjectFromPdmPointersField()));
menu.exec(event->globalPos()); menu.exec(event->globalPos());
} }
else if (dynamic_cast<RimCaseCollection*>(uiItem->dataObject().p())) else if (dynamic_cast<RimCaseCollection*>(uiItem->dataObject().p()))
{ {
QMenu menu; QMenu menu;
menu.addAction(QString("Paste"), this, SLOT(slotPastePdmObjects())); menu.addAction(m_pasteAction);
menu.exec(event->globalPos()); menu.exec(event->globalPos());
} }
} }
@ -968,3 +974,20 @@ void RimUiTreeView::keyPressEvent(QKeyEvent* keyEvent)
QTreeView::keyPressEvent(keyEvent); QTreeView::keyPressEvent(keyEvent);
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimUiTreeView::hasClipboardValidData()
{
QClipboard* clipboard = QApplication::clipboard();
if (clipboard)
{
if (dynamic_cast<const MimeDataWithIndexes*>(clipboard->mimeData()))
{
return true;
}
}
return false;
}

View File

@ -89,10 +89,13 @@ signals:
void selectedObjectChanged( caf::PdmObject* pdmObject ); void selectedObjectChanged( caf::PdmObject* pdmObject );
private: private:
void createPdmObjectsFromClipboard(caf::PdmObjectGroup* objectGroup); void createPdmObjectsFromClipboard(caf::PdmObjectGroup* objectGroup);
bool hasClipboardValidData();
virtual void keyPressEvent(QKeyEvent* keyEvent); virtual void keyPressEvent(QKeyEvent* keyEvent);
private:
QAction* m_pasteAction;
}; };