ccViewer::ccViewer(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags) , m_glWindow(0) , m_selectedObject(0) , m_3dMouseInput(0) { ui.setupUi(this); //insert GL window in a vertical layout QVBoxLayout* verticalLayout_2 = new QVBoxLayout(ui.GLframe); verticalLayout_2->setSpacing(0); const int margin = 10; verticalLayout_2->setContentsMargins(margin,margin,margin,margin); QGLFormat format; format.setSwapInterval(0); m_glWindow = new ccGLWindow(ui.GLframe,format); verticalLayout_2->addWidget(m_glWindow); updateGLFrameGradient(); m_glWindow->setRectangularPickingAllowed(false); //multiple entities picking not supported //UI/display synchronization ui.actionFullScreen->setChecked(false); ui.menuSelected->setEnabled(false); reflectLightsState(); reflectPerspectiveState(); reflectPivotVisibilityState(); #ifdef CC_3DXWARE_SUPPORT enable3DMouse(true,true); #else ui.actionEnable3DMouse->setEnabled(false); #endif //Signals & slots connection connect(m_glWindow, SIGNAL(filesDropped(const QStringList&)), this, SLOT(addToDB(const QStringList&))); connect(m_glWindow, SIGNAL(entitySelectionChanged(int)), this, SLOT(selectEntity(int))); //connect(m_glWindow, SIGNAL(entitiesSelectionChanged(std::set<int>)), this, SLOT(selectEntities(std::set<int>))); //not supported! //connect(m_glWindow, SIGNAL(newLabel(ccHObject*), this, SLOT(handleNewEntity(ccHObject*))); //nothing to do in ccViewer! //"Options" menu connect(ui.actionDisplayParameters, SIGNAL(triggered()), this, SLOT(showDisplayParameters())); connect(ui.actionEditCamera, SIGNAL(triggered()), this, SLOT(doActionEditCamera())); //"Display > Standard views" menu connect(ui.actionSetViewTop, SIGNAL(triggered()), this, SLOT(setTopView())); connect(ui.actionSetViewBottom, SIGNAL(triggered()), this, SLOT(setBottomView())); connect(ui.actionSetViewFront, SIGNAL(triggered()), this, SLOT(setFrontView())); connect(ui.actionSetViewBack, SIGNAL(triggered()), this, SLOT(setBackView())); connect(ui.actionSetViewLeft, SIGNAL(triggered()), this, SLOT(setLeftView())); connect(ui.actionSetViewRight, SIGNAL(triggered()), this, SLOT(setRightView())); connect(ui.actionSetViewIso1, SIGNAL(triggered()), this, SLOT(setIsoView1())); connect(ui.actionSetViewIso2, SIGNAL(triggered()), this, SLOT(setIsoView2())); //"Options > Perspective" menu connect(ui.actionSetOrthoView, SIGNAL(triggered()), this, SLOT(setOrthoView())); connect(ui.actionSetCenteredPerspectiveView, SIGNAL(triggered()), this, SLOT(setCenteredPerspectiveView())); connect(ui.actionSetViewerPerspectiveView, SIGNAL(triggered()), this, SLOT(setViewerPerspectiveView())); //"Options > Rotation symbol" menu connect(ui.actionSetPivotAlwaysOn, SIGNAL(triggered()), this, SLOT(setPivotAlwaysOn())); connect(ui.actionSetPivotRotationOnly, SIGNAL(triggered()), this, SLOT(setPivotRotationOnly())); connect(ui.actionSetPivotOff, SIGNAL(triggered()), this, SLOT(setPivotOff())); //"Options > 3D mouse" menu connect(ui.actionEnable3DMouse, SIGNAL(toggled(bool)), this, SLOT(setup3DMouse(bool))); //"Display > Lights & Materials" menu connect(ui.actionToggleSunLight, SIGNAL(toggled(bool)), this, SLOT(toggleSunLight(bool))); connect(ui.actionToggleCustomLight, SIGNAL(toggled(bool)), this, SLOT(toggleCustomLight(bool))); //"Options" menu connect(ui.actionGlobalZoom, SIGNAL(triggered()), this, SLOT(setGlobalZoom())); connect(ui.actionFullScreen, SIGNAL(toggled(bool)), this, SLOT(toggleFullScreen(bool))); //"Options > Selected" menu connect(ui.actionShowColors, SIGNAL(toggled(bool)), this, SLOT(toggleColorsShown(bool))); connect(ui.actionShowNormals, SIGNAL(toggled(bool)), this, SLOT(toggleNormalsShown(bool))); connect(ui.actionShowScalarField, SIGNAL(toggled(bool)), this, SLOT(toggleScalarShown(bool))); connect(ui.actionShowColorRamp, SIGNAL(toggled(bool)), this, SLOT(toggleColorbarShown(bool))); connect(ui.actionZoomOnSelectedEntity, SIGNAL(triggered()), this, SLOT(zoomOnSelectedEntity())); connect(ui.actionDelete, SIGNAL(triggered()), this, SLOT(doActionDeleteSelectedEntity())); //"Help" menu connect(ui.actionAbout, SIGNAL(triggered()), this, SLOT(doActionAbout())); connect(ui.actionHelpShortctus, SIGNAL(triggered()), this, SLOT(doActionDisplayShortcuts())); }
ccViewer::ccViewer(QWidget *parent, Qt::WindowFlags flags) : QMainWindow(parent, flags) , m_glWindow(0) , m_selectedObject(0) , m_3dMouseInput(0) { ui.setupUi(this); #ifdef Q_OS_LINUX //we reset the whole stylesheet but we keep the StatusBar style setStyleSheet(""); setStyleSheet("QStatusBar{background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1,stop:0 rgb(200,200,200), stop:1 rgb(255,255,255));}"); #endif setWindowTitle(QString("ccViewer V%1").arg(CC_VIEWER_VERSION.title)); //insert GL window in a vertical layout { QVBoxLayout* verticalLayout = new QVBoxLayout(ui.GLframe); verticalLayout->setSpacing(0); const int margin = 10; verticalLayout->setContentsMargins(margin, margin, margin, margin); bool stereoMode = QSurfaceFormat::defaultFormat().stereo(); QWidget* glWidget = 0; CreateGLWindow(m_glWindow, glWidget, stereoMode); assert(m_glWindow && glWidget); verticalLayout->addWidget(glWidget); } updateGLFrameGradient(); m_glWindow->setRectangularPickingAllowed(false); //multiple entities picking not supported //UI/display synchronization ui.actionFullScreen->setChecked(false); ui.menuSelected->setEnabled(false); reflectLightsState(); reflectPerspectiveState(); reflectPivotVisibilityState(); #ifdef CC_3DXWARE_SUPPORT enable3DMouse(true); #else ui.actionEnable3DMouse->setEnabled(false); #endif //Signals & slots connection connect(m_glWindow, SIGNAL(filesDropped(QStringList)), this, SLOT(addToDB(QStringList))); connect(m_glWindow, SIGNAL(entitySelectionChanged(ccHObject*)), this, SLOT(selectEntity(ccHObject*))); connect(m_glWindow, SIGNAL(exclusiveFullScreenToggled(bool)), this, SLOT(onExclusiveFullScreenToggled(bool))); //connect(m_glWindow, SIGNAL(entitiesSelectionChanged(std::unordered_set<int>)), this, SLOT(selectEntities(std::unordered_set<int>))); //not supported! //connect(m_glWindow, SIGNAL(newLabel(ccHObject*), this, SLOT(handleNewEntity(ccHObject*))); //nothing to do in ccViewer! //"Options" menu connect(ui.actionDisplayParameters, SIGNAL(triggered()), this, SLOT(showDisplayParameters())); connect(ui.actionEditCamera, SIGNAL(triggered()), this, SLOT(doActionEditCamera())); //"Display > Standard views" menu connect(ui.actionSetViewTop, SIGNAL(triggered()), this, SLOT(setTopView())); connect(ui.actionSetViewBottom, SIGNAL(triggered()), this, SLOT(setBottomView())); connect(ui.actionSetViewFront, SIGNAL(triggered()), this, SLOT(setFrontView())); connect(ui.actionSetViewBack, SIGNAL(triggered()), this, SLOT(setBackView())); connect(ui.actionSetViewLeft, SIGNAL(triggered()), this, SLOT(setLeftView())); connect(ui.actionSetViewRight, SIGNAL(triggered()), this, SLOT(setRightView())); connect(ui.actionSetViewIso1, SIGNAL(triggered()), this, SLOT(setIsoView1())); connect(ui.actionSetViewIso2, SIGNAL(triggered()), this, SLOT(setIsoView2())); //"Options > Perspective" menu connect(ui.actionSetOrthoView, SIGNAL(triggered()), this, SLOT(setOrthoView())); connect(ui.actionSetCenteredPerspectiveView, SIGNAL(triggered()), this, SLOT(setCenteredPerspectiveView())); connect(ui.actionSetViewerPerspectiveView, SIGNAL(triggered()), this, SLOT(setViewerPerspectiveView())); //"Options > Rotation symbol" menu connect(ui.actionSetPivotAlwaysOn, SIGNAL(triggered()), this, SLOT(setPivotAlwaysOn())); connect(ui.actionSetPivotRotationOnly, SIGNAL(triggered()), this, SLOT(setPivotRotationOnly())); connect(ui.actionSetPivotOff, SIGNAL(triggered()), this, SLOT(setPivotOff())); //"Options > 3D mouse" menu connect(ui.actionEnable3DMouse, SIGNAL(toggled(bool)), this, SLOT(enable3DMouse(bool))); //"Display > Lights & Materials" menu connect(ui.actionToggleSunLight, SIGNAL(toggled(bool)), this, SLOT(toggleSunLight(bool))); connect(ui.actionToggleCustomLight, SIGNAL(toggled(bool)), this, SLOT(toggleCustomLight(bool))); //"Options" menu connect(ui.actionGlobalZoom, SIGNAL(triggered()), this, SLOT(setGlobalZoom())); connect(ui.actionEnableStereo, SIGNAL(toggled(bool)), this, SLOT(toggleStereoMode(bool))); connect(ui.actionFullScreen, SIGNAL(toggled(bool)), this, SLOT(toggleFullScreen(bool))); connect(ui.actionLockRotationVertAxis, SIGNAL(triggered()), this, SLOT(toggleRotationAboutVertAxis())); //"Options > Selected" menu connect(ui.actionShowColors, SIGNAL(toggled(bool)), this, SLOT(toggleColorsShown(bool))); connect(ui.actionShowNormals, SIGNAL(toggled(bool)), this, SLOT(toggleNormalsShown(bool))); connect(ui.actionShowMaterials, SIGNAL(toggled(bool)), this, SLOT(toggleMaterialsShown(bool))); connect(ui.actionShowScalarField, SIGNAL(toggled(bool)), this, SLOT(toggleScalarShown(bool))); connect(ui.actionShowColorRamp, SIGNAL(toggled(bool)), this, SLOT(toggleColorbarShown(bool))); connect(ui.actionZoomOnSelectedEntity, SIGNAL(triggered()), this, SLOT(zoomOnSelectedEntity())); connect(ui.actionDelete, SIGNAL(triggered()), this, SLOT(doActionDeleteSelectedEntity())); //"Shaders" menu connect(ui.actionNoFilter, SIGNAL(triggered()), this, SLOT(doDisableGLFilter())); //"Help" menu connect(ui.actionAbout, SIGNAL(triggered()), this, SLOT(doActionAbout())); connect(ui.actionHelpShortctus, SIGNAL(triggered()), this, SLOT(doActionDisplayShortcuts())); loadPlugins(); }