00001 00003 00004 // / 00005 // Projet : Générateur de cylindres généralisés / 00006 // / 00007 // Nom du fichier : mainWindow.h / 00008 // / 00009 // Creation : 20/11/2005 / 00010 // / 00011 // Description : La classe MainWindow regroupe l'ensemble des / 00012 // fonctionnalités nécéssaires à la génération de cylindres généralisés. / 00013 // Il s'agit de la fenetre principale contenant 3 fenetres 2D / 00014 // (axe, profil et section) et d'une fenetre 3D où est générée le cylindre. / 00015 // / 00016 // / 00017 // / 00018 // Auteurs : - Guitteny Fabrice / 00019 // - Idiart Baptiste / 00020 // - Le Goff Erwan / 00021 // / 00023 00024 #ifndef MAIN_WINDOW_H 00025 #define MAIN_WINDOW_H 00026 00027 #include <qmessagebox.h> 00028 #include <qfiledialog.h> 00029 #include <qstatusbar.h> 00030 #include <qmenubar.h> 00031 #include <qlabel.h> 00032 #include <qpopupmenu.h> 00033 #include <qaction.h> 00034 #include <qworkspace.h> 00035 #include <qmainwindow.h> 00036 #include <qspinbox.h> 00037 #include <qcombobox.h> 00038 00039 #include "window2D.h" 00040 #include "../qgl/window3D.h" 00041 #include "../qgl/vrmlparser.h" 00042 #include "../qgl/pgnparser.h" 00043 #include "../cylinder/cylinder.h" 00044 00045 00057 00058 // Classe MainWindow // 00060 00061 class MainWindow : public QMainWindow 00062 { 00063 Q_OBJECT 00064 public : 00065 00066 MainWindow(QWidget *parent,const char *nom = 0); 00067 00068 // destructeur 00069 ~MainWindow(); 00070 00072 QWorkspace * getWorkspace() {return workspace;} 00073 00075 Window2D * getProfileWindow() {return profile;} 00076 00078 Window2D * getSectionWindown() {return section;} 00079 00081 Window2D * getAxisWindow() {return axis;} 00082 00084 Window3D * getOpenGLWondow() {return opengl;} 00085 00086 00087 private slots: 00088 00089 void slotAbout(); 00090 void slotHelp(); 00091 void slotNew(); 00092 void slotOpen(); 00093 void slotSave(); 00094 void slotSaveAs(); 00095 void slotDrawCircle(); 00096 void slotDrawSegment(); 00097 void slotDrawBezier(); 00098 void slotDrawBSpline(); 00099 void slotTile(); 00100 void slotCascade(); 00101 void slotImportVRML(); 00102 void slotExportVRML(); 00103 void slotImportPGN() ; 00104 void slotExportPGN(); 00105 void slotSimpleExtrusion(); 00106 void slotProfileExtrusion(); 00107 void slotRefreshSimpleExtrusion(); 00108 void slotRefreshProfileExtrusion(); 00109 void slotChangeSample(); 00110 00111 void updateStatusBar(); 00112 00113 void closeEvent( QCloseEvent *e ); 00114 void resizeEvent(QResizeEvent *); 00115 00116 void changeWindow(); 00117 void clearActiveWindow(); 00118 00119 00120 private: 00121 00122 void createActions(); 00123 void createMenus(); 00124 void createToolsBar(); 00125 void createStatusBar(); 00126 00127 QPopupMenu *menuFile; 00128 QAction *actionOpen; 00129 QAction *actionNew; 00130 QAction *actionSave; 00131 QAction *actionSaveAs; 00132 00133 QPopupMenu *subMenuImport; 00134 QAction *actionImportVRML; 00135 QAction *actionImportPGN; 00136 00137 QPopupMenu *subMenuExport; 00138 QAction *actionExportVRML; 00139 QAction *actionExportPGN; 00140 QAction *actionQuit; 00141 00142 QPopupMenu *menuPrimitives; 00143 QAction *actionSegment; 00144 QAction *actionCircle; 00145 QAction *actionBezier; 00146 QAction *actionBSpline; 00147 00148 QPopupMenu *menuExtrusion; 00149 QAction *actionSimpleExtrusion; 00150 QAction *actionProfileExtrusion; 00151 00152 QPopupMenu *menuDisplay; 00153 QAction *actionTile; 00154 QAction *actionCascade; 00155 00156 QPopupMenu *menuHelp; 00157 00158 QToolBar *barFile; 00159 QToolBar *barPrimitives; 00160 QToolBar *barDisplay; 00161 00162 QToolBar *barTwist; 00163 QSpinBox *spinboxTwist; 00164 00165 QToolBar *barSample; 00166 QComboBox *sampleComboBox; 00167 00168 QAction *actionChangeSample; 00169 00170 QWorkspace *workspace; 00171 00172 Window2D *profile; 00173 Window2D *section; 00174 Window2D *axis; 00175 Window3D *opengl; 00176 00177 QAction *changeWin; 00178 QAction *clearWindow; 00179 QLabel* infos; 00180 00182 QString filename; 00183 00187 QTimer * timerSimpleExtrusion; 00188 00190 QTimer * timerProfileExtrusion; 00191 00192 }; 00193 00194 #endif 00195