#1000 System : Prepare for handling of copy/paste actions

This commit is contained in:
Magne Sjaastad
2016-11-24 08:03:45 +01:00
parent d59a1a90c6
commit a70939f1b6
4 changed files with 97 additions and 43 deletions

View File

@@ -28,6 +28,7 @@
#include "RimIdenticalGridCaseGroup.h"
#include "RiuMainWindow.h"
#include "cafCmdFeature.h"
#include "cafCmdFeatureManager.h"
#include "cafPdmUiTreeView.h"
#include "cafSelectionManager.h"
@@ -54,51 +55,34 @@ bool RiuTreeViewEventFilter::eventFilter(QObject *obj, QEvent *event)
{
QKeyEvent* keyEvent = static_cast<QKeyEvent *>(event);
QString featureToActivate;
caf::PdmUiItem* uiItem = caf::SelectionManager::instance()->selectedItem();
if (uiItem)
{
if (dynamic_cast<RimEclipseCase*>(uiItem)
|| dynamic_cast<RimEclipseView*>(uiItem)
|| dynamic_cast<RimGeoMechCase*>(uiItem)
|| dynamic_cast<RimGeoMechView*>(uiItem))
if (keyEvent->matches(QKeySequence::Copy))
{
if (keyEvent->matches(QKeySequence::Copy))
QAction* actionToTrigger = caf::CmdFeatureManager::instance()->action("RicCopyReferencesToClipboardFeature");
assert(actionToTrigger);
actionToTrigger->trigger();
keyEvent->setAccepted(true);
return true;
}
else if (keyEvent->matches(QKeySequence::Paste))
{
std::vector<caf::CmdFeature*> matches = caf::CmdFeatureManager::instance()->commandFeaturesMatchingSubString("Paste");
for (caf::CmdFeature* feature : matches)
{
featureToActivate = "RicCopyReferencesToClipboardFeature";
if (feature->canFeatureBeExecuted())
{
feature->actionTriggered(false);
keyEvent->setAccepted(true);
return true;
}
}
}
if (keyEvent->matches(QKeySequence::Paste))
{
if (dynamic_cast<RimIdenticalGridCaseGroup*>(uiItem)
|| dynamic_cast<RimCaseCollection*>(uiItem))
{
featureToActivate = "RicPasteEclipseCasesFeature";
}
else if (dynamic_cast<RimEclipseCase*>(uiItem)
|| dynamic_cast<RimEclipseView*>(uiItem))
{
featureToActivate = "RicPasteEclipseViewsFeature";
}
else if (dynamic_cast<RimGeoMechCase*>(uiItem)
|| dynamic_cast<RimGeoMechView*>(uiItem))
{
featureToActivate = "RicPasteGeoMechViewsFeature";
}
}
}
if (!featureToActivate.isEmpty())
{
QAction* actionToTrigger = caf::CmdFeatureManager::instance()->action(featureToActivate);
assert(actionToTrigger);
actionToTrigger->trigger();
keyEvent->setAccepted(true);
return true;
}
if (!RiuMainWindow::instance()->projectTreeView()->isTreeItemEditWidgetActive())