Salome HOME
Merge branch 'master' of newgeom:newgeom
[modules/shaper.git] / src / XGUI / XGUI_ObjectsBrowser.cpp
index 5b6547c638ff2eb7d47e3d22cd481e245ac7cbf0..fb43e76122572d1bcb6b7f84ebfad54b4d7f5986 100644 (file)
@@ -1,23 +1,15 @@
 #include "XGUI_ObjectsBrowser.h"
 #include "XGUI_DocumentDataModel.h"
-//#include "XGUI_PartDataModel.h"
-
-//#include <ModelAPI_PluginManager.h>
-//#include <ModelAPI_Iterator.h>
-//#include <ModelAPI_Document.h>
-//#include <ModelAPI_Feature.h>
-//#include <ModelAPI_Object.h>
-//#include <Model_Document.h>
 
 XGUI_ObjectsBrowser::XGUI_ObjectsBrowser(QWidget* theParent)
   : QTreeView(theParent)
 {
   setHeaderHidden(true);
-  XGUI_DocumentDataModel* aDocModel = new XGUI_DocumentDataModel(this);
-  //std::shared_ptr<ModelAPI_PluginManager> aMgr = ModelAPI_PluginManager::get();
-  //std::shared_ptr<ModelAPI_Document> aDocument = aMgr->currentDocument();
-  //aDocModel->setDocument(aDocument, 0);
-  setModel(aDocModel);
+  myDocModel = new XGUI_DocumentDataModel(this);
+  setModel(myDocModel);
+
+  connect(selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), 
+    this, SLOT(onSelectionChanged(const QItemSelection&, const QItemSelection&)));
 }
 
 
@@ -25,3 +17,30 @@ XGUI_ObjectsBrowser::~XGUI_ObjectsBrowser()
 {
 }
 
+
+
+void XGUI_ObjectsBrowser::onSelectionChanged(const QItemSelection& theSelected, 
+                                             const QItemSelection& theDeselected)
+{
+  mySelectedData.clear();
+  QModelIndexList aIndexes = selectionModel()->selectedIndexes();
+  QModelIndexList::const_iterator aIt;
+  for (aIt = aIndexes.constBegin(); aIt != aIndexes.constEnd(); ++aIt) {
+    FeaturePtr aFeature = myDocModel->feature(*aIt);
+    if (aFeature)
+      mySelectedData.append(aFeature);
+  }
+  emit selectionChanged();
+}
+
+void XGUI_ObjectsBrowser::mouseDoubleClickEvent(QMouseEvent* theEvent)
+{
+  QModelIndex aIndex = currentIndex();
+  bool isChanged = myDocModel->activatedIndex(aIndex);
+  QTreeView::mouseDoubleClickEvent(theEvent);
+  if (isChanged) {
+    setExpanded(aIndex.parent(), true);
+    setExpanded(aIndex, myDocModel->hasChildren(aIndex));
+    emit activePartChanged(myDocModel->activePart());
+  }
+}
\ No newline at end of file