]> SALOME platform Git repositories - modules/homard.git/blob - src/HOMARDGUI/MonEditCase.cxx
Salome HOME
Fix problems of 'make distcheck'
[modules/homard.git] / src / HOMARDGUI / MonEditCase.cxx
1 using namespace std;
2
3 #include "MonEditCase.h"
4
5 #include "SalomeApp_Tools.h"
6 #include "HOMARDGUI_Utils.h"
7 #include "HomardQtCommun.h"
8 #include <utilities.h>
9
10
11 // -------------------------------------------------------------
12 MonEditCase::MonEditCase ( QWidget* parent, bool modal,
13                            HOMARD::HOMARD_Gen_var myHomardGen,
14                            QString CaseName ):
15 // -------------------------------------------------------------
16 /* Constructs a MonEditCase
17     herite de MonCreateCase
18 */
19    MonCreateCase(parent, modal, myHomardGen)
20 {
21     MESSAGE("Debut de MonEditCase" << CaseName.toStdString().c_str());
22     setWindowTitle(QObject::tr("HOM_CASE_EDIT_WINDOW_TITLE"));
23     _aCaseName = CaseName;
24     aCase = _myHomardGen->GetCas(_aCaseName.toStdString().c_str());
25     InitValEdit();
26 }
27 // ------------------------------
28 MonEditCase::~MonEditCase()
29 // ------------------------------
30 {
31 }
32
33
34 // ------------------------------
35 void MonEditCase::InitValEdit()
36 // ------------------------------
37 {
38     MESSAGE("Debut de MonEditCase::InitValEdit");
39       LECaseName->setText(_aCaseName);
40       LECaseName->setReadOnly(true);
41
42       QString aDirName = aCase->GetDirName();
43       LEDirName->setText(aDirName);
44       LEDirName->setReadOnly(true);
45       PushDir->setVisible(0);
46
47       QString _aitername=aCase->GetIter0Name();
48       HOMARD::HOMARD_Iteration_var aIter = _myHomardGen->GetIteration(_aitername.toStdString().c_str());
49       QString aFileName = aIter->GetMeshFile();
50       LEFileName->setText(aFileName);
51       LEFileName->setReadOnly(true);
52       PushFichier->setVisible(0);
53
54       int ConfType=aCase->GetConfType();
55       if(ConfType==1)
56       {
57          GBTypeNoConf->setVisible(0);
58          RBConforme->setChecked(true);
59       }
60       else
61       {
62         RBNonConforme->setChecked(true);
63         GBTypeNoConf->setVisible(1);
64         RB1NpM->setEnabled(false);
65         RB1NpA->setEnabled(false);
66         RBQuelconque->setEnabled(false);
67       };
68
69       if (_ConfType==2) { RB1NpM->setChecked(true);};
70       if (_ConfType==3) { RB1NpA->setChecked(true);};
71       if (_ConfType==4) { RBQuelconque->setChecked(true);};
72
73       RBNonConforme->setEnabled(false);
74       RBConforme->setEnabled(false);
75
76 //    Non affichage du mode de suivi de frontiere
77       CBBoundaryA->setVisible(0);
78       GBBoundaryA->setVisible(0);
79       CBBoundaryD->setVisible(0);
80       GBBoundaryD->setVisible(0);
81
82 //    On passe en revue tous les couples (frontiere,groupe) du cas
83       HOMARD::ListBoundaryGroupType_var mesBoundarys = aCase->GetBoundaryGroup();
84       if (mesBoundarys->length()>0)
85       {
86         QStringList ListeFron ;
87         QString NomFron ;
88         bool BounDi = false ;
89         bool BounAn = false ;
90         for (int i=0; i<mesBoundarys->length(); i++)
91         {
92 //        Nom de la frontiere
93           NomFron = mesBoundarys[i++];
94           MESSAGE("NomFron "<<NomFron.toStdString().c_str());
95 //        L'objet associe pour en deduire le type
96           HOMARD::HOMARD_Boundary_var myBoundary = _myHomardGen->GetBoundary(NomFron.toStdString().c_str());
97           int type_obj = myBoundary->GetBoundaryType() ;
98
99 //        C'est une frontiere discrete
100 //        Rermarque : on ne gere pas les groupes
101           if ( type_obj==0 )
102           {
103             BounDi = true ;
104             CBBoundaryDi->addItem(NomFron);
105           }
106
107 //        C'est une frontiere analytique
108           else
109           {
110             BounAn = true ;
111             int nbcol = TWBoundary->columnCount();
112 //          On ajoute une ligne pour le groupe
113             TWBoundary->insertRow(0);
114 //          La colonne 0 comporte le nom du groupe
115             TWBoundary->setItem( 0, 0, new QTableWidgetItem(QString(mesBoundarys[i]).trimmed()));
116 //             TWBoundary->item( 0, 0 )->setFlags(Qt::ItemIsEnabled |Qt::ItemIsSelectable );
117 //          Chacune des colonnes suivantes est associé a une frontiere deja presente : on y met une
118 //          case non cochee
119             for ( int j = 1; j < nbcol; j++ )
120             {
121               TWBoundary->setItem( 0, j, new QTableWidgetItem( QString ("") ) );
122               TWBoundary->item( 0, j )->setFlags( 0 );
123               TWBoundary->item( 0, j )->setFlags( Qt::ItemIsUserCheckable  );
124               TWBoundary->item( 0, j )->setCheckState( Qt::Unchecked );
125             }
126 //          On cherche si la frontiere en cours d'examen a deja ete rencontree :
127 //          si oui, on stocke son numero de colonne
128             int ok = -1 ;
129             for ( int nufr = 0 ; nufr<ListeFron.size(); nufr++)
130             {
131               if ( ListeFron[nufr] == NomFron ) ok = nufr+1 ;
132             }
133 //            si non, on ajoute une colonne
134             if ( ok < 0 )
135             {
136               ListeFron.append(NomFron);
137               ok = ListeFron.size() ;
138               addBoundaryAn(NomFron);
139             }
140 //          on coche la case correspondant au couple (frontiere,groupe) en cours d'examen
141             TWBoundary->item( 0, ok )->setCheckState( Qt::Checked );
142           }
143         }
144         MESSAGE("BounDi "<<BounDi<<", BounAn "<<BounAn);
145         if ( BounAn )
146         { GBBoundaryA->setVisible(1);
147 //        on rend les cases inactives. On ne peut pas le faire pour le tableau sinon on perd l'ascenseur !
148           int nbcol = TWBoundary->columnCount();
149           int nbrow = TWBoundary->rowCount();
150           for ( int i = 0; i < nbrow; i++ )
151           { for ( int j = 0; j < nbcol; j++ ) TWBoundary->item( i, j )->setFlags( !Qt::ItemIsEnabled ); }
152 //        on met un nom blanc au coin
153           QTableWidgetItem *__colItem = new QTableWidgetItem();
154           __colItem->setText(QApplication::translate("CreateCase", "", 0, QApplication::UnicodeUTF8));
155           TWBoundary->setHorizontalHeaderItem(0, __colItem);
156 //        on cache le bouton New
157           PBBoundaryAnNew->setVisible(0);
158         }
159         if ( BounDi )
160         { GBBoundaryD->setVisible(1);
161           CBBoundaryDi->setDisabled(true);
162           PBBoundaryDiNew->setVisible(0);}
163       }
164 }
165
166 // -------------------------------------
167 bool MonEditCase::PushOnApply()
168 // -------------------------------------
169 {
170   return true ;
171
172 };