MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow),m_showChannels(false), m_showIntensity(false),m_inBatch(false),m_OutlineDoneInBatch(false), m_batchMakeSurfaceReady(false) { ui->setupUi(this); const QString toolButtonStyle("QToolButton {" "border-style: outset;" "border-width: 3px;" "border-radius:7px;" "border-color: darkgray;" "font: bold 12px;" "min-width: 10em;" "padding: 6px;}" "QToolButton:hover {background-color: lightblue;" " }"); QWidget *rw = ui->toolBar->widgetForAction(ui->actionRead_WaveFront); //igramArea = new IgramArea(ui->tabWidget->widget(0)); rw->setStyleSheet(toolButtonStyle); rw = ui->toolBar->widgetForAction(ui->actionSubtract_wave_front); rw->setStyleSheet(toolButtonStyle); ui->toolBar->setStyleSheet("QToolBar { spacing: 10px;}"); ui->toolBar->setStyleSheet("QToolButton {border-style: outset;border-width: 3px;" "border-color: darkgray;border-radius:10px;}" "QToolButton:hover {background-color: lightblue;}"); ui->SelectOutSideOutline->setChecked(true); setCentralWidget(ui->tabWidget); m_loaderThread = new QThread(); m_waveFrontLoader = new waveFrontLoader(); m_waveFrontLoader->moveToThread(m_loaderThread); m_colorChannels = new ColorChannelDisplay(); connect(this, SIGNAL(load(QStringList,SurfaceManager*)), m_waveFrontLoader, SLOT(loadx(QStringList,SurfaceManager*))); m_intensityPlot = new igramIntensity(0); m_loaderThread->start(); ui->tabWidget->removeTab(0); ui->tabWidget->removeTab(0); // setup igram window scrollArea = new QScrollArea; gscrollArea = scrollArea; m_igramArea = new IgramArea(scrollArea, this); connect(m_igramArea, SIGNAL(statusBarUpdate(QString)), statusBar(), SLOT(showMessage(QString))); connect(m_igramArea, SIGNAL(upateColorChannels(QImage)), this, SLOT(updateChannels(QImage))); connect(m_igramArea, SIGNAL(showTab(int)), ui->tabWidget, SLOT(setCurrentIndex(int))); connect(this, SIGNAL(gammaChanged(bool,double)), m_igramArea, SLOT(gammaChanged(bool, double))); m_igramArea->setBackgroundRole(QPalette::Base); installEventFilter(m_igramArea); //scrollArea->setBackgroundRole(QPalette::Dark); scrollArea->setWidget(m_igramArea); ui->tabWidget->addTab(scrollArea, "igram"); m_dftTools = new DFTTools(this); m_vortexDebugTool = new vortexDebug(this); // setup DFT window scrollAreaDft = new QScrollArea; scrollAreaDft->setBackgroundRole(QPalette::Base); m_dftArea = new DFTArea(scrollAreaDft, m_igramArea, m_dftTools, m_vortexDebugTool); scrollAreaDft->setWidget(m_dftArea); scrollAreaDft->resize(800,800); ui->tabWidget->addTab(scrollAreaDft, "Analyze"); m_contourTools = new ContourTools(this); m_outlineHelp = new outlineHelpDocWidget(this); m_surfTools = surfaceAnalysisTools::get_Instance(this); //DocWindows createDockWindows(); userMapDlg = new userColorMapDlg(); m_contourView = new contourView(this, m_contourTools); connect(m_contourView, SIGNAL(zoomMe(bool)),this, SLOT(zoomContour(bool))); m_ogl = new OGLView(0, m_contourTools, m_surfTools); connect(m_ogl,SIGNAL(zoomMe(bool)), this, SLOT(zoomOgl(bool))); connect(userMapDlg, SIGNAL(colorMapChanged(int)), m_contourView->getPlot(), SLOT(ContourMapColorChanged(int))); connect(userMapDlg, SIGNAL(colorMapChanged(int)),m_ogl->m_gl, SLOT(colorMapChanged(int))); review = new reviewWindow(this); review->s1->addWidget(m_ogl); m_profilePlot = new ProfilePlot(review->s2,m_contourTools); m_mirrorDlg = mirrorDlg::get_Instance(); review->s2->addWidget(m_profilePlot); review->s1->addWidget(m_contourView); //Surface Manager m_surfaceManager = SurfaceManager::get_instance(this,m_surfTools, m_profilePlot, m_contourView->getPlot(), m_ogl->m_gl, metrics); connect(m_surfaceManager, SIGNAL(load(QStringList,SurfaceManager*)), m_waveFrontLoader, SLOT(loadx(QStringList,SurfaceManager*))); connect(m_surfaceManager, SIGNAL(showMessage(QString)), this, SLOT(showMessage(QString))); connect(m_contourView, SIGNAL(showAllContours()), m_surfaceManager, SLOT(showAllContours())); connect(m_dftArea, SIGNAL(newWavefront(cv::Mat,CircleOutline,CircleOutline,QString)), m_surfaceManager, SLOT(createSurfaceFromPhaseMap(cv::Mat,CircleOutline,CircleOutline,QString))); connect(m_surfaceManager, SIGNAL(diameterChanged(double)),this,SLOT(diameterChanged(double))); connect(m_surfaceManager, SIGNAL(showTab(int)), ui->tabWidget, SLOT(setCurrentIndex(int))); connect(m_surfTools, SIGNAL(updateSelected()), m_surfaceManager, SLOT(backGroundUpdate())); connect(m_ogl, SIGNAL(showAll3d(GLWidget *)), m_surfaceManager, SLOT(showAll3D(GLWidget *))); ui->tabWidget->addTab(review, "Results"); ui->tabWidget->addTab(SimulationsView::getInstance(ui->tabWidget), "Star Test, PSF, MTF"); ui->tabWidget->addTab(foucaultView::get_Instance(m_surfaceManager), "Ronchi & Foucault"); scrollArea->setWidgetResizable(true); scrollAreaDft->setWidgetResizable(true); createActions(); //Recent Files list separatorAct = ui->menuFiles->addSeparator(); for (int i = 0; i < MaxRecentFiles; ++i) ui->menuFiles->addAction(recentFileActs[i]); updateRecentFileActions(); qRegisterMetaType<QVector<int> >(); connect( m_igramArea, SIGNAL(enableShiftButtons(bool)), this,SLOT(enableShiftButtons(bool))); connect(m_dftArea, SIGNAL(dftReady(QImage)), m_igramArea,SLOT(dftReady(QImage))); connect(m_igramArea, SIGNAL(dftCenterFilter(double)), m_dftArea, SLOT(dftCenterFilter(double))); connect(m_igramArea, SIGNAL(upateColorChannels(QImage)), m_dftArea, SLOT(newIgram(QImage))); enableShiftButtons(true); connect(m_dftTools,SIGNAL(doDFT()),m_dftArea,SLOT(doDFT())); settingsDlg = Settings2::getInstance(); connect(settingsDlg->m_igram,SIGNAL(igramLinesChanged(int,int,QColor,QColor,double,int, int)), m_igramArea,SLOT(igramOutlineParmsChanged(int, int, QColor, QColor, double, int, int))); QSettings settings; restoreState(settings.value("MainWindow/windowState").toByteArray()); restoreGeometry(settings.value("geometry").toByteArray()); connect(m_dftArea,SIGNAL(selectDFTTab()), this, SLOT(selectDftTab())); connect(ui->tabWidget,SIGNAL(currentChanged(int)),this, SLOT(mainTabChanged(int))); tabifyDockWidget(ui->outlineTools, m_dftTools); setTabPosition(Qt::RightDockWidgetArea, QTabWidget::West); setTabShape(QTabWidget::Triangular); ui->tabWidget->setTabShape(QTabWidget::Triangular); tabifyDockWidget(m_dftTools,m_contourTools); tabifyDockWidget(m_contourTools,m_surfTools); //tabifyDockWidget(m_contourTools,m_vortexTools); //tabifyDockWidget(m_vortexDebugTool,m_metrics); ui->outlineTools->show(); ui->outlineTools->raise(); zernEnables = std::vector<bool>(Z_TERMS, true); //disable first 8 enables except for astig // enable first 8 nulls except for astig for (int i = 0; i < 8; ++ i) { if (i == 4 || i == 5) continue; zernEnables[i] = false; } zernEnableUpdateTime = QDateTime::currentDateTime().toTime_t(); connect(m_surfaceManager, SIGNAL(rocChanged(double)),this, SLOT(rocChanged(double))); connect(m_mirrorDlg, SIGNAL(newPath(QString)),this, SLOT(newMirrorDlgPath(QString))); progBar = new QProgressBar(this); ui->statusBar->addPermanentWidget(progBar); }