From 0b813021827bcf78ec21523c8542e418689870d6 Mon Sep 17 00:00:00 2001 From: gdd Date: Mon, 23 Apr 2012 14:59:32 +0000 Subject: [PATCH] Update from G. Nicolas --- doc/gui_usage.rst | 2 + doc/images/intro_31.png | Bin 0 -> 14535 bytes doc/images/intro_32.png | Bin 0 -> 19018 bytes doc/images/intro_33.png | Bin 0 -> 19865 bytes doc/images/intro_34.png | Bin 0 -> 7354 bytes doc/images/intro_35.png | Bin 0 -> 39772 bytes doc/images/intro_36.png | Bin 0 -> 11308 bytes doc/images/intro_37.png | Bin 0 -> 9709 bytes doc/images/intro_38.png | Bin 0 -> 20346 bytes doc/images/intro_39.png | Bin 0 -> 7316 bytes doc/images/intro_40.png | Bin 0 -> 16136 bytes doc/intro.rst | 69 +++++- src/HOMARDGUI/CreateHypothesis.h | 76 +++--- src/HOMARDGUI/CreateHypothesis.ui | 18 +- src/HOMARDGUI/CreateIteration.h | 387 ++++++++++++++++-------------- tests/test_1.py | 34 ++- tests/test_2.py | 34 ++- tests/test_3.py | 30 ++- 18 files changed, 390 insertions(+), 260 deletions(-) create mode 100644 doc/images/intro_31.png create mode 100644 doc/images/intro_32.png create mode 100644 doc/images/intro_33.png create mode 100644 doc/images/intro_34.png create mode 100644 doc/images/intro_35.png create mode 100644 doc/images/intro_36.png create mode 100644 doc/images/intro_37.png create mode 100644 doc/images/intro_38.png create mode 100644 doc/images/intro_39.png create mode 100644 doc/images/intro_40.png diff --git a/doc/gui_usage.rst b/doc/gui_usage.rst index b75a22df..81e7bf59 100644 --- a/doc/gui_usage.rst +++ b/doc/gui_usage.rst @@ -1,3 +1,5 @@ +.. _gui_usage: + Mode d'emploi pour l'interface graphique ======================================== .. index:: single: cas diff --git a/doc/images/intro_31.png b/doc/images/intro_31.png new file mode 100644 index 0000000000000000000000000000000000000000..175264e0668a362422a6200520a8e72e032e4eaf GIT binary patch literal 14535 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 literal 0 HcmV?d00001 diff --git a/doc/images/intro_32.png b/doc/images/intro_32.png new file mode 100644 index 0000000000000000000000000000000000000000..f4022ca29c85d970c5228ac29934ba9501439010 GIT binary patch literal 19018 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

+1;8ZhHTy_T2L($eTZg^SlxS`^f`MLwRH*}s~q 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 ScjqP0aSWcWelF{r5}E+hgFPMq literal 0 HcmV?d00001 diff --git a/doc/images/intro_34.png b/doc/images/intro_34.png new file mode 100644 index 0000000000000000000000000000000000000000..94866890c15e07e1010299836f5fbe741489ccf9 GIT binary patch literal 7354 zcmd6MS5y;GxNa0gnt)X4B1LJ^!AMhzR0#rtbd(Z0Nbd+zM7s1|6hc6n5PFv;AU)E9 zbb_Ht?`M0@UFWR(bk})1c}QlG%*@_<{{L$ep{b#CirQ?D>u*AE|w6uqmzRrzpJ^6rKO{*wUgU6 zUaJfQ!t`84;i-;S=H{I5D{Z|7*&P}eypadGl9V5GpWJA=n|t?zW|L0wAh(<(3hiN9(d2Q^b3olWRt;zx8Z`rUbm_z|TaKjM>~TvT>T zpK(ai-BoSdUc>IW!7VpY7}TMv$stB%nR}WVAB>Wq`%MKN_`E|Fr+EzmQGa4)(Tw|w z3um}Vnm@^3`JVYYq%E#T#ETqNUw`7YyBjx5VNBE4-!D6P&@Rw=?o#$Q6Zu`lbkBb+ z!=s7IY1peLGL{{29YPuxBr?t#aJ&GH!QpUdJKaCU2`L#VSqYn~t5zG6m*nK0vFXzc zo10H9EG;cpZ!y>$q@$ zk}A?ftc3k<%RT!3E0x%sYZ%?-ezY~0&63TlS9ZP|&KgZ>^PQ2=8Nmd}ohS9{)8nI! z?0Rz;W>8v&ELBm1sm;an&_-hUUnyqDjTBNucB#yKx{inUhjHTq?>wP~Q^?oOVO%qsBN@{g#St`OQJs5hl>7r%|$#{J}JJ>EBY(?1lJ?vbd@o&X7my9(DV*YLpSnze){RwpgN{M_0@F%QvG? zVx`|56|4lt94o$l<>Q1F6ci{HXzhAQf$=*S&)L-eNUr9`o}cWou&_LR`t2I2(qebZ@%i}uEF5LNhU7Iag$Y&$oPcRXO9@8q9cAzrBP8( ziEgDmXxT$mZ!&U-5ne@ z%el_`%;@YhYcr#Bh%cymf0!v#Hz(Mh`#>OG_E4B>i_a#{-f$bIX@M3}hX*C$Ml+Zt zc|;y~{C#t#*45Ruxv8m|cimRO+>nEEuEk$cS~`on`r9{KYwO`6n+nP3GUVjsBnE>? zF%5vq$h6?p>G`Wss0&;tT*7g7@}k{wFwe#;o0yQ$%d@9(b90lQpZ|}kX*q&K+{tNM zy76eX-W9>B{o46D5!*oZK$hf0Z(O1(r%VbyWY~#7X65Wmx;55-PLZ(QbDM?#wfG|v zDvXNPpVHcZ*0rNC1Z-%aZ+TWtkA1)cmppl8ax@3ahu%sk1pfiP* zVJz#}LQ3s&4^TW=ik5zPhz zH-NtVZQr7Xhr5<=>=^-1Dk8uSR=ciwyB)@L4YD8F&1s4UFWNWH@d@A}8c4{dvNMi* zehos<(MHds*s8jV`vzxysk5V;l$>}k<2qzNshhs|1yR!Pp51UU3vI}|fb|(pQv!@D z0N4Gt)^NZeX4jRA0OE4J3;CbybYE&wN^!hQdij2|Jhpr&cb^0zXvCIB)?#{fIuTpf z^X}cd#ig#;I&jH_TSV?VNS)$#vY@zjNj(CHprL<5YIw-w;{lF5O1W-XXg1=zSvUb? zr^sQt4hf^%i_^TxnxOeUIGDv&2?5LbWg4WC<0oTkjt8ZIJdx!XZ|{+jmv-M6m*22F z`MW{@3-zXzBFPR74ZV>wR9kT@%lL0br(iTPFUvo=p5=LT{s?{rUOW89*IU|xo!V=E zli*)Z*Nq1pvoGQ=mo%+P<3OAsaVBUG;FWhsbk@0>hk=Q0kfJ++VMO4VCwD1!PW*zN z?DSF=XJus>Jq#4}mwxkJraGLuEjQM#w>|2XUN@HxvQ+2u7Z|cvT`R>~xFn>n>i3AY zPPzs_RwhO&U%*X7R2#={m#&TwS7`009JDrczsAR#Di@+%lh(Rp8DWICBfDZWVn8|F zA}5D$;AR>HBqa16rj(#zZ`v9#hrtB+{yn7O)g6YU8mB6!%6ZslHdehy zmY2h(lie=QPs++3l9R_uh_~zxhz#w!TjO=&%M&7tiU@BJNuMG<2L%Oj5j|Nlt2|>+ zuCiL}j%NIm|I7buvvzOwC+~TY^FXRl1Mzdm4}*8sC&ER>gDey*w512`=NV9t$izCe zS5fTT*l!&xK;-ytLE|+oUcc^RMN>w0`uo=`>-^|T;>BtMkeZvDL!;4*;`S88A@T9? zA#t*oyRoc+=ew2WJw`@Gsr#)qONFtrmy`4JS0&{w2DOgH*2)j~x7XK)t#gulm53V^j+hU(!@ZG$X;M!L_|dTY5HktY5z5?Ay1Xn5EKe^P=Dp4VI^Rm)3G&M zKjxjj_cg6bRZUH7qqerT+yG@e+Nlz-ck$4uu1(5NQ}Z`=!R9_{Y`v%+={?e+7(*6= zL?YGM;OzHhq!%RSo$~GTCydI!D~6-Y#f5bkV#jqi7Pek^6h?7Rq3lxjMB%mij+~sF zP$=}_;6oAkz|--9lz1|?6|#!a^l9d!mV(wfN%mGwF-{ zF>h~g&`Q;E0Rfk1+pXJMTaGq1KX76;qa1mf);2cW)WkVH8{CB?m1GRCw_Af`g@E_? z_yz_CHSWdp8C0(i1zw71E1Cbsb+5Rb*EmKV6<#I~!$IwHHJ%2A(W zn27=x>Fn%`q8G6OWv(uj8OpG`zod+POkpcHxq!X{)TR(*=TUT&`i+@Fqbmi<5q z65Wuyi0V@L`gkMyO*wvsIsz{p|!@w#z=+y z_4RfCvqN_ekARDV2|582>Ij8<@zzV-(Im8d>o}ZF3A#FjVsvuym7(DbP*`f?wkXwt z$9~7o_V#@K%7iaU&~9{tv_8JRhK7cKsh1WPtrujkPGCV#eq*sJydPLnWdkog=lzvx z0e%_1c=6iYT*U6z*YtD-gI78_)GRDAw&O*;y}k0`WJ1PKtg->P$x1dhHU|fXd$b-) zpm%R3BqoY_Zp{u44<8>N3$z>uHU zm!RhZul!9+FosUeUATij-f}lLH@}_so8`@i=^lazjjVJqDBM)l#re5Lwv-AlxT7Iq zVVCE7L&?d>xRJMEa0iEry&>6~H*fZIc3S^eISkZQ!{wK9E9hw80-1jjq)npP)qbqF z+`oT6URl(#kGkHd457)M9l*qGeDnH1T3M}XmQ&tG@z72DnHtvV{fV(UqCP3NRGg+S z(qn&p1cyjBOz(PAsalZ!AVb-eLwo-J$hQRVGpp=Ur=r@LnqONJBkh%kTBQp2uw|#i~zkg?c@Ss<=&9sr5U7nwpS4~C3#>NH|I*u?cUD%g?4N`8>sJi5qvx%7; zw^mmUi7W0aP7{HTZtm>t;N2u!m!-Jqc9fEmGCG^-1MHiSoz6i`tSA=`8by<1V4#

