From f8dce724f6d4fb0fe523727ab3ac6f783ea31817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jacob=20St=C3=B8ren?= Date: Tue, 18 Aug 2015 16:40:32 +0200 Subject: [PATCH] (#370) Wip: NewProjectTreeAndPropertyView command works. Missing context menu --- .../UserInterface/RiuMainWindow.cpp | 29 +++++++++---------- .../cafUserInterface/cafPdmUiPropertyView.cpp | 4 +-- .../cafUserInterface/cafPdmUiPropertyView.h | 5 ++-- .../cafUserInterface/cafPdmUiTreeView.cpp | 15 ++++++++++ .../cafUserInterface/cafPdmUiTreeView.h | 8 +++-- 5 files changed, 38 insertions(+), 23 deletions(-) diff --git a/ApplicationCode/UserInterface/RiuMainWindow.cpp b/ApplicationCode/UserInterface/RiuMainWindow.cpp index 1e750d3502..c9207196dc 100644 --- a/ApplicationCode/UserInterface/RiuMainWindow.cpp +++ b/ApplicationCode/UserInterface/RiuMainWindow.cpp @@ -1298,9 +1298,7 @@ void RiuMainWindow::setPdmRoot(caf::PdmObject* pdmRoot) } #endif m_projectTreeView->setPdmItem(pdmRoot); - - m_projectTreeView->treeView()->expandAll(); - + // For debug only : m_projectTreeView->treeView()->expandAll(); m_projectTreeView->setDragDropHandle(m_dragDrop); caf::SelectionManager::instance()->setPdmRootObject(pdmRoot); @@ -1682,31 +1680,30 @@ void RiuMainWindow::selectedObjectsChanged() //-------------------------------------------------------------------------------------------------- void RiuMainWindow::slotNewObjectPropertyView() { - if (!m_OBSOLETE_treeModelPdm) return; - RimUiTreeView* OBSOLETE_treeView = NULL; + caf::PdmUiTreeView* pdmTreeView = NULL; { QDockWidget* dockWidget = new QDockWidget("Additional Project Tree " + QString::number(additionalProjectTrees.size() + 1), this); dockWidget->setObjectName("dockWidget"); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); - OBSOLETE_treeView = new RimUiTreeView(dockWidget); - OBSOLETE_treeView->setSelectionMode(QAbstractItemView::ExtendedSelection); + pdmTreeView = new caf::PdmUiTreeView(dockWidget); + pdmTreeView->treeView()->setSelectionMode(QAbstractItemView::ExtendedSelection); // Drag and drop configuration - m_OBSOLETE_treeView->setDragEnabled(true); - m_OBSOLETE_treeView->viewport()->setAcceptDrops(true); - m_OBSOLETE_treeView->setDropIndicatorShown(true); - m_OBSOLETE_treeView->setDragDropMode(QAbstractItemView::DragDrop); + pdmTreeView->treeView()->setDragEnabled(true); + pdmTreeView->treeView()->viewport()->setAcceptDrops(true); + pdmTreeView->treeView()->setDropIndicatorShown(true); + pdmTreeView->treeView()->setDragDropMode(QAbstractItemView::DragDrop); - dockWidget->setWidget(OBSOLETE_treeView); + dockWidget->setWidget(pdmTreeView); addDockWidget(Qt::RightDockWidgetArea, dockWidget); additionalProjectTrees.push_back(dockWidget); - } - OBSOLETE_treeView->setModel(m_OBSOLETE_treeModelPdm); + pdmTreeView->setPdmItem(m_pdmRoot); + } { @@ -1719,8 +1716,8 @@ void RiuMainWindow::slotNewObjectPropertyView() addDockWidget(Qt::RightDockWidgetArea, dockWidget); - connect(OBSOLETE_treeView, SIGNAL(selectedObjectChanged( caf::PdmObjectHandle* )), propView, SLOT(showProperties( caf::PdmObjectHandle* ))); - additionalPropertyEditors.push_back(dockWidget); + connect(pdmTreeView, SIGNAL(selectedObjectChanged( caf::PdmObjectHandle* )), propView, SLOT(showProperties( caf::PdmObjectHandle* ))); + additionalPropertyEditors.push_back(dockWidget); } } diff --git a/Fwk/AppFwk/cafUserInterface/cafPdmUiPropertyView.cpp b/Fwk/AppFwk/cafUserInterface/cafPdmUiPropertyView.cpp index be13589339..56791fd923 100644 --- a/Fwk/AppFwk/cafUserInterface/cafPdmUiPropertyView.cpp +++ b/Fwk/AppFwk/cafUserInterface/cafPdmUiPropertyView.cpp @@ -94,7 +94,7 @@ void PdmUiPropertyView::setUiConfigurationName(QString uiConfigName) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void PdmUiPropertyView::showProperties(caf::PdmObjectHandle* object) +void PdmUiPropertyView::showProperties( PdmObjectHandle* object) { // Find specialized object view handle @@ -151,7 +151,7 @@ void PdmUiPropertyView::showProperties(caf::PdmObjectHandle* object) //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -caf::PdmObjectHandle* PdmUiPropertyView::currentObject() +PdmObjectHandle* PdmUiPropertyView::currentObject() { if (!m_currentObjectView) return NULL; return m_currentObjectView->pdmObject(); diff --git a/Fwk/AppFwk/cafUserInterface/cafPdmUiPropertyView.h b/Fwk/AppFwk/cafUserInterface/cafPdmUiPropertyView.h index 650f23f3df..b0dcd5506c 100644 --- a/Fwk/AppFwk/cafUserInterface/cafPdmUiPropertyView.h +++ b/Fwk/AppFwk/cafUserInterface/cafPdmUiPropertyView.h @@ -59,10 +59,9 @@ public: ~PdmUiPropertyView(); void setUiConfigurationName(QString uiConfigName); - caf::PdmObjectHandle* currentObject(); + PdmObjectHandle* currentObject(); public slots: - void showProperties(caf::PdmObjectHandle* object); - + void showProperties( caf::PdmObjectHandle* object); private: PdmUiObjectEditorHandle* m_currentObjectView; QString m_uiConfigName; diff --git a/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeView.cpp b/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeView.cpp index 6bdb9fd9de..c41497e121 100644 --- a/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeView.cpp +++ b/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeView.cpp @@ -121,6 +121,21 @@ void PdmUiTreeView::selectedObjects(std::vector& objects) void PdmUiTreeView::slotOnSelectionChanged() { emit selectionChanged(); + + std::vector objects; + m_treeViewEditor->selectedUiItems(objects); + PdmObjectHandle* objHandle = NULL; + + if (objects.size()) + { + PdmUiObjectHandle* uiObjH = dynamic_cast< PdmUiObjectHandle*>(objects[0]); + if (uiObjH) + { + objHandle = uiObjH->objectHandle(); + } + } + + emit selectedObjectChanged(objHandle); } //-------------------------------------------------------------------------------------------------- diff --git a/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeView.h b/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeView.h index 1dc5a1111b..92773bc0ee 100644 --- a/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeView.h +++ b/Fwk/AppFwk/cafUserInterface/cafPdmUiTreeView.h @@ -51,6 +51,7 @@ namespace caf class PdmUiItem; class PdmUiTreeViewEditor; class PdmUiDragDropHandle; +class PdmObjectHandle; //================================================================================================== /// @@ -64,14 +65,14 @@ public: ~PdmUiTreeView(); void enableDefaultContextMenu(bool enable); - void setCurrentSelectionToCurrentEditorSelection(bool enable); + void setCurrentSelectionToCurrentEditorSelection(bool enable); // TODO: rename void setUiConfigurationName(QString uiConfigName); void setPdmItem(caf::PdmUiItem* object); QTreeView* treeView(); - void selectedObjects(std::vector& objects); + void selectedObjects(std::vector& objects); // TODO: rename void selectAsCurrentItem(PdmUiItem* uiItem); void setExpanded(const PdmUiItem* uiItem, bool doExpand) const ; @@ -83,6 +84,9 @@ public: signals: void selectionChanged(); + // Convenience signal for use with PdmUiPropertyView +signals: + void selectedObjectChanged(caf::PdmObjectHandle* object); private slots: void slotOnSelectionChanged();