00001 #include <qapplication.h>
00002 #include <qvaluelist.h>
00003 #include <qmessagebox.h>
00004 #include <qiconset.h>
00005 #include <qpixmap.h>
00006 #include <qstatusbar.h>
00007 #include <qfontdialog.h>
00008
00009 #include "SIGEL_MasterGUI/SIG_MainWindow.h"
00010 #include "SIGEL_MasterGUI/SIG_InfoBox.h"
00011
00012 #include <cstdlib>
00013
00014 namespace SIGEL_MasterGUI
00015 {
00016
00017 SIG_MainWindow::SIG_MainWindow( QWidget * parent = 0, const char * name = 0, WFlags f = WType_TopLevel ) : QMainWindow( parent, name, f )
00018 {
00019 QString sigelRoot( std::getenv( "SIGEL_ROOT" ) );
00020
00021 resize( 940, 690 );
00022 setCaption( "Sigel" );
00023
00024 splitter = new QSplitter( this, "Splitter" );
00025 splitter->setFrameStyle( QFrame::Box | QFrame::Sunken );
00026
00027 setCentralWidget( splitter );
00028
00029 widgetStack = new QWidgetStack( splitter, "WidgetStack" );
00030 widgetStack->setMargin( 6 );
00031 widgetStack->setFrameStyle( QFrame::Box | QFrame::Sunken );
00032
00033 experimentListView = new SIGEL_MasterGUI::SIG_ExperimentListView( splitter, "ExperimentListView", widgetStack );
00034
00035 splitter->moveToFirst( experimentListView );
00036 splitter->setOpaqueResize();
00037
00038 QValueList<int> valList;
00039 valList += 4;
00040 valList += 7;
00041 splitter->setSizes( valList );
00042
00043 splitter->setMargin( 6 );
00044
00045
00046
00047
00048 fileMenu = new QPopupMenu(this);
00049 fileToolBar = new QToolBar( this, "fileToolbar" );
00050 fileToolBar->setLabel( "File" );
00051
00052 QToolBar *viewToolBar = new QToolBar( this, "viewToolBar" );
00053 viewToolBar->setLabel( "View" );
00054
00055 QToolBar *individualsToolBar = new QToolBar( this, "individualsToolBar" );
00056 individualsToolBar->setLabel( "Individuals" );
00057
00058
00059 QAction *newExperimentAction = new QAction( "New", QIconSet( QPixmap( sigelRoot + "/pixmaps/newExperimentSmall.xpm" ), QPixmap( sigelRoot + "/pixmaps/newExperimentLarge.xpm" ) ), "&New Experiment", CTRL+Key_N, this, "newExperimentAction" );
00060 newExperimentAction->addTo( fileMenu );
00061 newExperimentAction->addTo( fileToolBar );
00062 newExperimentAction->addTo( experimentListView->experimentListViewMenu );
00063 QObject::connect( newExperimentAction,
00064 SIGNAL( activated() ),
00065 experimentListView,
00066 SLOT( slotNewExperiment() ) );
00067 newExperimentAction->setStatusTip( "Create a new experiment..." );
00068
00069 QAction *renameExperimentAction = new QAction( "Rename", "&Rename Experiment", CTRL+Key_R, this, "renameExperimentAction" );
00070 renameExperimentAction->addTo( fileMenu );
00071 QObject::connect( renameExperimentAction,
00072 SIGNAL( activated() ),
00073 experimentListView,
00074 SLOT( slotRenameExperiment() ) );
00075 renameExperimentAction->setStatusTip( "Rename the currently selected experiment..." );
00076
00077 QAction *deleteExperimentAction = new QAction( "Delete", QIconSet( QPixmap( sigelRoot + "/pixmaps/deleteExperimentSmall.xpm" ), QPixmap( sigelRoot + "/pixmaps/deleteExperimentLarge.xpm" ) ), "&Delete Experiment", CTRL+Key_D, this, "deleteExperimentAction" );
00078 deleteExperimentAction->addTo( fileMenu );
00079 deleteExperimentAction->addTo( fileToolBar );
00080 deleteExperimentAction->addTo( experimentListView->experimentListViewMenu );
00081 QObject::connect( deleteExperimentAction,
00082 SIGNAL( activated() ),
00083 experimentListView,
00084 SLOT( slotDeleteExperiment() ) );
00085 deleteExperimentAction->setStatusTip( "Delete the selected experiment..." );
00086
00087 fileMenu->insertSeparator();
00088 fileToolBar->addSeparator();
00089 experimentListView->experimentListViewMenu->insertSeparator();
00090
00091 QAction *openExperimentAction = new QAction( "Open", QIconSet( QPixmap( sigelRoot + "/pixmaps/openExperimentSmall.xpm" ), QPixmap( sigelRoot + "/pixmaps/openExperimentLarge.xpm" ) ), "&Open Experiment", CTRL+Key_O, this, "openExperimentAction");
00092 openExperimentAction->addTo( fileMenu );
00093 openExperimentAction->addTo( fileToolBar );
00094 openExperimentAction->addTo( experimentListView->experimentListViewMenu );
00095 QObject::connect( openExperimentAction,
00096 SIGNAL( activated() ),
00097 experimentListView,
00098 SLOT( slotLoadExperiment() ) );
00099 openExperimentAction->setStatusTip( "Open an experiment..." );
00100
00101 QAction *saveExperimentAction = new QAction( "Save", QIconSet( QPixmap( sigelRoot + "/pixmaps/saveExperimentSmall.xpm" ), QPixmap( sigelRoot + "/pixmaps/saveExperimentLarge.xpm" ) ),"&Save Experiment", CTRL+Key_S, this, "saveExperimentAction");
00102 saveExperimentAction->addTo( fileMenu );
00103 saveExperimentAction->addTo( fileToolBar );
00104 saveExperimentAction->addTo( experimentListView->experimentListViewMenu );
00105 QObject::connect( saveExperimentAction,
00106 SIGNAL( activated() ),
00107 experimentListView,
00108 SLOT( slotSaveExperiment() ) );
00109 saveExperimentAction->setStatusTip( "Save the selected experiment..." );
00110
00111 fileMenu->insertSeparator();
00112
00113
00114 QPopupMenu *importMenu = new QPopupMenu( this, "importMenu" );
00115
00116
00117 QAction *importGPParametersAction = new QAction( "Import GP-Parameters", "GP-Parameters", CTRL+SHIFT+Key_G, this, "importGPParametersAction");
00118 importGPParametersAction->addTo( importMenu );
00119 QObject::connect( importGPParametersAction,
00120 SIGNAL( activated() ),
00121 experimentListView,
00122 SLOT( slotGPParametersImport() ) );
00123 QAction *importSimulationParametersAction = new QAction( "Import Simulation-Parameters", "Simulation-Parameters", CTRL+SHIFT+Key_S, this, "importSimulationParametersAction");
00124 importSimulationParametersAction->addTo( importMenu );
00125 QObject::connect( importSimulationParametersAction,
00126 SIGNAL( activated() ),
00127 experimentListView,
00128 SLOT( slotSimulationParametersImport() ) );
00129 QAction *importLanguageParametersAction = new QAction( "Import Language-Parameters", "Language-Parameters", CTRL+SHIFT+Key_L, this, "importLanguageParametersAction");
00130 importLanguageParametersAction->addTo( importMenu );
00131 QObject::connect( importLanguageParametersAction,
00132 SIGNAL( activated() ),
00133 experimentListView,
00134 SLOT( slotLanguageParametersImport() ) );
00135 QAction *importEnvironmentAction = new QAction( "Import Environment", "Environment", CTRL+SHIFT+Key_E, this, "importEnvironmentAction");
00136 importEnvironmentAction->addTo( importMenu );
00137 QObject::connect( importEnvironmentAction,
00138 SIGNAL( activated() ),
00139 experimentListView,
00140 SLOT( slotEnvironmentImport() ) );
00141 QAction *importPopulationAction = new QAction( "Import Population", "Population", CTRL+SHIFT+Key_P, this, "importPopulationAction");
00142 importPopulationAction->addTo( importMenu );
00143 QObject::connect( importPopulationAction,
00144 SIGNAL( activated() ),
00145 experimentListView,
00146 SLOT( slotPopulationImport() ) );
00147 QAction *importRobotAction = new QAction( "Import Robot", "Robot", CTRL+SHIFT+Key_R, this, "importRobotAction");
00148 importRobotAction->addTo( importMenu );
00149 QObject::connect( importRobotAction,
00150 SIGNAL( activated() ),
00151 experimentListView,
00152 SLOT( slotRobotImport() ) );
00153
00154 importMenu->insertSeparator();
00155
00156 QAction *importProgramAction = new QAction( "Import Program", "Program", CTRL+SHIFT+Key_K, this, "importProgramAction");
00157 importProgramAction->addTo( importMenu );
00158 QObject::connect( importProgramAction,
00159 SIGNAL( activated() ),
00160 experimentListView,
00161 SLOT( slotProgramImport() ) );
00162
00163 QAction *importIndividualAction = new QAction( "Import Individual", "Individual", CTRL+SHIFT+Key_L, this, "importIndividualAction");
00164 importIndividualAction->addTo( importMenu );
00165 QObject::connect( importIndividualAction,
00166 SIGNAL( activated() ),
00167 experimentListView,
00168 SLOT( slotIndividualImport() ) );
00169
00170 fileMenu->insertItem( "Import", importMenu );
00171
00172
00173 QPopupMenu *exportMenu = new QPopupMenu( this, "exportMenu" );
00174
00175 QAction *exportGPParametersAction = new QAction( "Export GP-Parameters", "GP-Parameters", CTRL+ALT+Key_G, this, "exportGPParametersAction");
00176 exportGPParametersAction->addTo( exportMenu );
00177 QObject::connect( exportGPParametersAction,
00178 SIGNAL( activated() ),
00179 experimentListView,
00180 SLOT( slotGPParametersExport() ) );
00181 QAction *exportSimulationParametersAction = new QAction( "Export Simulation-Parameters", "Simulation-Parameters", CTRL+ALT+Key_S, this, "exportSimulationParametersAction");
00182 exportSimulationParametersAction->addTo( exportMenu );
00183 QObject::connect( exportSimulationParametersAction,
00184 SIGNAL( activated() ),
00185 experimentListView,
00186 SLOT( slotSimulationParametersExport() ) );
00187 QAction *exportLanguageParametersAction = new QAction( "Export Language-Parameters", "Language-Parameters", CTRL+ALT+Key_L, this, "exportLanguageParametersAction");
00188 exportLanguageParametersAction->addTo( exportMenu );
00189 QObject::connect( exportLanguageParametersAction,
00190 SIGNAL( activated() ),
00191 experimentListView,
00192 SLOT( slotLanguageParametersExport() ) );
00193 QAction *exportEnvironmentAction = new QAction( "Export Environment", "Environment", CTRL+ALT+Key_E, this, "exportEnvironmentAction");
00194 exportEnvironmentAction->addTo( exportMenu );
00195 QObject::connect( exportEnvironmentAction,
00196 SIGNAL( activated() ),
00197 experimentListView,
00198 SLOT( slotEnvironmentExport() ) );
00199 QAction *exportPopulationAction = new QAction( "Export Population", "Population", CTRL+ALT+Key_P, this, "exportPopulationAction");
00200 exportPopulationAction->addTo( exportMenu );
00201 QObject::connect( exportPopulationAction,
00202 SIGNAL( activated() ),
00203 experimentListView,
00204 SLOT( slotPopulationExport() ) );
00205
00206 exportMenu->insertSeparator();
00207
00208 QAction *exportProgramAction = new QAction( "Export Program", "Program", CTRL+ALT+Key_K, this, "exportProgramAction");
00209 exportProgramAction->addTo( exportMenu );
00210 QObject::connect( exportProgramAction,
00211 SIGNAL( activated() ),
00212 experimentListView,
00213 SLOT( slotProgramExport() ) );
00214
00215 QAction *exportIndividualAction = new QAction( "Export Individual", "Individual", CTRL+ALT+Key_L, this, "exportIndividualAction");
00216 exportIndividualAction->addTo( exportMenu );
00217 QObject::connect( exportIndividualAction,
00218 SIGNAL( activated() ),
00219 experimentListView,
00220 SLOT( slotIndividualExport() ) );
00221
00222 exportMenu->insertSeparator();
00223
00224 QAction *exportToGNUPlotAction = new QAction( "Export to GNU plot", "...to GNU plot", ALT+Key_6, this, "exportToGNUPlot");
00225 exportToGNUPlotAction->addTo( exportMenu );
00226 QObject::connect( exportToGNUPlotAction,
00227 SIGNAL( activated() ),
00228 experimentListView,
00229 SLOT( slotGNUPlotExport() ) );
00230
00231 fileMenu->insertItem( "Export", exportMenu );
00232
00233 fileMenu->insertSeparator();
00234
00235 fileToolBar->addSeparator();
00236
00237 QAction *quitProgramAction = new QAction( "Quit", QIconSet( QPixmap( sigelRoot + "/pixmaps/quitApplicationSmall.xpm" ), QPixmap( sigelRoot + "/pixmaps/quitApplicationLarge.xpm" ) ), "&Quit", CTRL+Key_Q, this, "quitProgramAction" );
00238 quitProgramAction->addTo( fileMenu );
00239 quitProgramAction->addTo( fileToolBar );
00240 QObject::connect( quitProgramAction,
00241 SIGNAL( activated() ),
00242 this,
00243 SLOT( slotAboutToQuit() ) );
00244 quitProgramAction->setStatusTip( "Quit application..." );
00245
00246
00247 viewMenu = new QPopupMenu( this, "viewMenu" );
00248
00249
00250
00251 QAction *viewPopulationAction = new QAction( "Population", QIconSet( QPixmap( sigelRoot + "/pixmaps/individualSmall.xpm" ), QPixmap( sigelRoot + "/pixmaps/individualLarge.xpm" ) ), "&Population", ALT+Key_P, this, "viewPopulationAction" );
00252 viewPopulationAction->addTo( viewMenu );
00253 viewPopulationAction->addTo( viewToolBar );
00254 QObject::connect( viewPopulationAction,
00255 SIGNAL( activated() ),
00256 experimentListView,
00257 SLOT( slotShowIndividuals() ) );
00258 viewPopulationAction->setStatusTip( "View population." );
00259
00260 QAction *viewRobotAction = new QAction( "Robot", QIconSet( QPixmap( sigelRoot + "/pixmaps/robotSmall.xpm" ), QPixmap( sigelRoot + "/pixmaps/robotLarge.xpm" ) ), "&Robot", ALT+Key_R, this, "viewRobotAction" );
00261 viewRobotAction->addTo( viewMenu );
00262 viewRobotAction->addTo( viewToolBar );
00263 QObject::connect( viewRobotAction,
00264 SIGNAL( activated() ),
00265 experimentListView,
00266 SLOT( slotShowRobot() ) );
00267 viewRobotAction->setStatusTip( "View robot." );
00268
00269 QAction *viewLanguageParametersAction = new QAction( "Language", QIconSet( QPixmap( sigelRoot + "/pixmaps/balloonSmall.xpm" ), QPixmap( sigelRoot + "/pixmaps/balloonLarge.xpm" ) ), "&Language Parameters", ALT+Key_L, this, "viewLanguageParametersAction" );
00270 viewLanguageParametersAction->addTo( viewMenu );
00271 viewLanguageParametersAction->addTo( viewToolBar );
00272 QObject::connect( viewLanguageParametersAction,
00273 SIGNAL( activated() ),
00274 experimentListView,
00275 SLOT( slotShowLanguageParameters() ) );
00276 viewLanguageParametersAction->setStatusTip( "View language parameters." );
00277
00278 QAction *viewGPParametersAction = new QAction( "Genetic", QIconSet( QPixmap( sigelRoot + "/pixmaps/dnaSmall.xpm" ), QPixmap( sigelRoot + "/pixmaps/dnaLarge.xpm" ) ), "&GP Parameters", ALT+Key_G, this, "viewGPParametersAction" );
00279 viewGPParametersAction->addTo( viewMenu );
00280 viewGPParametersAction->addTo( viewToolBar );
00281 QObject::connect( viewGPParametersAction,
00282 SIGNAL( activated() ),
00283 experimentListView,
00284 SLOT( slotShowGPParameters() ) );
00285 viewGPParametersAction->setStatusTip( "View genetic programming parameters." );
00286
00287 QAction *viewSimulationParametersAction = new QAction( "Simulation", QIconSet( QPixmap( sigelRoot + "/pixmaps/simulationParameterSmall.xpm" ), QPixmap( sigelRoot + "/pixmaps/simulationParameterLarge.xpm" ) ), "&Simulation Parameters", ALT+Key_S, this, "viewSimulaitonParametersAction" );
00288 viewSimulationParametersAction->addTo( viewMenu );
00289 viewSimulationParametersAction->addTo( viewToolBar );
00290 QObject::connect( viewSimulationParametersAction,
00291 SIGNAL( activated() ),
00292 experimentListView,
00293 SLOT( slotShowSimulationParameters() ) );
00294 viewSimulationParametersAction->setStatusTip( "View simulation parameters." );
00295
00296 QAction *viewEnvironmentAction = new QAction( "Environment", QIconSet( QPixmap( sigelRoot + "/pixmaps/environSmall.xpm" ), QPixmap( sigelRoot + "/pixmaps/environLarge.xpm" ) ),"&Environment", ALT+Key_E, this, "viewEnvironmentAction" );
00297 viewEnvironmentAction->addTo( viewMenu );
00298 viewEnvironmentAction->addTo( viewToolBar );
00299 QObject::connect( viewEnvironmentAction,
00300 SIGNAL( activated() ),
00301 experimentListView,
00302 SLOT( slotShowEnvironment() ) );
00303 viewEnvironmentAction->setStatusTip( "View environment." );
00304
00305
00306 optionsMenu = new QPopupMenu( this, "optionsMenu" );
00307 optionsMenu->setCheckable( true );
00308 bigPixmapID = optionsMenu->insertItem( "Use big pixmaps", this, SLOT( slotUseBigPixmaps() ) );
00309 textLabelsID = optionsMenu->insertItem( "Use textlabels", this, SLOT( slotUseTextLabels() ) );
00310 optionsMenu->insertSeparator();
00311 optionsMenu->insertItem( "Change font", this, SLOT( slotChangeFont() ) );
00312
00313 noExperimentActionGroup = new QActionGroup( this, "noExperimentActionGroup", false );
00314 noExperimentActionGroup->insert( renameExperimentAction );
00315 noExperimentActionGroup->insert( deleteExperimentAction );
00316 noExperimentActionGroup->insert( saveExperimentAction );
00317 noExperimentActionGroup->insert( viewGPParametersAction );
00318 noExperimentActionGroup->insert( viewSimulationParametersAction );
00319 noExperimentActionGroup->insert( viewLanguageParametersAction );
00320 noExperimentActionGroup->insert( viewRobotAction );
00321 noExperimentActionGroup->insert( viewEnvironmentAction );
00322 noExperimentActionGroup->insert( viewPopulationAction );
00323
00324 noExperimentActionGroup->insert( importGPParametersAction );
00325 noExperimentActionGroup->insert( importSimulationParametersAction );
00326 noExperimentActionGroup->insert( importRobotAction );
00327 noExperimentActionGroup->insert( importLanguageParametersAction );
00328 noExperimentActionGroup->insert( importPopulationAction );
00329 noExperimentActionGroup->insert( importEnvironmentAction );
00330 noExperimentActionGroup->insert( importProgramAction );
00331 noExperimentActionGroup->insert( importIndividualAction );
00332 noExperimentActionGroup->insert( exportGPParametersAction );
00333 noExperimentActionGroup->insert( exportSimulationParametersAction );
00334 noExperimentActionGroup->insert( exportLanguageParametersAction );
00335 noExperimentActionGroup->insert( exportEnvironmentAction );
00336 noExperimentActionGroup->insert( exportPopulationAction );
00337 noExperimentActionGroup->insert( exportToGNUPlotAction );
00338 noExperimentActionGroup->insert( exportProgramAction );
00339 noExperimentActionGroup->insert( exportIndividualAction );
00340
00341
00342 helpMenu = new QPopupMenu( this, "helpMenu" );
00343 helpMenu->insertItem( "About", this, SLOT( slotAbout() ) );
00344
00345
00346 individualsMenu = new QPopupMenu( this, "actionsMenu" );
00347
00348 QAction *addIndividualsAction = new QAction( "Add", QIconSet( QPixmap( sigelRoot + "/pixmaps/addIndividualsSmall.xpm" ), QPixmap( sigelRoot + "/pixmaps/addIndividualsLarge.xpm" ) ), "&Add", ALT+Key_A, this, "addIndividualsAction" );
00349 addIndividualsAction->addTo( individualsMenu );
00350 addIndividualsAction->addTo( individualsToolBar );
00351 QObject::connect( addIndividualsAction,
00352 SIGNAL( activated() ),
00353 experimentListView,
00354 SLOT( slotAddIndividuals() ) );
00355 addIndividualsAction->setStatusTip( "Add individuals to the current experiment." );
00356
00357 QAction *deleteIndividualsAction = new QAction( "Delete", QIconSet( QPixmap( sigelRoot + "/pixmaps/deleteIndividualsSmall.xpm" ), QPixmap( sigelRoot + "/pixmaps/deleteIndividualsLarge.xpm" ) ), "&Delete", ALT+Key_D, this, "deleteIndividualsAction" );
00358 deleteIndividualsAction->addTo( individualsMenu );
00359 deleteIndividualsAction->addTo( individualsToolBar );
00360 QObject::connect( deleteIndividualsAction,
00361 SIGNAL( activated() ),
00362 experimentListView,
00363 SLOT( slotDeleteIndividuals() ) );
00364 deleteIndividualsAction->setStatusTip( "Delete the selected individuals from the currently selected experiment." );
00365
00366 QAction *resetIndividualsAction = new QAction( "Reset", "Reset", ALT+Key_O, this, "resetIndividualsAction" );
00367 resetIndividualsAction->addTo( individualsMenu );
00368 QObject::connect( resetIndividualsAction,
00369 SIGNAL( activated() ),
00370 experimentListView,
00371 SLOT( slotResetIndividuals() ) );
00372 resetIndividualsAction->setStatusTip( "Reset the selected individuals." );
00373
00374 individualsMenu->insertSeparator();
00375 individualsToolBar->addSeparator();
00376
00377 QAction *visualizeIndividualsAction = new QAction( "Visualize", QIconSet( QPixmap( sigelRoot + "/pixmaps/visualizeSmall.xpm" ), QPixmap( sigelRoot + "/pixmaps/visualizeLarge.xpm" ) ), "&Visualize", ALT+Key_V, this, "visualizeIndividualsAction" );
00378 visualizeIndividualsAction->addTo( individualsMenu );
00379 visualizeIndividualsAction->addTo( individualsToolBar );
00380 QObject::connect( visualizeIndividualsAction,
00381 SIGNAL( activated() ),
00382 experimentListView,
00383 SLOT( slotVisualizeIndividuals() ) );
00384 visualizeIndividualsAction->setStatusTip( "Visualize the selected individuals." );
00385
00386 noExperimentActionGroup->insert( addIndividualsAction );
00387 noExperimentActionGroup->insert( deleteIndividualsAction );
00388 noExperimentActionGroup->insert( resetIndividualsAction );
00389 noExperimentActionGroup->insert( visualizeIndividualsAction );
00390
00391 noExperimentActionGroup->setEnabled( false );
00392
00393 evolutionRunningActionGroup = new QActionGroup( this, "evolutionRunningActionGroup", false);
00394 evolutionRunningActionGroup->insert( renameExperimentAction );
00395 evolutionRunningActionGroup->insert( deleteExperimentAction );
00396 evolutionRunningActionGroup->insert( saveExperimentAction );
00397 evolutionRunningActionGroup->insert( importGPParametersAction );
00398 evolutionRunningActionGroup->insert( importSimulationParametersAction );
00399 evolutionRunningActionGroup->insert( importRobotAction );
00400 evolutionRunningActionGroup->insert( importLanguageParametersAction );
00401 evolutionRunningActionGroup->insert( importPopulationAction );
00402 evolutionRunningActionGroup->insert( importEnvironmentAction );
00403 evolutionRunningActionGroup->insert( importProgramAction );
00404 evolutionRunningActionGroup->insert( importIndividualAction );
00405 evolutionRunningActionGroup->insert( exportGPParametersAction );
00406 evolutionRunningActionGroup->insert( exportSimulationParametersAction );
00407 evolutionRunningActionGroup->insert( exportLanguageParametersAction );
00408 evolutionRunningActionGroup->insert( exportEnvironmentAction );
00409 evolutionRunningActionGroup->insert( exportPopulationAction );
00410 evolutionRunningActionGroup->insert( exportToGNUPlotAction );
00411 evolutionRunningActionGroup->insert( exportProgramAction );
00412 evolutionRunningActionGroup->insert( exportIndividualAction );
00413 evolutionRunningActionGroup->insert( addIndividualsAction );
00414 evolutionRunningActionGroup->insert( deleteIndividualsAction );
00415 evolutionRunningActionGroup->insert( resetIndividualsAction );
00416 evolutionRunningActionGroup->insert( visualizeIndividualsAction );
00417
00418 menuBar()->insertItem( "&File", fileMenu );
00419 menuBar()->insertItem( "&View", viewMenu );
00420 menuBar()->insertItem( "&Individuals", individualsMenu );
00421 menuBar()->insertItem( "&Options", optionsMenu );
00422 menuBar()->insertItem( "&Help", helpMenu );
00423
00424 QObject::connect( experimentListView,
00425 SIGNAL( isNotEmpty( bool ) ),
00426 noExperimentActionGroup,
00427 SLOT( setEnabled( bool ) ) );
00428
00429 widgetBase = new QLabel( this, "baseWidget" );
00430 widgetBase->setPixmap( QPixmap( sigelRoot + "/pixmaps/noExperiment.png" ) );
00431 widgetBase->setScaledContents( true );
00432 widgetStack->addWidget( widgetBase, 0 );
00433 widgetStack->raiseWidget( widgetBase );
00434
00435 QObject::connect( experimentListView,
00436 SIGNAL( isNotEmpty( bool ) ),
00437 this,
00438 SLOT(slotShowEmpty( bool ) ) );
00439
00440 QObject::connect( experimentListView,
00441 SIGNAL( evolutionNotRunning( bool ) ),
00442 evolutionRunningActionGroup,
00443 SLOT( setEnabled( bool ) ) );
00444 statusBar()->message( "Ready.", 5000 );
00445 };
00446
00447 SIG_MainWindow::~SIG_MainWindow(){};
00448
00449 void SIG_MainWindow::slotAbout()
00450 {
00451
00452
00453 SIG_InfoBox theInfoBox( 0, "InfoBox", true );
00454 theInfoBox.resize( 600, -1 );
00455 theInfoBox.exec();
00456 };
00457
00458 void SIG_MainWindow::slotShowEmpty( bool isNotEmpty )
00459 {
00460 if( !isNotEmpty )
00461 {
00462 widgetStack->raiseWidget( widgetBase );
00463 }
00464 };
00465
00466 void SIG_MainWindow::slotAboutToQuit()
00467 {
00468 switch( QMessageBox::warning( this, "Do you really...", "Do you really want to quit?\n"
00469 "There may be unsaved experiments!", QMessageBox::Yes | QMessageBox::Default, QMessageBox::No | QMessageBox::Escape ) )
00470 {
00471 case QMessageBox::Yes:
00472 qApp->quit();
00473 break;
00474 }
00475 };
00476
00477 void SIG_MainWindow::slotUseBigPixmaps()
00478 {
00479 bool usesBigPixmaps = !this->usesBigPixmaps();
00480 optionsMenu->setItemChecked( bigPixmapID, usesBigPixmaps );
00481 this->setUsesBigPixmaps( usesBigPixmaps );
00482 };
00483
00484 void SIG_MainWindow::slotUseTextLabels()
00485 {
00486 bool usesTextLabels = !this->usesTextLabel();
00487 optionsMenu->setItemChecked( textLabelsID, usesTextLabels);
00488 this->setUsesTextLabel( usesTextLabels );
00489 };
00490
00491 void SIG_MainWindow::slotChangeFont()
00492 {
00493 bool ok;
00494 QFont newFont = QFontDialog::getFont( &ok, QApplication::font() );
00495 if( ok )
00496 qApp->setFont( newFont, true );
00497 };
00498
00499 }