Salome HOME
create boundary 2D mesh and integer criteria field (0 or 1), for filtoo
[modules/filter.git] / src / FILTERGUI / SelectField.cxx
index 2e2e5b0769f32cf1652054125086e9b797969a68..a3368a5ff1617f2a1c5d1c5ab02822880aca141b 100644 (file)
@@ -35,7 +35,8 @@ SelectField::SelectField(FilterGUI* theModule,const QString& file,
     _file(file),
     _mesh(0),
     _field(0),
-    _ts(0)
+    _ts(0),
+    _dimMesh(-1)
 {
   QListViewItem *element;
 
@@ -68,24 +69,35 @@ SelectField::SelectField(FilterGUI* theModule,const QString& file,
 
   int row = 0;
 
-  // 0)  tree to visualize meshes and fields
+  // 0)  label to select field on 3D mesh
+  _myGroupLayout->addWidget( new QLabel(tr("FILTER_SEL_3D"),_GroupC1), row, 0 );
+  row++;
+
+  // 1)  tree to visualize meshes and fields
   _myList = new QListView( _GroupC1, "List of fields" );
   _myList->setMinimumSize( 400, 400 );
   _myList->setMaximumSize( 400, 400 );
   _myList->setRootIsDecorated(true);
   _myList->addColumn(tr("FILTER_NAME"));
   _myList->addColumn(tr("FILTER_TYPE"));
+  _myList->addColumn(tr("FILTER_DIM"));
 
   for(int i=0;i<numberOfMeshes;i++){
-    element = new QListViewItem( _myList, meshesNames[i], tr("FILTER_MESH") );
+    _dimMesh = _med->getMesh(meshesNames[i])->getMeshDimension();
+    char strd[4];
+    sprintf(strd,"%dD\0",_dimMesh);
+    element = new QListViewItem( _myList, meshesNames[i], tr("FILTER_MESH") ,strd);
     element->setExpandable(true);
     _myList->setOpen(element,true);
 
     for (int j=0; j<numberOfFields; j++){
       deque<DT_IT_> myIteration = _med->getFieldIteration (fieldsNames[j]);
       string meshName = _med->getField(fieldsNames[j],myIteration[0].dt,myIteration[0].it)->getSupport()->getMesh()->getName();
-      if( strcmp(meshName.c_str(),meshesNames[i].c_str()) == 0)
-       new QListViewItem( element, fieldsNames[j], tr("FILTER_FIELD") );
+      if( strcmp(meshName.c_str(),meshesNames[i].c_str()) == 0){
+       QListViewItem *elem = new QListViewItem( element, fieldsNames[j], tr("FILTER_FIELD") );
+       if(_dimMesh != 3)
+         elem->setSelectable(false);
+      }
     }
 
     element->setSelectable(false);
@@ -93,13 +105,13 @@ SelectField::SelectField(FilterGUI* theModule,const QString& file,
   _myGroupLayout->addWidget( _myList, row, 0 );
   row++;
 
-  // 1)  label for time steps
+  // 2)  label for time steps
   _myLab = new QLabel(tr("FILTER_SEL_TS"),_GroupC1);
   _myLab->hide();
   _myGroupLayout->addWidget( _myLab, row, 0 );
   row++;
 
-  // 2)  slider to visualize time steps
+  // 3)  slider to visualize time steps
   _mySlider = new QSlider(_GroupC1);
   _mySlider->setOrientation(Qt::Horizontal);
   _mySlider->setTickmarks(QSlider::Below);
@@ -108,7 +120,7 @@ SelectField::SelectField(FilterGUI* theModule,const QString& file,
   _mySlider->hide();
   row++;
 
-  // 3) buttons Close and Help
+  // 4) buttons Ok, Cancel and Help
   _GroupButtons = new QGroupBox(_GroupC1, "GroupButtons");
   _GroupButtons->setSizePolicy(QSizePolicy((QSizePolicy::SizeType)7, (QSizePolicy::SizeType)0, 0, 0, _GroupButtons->sizePolicy().hasHeightForWidth()));
 //   _GroupButtons->setGeometry(QRect(10, 10, 281, 48));
@@ -153,7 +165,7 @@ SelectField::~SelectField()
 void SelectField::fieldSelected(QListViewItem *lvi)
 {
   if(lvi){
-    if( strcmp(lvi->text(1),"Field") == 0){
+    if( (strcmp(lvi->text(1),"Field") == 0) && (_dimMesh == 3) ){
       _field = lvi->text(0);
       _mesh = lvi->parent()->text(0);
       deque<DT_IT_> myIteration = _med->getFieldIteration (lvi->text(0));