ResInsight/ApplicationLibCode/UserInterface/RiuEditPerforationCollectionWidget.cpp
Magne Sjaastad f8c5cf389f
clang-format: Set column width to 140
* Set column width to 140
* Use c++20
* Remove redundant virtual
2023-02-26 10:48:40 +01:00

101 lines
4.1 KiB
C++

/////////////////////////////////////////////////////////////////////////////////
//
// Copyright (C) 2016 Statoil ASA
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#include "RiuEditPerforationCollectionWidget.h"
#include "RimPerforationCollection.h"
#include "RiuTools.h"
#include "cafCmdFeatureManager.h"
#include "cafPdmUiTableView.h"
#include "cafSelectionManager.h"
#include <QAbstractItemView>
#include <QBoxLayout>
#include <QDialogButtonBox>
#include <QHeaderView>
#include <QMenu>
#include <QTableView>
#include <QWidget>
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiuEditPerforationCollectionWidget::RiuEditPerforationCollectionWidget( QWidget* parent, RimPerforationCollection* perforationCollection )
: QDialog( parent, RiuTools::defaultDialogFlags() )
, m_perforationCollection( perforationCollection )
{
setWindowTitle( "Edit Perforation Intervals" );
QVBoxLayout* dialogLayout = new QVBoxLayout;
setLayout( dialogLayout );
m_pdmTableView = new caf::PdmUiTableView( this );
m_pdmTableView->tableView()->setSelectionMode( QAbstractItemView::ExtendedSelection );
m_pdmTableView->tableView()->setContextMenuPolicy( Qt::CustomContextMenu );
m_pdmTableView->enableHeaderText( false );
connect( m_pdmTableView->tableView(), SIGNAL( customContextMenuRequested( QPoint ) ), SLOT( customMenuRequested( QPoint ) ) );
m_pdmTableView->setChildArrayField( &( m_perforationCollection->m_perforations ) );
QHeaderView* verticalHeader = m_pdmTableView->tableView()->verticalHeader();
verticalHeader->setSectionResizeMode( QHeaderView::Interactive );
m_pdmTableView->tableView()->resizeColumnsToContents();
// Set active child array to be able to use generic delete
caf::SelectionManager::instance()->setActiveChildArrayFieldHandle( &( m_perforationCollection->m_perforations ) );
dialogLayout->addWidget( m_pdmTableView );
// Buttons
QDialogButtonBox* buttonBox = new QDialogButtonBox( QDialogButtonBox::Close );
connect( buttonBox, SIGNAL( accepted() ), this, SLOT( accept() ) );
connect( buttonBox, SIGNAL( rejected() ), this, SLOT( reject() ) );
dialogLayout->addWidget( buttonBox );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RiuEditPerforationCollectionWidget::~RiuEditPerforationCollectionWidget()
{
m_pdmTableView->setChildArrayField( nullptr );
caf::SelectionManager::instance()->setActiveChildArrayFieldHandle( nullptr );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RiuEditPerforationCollectionWidget::customMenuRequested( QPoint pos )
{
caf::CmdFeatureManager* commandManager = caf::CmdFeatureManager::instance();
QMenu menu;
menu.addAction( commandManager->action( "PdmListField_AddItem", "New row" ) );
menu.addAction( commandManager->action( "PdmListField_DeleteItem", "Delete row" ) );
// Qt doc: QAbstractScrollArea and its subclasses that map the context menu event to coordinates of the viewport().
QPoint globalPos = m_pdmTableView->tableView()->viewport()->mapToGlobal( pos );
menu.exec( globalPos );
}