Moka Ihm Qt
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
options-frame.qt.cc
Go to the documentation of this file.
1 /*
2  * Moka : Un modeleur de 3-G-cartes.
3  * Copyright (C) 2004, Moka Team, Université de Poitiers, Laboratoire SIC
4  * http://www.sic.sp2mi.univ-poitiers.fr/
5  * Copyright (C) 2009, Guillaume Damiand, CNRS, LIRIS,
6  * guillaume.damiand@liris.cnrs.fr, http://liris.cnrs.fr/
7  *
8  * This file is part of Moka
9  *
10  * This program is free software: you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation, either version 3 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program. If not, see <http://www.gnu.org/licenses/>.
22  */
23 
24 #include "options-frame.qt.hh"
25 #include "window.qt.hh"
26 #include "HtmlEntities.hh"
27 
28 #include <Qt3Support/Q3Accel>
29 #include <QtGui/QVBoxLayout>
30 
31 
32 // Constructeur
33 //-------------
35  : QDialog ( parent ) ,
36  FVisible ( false )
37 {
38  valid_btn = new QPushButton("OK");
39  valid_btn->setMaximumSize(75,50);
40  connect(valid_btn, SIGNAL(clicked()),
41  this, SLOT(callbackButtonOkPressed()));
42 
43  main_tab = new QTabWidget(this);
44 
45  FAffichage = new OptionsAffichage ( parent , main_tab ) ;
46  main_tab -> addTab ( FAffichage , "&Display") ;
47 
48  FVue = new OptionsVue ( parent , this ) ;
49  main_tab -> addTab ( FVue , "&Splitted View" ) ;
50 
51  FPonderation = new OptionsPonderation ( parent , main_tab) ;
52  main_tab -> addTab ( FPonderation , "Weights of &deformations") ;
53 
54  FExtrusion = new OptionsExtrusion ( parent , main_tab ) ;
55  main_tab -> addTab ( FExtrusion , "&Extrusions/thickening" ) ;
56 
57 #ifdef MODULE_MESH
58  FInterpolation = new OptionsInterpolation ( parent , main_tab ) ;
59  main_tab -> addTab ( FInterpolation , "&Interpolations/Smoothing" ) ;
60 #endif //MODULE_MESH
61 
62  FDivers = new OptionsDivers ( parent , main_tab ) ;
63  main_tab -> addTab ( FDivers , "&Misc" ) ;
64 
65  // Definition des raccourcis
66  Q3Accel * Raccourci = new Q3Accel ( this ) ;
67 
68  Raccourci -> insertItem ( QKeySequence ( Qt::Key_F2 ) , 2 ) ;
69  Raccourci -> connectItem ( 2 , this , SLOT ( callbackShowAffichage ( ) ) ) ;
70 
71  Raccourci -> insertItem ( QKeySequence ( Qt::Key_F3 ) , 3 ) ;
72  Raccourci -> connectItem ( 3 , this , SLOT ( callbackShowVue ( ) ) ) ;
73 
74  Raccourci -> insertItem ( QKeySequence ( Qt::Key_F4 ) , 4 ) ;
75  Raccourci -> connectItem ( 4 , this , SLOT ( callbackShowPonderation ( ) ) ) ;
76 
77  Raccourci -> insertItem ( QKeySequence ( Qt::Key_F5 ) , 5 ) ;
78  Raccourci -> connectItem ( 5 , this , SLOT ( callbackShowExtrusion ( ) ) ) ;
79 
80  Raccourci -> insertItem ( QKeySequence ( Qt::Key_F6 ) , 6 ) ;
81  Raccourci -> connectItem ( 6 , this , SLOT ( callbackShowInterpolation()));
82 
83  Raccourci -> insertItem ( QKeySequence ( Qt::Key_F7 ) , 7 ) ;
84  Raccourci->connectItem(7, this, SLOT(callbackShowDivers()));
85 
86 // Raccourci -> insertItem ( QKeySequence ( Qt::Key_F8 ) , 15 ) ;
87 // Raccourci -> connectItem ( 15 , this , SLOT ( callbackShowDivers ( ) ) ) ;
88 
89  Raccourci -> insertItem ( QKeySequence ( "Alt+F9" ) , 8 ) ;
90  Raccourci -> connectItem ( 8 , this , SLOT ( callbackToggleNormal ( ) ) ) ;
91 
92  Raccourci -> insertItem ( QKeySequence ( Qt::Key_F9 ) , 9 ) ;
93  Raccourci -> connectItem ( 9 , this , SLOT ( callbackToggleSews ( ) ) ) ;
94 
95  Raccourci -> insertItem ( QKeySequence ( Qt::Key_F10 ) , 10 ) ;
96  Raccourci -> connectItem ( 10 , this , SLOT ( callbackToggleVertices ( ) ) ) ;
97 
98  Raccourci -> insertItem ( QKeySequence ( Qt::Key_F11 ) , 11 ) ;
99  Raccourci -> connectItem ( 11 , this , SLOT ( callbackToggleFaces ( ) ) ) ;
100 
101  Raccourci -> insertItem ( QKeySequence ( Qt::Key_F12 ) , 12 ) ;
102  Raccourci -> connectItem ( 12 , this , SLOT ( callbackToggleGrille ( ) ) ) ;
103 
104  Raccourci->insertItem ( QKeySequence ( Qt :: Key_Space ) , 13 ) ;
105  Raccourci->connectItem(13, parent, SLOT (callbackHideAllWindow()));
106 
107  Raccourci -> insertItem ( QKeySequence ( "Alt+F11" ) , 14 ) ;
108  Raccourci -> connectItem ( 14 , this , SLOT (callbackTournerButton() )) ;
109 
110  connect(main_tab,SIGNAL(currentChanged(int)),this,SLOT(updateTab(int)));
111 
112  QVBoxLayout* layout = new QVBoxLayout();
113  layout->addWidget(main_tab);
114  layout->addWidget(valid_btn);
115  layout->setAlignment(valid_btn, Qt::AlignCenter);
116 
117  setLayout(layout);
118  setWindowTitle ( "Options" ) ;
119 }
120 
121 
122 // Destructeur
123 //------------
125 {
126 }
127 
129  FAffichage -> update ( ) ;
130 }
131 
132 void OptionsFrame :: setOption ( int indice )
133 {
134  switch (indice) {
135  case 2 : case 4 :
136  if ( FVisible && main_tab->currentWidget ( ) == FAffichage ) {
137  FVisible = false ;
138  close ( ) ;
139  break ;
140  }
141  FVisible = true ;
142  FAffichage -> update ( ) ;
143  main_tab->setCurrentWidget ( FAffichage ) ; break ;
144 
145  case 3 :
146  if ( FVisible && main_tab->currentWidget ( ) == FVue ) {
147  FVisible = false ;
148  close ( ) ;
149  break ;
150  }
151  FVisible = true ;
152  FVue -> update ( ) ;
153  main_tab->setCurrentWidget ( FVue ) ; break ;
154 
155  case 5 :
156  if ( FVisible && main_tab->currentWidget ( ) == FPonderation ){
157  FVisible = false ;
158  close ( ) ;
159  break ;
160  }
161  FPonderation -> update ( ) ;
162  FVisible = true ;
163  main_tab->setCurrentWidget ( FPonderation ) ; break ;
164 
165  case 6 :
166  if ( FVisible && main_tab->currentWidget ( ) == FExtrusion ) {
167  FVisible = false ;
168  close ( ) ;
169  break ;
170  }
171  FExtrusion -> update ( ) ;
172  FVisible = true ;
173  main_tab->setCurrentWidget ( FExtrusion ) ; break ;
174 
175  case 7 :
176  if ( FVisible && main_tab->currentWidget ( ) == FInterpolation ) {
177  FVisible = false ;
178  close ( ) ;
179  break ;
180  }
181  FInterpolation -> update ( ) ;
182  FVisible = true ;
183  main_tab->setCurrentWidget ( FInterpolation ) ; break ;
184 
185  case 8 :
186  if ( FVisible && main_tab->currentWidget ( ) == FDivers ) {
187  FVisible = false ;
188  close ( ) ;
189  break ;
190  }
191  FDivers -> update ( ) ;
192  FVisible = true ;
193  main_tab->setCurrentWidget ( FDivers ) ; break ;
194 
195  default : {}
196  }
197 }
198 
199 void OptionsFrame :: updateTab(int num_tab)
200 {
201  QWidget * current = main_tab->currentWidget();
202 
203  if (current == FAffichage) FAffichage -> update();
204  else if (current == FPonderation) FPonderation -> update();
205  else if (current == FInterpolation) FInterpolation -> update();
206  else if (current == FExtrusion) FExtrusion -> update();
207  else if (current == FVue) FVue -> update();
208  else if (current == FDivers) FDivers -> update();
209 }
210 
212 {
213  return FAffichage;
214 }
215 
217 {
218  return FVue;
219 }
220 
221 // SLOTS
222 //------
224 {
225  setOption ( 3 ) ;
226 }
227 
229 {
230  setOption ( 4 ) ;
231 }
232 
234 {
235  setOption ( 5 ) ;
236 }
237 
239 {
240  setOption ( 6 ) ;
241 }
242 
244 {
245 #ifdef MODULE_MESH
246  setOption ( 7 ) ;
247 #endif //MODULE_MESH
248 }
249 
251 {
252  setOption ( 2 ) ;
253 }
254 
256 {
257  setOption ( 8 ) ;
258 }
259 
261 {
262  FAffichage -> applyValues ( ) ;
263 }
264 
265 // Pour afficher les coutures
267 {
268  FAffichage -> setFMain ( ) ;
269  FAffichage -> callbackToggleSews ( ) ;
270 }
271 
272 // Pour afficher les normales
274 {
275  FAffichage -> setFMain ( ) ;
276  FAffichage -> callbackToggleNormal ( ) ;
277 }
278 
279 // Pour afficher les sommets
281 {
282  FAffichage -> setFMain ( ) ;
283  FAffichage -> callbackToggleVertices ( ) ;
284 }
285 
286 // Pour afficher les faces
288 {
289  FAffichage -> setFMain ( ) ;
290  FAffichage -> callbackToggleFaces ( ) ;
291 }
292 
294 {
295  if ( FAffichage ->getFacesDisplay ( ) )
296  {
297  if (FAffichage->getCoulFacesGlobale()) FAffichage->setFacesCoulAlea();
298  else if (FAffichage->getFacesCoulAlea())
299  FAffichage->setVolumesCoulAlea();
300  else if (FAffichage->getVolumesCoulAlea())
301  FAffichage->setCoulFacesGlobale();
302  else { assert(false); }
303  }
304 }
305 
307 {
308  FVisible = b ;
309 }
310 
312 {
313  FAffichage -> setFMain ( ) ;
314  FAffichage -> callbackToggleGrid ( ) ;
315  FAffichage -> setFMain ( ) ;
316  FAffichage -> callbackToggleAxis ( ) ;
317 }
318 
320 {
321  FVisible = false ;
322  done(QDialog::Accepted);
323 }