]> SALOME platform Git repositories - plugins/blsurfplugin.git/commitdiff
Salome HOME
Fix of 0022207: EDF 2182 BLSURFPLUGIN: The user is allowed to enter 0 as a global... BR_new_bop3
authorakl <akl@opencascade.com>
Thu, 23 May 2013 08:57:25 +0000 (08:57 +0000)
committerakl <akl@opencascade.com>
Thu, 23 May 2013 08:57:25 +0000 (08:57 +0000)
Error message is shown now if 'User Size', 'Max Size', 'Mesh angle', 'Mesh distance' contains zero value and user clicks 'OK' in dialog.
The same message is generated at attempt to add or modify items of table in 'Local size' tab by 'Add'/'Modify' buttons.

src/GUI/BLSURFPluginGUI_HypothesisCreator.cxx
src/GUI/BLSURFPluginGUI_HypothesisCreator.h

index 21786b655dad2b1895d6f46c3c22d455bcf20393..0e6a11c1d7c27ee609f3c4fe69a404cda2d97b5b 100644 (file)
@@ -533,17 +533,18 @@ bool BLSURFPluginGUI_HypothesisCreator::checkParams(QString& msg) const
         else {
           ok = false;
         }
-        if ( ok && sizeMap.toDouble() <= 0.0 )
-        {
-          msg = tr("ZERO_VALUE_OF").arg( tr("SMP_SIZEMAP_COLUMN"));
-          ok = false;
-        }
       }
     }
   }
 
   // 22207: BLSURFPLUGIN: The user is allowed to enter 0 as a global or local size.
   if ( ok )
