///////////////////////////////////////////////////////////////////////////////// // // Copyright (C) 2015- Statoil ASA // Copyright (C) 2015- Ceetron Solutions AS // // 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 // for more details. // ///////////////////////////////////////////////////////////////////////////////// #include "RiuProjectPropertyView.h" #include "RiuMainWindow.h" #include "RiuTreeViewEventFilter.h" #include "cafPdmUiPropertyView.h" #include "cafPdmUiTreeView.h" #include #include #include #include //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RiuProjectAndPropertyView::RiuProjectAndPropertyView(QWidget* parent, Qt::WindowFlags f) : QWidget(parent, f) { // Tree View m_projectTreeView = new caf::PdmUiTreeView; m_projectTreeView->treeView()->setHeaderHidden(true); m_projectTreeView->treeView()->setSelectionMode(QAbstractItemView::ExtendedSelection); m_projectTreeView->enableSelectionManagerUpdating(true); // Install event filter used to handle key press events RiuTreeViewEventFilter* treeViewEventFilter = new RiuTreeViewEventFilter(this); m_projectTreeView->treeView()->installEventFilter(treeViewEventFilter); // Drag and drop configuration m_projectTreeView->treeView()->setDragEnabled(true); m_projectTreeView->treeView()->viewport()->setAcceptDrops(true); m_projectTreeView->treeView()->setDropIndicatorShown(true); m_projectTreeView->treeView()->setDragDropMode(QAbstractItemView::DragDrop); m_projectTreeView->treeView()->setContextMenuPolicy(Qt::CustomContextMenu); connect(m_projectTreeView->treeView(), SIGNAL(customContextMenuRequested(const QPoint&)), RiuMainWindow::instance(), SLOT(customMenuRequested(const QPoint&))); // Property view m_propertyView = new caf::PdmUiPropertyView; connect(m_projectTreeView, SIGNAL(selectedObjectChanged(caf::PdmObjectHandle*)), m_propertyView, SLOT(showProperties(caf::PdmObjectHandle*))); QWidget* propertyEditorWithHeader = new QWidget; { QLabel* propertyHeader = new QLabel; propertyHeader->setText("Property Editor"); propertyHeader->setStyleSheet("QLabel { background-color: #CCCCCC }"); propertyHeader->setFixedHeight(20); QVBoxLayout* layout = new QVBoxLayout; layout->setMargin(0); layout->addWidget(propertyHeader); layout->addWidget(m_propertyView); propertyEditorWithHeader->setLayout(layout); propertyEditorWithHeader->setMinimumHeight(150); } QSplitter* splitter = new QSplitter(Qt::Vertical); splitter->addWidget(m_projectTreeView); splitter->addWidget(propertyEditorWithHeader); QVBoxLayout* layout = new QVBoxLayout; layout->setMargin(0); layout->addWidget(splitter); setLayout(layout); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuProjectAndPropertyView::setPdmItem(caf::PdmUiItem* object) { m_propertyView->showProperties(nullptr); m_projectTreeView->setPdmItem(object); } //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuProjectAndPropertyView::showProperties(caf::PdmObjectHandle* object) { m_propertyView->showProperties(object); }