Salome HOME
refs #562: basic logic for Strickler table operation and dialog.
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_Module.cxx
index 4ba884b4bdb63be4f2e13942724c310a2b4b936e..2fadc91100629997bd96d46f12c3e9e606e4539f 100644 (file)
@@ -1,8 +1,4 @@
-// Copyright (C) 2007-2015  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
+// Copyright (C) 2014-2015  EDF-R&D
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
@@ -340,6 +336,7 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
   bool anIsRegion = false;
   bool anIsZone = false;
   bool anIsObstacle = false;
+  bool anIsStricklerTable = false;
   bool anIsStream = false;
   bool anIsChannel = false;
   bool anIsDigue = false;
@@ -458,6 +455,8 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
         anIsBathymetry = true;
       else if( anObjectKind == KIND_OBSTACLE )
         anIsObstacle = true;
+      else if( anObjectKind == KIND_STRICKLER_TABLE )
+        anIsStricklerTable = true;
       else if( anObjectKind == KIND_STREAM )
       {
         anIsStream = true;
@@ -511,6 +510,9 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
           theMenu->addAction( action( CreateBoxId ) );
           theMenu->addAction( action( CreateCylinderId ) );
           break;
+        case KIND_STRICKLER_TABLE:
+          theMenu->addAction( action( ImportStricklerTableFromFileId ) );          
+          break;
         case KIND_CALCULATION:
           theMenu->addAction( action( CreateCalculationId ) );
           break;
@@ -637,6 +639,12 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
         theMenu->addAction( action( TranslateObstacleId ) );
         theMenu->addSeparator();
       }
+      else if( anIsStricklerTable )
+      {
+        theMenu->addAction( action( EditStricklerTableId ) );
+               theMenu->addAction( action( ExportStricklerTableFromFileId ) );
+        theMenu->addSeparator();
+      }
       else if( anIsVisualState && anIsObjectBrowser )
       {
         theMenu->addAction( action( SaveVisualStateId ) );
@@ -710,6 +718,21 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
 
   if( isRoot )
     theMenu->addAction( action( EditLocalCSId ) );
+
+  if( anIsObjectBrowser && anOwners.size()==1 )
+  {
+    if( aSeq.Size() > 0 )
+    {
+      Handle( HYDROData_Object ) anObject = Handle( HYDROData_Object )::DownCast( aSeq.First() );
+      if( !anObject.IsNull() )
+      {
+        theMenu->addSeparator();
+        theMenu->addAction( action( SubmersibleId ) );
+        action( SubmersibleId )->setCheckable( true );
+        action( SubmersibleId )->setChecked( anObject->IsSubmersible() );
+      }
+    }
+  }
 }
 
 void HYDROGUI_Module::createPreferences()
@@ -740,6 +763,15 @@ void HYDROGUI_Module::createPreferences()
                  LightApp_Preferences::Bool, "HYDRO", "auto_fit_all" );
 }
 
+QCursor HYDROGUI_Module::getPrefEditCursor() const
+{
+  int aCursorType = SUIT_Session::session()->resourceMgr()->integerValue("preferences", "type_of_cursor", (int)CT_CrossCursor );
+  if ( aCursorType >= Qt::BlankCursor)
+    aCursorType++;
+  QCursor aCursor = QCursor( Qt::CursorShape(aCursorType) );
+  return aCursor;
+}
+
 void HYDROGUI_Module::update( const int flags )
 {
   if ( !isUpdateEnabled() )
@@ -931,6 +963,17 @@ bool HYDROGUI_Module::isObjectVisible( const int theViewId,
   if( theObject.IsNull() )
     return false;
 
+  if( theViewId < 0 )
+  {
+    //search in all
+    foreach( int aViewId, myObjectStateMap.keys() )
+    {
+      if( isObjectVisible( aViewId, theObject ) )
+        return true;
+    }
+    return false;
+  }
+
   ViewId2Entry2ObjectStateMap::const_iterator anIter1 = myObjectStateMap.find( theViewId );
   if( anIter1 != myObjectStateMap.end() )
   {