+  {
+    // In case if not STD_TAB is current tab, then text() of empty spinboxes returns "0" value.
+    // So STD_TAB must be current tab to get correct value of it's spinbox.
+    myTabWidget->setCurrentIndex( STD_TAB );
+  }
+  if ( ok )
   {
     if ( !( ok = ( myStdWidget->myPhySize->text().isEmpty() ||
                    myStdWidget->myPhySize->text().toDouble() > 0.0 )))
@@ -585,11 +586,11 @@ QFrame* BLSURFPluginGUI_HypothesisCreator::buildFrame()
   lay->setMargin( 5 );
   lay->setSpacing( 0 );
 
-  // tab
-  QTabWidget* tab = new QTabWidget( fr );
-  tab->setTabShape( QTabWidget::Rounded );
-  tab->setTabPosition( QTabWidget::North );
-  lay->addWidget( tab );
+  // main TabWidget of the dialog
+  myTabWidget = new QTabWidget( fr );
+  myTabWidget->setTabShape( QTabWidget::Rounded );
+  myTabWidget->setTabPosition( QTabWidget::North );
+  lay->addWidget( myTabWidget );
 
   myName = 0;
   
@@ -864,12 +865,12 @@ QFrame* BLSURFPluginGUI_HypothesisCreator::buildFrame()
 //   anEnfLayout->setRowStretch(1, 1);
 
   // ---
-  tab->insertTab( STD_TAB, myStdGroup, tr( "SMESH_ARGUMENTS" ) );
-  tab->insertTab( ADV_TAB, myAdvGroup, tr( "BLSURF_ADV_ARGS" ) );
-  tab->insertTab( SMP_TAB, mySmpGroup, tr( "LOCAL_SIZE" ) );
-  tab->insertTab( ENF_TAB, myEnfGroup, tr( "BLSURF_ENF_VER" ) );
+  myTabWidget->insertTab( STD_TAB, myStdGroup, tr( "SMESH_ARGUMENTS" ) );
+  myTabWidget->insertTab( ADV_TAB, myAdvGroup, tr( "BLSURF_ADV_ARGS" ) );
+  myTabWidget->insertTab( SMP_TAB, mySmpGroup, tr( "LOCAL_SIZE" ) );
+  myTabWidget->insertTab( ENF_TAB, myEnfGroup, tr( "BLSURF_ENF_VER" ) );
 
-  tab->setCurrentIndex( STD_TAB );
+  myTabWidget->setCurrentIndex( STD_TAB );
 
   connect( myAdvWidget->addBtn->menu(), SIGNAL( aboutToShow() ),         this, SLOT( onAddOption() ) );
   connect( myAdvWidget->addBtn->menu(), SIGNAL( triggered( QAction* ) ), this, SLOT( onOptionChosenInPopup( QAction* ) ) );
@@ -2350,19 +2351,26 @@ void BLSURFPluginGUI_HypothesisCreator::onSetSizeMap(QTreeWidgetItem* item, int
 
 void BLSURFPluginGUI_HypothesisCreator::onAddMap()
 {
+  bool res = false;
   if ( smpTab->currentIndex() == ATT_TAB ){    
     if ( myGeomSelWdg2->IsObjectSelected() && myAttSelWdg->IsObjectSelected() ){ 
       mySMapObject = myGeomSelWdg2->GetObject< GEOM::GEOM_Object >(0);
       myAttObject = myAttSelWdg->GetObject< GEOM::GEOM_Object >(0);
-      insertAttractor(mySMapObject, myAttObject);
+      res = insertAttractor(mySMapObject, myAttObject);
     }
   }
   if (smpTab->currentIndex() == SMP_STD_TAB  ){
     if ( myGeomSelWdg1->IsObjectSelected() ){
       mySMapObject = myGeomSelWdg1->GetObject< GEOM::GEOM_Object >(0);
-      insertElement(mySMapObject);  
+      res = insertElement(mySMapObject);  
     }  
   }
+  if ( !res ) {
+    // Local size should be more than 0
+    QString msg = tr("ZERO_VALUE_OF").arg( tr("BLSURF_SM_SIZE"));
+    SUIT_MessageBox::critical( dlg(),"Error" , msg );
+    return;
+  }
   BLSURFPluginGUI_HypothesisCreator* that = (BLSURFPluginGUI_HypothesisCreator*)this;  
   that->getGeomSelectionTool()->selectionMgr()->clearFilters();
   myAttDistSpin->setValue(0.);
@@ -2382,19 +2390,26 @@ void BLSURFPluginGUI_HypothesisCreator::onAddMap()
 void BLSURFPluginGUI_HypothesisCreator::onModifyMap()
 {
   MESSAGE("BLSURFPluginGUI_HypothesisCreator::onModifyMap()");
+  bool res = false;
   if ( smpTab->currentIndex() == ATT_TAB ){    
     if ( myGeomSelWdg2->IsObjectSelected() && myAttSelWdg->IsObjectSelected() ){ 
       mySMapObject = myGeomSelWdg2->GetObject< GEOM::GEOM_Object >(0);
       myAttObject = myAttSelWdg->GetObject< GEOM::GEOM_Object >(0);
-      insertAttractor(mySMapObject, myAttObject, /*modify = */true);
+      res = insertAttractor(mySMapObject, myAttObject, /*modify = */true);
     }
   }
   if (smpTab->currentIndex() == SMP_STD_TAB  ){
     if ( myGeomSelWdg1->IsObjectSelected() ){
       mySMapObject = myGeomSelWdg1->GetObject< GEOM::GEOM_Object >(0);
-      insertElement(mySMapObject, /*modify = */true);  
+      res = insertElement(mySMapObject, /*modify = */true);  
     }  
   }
+  if ( !res ) {
+    // Local size should be more than 0
+    QString msg = tr("ZERO_VALUE_OF").arg( tr("BLSURF_SM_SIZE"));
+    SUIT_MessageBox::critical( dlg(),"Error" , msg );
+    return;
+  }
   BLSURFPluginGUI_HypothesisCreator* that = (BLSURFPluginGUI_HypothesisCreator*)this;  
   that->getGeomSelectionTool()->selectionMgr()->clearFilters();
   myAttDistSpin->setValue(0.);
@@ -2411,7 +2426,7 @@ void BLSURFPluginGUI_HypothesisCreator::onModifyMap()
   myAttSelWdg->SetObject(CORBA::Object::_nil());
 }
 
-void BLSURFPluginGUI_HypothesisCreator::insertElement(GEOM::GEOM_Object_var anObject, bool modify)
+bool BLSURFPluginGUI_HypothesisCreator::insertElement(GEOM::GEOM_Object_var anObject, bool modify)
 {
   MESSAGE("BLSURFPluginGUI_HypothesisCreator::insertElement()");
   BLSURFPlugin::BLSURFPlugin_Hypothesis_var h =
@@ -2444,6 +2459,10 @@ void BLSURFPluginGUI_HypothesisCreator::insertElement(GEOM::GEOM_Object_var anOb
   QString shapeEntry;
   shapeEntry = QString::fromStdString(entry);
   double phySize = mySmpSizeSpin->value();
+
+  if ( phySize == 0 )
+    return false; // Local size should be more than 0
+
   std::ostringstream oss;
   oss << phySize;
   QString sizeMap;
@@ -2457,7 +2476,7 @@ void BLSURFPluginGUI_HypothesisCreator::insertElement(GEOM::GEOM_Object_var anOb
     if (that->mySMPMap.contains(shapeEntry)) {  
       if (that->mySMPMap[shapeEntry] != "__TO_DELETE__") {
   //             MESSAGE("Size map for shape with name(entry): "<< shapeName << "(" << entry << ")");
-        return;
+        return false;
       }
     }
     mySizeMapTable->addTopLevelItem(item);
@@ -2478,9 +2497,10 @@ void BLSURFPluginGUI_HypothesisCreator::insertElement(GEOM::GEOM_Object_var anOb
     myStdWidget->myPhysicalMesh->setCurrentIndex( PhysicalLocalSize );
     myStdWidget->onPhysicalMeshChanged();
   }
+  return true;
 }
 
-void BLSURFPluginGUI_HypothesisCreator::insertAttractor(GEOM::GEOM_Object_var aFace, GEOM::GEOM_Object_var anAttractor, bool modify)
+bool BLSURFPluginGUI_HypothesisCreator::insertAttractor(GEOM::GEOM_Object_var aFace, GEOM::GEOM_Object_var anAttractor, bool modify)
 {
   MESSAGE("BLSURFPluginGUI_HypothesisCreator::insertAttractor()");
   BLSURFPlugin::BLSURFPlugin_Hypothesis_var h =
@@ -2503,6 +2523,10 @@ void BLSURFPluginGUI_HypothesisCreator::insertAttractor(GEOM::GEOM_Object_var aF
   double infDist = 0. ;
   double constDist = 0. ;
   phySize = myAttSizeSpin->value();
+
+  if ( phySize == 0 )
+    return false; // Local size should be more than 0
+
   if (myAttractorCheck->isChecked()){
     infDist = myAttDistSpin->value();
   }
@@ -2530,7 +2554,7 @@ void BLSURFPluginGUI_HypothesisCreator::insertAttractor(GEOM::GEOM_Object_var aF
     if (that->mySMPMap.contains(shapeEntry)) {  
       if (that->mySMPMap[shapeEntry] != "__TO_DELETE__") {
     //             MESSAGE("Size map for shape with name(entry): "<< shapeName << "(" << entry << ")");
-        return;
+        return false;
       }
     }
     item = new QTreeWidgetItem();
@@ -2567,6 +2591,7 @@ void BLSURFPluginGUI_HypothesisCreator::insertAttractor(GEOM::GEOM_Object_var aF
     myStdWidget->onPhysicalMeshChanged();
   }
   MESSAGE("mySMPMap.size() = "<<mySMPMap.size());
+  return true;
 }
 
 bool BLSURFPluginGUI_HypothesisCreator::sizeMapsValidation()
index d3063737191665bb286bed13269ca0b37cd4e799..349e275ed8e37d70fc67dc0e2ce8772a666d07d8 100644 (file)
@@ -218,14 +218,15 @@ private:
   GeomSelectionTools* getGeomSelectionTool();
   GEOM::GEOM_Gen_var  getGeomEngine();
   //void                insertElementType( TopAbs_ShapeEnum );
-  void                insertElement( GEOM::GEOM_Object_var, bool modify = false );
-  void                insertAttractor(GEOM::GEOM_Object_var, GEOM::GEOM_Object_var, bool modify = false);
+  bool                insertElement( GEOM::GEOM_Object_var, bool modify = false );
+  bool                insertAttractor(GEOM::GEOM_Object_var, GEOM::GEOM_Object_var, bool modify = false);
   int                 findRowFromEntry(QString entry);
   CORBA::Object_var   entryToObject(QString entry);
   static LightApp_SelectionMgr* selectionMgr();
 
 private:
   
+  QTabWidget*             myTabWidget;
   QWidget*                myStdGroup;
   BLSURFPluginGUI_StdWidget* myStdWidget;
   QLineEdit*              myName;