|^>lXL`NXNV{*e7yR9ydxxVX4FyA;dz;pPmxQp^`}ShiHX zWq)#57{TMT=H}*VGJnJ`bVsxA5g$MQOP(an2VWY`w>(?fL%tLg*x&-TG0gzLF^!(F z6!$12TwGl4v9rsbu73^=4h}qDVhxD{#7}4HCv@*#enrL3WTiQLDBJR}t&`JGU*G9! zh7%7j?^Lr$^q=W0W>N>lw{L#|Uxbq}8#K7tXlTT=2gTkIlFQQsUAhWr>G1H-a~p%c zQ}^WVaCS&MyV7WS^|!+TKH~;a9-a+}){~#$J7N-&p-iYeVP#ECa{mf|#d`0(!szH* zx1Q*E0Tq@jwu!@~7NrusKI)p{gNG3GbU_*I86rPcrTom0uq%go>@X-L1Dpg`q9G0i zY7Q)m4o^}8vDhNECw?(gNYE8v&S~IeJD>-&onBfvUb9g5i9U@_;lSD+iY^+Mp3>5n z)!ft$#D^yj;Ns}es`%x^W%4~)H)rSGzQK<%FWWcvm`xPpe`00C(~vhR5rII=9rM}#fukHQ&T{AfS$>8 z?V7rNL6t4t+||_uEKifi&%L!FScZ7CW52~Wl--1Zp`ntZBB04=+5o`mfP2A>|M2nS z6ajG1J%IcgAe%=?SO=rG*^m?G<#< zq^3duu8wDWv6`k?4hZDx(qBSC;&i9B^`i92-48J_g98In-hVmxNeKyi2L^CkTffjB zw2)r{m#PG^LAB-A*H87*60!weoy~90w{9;iv_AxYk^#VFSKeF`aN%R{&F|!IM@Prt z;2?O%jv>b60B3<_oNe@Uy1KlGiHX6{I%1mAl9R=K5ACIm?Y7Hq4}7HI9n6-VL8ILP z-GDzU7idZ2!TDZQm`#)!s}=~~zuz;Tb2b`Ulbf3h79Rt653m~m*b%}olPq0X3K|;s z$fPw1qukr2e zqgd^WVnNy<0miz#^}ueO4Ea8UvpZJJ=@OJ@o{uj}%=?LmL@vGeeinABu_zgTJKj}l ztwMl|@w3|0$|6q7z@UNMJ^VlK11w9b%TFzYLKr^C6c`w&rq&O50zk@WM^jT1h-pUq z`cx-UY=wn|gWtcm6sAAR-vZqZA4q-bDKvSVZ5hBuUS1xKk|h?v^RIH#R`0!45L6`5 z7Jm7Xn3xDGBQ-U(-~NbFwKKpYkcQBU+3GktI=+6*RwWtRQ-wm678iqfs@enwnA!lfJHQaz;jp-ERhwFX)nwk&!@w^UkL(8=LpUTr4NRJhm~< z)l%OV2ssa0q1Z(U*6i2y$upas%Z5PUw7zaFDJdEBTh9;v8#>kifl>W#N zF_s56HqrfveK}L;j#X51IPvMhS!B&WbiWTPoEaGz>27U4q-op*CwYIQnd7~hChdE8 ze0oY8Di`0|X_|qh($kx`I6Lz7_P(VHvH$+)&R}B{Ia1&qTVDB*=I+@0_b^NGd3npT zza;{Sa#hD$-p0mrX5l-mu?~V(V$P7gkPur2ypt8;y%T;@ugnEk1OzYSpFP_nr2#$) zAK16bz1ieR{@6lx2t<(op8;F0uimd#8oLdFq%u)%{1(ZPI_eISAdtj|yvrj72c)UU z9qb;ATwQw$fehn;FKn);Ku#gJd^e9wIFk+}a^&w1_auPv{7yv41A)9Fx|;`nPlf#d zcJ@!gnTvT!QXN=LSrZ7%pM9wr4LYYnJYmTwc=IK%C4XSSnyd@T^ifE@^?)sJR4=iy zQSvGX6kPrh8a+H5_bK!5MC&E0q@;gt&fkCklv6F4RLZ(4m@cX&fR6@Qnn-bvHj0U)R|3 zoQ^c71bD3EVgB_-ET?|!R4^$v$_PI{KQflby;7X0BoG&YV9FBSm--2i%43*owwS9f z(C++FyI7*ulK?79s^(Q6=7*2J&V`Qarl+TGtpBdFUdUf9w36Orv@iaD49;s`-?QSE zC0x%l0Sat)gpy1*i}+)U`A|t))2M#$^r{)YS|GzSGnwe%DIhq!T-i6>Cv7*Ywkj)E z3#B9uH8C-vPoqCO+D33T6jtZvwvBxs)38-?`^w~_5M>{9i&xd~DyC4G!w0*P0>(1= znGxeUIX!(k8z_ChDn+P2mLk9Tk)eS>GRQG)7QfK+>-k+>9N{Y54>}wv29iO(ahcTD zRAleq0B~@qsR6XUoV*;=Gb%dTxXJph*Q;Y7-~R=hXWWVz`7bf)87Ud5slC*g?RryV z?X2|VzH>Z2kml%5>4PjU$M00d{ka%iAo)#y1FySU%ERZ%%EMzV?S+(-l*#;tx}F6Z z4=98~4VP-eLPEwR#t}^!lvU7Y=5(j<&-u@vO1Qn;!fqi!5c*ur`0CUL?T_x-h{SFe z+~?%P(gzFSNysy(gtE~C!t);t$Vhr^8<^Fd= zc7PO_A*unHAQq|fQeOiPnGKH3tU;)rh%)q*yLqbGZ7(o#}D@15hFqh?a3 zRe@sViC2F7`0*?pOh# zrjQF6sFKx)W*t#X;DG?mp{R$ud;OzE(OOZeIc%~)Q+~cw(9C?upZphA8(B? zRv&%)_U+A9@SU$;BM&K}=0l*Ko(*n04&Vdkxql7hnUrvMoDXI6eQMInOY+S@Z= zq%txxAQ=DyJ2eEl+=?Mb!YRAEO8y8%{)|(H)ieh{>?&#;jqVyO^eHV`bX_31lKZm$%%zX*ce9JMnd;Qf;? zjc-oi7$%zhvHPq%yFiXGep(gr=y^nJY~Vp{xiIVQ=24>X>Bx0mYO%P_$j!H@-~U?+ zT@FzcAP|AOU33~T8ZlaPo8%uwvsHqkHgnWjjxv zT&+p{^mbkX1HCiq^-;XbtOslgE-!o%_-`U_ySn)S=DV3KFZ%B(B}7G0L!nI0EcibF D12A!V literal 0 HcmV?d00001 diff --git a/doc/images/intro_35.png b/doc/images/intro_35.png new file mode 100644 index 0000000000000000000000000000000000000000..72871479df5fc78de22c5b4ebe37ec3543e305a1 GIT binary patch literal 39772 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 literal 0 HcmV?d00001 diff --git a/doc/images/intro_36.png b/doc/images/intro_36.png new file mode 100644 index 0000000000000000000000000000000000000000..2d363dad481afbfa57a866950c22b34a1e159f4a GIT binary patch literal 11308 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 literal 0 HcmV?d00001 diff --git a/doc/images/intro_37.png b/doc/images/intro_37.png new file mode 100644 index 0000000000000000000000000000000000000000..c6f7943deb12990895c8f08bb38aeabb563f2b7f GIT binary patch literal 9709 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 f4$jqJF) literal 0 HcmV?d00001 diff --git a/doc/images/intro_38.png b/doc/images/intro_38.png new file mode 100644 index 0000000000000000000000000000000000000000..2d29392c5d68d5df164f408d27fd6269730fb2dc GIT binary patch literal 20346 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.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 literal 0 HcmV?d00001 diff --git a/doc/images/intro_39.png b/doc/images/intro_39.png new file mode 100644 index 0000000000000000000000000000000000000000..ad542ba78adb624571b6a17164f0b34ebb2725e4 GIT binary patch literal 7316 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 A=>Px# literal 0 HcmV?d00001 diff --git a/doc/images/intro_40.png b/doc/images/intro_40.png new file mode 100644 index 0000000000000000000000000000000000000000..36c447a01ccb36b7689b516dbcddfca8319b41b0 GIT binary patch literal 16136 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 Q2OsetSizeGripEnabled(true); gridLayout_3 = new QGridLayout(CreateHypothesis); gridLayout_3->setObjectName(QString::fromUtf8("gridLayout_3")); - Name = new QLabel(CreateHypothesis); - Name->setObjectName(QString::fromUtf8("Name")); - - gridLayout_3->addWidget(Name, 0, 0, 1, 1); - LEHypothesisName = new QLineEdit(CreateHypothesis); LEHypothesisName->setObjectName(QString::fromUtf8("LEHypothesisName")); LEHypothesisName->setMinimumSize(QSize(382, 31)); @@ -476,8 +471,8 @@ public: GBAreaManagement->setObjectName(QString::fromUtf8("GBAreaManagement")); sizePolicy.setHeightForWidth(GBAreaManagement->sizePolicy().hasHeightForWidth()); GBAreaManagement->setSizePolicy(sizePolicy); - gridLayout5 = new QGridLayout(GBAreaManagement); - gridLayout5->setObjectName(QString::fromUtf8("gridLayout5")); + gridLayout_4 = new QGridLayout(GBAreaManagement); + gridLayout_4->setObjectName(QString::fromUtf8("gridLayout_4")); TWZone = new QTableWidget(GBAreaManagement); if (TWZone->columnCount() < 3) TWZone->setColumnCount(3); @@ -494,11 +489,11 @@ public: TWZone->setRowCount(0); TWZone->setColumnCount(3); - gridLayout5->addWidget(TWZone, 0, 0, 1, 1); + gridLayout_4->addWidget(TWZone, 0, 0, 1, 1); horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); - gridLayout5->addItem(horizontalSpacer, 0, 1, 1, 1); + gridLayout_4->addItem(horizontalSpacer, 0, 1, 1, 1); vboxLayout1 = new QVBoxLayout(); #ifndef Q_OS_MAC @@ -537,49 +532,49 @@ public: vboxLayout1->addItem(spacerItem2); - gridLayout5->addLayout(vboxLayout1, 0, 2, 1, 1); + gridLayout_4->addLayout(vboxLayout1, 0, 2, 1, 1); gridLayout_3->addWidget(GBAreaManagement, 5, 0, 1, 2); GBField = new QGroupBox(CreateHypothesis); GBField->setObjectName(QString::fromUtf8("GBField")); - gridLayout6 = new QGridLayout(GBField); + gridLayout5 = new QGridLayout(GBField); #ifndef Q_OS_MAC - gridLayout6->setSpacing(6); + gridLayout5->setSpacing(6); #endif #ifndef Q_OS_MAC - gridLayout6->setContentsMargins(9, 9, 9, 9); + gridLayout5->setContentsMargins(9, 9, 9, 9); #endif - gridLayout6->setObjectName(QString::fromUtf8("gridLayout6")); - gridLayout7 = new QGridLayout(); + gridLayout5->setObjectName(QString::fromUtf8("gridLayout5")); + gridLayout6 = new QGridLayout(); #ifndef Q_OS_MAC - gridLayout7->setSpacing(6); + gridLayout6->setSpacing(6); #endif #ifndef Q_OS_MAC - gridLayout7->setContentsMargins(0, 0, 0, 0); + gridLayout6->setContentsMargins(0, 0, 0, 0); #endif - gridLayout7->setObjectName(QString::fromUtf8("gridLayout7")); + gridLayout6->setObjectName(QString::fromUtf8("gridLayout6")); RBFieldNo = new QRadioButton(GBField); RBFieldNo->setObjectName(QString::fromUtf8("RBFieldNo")); RBFieldNo->setChecked(true); - gridLayout7->addWidget(RBFieldNo, 0, 0, 1, 1); + gridLayout6->addWidget(RBFieldNo, 0, 0, 1, 1); RBFieldAll = new QRadioButton(GBField); RBFieldAll->setObjectName(QString::fromUtf8("RBFieldAll")); RBFieldAll->setChecked(false); - gridLayout7->addWidget(RBFieldAll, 0, 1, 1, 1); + gridLayout6->addWidget(RBFieldAll, 0, 1, 1, 1); RBFieldChosen = new QRadioButton(GBField); RBFieldChosen->setObjectName(QString::fromUtf8("RBFieldChosen")); RBFieldChosen->setChecked(false); - gridLayout7->addWidget(RBFieldChosen, 0, 2, 1, 1); + gridLayout6->addWidget(RBFieldChosen, 0, 2, 1, 1); - gridLayout6->addLayout(gridLayout7, 0, 0, 1, 1); + gridLayout5->addLayout(gridLayout6, 0, 0, 1, 1); TWField = new QTableWidget(GBField); if (TWField->columnCount() < 2) @@ -590,7 +585,7 @@ public: TWField->setHorizontalHeaderItem(1, __qtablewidgetitem6); TWField->setObjectName(QString::fromUtf8("TWField")); - gridLayout6->addWidget(TWField, 1, 0, 1, 1); + gridLayout5->addWidget(TWField, 1, 0, 1, 1); gridLayout_3->addWidget(GBField, 6, 0, 1, 2); @@ -665,37 +660,42 @@ public: GBButtons = new QGroupBox(CreateHypothesis); GBButtons->setObjectName(QString::fromUtf8("GBButtons")); - gridLayout8 = new QGridLayout(GBButtons); + gridLayout7 = new QGridLayout(GBButtons); #ifndef Q_OS_MAC - gridLayout8->setSpacing(6); + gridLayout7->setSpacing(6); #endif #ifndef Q_OS_MAC - gridLayout8->setContentsMargins(9, 9, 9, 9); + gridLayout7->setContentsMargins(9, 9, 9, 9); #endif - gridLayout8->setObjectName(QString::fromUtf8("gridLayout8")); + gridLayout7->setObjectName(QString::fromUtf8("gridLayout7")); buttonOk = new QPushButton(GBButtons); buttonOk->setObjectName(QString::fromUtf8("buttonOk")); - gridLayout8->addWidget(buttonOk, 0, 0, 1, 1); + gridLayout7->addWidget(buttonOk, 0, 0, 1, 1); buttonApply = new QPushButton(GBButtons); buttonApply->setObjectName(QString::fromUtf8("buttonApply")); - gridLayout8->addWidget(buttonApply, 0, 1, 1, 1); + gridLayout7->addWidget(buttonApply, 0, 1, 1, 1); buttonCancel = new QPushButton(GBButtons); buttonCancel->setObjectName(QString::fromUtf8("buttonCancel")); - gridLayout8->addWidget(buttonCancel, 0, 2, 1, 1); + gridLayout7->addWidget(buttonCancel, 0, 2, 1, 1); buttonHelp = new QPushButton(GBButtons); buttonHelp->setObjectName(QString::fromUtf8("buttonHelp")); - gridLayout8->addWidget(buttonHelp, 0, 3, 1, 1); + gridLayout7->addWidget(buttonHelp, 0, 3, 1, 1); gridLayout_3->addWidget(GBButtons, 10, 0, 1, 2); + Name = new QLabel(CreateHypothesis); + Name->setObjectName(QString::fromUtf8("Name")); + + gridLayout_3->addWidget(Name, 0, 0, 1, 1); + LEHypothesisName->raise(); GBTypeAdaptation->raise(); GBUniform->raise(); @@ -717,7 +717,6 @@ public: void retranslateUi(QDialog *CreateHypothesis) { CreateHypothesis->setWindowTitle(QApplication::translate("CreateHypothesis", "Create an hypothesis", 0, QApplication::UnicodeUTF8)); - Name->setText(QApplication::translate("CreateHypothesis", "Name", 0, QApplication::UnicodeUTF8)); GBTypeAdaptation->setTitle(QApplication::translate("CreateHypothesis", "Type of adaptation", 0, QApplication::UnicodeUTF8)); RBUniforme->setText(QApplication::translate("CreateHypothesis", "Uniform", 0, QApplication::UnicodeUTF8)); RBChamp->setText(QApplication::translate("CreateHypothesis", "Driven by a field", 0, QApplication::UnicodeUTF8)); @@ -773,7 +772,7 @@ public: GBAdvancedOptions->setTitle(QApplication::translate("CreateHypothesis", "Advanced options", 0, QApplication::UnicodeUTF8)); TLMinimalDiameter->setText(QApplication::translate("CreateHypothesis", "Minimal diameter", 0, QApplication::UnicodeUTF8)); TLMaximalLevel->setText(QApplication::translate("CreateHypothesis", "Maximal level", 0, QApplication::UnicodeUTF8)); - GBAdapInit->setTitle(QApplication::translate("CreateHypothesis", "Intialization of adaptation", 0, QApplication::UnicodeUTF8)); + GBAdapInit->setTitle(QApplication::translate("CreateHypothesis", "Initialization of adaptation", 0, QApplication::UnicodeUTF8)); RBAIN->setText(QApplication::translate("CreateHypothesis", "Nothing", 0, QApplication::UnicodeUTF8)); RBAIR->setText(QApplication::translate("CreateHypothesis", "Refinement", 0, QApplication::UnicodeUTF8)); RBAID->setText(QApplication::translate("CreateHypothesis", "Coarsening", 0, QApplication::UnicodeUTF8)); @@ -782,6 +781,7 @@ public: buttonApply->setText(QApplication::translate("CreateHypothesis", "Apply", 0, QApplication::UnicodeUTF8)); buttonCancel->setText(QApplication::translate("CreateHypothesis", "Cancel", 0, QApplication::UnicodeUTF8)); buttonHelp->setText(QApplication::translate("CreateHypothesis", "Help", 0, QApplication::UnicodeUTF8)); + Name->setText(QApplication::translate("CreateHypothesis", "Name", 0, QApplication::UnicodeUTF8)); } // retranslateUi }; diff --git a/src/HOMARDGUI/CreateHypothesis.ui b/src/HOMARDGUI/CreateHypothesis.ui index 8c7ec676..686a25ab 100644 --- a/src/HOMARDGUI/CreateHypothesis.ui +++ b/src/HOMARDGUI/CreateHypothesis.ui @@ -26,13 +26,6 @@ true - - - - Name - - - @@ -554,7 +547,7 @@ Zone management - + @@ -800,7 +793,7 @@ - Intialization of adaptation + Initialization of adaptation @@ -876,6 +869,13 @@ + + + + Name + + + LEHypothesisName GBTypeAdaptation diff --git a/src/HOMARDGUI/CreateIteration.h b/src/HOMARDGUI/CreateIteration.h index 36fa710d..c3e48c90 100644 --- a/src/HOMARDGUI/CreateIteration.h +++ b/src/HOMARDGUI/CreateIteration.h @@ -1,10 +1,10 @@ /******************************************************************************** -** Form generated from reading ui file 'CreateIteration.ui' +** Form generated from reading UI file 'CreateIteration.ui' ** -** Created: Thu Sep 1 13:07:29 2011 -** by: Qt User Interface Compiler version 4.2.1 +** Created: Wed Apr 11 11:35:39 2012 +** by: Qt User Interface Compiler version 4.6.3 ** -** WARNING! All changes made in this file will be lost when recompiling ui file! +** WARNING! All changes made in this file will be lost when recompiling UI file! ********************************************************************************/ #ifndef CREATEITERATION_H @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -25,6 +26,8 @@ #include #include +QT_BEGIN_NAMESPACE + class Ui_CreateIteration { public: @@ -75,275 +78,287 @@ public: void setupUi(QWidget *CreateIteration) { - CreateIteration->setObjectName(QString::fromUtf8("CreateIteration")); - gridLayout = new QGridLayout(CreateIteration); - gridLayout->setSpacing(6); - gridLayout->setMargin(9); - gridLayout->setObjectName(QString::fromUtf8("gridLayout")); - GBField = new QGroupBox(CreateIteration); - GBField->setObjectName(QString::fromUtf8("GBField")); - gridLayout1 = new QGridLayout(GBField); - gridLayout1->setSpacing(6); - gridLayout1->setMargin(9); - gridLayout1->setObjectName(QString::fromUtf8("gridLayout1")); - LEFieldFile = new QLineEdit(GBField); - LEFieldFile->setObjectName(QString::fromUtf8("LEFieldFile")); - LEFieldFile->setMinimumSize(QSize(282, 21)); - - gridLayout1->addWidget(LEFieldFile, 0, 2, 1, 5); + if (CreateIteration->objectName().isEmpty()) + CreateIteration->setObjectName(QString::fromUtf8("CreateIteration")); + CreateIteration->resize(610, 598); + gridLayout = new QGridLayout(CreateIteration); +#ifndef Q_OS_MAC + gridLayout->setSpacing(6); +#endif +#ifndef Q_OS_MAC + gridLayout->setContentsMargins(9, 9, 9, 9); +#endif + gridLayout->setObjectName(QString::fromUtf8("gridLayout")); + GBField = new QGroupBox(CreateIteration); + GBField->setObjectName(QString::fromUtf8("GBField")); + gridLayout1 = new QGridLayout(GBField); +#ifndef Q_OS_MAC + gridLayout1->setSpacing(6); +#endif +#ifndef Q_OS_MAC + gridLayout1->setContentsMargins(9, 9, 9, 9); +#endif + gridLayout1->setObjectName(QString::fromUtf8("gridLayout1")); + LEFieldFile = new QLineEdit(GBField); + LEFieldFile->setObjectName(QString::fromUtf8("LEFieldFile")); + LEFieldFile->setMinimumSize(QSize(282, 21)); - spacerItem = new QSpacerItem(138, 18, QSizePolicy::Minimum, QSizePolicy::Expanding); + gridLayout1->addWidget(LEFieldFile, 0, 2, 1, 5); - gridLayout1->addItem(spacerItem, 1, 3, 1, 4); + spacerItem = new QSpacerItem(138, 18, QSizePolicy::Minimum, QSizePolicy::Expanding); - RBChosen = new QRadioButton(GBField); - RBChosen->setObjectName(QString::fromUtf8("RBChosen")); + gridLayout1->addItem(spacerItem, 1, 3, 1, 4); - gridLayout1->addWidget(RBChosen, 2, 6, 1, 1); + RBChosen = new QRadioButton(GBField); + RBChosen->setObjectName(QString::fromUtf8("RBChosen")); - spacerItem1 = new QSpacerItem(255, 13, QSizePolicy::Expanding, QSizePolicy::Minimum); + gridLayout1->addWidget(RBChosen, 2, 6, 1, 1); - gridLayout1->addItem(spacerItem1, 4, 6, 1, 1); + spacerItem1 = new QSpacerItem(255, 13, QSizePolicy::Expanding, QSizePolicy::Minimum); - SpinBox_Rank = new QSpinBox(GBField); - SpinBox_Rank->setObjectName(QString::fromUtf8("SpinBox_Rank")); - SpinBox_Rank->setMaximum(1010000); - SpinBox_Rank->setMinimum(-1); - SpinBox_Rank->setValue(1); + gridLayout1->addItem(spacerItem1, 4, 6, 1, 1); - gridLayout1->addWidget(SpinBox_Rank, 4, 5, 1, 1); + SpinBox_Rank = new QSpinBox(GBField); + SpinBox_Rank->setObjectName(QString::fromUtf8("SpinBox_Rank")); + SpinBox_Rank->setMaximum(1010000); + SpinBox_Rank->setMinimum(-1); + SpinBox_Rank->setValue(1); - Rank = new QLabel(GBField); - Rank->setObjectName(QString::fromUtf8("Rank")); + gridLayout1->addWidget(SpinBox_Rank, 4, 5, 1, 1); - gridLayout1->addWidget(Rank, 4, 4, 1, 1); + Rank = new QLabel(GBField); + Rank->setObjectName(QString::fromUtf8("Rank")); - spacerItem2 = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum); + gridLayout1->addWidget(Rank, 4, 4, 1, 1); - gridLayout1->addItem(spacerItem2, 4, 2, 1, 2); + spacerItem2 = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum); - SpinBox_TimeStep = new QSpinBox(GBField); - SpinBox_TimeStep->setObjectName(QString::fromUtf8("SpinBox_TimeStep")); - SpinBox_TimeStep->setMaximum(100000); - SpinBox_TimeStep->setMinimum(-2); - SpinBox_TimeStep->setValue(-1); + gridLayout1->addItem(spacerItem2, 4, 2, 1, 2); - gridLayout1->addWidget(SpinBox_TimeStep, 4, 1, 1, 1); + SpinBox_TimeStep = new QSpinBox(GBField); + SpinBox_TimeStep->setObjectName(QString::fromUtf8("SpinBox_TimeStep")); + SpinBox_TimeStep->setMaximum(100000); + SpinBox_TimeStep->setMinimum(-2); + SpinBox_TimeStep->setValue(-1); - TimeStep = new QLabel(GBField); - TimeStep->setObjectName(QString::fromUtf8("TimeStep")); + gridLayout1->addWidget(SpinBox_TimeStep, 4, 1, 1, 1); - gridLayout1->addWidget(TimeStep, 4, 0, 1, 1); + TimeStep = new QLabel(GBField); + TimeStep->setObjectName(QString::fromUtf8("TimeStep")); - spacerItem3 = new QSpacerItem(138, 28, QSizePolicy::Minimum, QSizePolicy::Expanding); + gridLayout1->addWidget(TimeStep, 4, 0, 1, 1); - gridLayout1->addItem(spacerItem3, 3, 0, 1, 4); + spacerItem3 = new QSpacerItem(138, 28, QSizePolicy::Minimum, QSizePolicy::Expanding); - RBLast = new QRadioButton(GBField); - RBLast->setObjectName(QString::fromUtf8("RBLast")); + gridLayout1->addItem(spacerItem3, 3, 0, 1, 4); - gridLayout1->addWidget(RBLast, 2, 3, 1, 3); + RBLast = new QRadioButton(GBField); + RBLast->setObjectName(QString::fromUtf8("RBLast")); - RBNo = new QRadioButton(GBField); - RBNo->setObjectName(QString::fromUtf8("RBNo")); - RBNo->setCheckable(true); - RBNo->setChecked(true); + gridLayout1->addWidget(RBLast, 2, 3, 1, 3); - gridLayout1->addWidget(RBNo, 2, 0, 1, 3); + RBNo = new QRadioButton(GBField); + RBNo->setObjectName(QString::fromUtf8("RBNo")); + RBNo->setCheckable(true); + RBNo->setChecked(true); - PushFieldFile = new QPushButton(GBField); - PushFieldFile->setObjectName(QString::fromUtf8("PushFieldFile")); + gridLayout1->addWidget(RBNo, 2, 0, 1, 3); - gridLayout1->addWidget(PushFieldFile, 0, 1, 1, 1); + PushFieldFile = new QPushButton(GBField); + PushFieldFile->setObjectName(QString::fromUtf8("PushFieldFile")); - FieldFile = new QLabel(GBField); - FieldFile->setObjectName(QString::fromUtf8("FieldFile")); + gridLayout1->addWidget(PushFieldFile, 0, 1, 1, 1); - gridLayout1->addWidget(FieldFile, 0, 0, 1, 1); + FieldFile = new QLabel(GBField); + FieldFile->setObjectName(QString::fromUtf8("FieldFile")); + gridLayout1->addWidget(FieldFile, 0, 0, 1, 1); - gridLayout->addWidget(GBField, 6, 0, 1, 4); - Iteration_Name = new QLabel(CreateIteration); - Iteration_Name->setObjectName(QString::fromUtf8("Iteration_Name")); + gridLayout->addWidget(GBField, 6, 0, 1, 4); - gridLayout->addWidget(Iteration_Name, 0, 0, 1, 2); + Iteration_Name = new QLabel(CreateIteration); + Iteration_Name->setObjectName(QString::fromUtf8("Iteration_Name")); - LEIterationName = new QLineEdit(CreateIteration); - LEIterationName->setObjectName(QString::fromUtf8("LEIterationName")); - LEIterationName->setMinimumSize(QSize(290, 21)); - LEIterationName->setMaxLength(200); + gridLayout->addWidget(Iteration_Name, 0, 0, 1, 2); - gridLayout->addWidget(LEIterationName, 0, 2, 1, 2); + LEIterationName = new QLineEdit(CreateIteration); + LEIterationName->setObjectName(QString::fromUtf8("LEIterationName")); + LEIterationName->setMinimumSize(QSize(290, 21)); + LEIterationName->setMaxLength(200); - Iter_Parent = new QLabel(CreateIteration); - Iter_Parent->setObjectName(QString::fromUtf8("Iter_Parent")); + gridLayout->addWidget(LEIterationName, 0, 2, 1, 2); - gridLayout->addWidget(Iter_Parent, 1, 0, 1, 1); + Iter_Parent = new QLabel(CreateIteration); + Iter_Parent->setObjectName(QString::fromUtf8("Iter_Parent")); - spacerItem4 = new QSpacerItem(20, 24, QSizePolicy::Minimum, QSizePolicy::Expanding); + gridLayout->addWidget(Iter_Parent, 1, 0, 1, 1); - gridLayout->addItem(spacerItem4, 1, 1, 1, 1); + spacerItem4 = new QSpacerItem(20, 24, QSizePolicy::Minimum, QSizePolicy::Expanding); - PBIterParent = new QPushButton(CreateIteration); - PBIterParent->setObjectName(QString::fromUtf8("PBIterParent")); - PBIterParent->setEnabled(true); - PBIterParent->setMaximumSize(QSize(50, 27)); + gridLayout->addItem(spacerItem4, 1, 1, 1, 1); - gridLayout->addWidget(PBIterParent, 1, 2, 1, 1); + PBIterParent = new QPushButton(CreateIteration); + PBIterParent->setObjectName(QString::fromUtf8("PBIterParent")); + PBIterParent->setEnabled(true); + PBIterParent->setMaximumSize(QSize(50, 27)); - LEIterationParentName = new QLineEdit(CreateIteration); - LEIterationParentName->setObjectName(QString::fromUtf8("LEIterationParentName")); - LEIterationParentName->setMinimumSize(QSize(0, 21)); - LEIterationParentName->setMaxLength(200); - LEIterationParentName->setReadOnly(true); + gridLayout->addWidget(PBIterParent, 1, 2, 1, 1); - gridLayout->addWidget(LEIterationParentName, 1, 3, 1, 1); + LEIterationParentName = new QLineEdit(CreateIteration); + LEIterationParentName->setObjectName(QString::fromUtf8("LEIterationParentName")); + LEIterationParentName->setMinimumSize(QSize(0, 21)); + LEIterationParentName->setMaxLength(200); + LEIterationParentName->setReadOnly(true); - Mesh_n = new QLabel(CreateIteration); - Mesh_n->setObjectName(QString::fromUtf8("Mesh_n")); + gridLayout->addWidget(LEIterationParentName, 1, 3, 1, 1); - gridLayout->addWidget(Mesh_n, 2, 0, 1, 1); + Mesh_n = new QLabel(CreateIteration); + Mesh_n->setObjectName(QString::fromUtf8("Mesh_n")); - spacerItem5 = new QSpacerItem(20, 21, QSizePolicy::Minimum, QSizePolicy::Expanding); + gridLayout->addWidget(Mesh_n, 2, 0, 1, 1); - gridLayout->addItem(spacerItem5, 2, 1, 1, 1); + spacerItem5 = new QSpacerItem(20, 21, QSizePolicy::Minimum, QSizePolicy::Expanding); - LEMeshName_n = new QLineEdit(CreateIteration); - LEMeshName_n->setObjectName(QString::fromUtf8("LEMeshName_n")); - LEMeshName_n->setMinimumSize(QSize(290, 21)); - LEMeshName_n->setMaxLength(32); - LEMeshName_n->setReadOnly(true); + gridLayout->addItem(spacerItem5, 2, 1, 1, 1); - gridLayout->addWidget(LEMeshName_n, 2, 2, 1, 2); + LEMeshName_n = new QLineEdit(CreateIteration); + LEMeshName_n->setObjectName(QString::fromUtf8("LEMeshName_n")); + LEMeshName_n->setMinimumSize(QSize(290, 21)); + LEMeshName_n->setMaxLength(32); + LEMeshName_n->setReadOnly(true); - spacerItem6 = new QSpacerItem(20, 22, QSizePolicy::Minimum, QSizePolicy::Expanding); + gridLayout->addWidget(LEMeshName_n, 2, 2, 1, 2); - gridLayout->addItem(spacerItem6, 3, 1, 1, 1); + spacerItem6 = new QSpacerItem(20, 22, QSizePolicy::Minimum, QSizePolicy::Expanding); - Mesh_np1 = new QLabel(CreateIteration); - Mesh_np1->setObjectName(QString::fromUtf8("Mesh_np1")); + gridLayout->addItem(spacerItem6, 3, 1, 1, 1); - gridLayout->addWidget(Mesh_np1, 4, 0, 1, 2); + Mesh_np1 = new QLabel(CreateIteration); + Mesh_np1->setObjectName(QString::fromUtf8("Mesh_np1")); - LEMeshName_np1 = new QLineEdit(CreateIteration); - LEMeshName_np1->setObjectName(QString::fromUtf8("LEMeshName_np1")); - LEMeshName_np1->setMinimumSize(QSize(290, 21)); - LEMeshName_np1->setMaxLength(32); + gridLayout->addWidget(Mesh_np1, 4, 0, 1, 2); - gridLayout->addWidget(LEMeshName_np1, 4, 2, 1, 2); + LEMeshName_np1 = new QLineEdit(CreateIteration); + LEMeshName_np1->setObjectName(QString::fromUtf8("LEMeshName_np1")); + LEMeshName_np1->setMinimumSize(QSize(290, 21)); + LEMeshName_np1->setMaxLength(32); - spacerItem7 = new QSpacerItem(20, 21, QSizePolicy::Minimum, QSizePolicy::Expanding); + gridLayout->addWidget(LEMeshName_np1, 4, 2, 1, 2); - gridLayout->addItem(spacerItem7, 5, 1, 1, 1); + spacerItem7 = new QSpacerItem(20, 21, QSizePolicy::Minimum, QSizePolicy::Expanding); - spacerItem8 = new QSpacerItem(20, 22, QSizePolicy::Minimum, QSizePolicy::Expanding); + gridLayout->addItem(spacerItem7, 5, 1, 1, 1); - gridLayout->addItem(spacerItem8, 7, 1, 1, 1); + spacerItem8 = new QSpacerItem(20, 22, QSizePolicy::Minimum, QSizePolicy::Expanding); - Hypothese = new QGroupBox(CreateIteration); - Hypothese->setObjectName(QString::fromUtf8("Hypothese")); - gridLayout2 = new QGridLayout(Hypothese); - gridLayout2->setSpacing(6); - gridLayout2->setMargin(9); - gridLayout2->setObjectName(QString::fromUtf8("gridLayout2")); - CBHypothese = new QComboBox(Hypothese); - CBHypothese->setObjectName(QString::fromUtf8("CBHypothese")); - CBHypothese->setSizeAdjustPolicy(QComboBox::AdjustToContents); + gridLayout->addItem(spacerItem8, 7, 1, 1, 1); - gridLayout2->addWidget(CBHypothese, 0, 0, 1, 1); + Hypothese = new QGroupBox(CreateIteration); + Hypothese->setObjectName(QString::fromUtf8("Hypothese")); + gridLayout2 = new QGridLayout(Hypothese); +#ifndef Q_OS_MAC + gridLayout2->setSpacing(6); +#endif +#ifndef Q_OS_MAC + gridLayout2->setContentsMargins(9, 9, 9, 9); +#endif + gridLayout2->setObjectName(QString::fromUtf8("gridLayout2")); + CBHypothese = new QComboBox(Hypothese); + CBHypothese->setObjectName(QString::fromUtf8("CBHypothese")); + CBHypothese->setSizeAdjustPolicy(QComboBox::AdjustToContents); - spacerItem9 = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum); + gridLayout2->addWidget(CBHypothese, 0, 0, 1, 1); - gridLayout2->addItem(spacerItem9, 0, 1, 1, 1); + spacerItem9 = new QSpacerItem(40, 13, QSizePolicy::Fixed, QSizePolicy::Minimum); - PBHypoEdit = new QPushButton(Hypothese); - PBHypoEdit->setObjectName(QString::fromUtf8("PBHypoEdit")); + gridLayout2->addItem(spacerItem9, 0, 1, 1, 1); - gridLayout2->addWidget(PBHypoEdit, 0, 2, 1, 1); + PBHypoEdit = new QPushButton(Hypothese); + PBHypoEdit->setObjectName(QString::fromUtf8("PBHypoEdit")); - PBHypoNew = new QPushButton(Hypothese); - PBHypoNew->setObjectName(QString::fromUtf8("PBHypoNew")); + gridLayout2->addWidget(PBHypoEdit, 0, 2, 1, 1); - gridLayout2->addWidget(PBHypoNew, 0, 3, 1, 1); + PBHypoNew = new QPushButton(Hypothese); + PBHypoNew->setObjectName(QString::fromUtf8("PBHypoNew")); + gridLayout2->addWidget(PBHypoNew, 0, 3, 1, 1); - gridLayout->addWidget(Hypothese, 8, 0, 1, 4); - spacerItem10 = new QSpacerItem(20, 21, QSizePolicy::Minimum, QSizePolicy::Expanding); + gridLayout->addWidget(Hypothese, 8, 0, 1, 4); - gridLayout->addItem(spacerItem10, 9, 0, 1, 1); + spacerItem10 = new QSpacerItem(20, 21, QSizePolicy::Minimum, QSizePolicy::Expanding); - GroupButtons = new QGroupBox(CreateIteration); - GroupButtons->setObjectName(QString::fromUtf8("GroupButtons")); - gridLayout3 = new QGridLayout(GroupButtons); - gridLayout3->setSpacing(6); - gridLayout3->setMargin(9); - gridLayout3->setObjectName(QString::fromUtf8("gridLayout3")); - buttonOk = new QPushButton(GroupButtons); - buttonOk->setObjectName(QString::fromUtf8("buttonOk")); - buttonOk->setAutoDefault(false); - buttonOk->setDefault(false); + gridLayout->addItem(spacerItem10, 9, 0, 1, 1); - gridLayout3->addWidget(buttonOk, 0, 0, 1, 1); + GroupButtons = new QGroupBox(CreateIteration); + GroupButtons->setObjectName(QString::fromUtf8("GroupButtons")); + gridLayout3 = new QGridLayout(GroupButtons); +#ifndef Q_OS_MAC + gridLayout3->setSpacing(6); +#endif +#ifndef Q_OS_MAC + gridLayout3->setContentsMargins(9, 9, 9, 9); +#endif + gridLayout3->setObjectName(QString::fromUtf8("gridLayout3")); + buttonOk = new QPushButton(GroupButtons); + buttonOk->setObjectName(QString::fromUtf8("buttonOk")); + buttonOk->setAutoDefault(false); + buttonOk->setDefault(false); - buttonApply = new QPushButton(GroupButtons); - buttonApply->setObjectName(QString::fromUtf8("buttonApply")); + gridLayout3->addWidget(buttonOk, 0, 0, 1, 1); - gridLayout3->addWidget(buttonApply, 0, 1, 1, 1); + buttonApply = new QPushButton(GroupButtons); + buttonApply->setObjectName(QString::fromUtf8("buttonApply")); - buttonCancel = new QPushButton(GroupButtons); - buttonCancel->setObjectName(QString::fromUtf8("buttonCancel")); + gridLayout3->addWidget(buttonApply, 0, 1, 1, 1); - gridLayout3->addWidget(buttonCancel, 0, 2, 1, 1); + buttonCancel = new QPushButton(GroupButtons); + buttonCancel->setObjectName(QString::fromUtf8("buttonCancel")); - buttonHelp = new QPushButton(GroupButtons); - buttonHelp->setObjectName(QString::fromUtf8("buttonHelp")); + gridLayout3->addWidget(buttonCancel, 0, 2, 1, 1); - gridLayout3->addWidget(buttonHelp, 0, 3, 1, 1); + buttonHelp = new QPushButton(GroupButtons); + buttonHelp->setObjectName(QString::fromUtf8("buttonHelp")); + gridLayout3->addWidget(buttonHelp, 0, 3, 1, 1); - gridLayout->addWidget(GroupButtons, 10, 0, 1, 4); + gridLayout->addWidget(GroupButtons, 10, 0, 1, 4); - retranslateUi(CreateIteration); - QSize size(610, 598); - size = size.expandedTo(CreateIteration->minimumSizeHint()); - CreateIteration->resize(size); + retranslateUi(CreateIteration); + CBHypothese->setCurrentIndex(-1); - CBHypothese->setCurrentIndex(-1); - - QMetaObject::connectSlotsByName(CreateIteration); + QMetaObject::connectSlotsByName(CreateIteration); } // setupUi void retranslateUi(QWidget *CreateIteration) { - CreateIteration->setWindowTitle(QApplication::translate("CreateIteration", "Create an iteration", 0, QApplication::UnicodeUTF8)); - GBField->setTitle(QApplication::translate("CreateIteration", "Field information", 0, QApplication::UnicodeUTF8)); - RBChosen->setText(QApplication::translate("CreateIteration", "Chosen time step", 0, QApplication::UnicodeUTF8)); - Rank->setText(QApplication::translate("CreateIteration", "Rank", 0, QApplication::UnicodeUTF8)); - TimeStep->setText(QApplication::translate("CreateIteration", "Time step", 0, QApplication::UnicodeUTF8)); - RBLast->setText(QApplication::translate("CreateIteration", "Last time step", 0, QApplication::UnicodeUTF8)); - RBNo->setText(QApplication::translate("CreateIteration", "No time step", 0, QApplication::UnicodeUTF8)); - PushFieldFile->setText(QString()); - FieldFile->setText(QApplication::translate("CreateIteration", "Field file", 0, QApplication::UnicodeUTF8)); - Iteration_Name->setText(QApplication::translate("CreateIteration", "Iteration Name", 0, QApplication::UnicodeUTF8)); - Iter_Parent->setText(QApplication::translate("CreateIteration", "Previous iteration", 0, QApplication::UnicodeUTF8)); - PBIterParent->setText(QString()); - Mesh_n->setText(QApplication::translate("CreateIteration", "Mesh n", 0, QApplication::UnicodeUTF8)); - Mesh_np1->setText(QApplication::translate("CreateIteration", "Mesh n+1", 0, QApplication::UnicodeUTF8)); - Hypothese->setTitle(QApplication::translate("CreateIteration", "Hypothesis", 0, QApplication::UnicodeUTF8)); - PBHypoEdit->setText(QApplication::translate("CreateIteration", "Edit", 0, QApplication::UnicodeUTF8)); - PBHypoNew->setText(QApplication::translate("CreateIteration", "New", 0, QApplication::UnicodeUTF8)); - GroupButtons->setTitle(QString()); - buttonOk->setText(QApplication::translate("CreateIteration", "OK", 0, QApplication::UnicodeUTF8)); - buttonApply->setText(QApplication::translate("CreateIteration", "Apply", 0, QApplication::UnicodeUTF8)); - buttonCancel->setText(QApplication::translate("CreateIteration", "Cancel", 0, QApplication::UnicodeUTF8)); - buttonHelp->setText(QApplication::translate("CreateIteration", "Help", 0, QApplication::UnicodeUTF8)); - Q_UNUSED(CreateIteration); + CreateIteration->setWindowTitle(QApplication::translate("CreateIteration", "Create an iteration", 0, QApplication::UnicodeUTF8)); + GBField->setTitle(QApplication::translate("CreateIteration", "Field information", 0, QApplication::UnicodeUTF8)); + RBChosen->setText(QApplication::translate("CreateIteration", "Chosen time step", 0, QApplication::UnicodeUTF8)); + Rank->setText(QApplication::translate("CreateIteration", "Rank", 0, QApplication::UnicodeUTF8)); + TimeStep->setText(QApplication::translate("CreateIteration", "Time step", 0, QApplication::UnicodeUTF8)); + RBLast->setText(QApplication::translate("CreateIteration", "Last time step", 0, QApplication::UnicodeUTF8)); + RBNo->setText(QApplication::translate("CreateIteration", "No time step", 0, QApplication::UnicodeUTF8)); + PushFieldFile->setText(QString()); + FieldFile->setText(QApplication::translate("CreateIteration", "Field file", 0, QApplication::UnicodeUTF8)); + Iteration_Name->setText(QApplication::translate("CreateIteration", "Iteration Name", 0, QApplication::UnicodeUTF8)); + Iter_Parent->setText(QApplication::translate("CreateIteration", "Previous iteration", 0, QApplication::UnicodeUTF8)); + PBIterParent->setText(QString()); + Mesh_n->setText(QApplication::translate("CreateIteration", "Mesh n", 0, QApplication::UnicodeUTF8)); + Mesh_np1->setText(QApplication::translate("CreateIteration", "Mesh n+1", 0, QApplication::UnicodeUTF8)); + Hypothese->setTitle(QApplication::translate("CreateIteration", "Hypothesis", 0, QApplication::UnicodeUTF8)); + PBHypoEdit->setText(QApplication::translate("CreateIteration", "Edit", 0, QApplication::UnicodeUTF8)); + PBHypoNew->setText(QApplication::translate("CreateIteration", "New", 0, QApplication::UnicodeUTF8)); + GroupButtons->setTitle(QString()); + buttonOk->setText(QApplication::translate("CreateIteration", "OK", 0, QApplication::UnicodeUTF8)); + buttonApply->setText(QApplication::translate("CreateIteration", "Apply", 0, QApplication::UnicodeUTF8)); + buttonCancel->setText(QApplication::translate("CreateIteration", "Cancel", 0, QApplication::UnicodeUTF8)); + buttonHelp->setText(QApplication::translate("CreateIteration", "Help", 0, QApplication::UnicodeUTF8)); } // retranslateUi }; @@ -352,4 +367,6 @@ namespace Ui { class CreateIteration: public Ui_CreateIteration {}; } // namespace Ui +QT_END_NAMESPACE + #endif // CREATEITERATION_H diff --git a/tests/test_1.py b/tests/test_1.py index d63713ce..a15865f3 100644 --- a/tests/test_1.py +++ b/tests/test_1.py @@ -22,7 +22,7 @@ Python script for HOMARD Copyright EDF-R&D 2010 Test test_1 """ -__revision__ = "V1.5" +__revision__ = "V1.6" ###################################################################################### Test_Name = "test_1" @@ -50,6 +50,10 @@ def homard_exec(theStudy): Python script for HOMARD Copyright EDF-R&D 2010 """ + error = 0 +# + while not error : +# homard.SetCurrentStudy(theStudy) # # Creation of the zones @@ -94,7 +98,10 @@ Copyright EDF-R&D 2010 I1.SetFieldFile(os.path.join(Rep_Test, Test_Name + '.00.med')) I1.SetTimeStepRank(1, 1) homard.AssociateIterHypo('I1', 'a10_1pc_de_mailles_a_raffiner_sur_ERRE_ELEM_SIGM') - result1 = I1.Compute(1) + error = I1.Compute(1) + if error : + error = 1 + break # Creation of the iteration I2 I2 = homard.CreateIteration('I2', 'I1') @@ -103,15 +110,24 @@ Copyright EDF-R&D 2010 I2.SetFieldFile(os.path.join(Rep_Test, Test_Name + '.01.med')) I2.SetTimeStepRank(1, 1) homard.AssociateIterHypo('I2', 'a10_1pc_de_mailles_a_raffiner_sur_ERRE_ELEM_SIGM') - result2 = I2.Compute(1) + error = I2.Compute(1) + if error : + error = 2 + break # Creation of the iteration I3 I3 = homard.CreateIteration('I3', 'I2') I3.SetMeshName('M3') I3.SetMeshFile(os.path.join(Rep_Test_Resu, 'maill.03.med')) homard.AssociateIterHypo('I3', 'Zones_1_et_2') - result3 = I3.Compute(1) - return result1*result2*result3 + error = I3.Compute(1) + if error : + error = 3 + break +# + break +# + return error ###################################################################################### @@ -120,11 +136,11 @@ homard = salome.lcc.FindOrLoadComponent('FactoryServer', 'HOMARD') # Exec of HOMARD-SALOME # try : - result=homard_exec(salome.myStudy) - if (result != True): - raise Exception('Pb in homard_exec') + error_main = homard_exec(salome.myStudy) + if error_main : + raise Exception('Pb in homard_exec at iteration %d' %error_main ) except : - raise Exception('Pb in homard_exec') + raise Exception('Pb in homard_exec at iteration %d' %error_main ) sys.exit(1) # # Test of the result diff --git a/tests/test_2.py b/tests/test_2.py index 8fb294be..770dd45d 100644 --- a/tests/test_2.py +++ b/tests/test_2.py @@ -22,7 +22,7 @@ Python script for HOMARD Copyright EDF-R&D 2010 Test test_2 """ -__revision__ = "V1.4" +__revision__ = "V1.5" ###################################################################################### Test_Name = "test_2" @@ -50,6 +50,10 @@ def homard_exec(theStudy): Python script for HOMARD Copyright EDF-R&D 2010 """ + error = 0 +# + while not error : +# homard.SetCurrentStudy(theStudy) # # Creation of the boundaries @@ -85,22 +89,34 @@ Copyright EDF-R&D 2010 Iter_1.SetMeshName('PLAQUE_1') Iter_1.SetMeshFile(os.path.join(Rep_Test_Resu, 'maill.01.med')) homard.AssociateIterHypo('Iter_1', 'Hypo_1') - result1 = Iter_1.Compute(1) + error = Iter_1.Compute(1) + if error : + error = 1 + break # Creation of the iteration Iter_2 Iter_2 = homard.CreateIteration('Iter_2', 'Iter_1') Iter_2.SetMeshName('PLAQUE_2') Iter_2.SetMeshFile(os.path.join(Rep_Test_Resu, 'maill.02.med')) homard.AssociateIterHypo('Iter_2', 'Hypo_1') - result2 = Iter_2.Compute(1) + error = Iter_2.Compute(1) + if error : + error = 2 + break # Creation of the iteration Iter_3 Iter_3 = homard.CreateIteration('Iter_3', 'Iter_2') Iter_3.SetMeshName('PLAQUE_3') Iter_3.SetMeshFile(os.path.join(Rep_Test_Resu, 'maill.03.med')) homard.AssociateIterHypo('Iter_3', 'Hypo_2') - result3 = Iter_3.Compute(1) - return result1*result2*result3 + error = Iter_3.Compute(1) + if error : + error = 3 + break +# + break +# + return error ###################################################################################### @@ -109,11 +125,11 @@ homard = salome.lcc.FindOrLoadComponent('FactoryServer', 'HOMARD') # Exec of HOMARD-SALOME # try : - result=homard_exec(salome.myStudy) - if (result != True): - raise Exception('Pb in homard_exec') + error_main = homard_exec(salome.myStudy) + if error_main : + raise Exception('Pb in homard_exec at iteration %d' %error_main ) except : - raise Exception('Pb in homard_exec') + raise Exception('Pb in homard_exec at iteration %d' %error_main ) sys.exit(1) # # Test of the result diff --git a/tests/test_3.py b/tests/test_3.py index fdcadafe..33840564 100644 --- a/tests/test_3.py +++ b/tests/test_3.py @@ -22,7 +22,7 @@ Python script for HOMARD Copyright EDF-R&D 2011 Test test_3 """ -__revision__ = "V1.2" +__revision__ = "V1.3" ###################################################################################### Test_Name = "test_3" @@ -50,6 +50,10 @@ def homard_exec(theStudy): Python script for HOMARD Copyright EDF-R&D 2010 """ + error = 0 +# + while not error : +# homard.SetCurrentStudy(theStudy) # # Creation of the boundaries @@ -94,16 +98,24 @@ Copyright EDF-R&D 2010 Iter_1.SetMeshName('MOYEU_1') Iter_1.SetMeshFile(os.path.join(Rep_Test_Resu, 'maill.01.med')) homard.AssociateIterHypo('Iter_1', 'Hypo') - result1 = Iter_1.Compute(1) + error = Iter_1.Compute(1) + if error : + error = 1 + break # Creation of the iteration Iter_2 Iter_2 = homard.CreateIteration('Iter_2', 'Iter_1') Iter_2.SetMeshName('MOYEU_2') Iter_2.SetMeshFile(os.path.join(Rep_Test_Resu, 'maill.02.med')) homard.AssociateIterHypo('Iter_2', 'Hypo') - result2 = Iter_2.Compute(1) - - return result1*result2 + error = Iter_2.Compute(1) + if error : + error = 2 + break +# + break +# + return error ###################################################################################### @@ -112,11 +124,11 @@ homard = salome.lcc.FindOrLoadComponent('FactoryServer', 'HOMARD') # Exec of HOMARD-SALOME # try : - result=homard_exec(salome.myStudy) - if (result != True): - raise Exception('Pb in homard_exec') + error_main = homard_exec(salome.myStudy) + if error_main : + raise Exception('Pb in homard_exec at iteration %d' %error_main ) except : - raise Exception('Pb in homard_exec') + raise Exception('Pb in homard_exec at iteration %d' %error_main ) sys.exit(1) # # Test of the result -- 2.39.2