Salome HOME
New files added.
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_Tool.cxx
index e224ff808bf4275a0bea639c0d9d41e417369ac7..3e11ed93c7fb9c6e41857d074af667362137a3ca 100644 (file)
@@ -23,6 +23,7 @@
 #include "HYDROGUI_Tool.h"
 
 #include "HYDROGUI_DataModel.h"
+#include "HYDROGUI_DataObject.h"
 #include "HYDROGUI_Module.h"
 #include "HYDROGUI_Prs.h"
 
@@ -44,6 +45,7 @@
 #include <SUIT_ViewWindow.h>
 
 #include <QTextCodec>
+#include <QDockWidget>
 
 // Definition of this id allows to use 'latin1' (Qt alias for 'ISO-8859-1')
 // encoding instead of default 'System'
@@ -192,6 +194,14 @@ void HYDROGUI_Tool::GetPrsSubObjects( HYDROGUI_Module* theModule,
     if( !anObject.IsNull() )
       theSeq.Append( anObject );
   }
+
+  anIterator = HYDROData_Iterator( aDocument, KIND_ZONE );
+  for( ; anIterator.More(); anIterator.Next() )
+  {
+    Handle(HYDROData_Object) anObject = anIterator.Current();
+    if( !anObject.IsNull() )
+      theSeq.Append( anObject );
+  }
 }
 
 HYDROGUI_Prs* HYDROGUI_Tool::GetPresentation( const Handle(HYDROData_Object)& theObj,
@@ -264,6 +274,32 @@ Handle(HYDROData_Object) HYDROGUI_Tool::GetSelectedObject( HYDROGUI_Module* theM
   return NULL;
 }
 
+ObjectKind HYDROGUI_Tool::GetSelectedPartition( HYDROGUI_Module* theModule )
+{
+  HYDROGUI_DataModel* aModel = theModule->getDataModel();
+
+  SUIT_SelectionMgr* aSelectionMgr = theModule->getApp()->selectionMgr();
+  SUIT_DataOwnerPtrList anOwners;
+  aSelectionMgr->selected( anOwners );
+
+  if( anOwners.size() != 1 )
+    return KIND_UNKNOWN;
+
+  if( LightApp_DataOwner* anOwner = dynamic_cast<LightApp_DataOwner*>( anOwners.first().operator->() ) )
+  {
+    QString anEntry = anOwner->entry();
+    QString aPrefix = HYDROGUI_DataObject::entryPrefix();
+    if( anEntry.left( aPrefix.length() ) == aPrefix )
+    {
+      anEntry.remove( aPrefix );
+      for( ObjectKind anObjectKind = KIND_UNKNOWN + 1; anObjectKind <= KIND_LAST; anObjectKind++ )
+        if( HYDROGUI_DataModel::partitionName( anObjectKind ) == anEntry )
+          return anObjectKind;
+    }
+  }
+  return KIND_UNKNOWN;
+}
+
 Handle(HYDROData_Object) HYDROGUI_Tool::FindObjectByName( HYDROGUI_Module* theModule,
                                                           const QString& theName,
                                                           const ObjectKind theObjectKind )
@@ -392,3 +428,19 @@ void HYDROGUI_Tool::GetObjectBackReferences( HYDROGUI_Module* theModule,
     }
   }
 }
+
+
+QDockWidget* HYDROGUI_Tool::WindowDock( QWidget* wid )
+{
+  if ( !wid )
+    return 0;
+
+  QDockWidget* dock = 0;
+  QWidget* w = wid->parentWidget();
+  while ( w && !dock )
+  {
+    dock = ::qobject_cast<QDockWidget*>( w );
+    w = w->parentWidget();
+  }
+  return dock;
+}