void Plugin_SurfaceRenderScalar::view_linked(View* view) { update_dock_tab(); connect(view, SIGNAL(map_linked(MapHandlerGen*)), this, SLOT(map_linked(MapHandlerGen*))); connect(view, SIGNAL(map_unlinked(MapHandlerGen*)), this, SLOT(map_unlinked(MapHandlerGen*))); connect(view, SIGNAL(viewerInitialized()), this, SLOT(viewer_initialized())); for (MapHandlerGen* map : view->get_linked_maps()) { map_linked(map); } }
int QGLViewer::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QGLWidget::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: viewerInitialized(); break; case 1: drawNeeded(); break; case 2: drawFinished((*reinterpret_cast< bool(*)>(_a[1]))); break; case 3: animateNeeded(); break; case 4: helpRequired(); break; case 5: axisIsDrawnChanged((*reinterpret_cast< bool(*)>(_a[1]))); break; case 6: gridIsDrawnChanged((*reinterpret_cast< bool(*)>(_a[1]))); break; case 7: FPSIsDisplayedChanged((*reinterpret_cast< bool(*)>(_a[1]))); break; case 8: textIsEnabledChanged((*reinterpret_cast< bool(*)>(_a[1]))); break; case 9: cameraIsEditedChanged((*reinterpret_cast< bool(*)>(_a[1]))); break; case 10: stereoChanged((*reinterpret_cast< bool(*)>(_a[1]))); break; case 11: pointSelected((*reinterpret_cast< const QMouseEvent*(*)>(_a[1]))); break; case 12: mouseGrabberChanged((*reinterpret_cast< qglviewer::MouseGrabber*(*)>(_a[1]))); break; case 13: setAxisIsDrawn((*reinterpret_cast< bool(*)>(_a[1]))); break; case 14: setAxisIsDrawn(); break; case 15: setGridIsDrawn((*reinterpret_cast< bool(*)>(_a[1]))); break; case 16: setGridIsDrawn(); break; case 17: setFPSIsDisplayed((*reinterpret_cast< bool(*)>(_a[1]))); break; case 18: setFPSIsDisplayed(); break; case 19: setTextIsEnabled((*reinterpret_cast< bool(*)>(_a[1]))); break; case 20: setTextIsEnabled(); break; case 21: setCameraIsEdited((*reinterpret_cast< bool(*)>(_a[1]))); break; case 22: setCameraIsEdited(); break; case 23: toggleAxisIsDrawn(); break; case 24: toggleGridIsDrawn(); break; case 25: toggleFPSIsDisplayed(); break; case 26: toggleTextIsEnabled(); break; case 27: toggleCameraIsEdited(); break; case 28: setBackgroundColor((*reinterpret_cast< const QColor(*)>(_a[1]))); break; case 29: setForegroundColor((*reinterpret_cast< const QColor(*)>(_a[1]))); break; case 30: setSceneRadius((*reinterpret_cast< float(*)>(_a[1]))); break; case 31: setSceneCenter((*reinterpret_cast< const qglviewer::Vec(*)>(_a[1]))); break; case 32: setSceneBoundingBox((*reinterpret_cast< const qglviewer::Vec(*)>(_a[1])),(*reinterpret_cast< const qglviewer::Vec(*)>(_a[2]))); break; case 33: showEntireScene(); break; case 34: setCamera((*reinterpret_cast< qglviewer::Camera*const(*)>(_a[1]))); break; case 35: setManipulatedFrame((*reinterpret_cast< qglviewer::ManipulatedFrame*(*)>(_a[1]))); break; case 36: setMouseGrabber((*reinterpret_cast< qglviewer::MouseGrabber*(*)>(_a[1]))); break; case 37: setFullScreen((*reinterpret_cast< bool(*)>(_a[1]))); break; case 38: setFullScreen(); break; case 39: setStereoDisplay((*reinterpret_cast< bool(*)>(_a[1]))); break; case 40: setStereoDisplay(); break; case 41: toggleFullScreen(); break; case 42: toggleStereoDisplay(); break; case 43: toggleCameraMode(); break; case 44: saveSnapshot((*reinterpret_cast< bool(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break; case 45: saveSnapshot((*reinterpret_cast< bool(*)>(_a[1]))); break; case 46: saveSnapshot(); break; case 47: saveSnapshot((*reinterpret_cast< const QString(*)>(_a[1])),(*reinterpret_cast< bool(*)>(_a[2]))); break; case 48: saveSnapshot((*reinterpret_cast< const QString(*)>(_a[1]))); break; case 49: setSnapshotFileName((*reinterpret_cast< const QString(*)>(_a[1]))); break; case 50: setSnapshotFormat((*reinterpret_cast< const QString(*)>(_a[1]))); break; case 51: setSnapshotCounter((*reinterpret_cast< int(*)>(_a[1]))); break; case 52: setSnapshotQuality((*reinterpret_cast< int(*)>(_a[1]))); break; case 53: { bool _r = openSnapshotFormatDialog(); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 54: snapshotToClipboard(); break; case 55: copyBufferToTexture((*reinterpret_cast< GLint(*)>(_a[1])),(*reinterpret_cast< GLenum(*)>(_a[2]))); break; case 56: copyBufferToTexture((*reinterpret_cast< GLint(*)>(_a[1]))); break; case 57: setAnimationPeriod((*reinterpret_cast< int(*)>(_a[1]))); break; case 58: startAnimation(); break; case 59: stopAnimation(); break; case 60: animate(); break; case 61: toggleAnimation(); break; case 62: help(); break; case 63: aboutQGLViewer(); break; case 64: select((*reinterpret_cast< const QMouseEvent*(*)>(_a[1]))); break; case 65: select((*reinterpret_cast< const QPoint(*)>(_a[1]))); break; case 66: setSelectBufferSize((*reinterpret_cast< int(*)>(_a[1]))); break; case 67: setSelectRegionWidth((*reinterpret_cast< int(*)>(_a[1]))); break; case 68: setSelectRegionHeight((*reinterpret_cast< int(*)>(_a[1]))); break; case 69: setSelectedName((*reinterpret_cast< int(*)>(_a[1]))); break; case 70: setShortcut((*reinterpret_cast< KeyboardAction(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 71: setKeyboardAccelerator((*reinterpret_cast< KeyboardAction(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 72: setKeyDescription((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< QString(*)>(_a[2]))); break; case 73: setKeyFrameKey((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 74: setPlayKeyFramePathStateKey((*reinterpret_cast< int(*)>(_a[1]))); break; case 75: setPlayPathStateKey((*reinterpret_cast< int(*)>(_a[1]))); break; case 76: setAddKeyFrameStateKey((*reinterpret_cast< int(*)>(_a[1]))); break; case 77: setPathKey((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 78: setPathKey((*reinterpret_cast< int(*)>(_a[1]))); break; case 79: setPlayPathKeyboardModifiers((*reinterpret_cast< QtKeyboardModifiers(*)>(_a[1]))); break; case 80: setAddKeyFrameKeyboardModifiers((*reinterpret_cast< QtKeyboardModifiers(*)>(_a[1]))); break; case 81: setMouseBinding((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< MouseHandler(*)>(_a[2])),(*reinterpret_cast< MouseAction(*)>(_a[3])),(*reinterpret_cast< bool(*)>(_a[4]))); break; case 82: setMouseBinding((*reinterpret_cast< int(*)>(_a[1])),(*reinterpret_cast< MouseHandler(*)>(_a[2])),(*reinterpret_cast< MouseAction(*)>(_a[3]))); break; case 83: setWheelBinding((*reinterpret_cast< QtKeyboardModifiers(*)>(_a[1])),(*reinterpret_cast< MouseHandler(*)>(_a[2])),(*reinterpret_cast< MouseAction(*)>(_a[3])),(*reinterpret_cast< bool(*)>(_a[4]))); break; case 84: setWheelBinding((*reinterpret_cast< QtKeyboardModifiers(*)>(_a[1])),(*reinterpret_cast< MouseHandler(*)>(_a[2])),(*reinterpret_cast< MouseAction(*)>(_a[3]))); break; case 85: setHandlerKeyboardModifiers((*reinterpret_cast< MouseHandler(*)>(_a[1])),(*reinterpret_cast< QtKeyboardModifiers(*)>(_a[2]))); break; case 86: setHandlerStateKey((*reinterpret_cast< MouseHandler(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 87: setMouseStateKey((*reinterpret_cast< MouseHandler(*)>(_a[1])),(*reinterpret_cast< int(*)>(_a[2]))); break; case 88: initFromDOMElement((*reinterpret_cast< const QDomElement(*)>(_a[1]))); break; case 89: saveStateToFile(); break; case 90: { bool _r = restoreStateFromFile(); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 91: setStateFileName((*reinterpret_cast< const QString(*)>(_a[1]))); break; case 92: saveToFile((*reinterpret_cast< const QString(*)>(_a[1]))); break; case 93: saveToFile(); break; case 94: { bool _r = restoreFromFile((*reinterpret_cast< const QString(*)>(_a[1]))); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 95: { bool _r = restoreFromFile(); if (_a[0]) *reinterpret_cast< bool*>(_a[0]) = _r; } break; case 96: resetVisualHints(); break; case 97: delayedFullScreen(); break; case 98: hideMessage(); break; default: ; } _id -= 99; } return _id; }
void MainWindow::viewerInitialized() { // Only do init once disconnect(m_ui->centralWidget, SIGNAL(viewerInitialized()), this, SLOT(viewerInitialized())); m_ui->centralWidget->addToRenderList(&m_model); m_ui->centralWidget->addToAnimateList(&m_model); m_meshDock->setModel(&m_model); m_actionEnableUserShaders = new QAction("Enable external shaders", this); m_actionEnableUserShaders->setCheckable(true); m_actionEnableUserShaders->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_E)); connect(m_actionEnableUserShaders, SIGNAL(triggered(bool)), this, SLOT(actionEnableUserShaders(bool))); m_actionLocateUserShaders = new QAction("Locate external shaders...", this); m_actionLocateUserShaders->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_L)); connect(m_actionLocateUserShaders, SIGNAL(triggered()), this, SLOT(actionLocateUserShaders())); m_actionReloadUserShaders = new QAction("Reload external shaders", this); m_actionReloadUserShaders->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_R)); connect(m_actionReloadUserShaders, SIGNAL(triggered()), this, SLOT(actionReloadUserShader())); m_shaderGroup = new QActionGroup(this); for (int i = WZ_SHADER__FIRST; i < WZ_SHADER__LAST; ++i) { QString shadername = QWZM::shaderTypeToString(static_cast<wz_shader_type_t>(i)); QAction* shaderAct = new QAction(shadername, this); m_shaderSignalMapper->setMapping(shaderAct, i); shaderAct->setActionGroup(m_shaderGroup); if (i < 9) // FIXME shaderAct->setShortcut(QKeySequence(tr("Ctrl+%1").arg(i+1))); shaderAct->setCheckable(true); reloadShader(static_cast<wz_shader_type_t>(i), false); connect(shaderAct, SIGNAL(triggered()), m_shaderSignalMapper, SLOT(map())); } connect(m_shaderSignalMapper, SIGNAL(mapped(int)), this, SLOT(shaderAction(int))); QMenu* rendererMenu = new QMenu(this); rendererMenu->addActions(m_shaderGroup->actions()); // other user shader related stuff rendererMenu->addSeparator(); rendererMenu->addAction(m_actionEnableUserShaders); rendererMenu->addAction(m_actionLocateUserShaders); rendererMenu->addAction(m_actionReloadUserShaders); m_ui->actionRenderer->setMenu(rendererMenu); connect(m_ui->actionShowModelCenter, SIGNAL(triggered(bool)), &m_model, SLOT(setDrawCenterPointFlag(bool))); connect(m_ui->actionShowNormals, SIGNAL(triggered(bool)), &m_model, SLOT(setDrawNormalsFlag(bool))); connect(m_ui->actionShowNormals, SIGNAL(triggered(bool)), m_ui->actionShow_Tangent_And_Bitangent, SLOT(setEnabled(bool))); connect(m_ui->actionShow_Tangent_And_Bitangent, SIGNAL(triggered(bool)), &m_model, SLOT(setDrawTangentAndBitangentFlag(bool))); connect(m_ui->actionShow_Connectors, SIGNAL(triggered(bool)), &m_model, SLOT(setDrawConnectors(bool))); /// Load previous state m_ui->actionShowModelCenter->setChecked(m_settings->value("3DView/ShowModelCenter", false).toBool()); m_model.setDrawCenterPointFlag(m_ui->actionShowModelCenter->isChecked()); m_ui->actionShowNormals->setChecked(m_settings->value("3DView/ShowNormals", false).toBool()); m_model.setDrawNormalsFlag(m_ui->actionShowNormals->isChecked()); m_ui->actionShow_Connectors->setChecked(m_settings->value("3DView/ShowConnectors", false).toBool()); m_model.setDrawConnectors(m_ui->actionShow_Connectors->isChecked()); m_ui->actionShow_Tangent_And_Bitangent->setChecked(m_settings->value("3DView/ShowTangentAndBitangent", false).toBool()); m_model.setDrawTangentAndBitangentFlag(m_ui->actionShow_Tangent_And_Bitangent->isChecked()); m_ui->actionShow_Tangent_And_Bitangent->setEnabled(m_ui->actionShowNormals->isChecked()); m_ui->actionShowAxes->setChecked(m_settings->value("3DView/ShowAxes", true).toBool()); m_ui->actionShowGrid->setChecked(m_settings->value("3DView/ShowGrid", true).toBool()); m_ui->actionShowLightSource->setChecked(m_settings->value("3DView/ShowLightSource", true).toBool()); m_ui->actionLink_Light_Source_To_Camera->setChecked(m_settings->value("3DView/LinkLightToCamera", true).toBool()); m_actionEnableUserShaders->setChecked(m_settings->value("3DView/EnableUserShaders", false).toBool()); m_ui->actionAnimate->setChecked(m_settings->value("3DView/Animate", true).toBool()); actionEnableUserShaders(m_actionEnableUserShaders->isChecked()); // Default to 3.1 int shaderTag = m_settings->value("3DView/ShaderTag", wz_shader_type_tag[WZ_SHADER_WZ31]).toInt(); int shaderActIdx = -1; for (int i = WZ_SHADER__FIRST; i < WZ_SHADER__LAST; ++i) { if (shaderTag == wz_shader_type_tag[i]) shaderActIdx = i; } // Select any previous selection if (shaderActIdx >= 0) { if (m_shaderGroup->actions().at(shaderActIdx)->isEnabled()) m_shaderGroup->actions().at(shaderActIdx)->activate(QAction::Trigger); else shaderActIdx = -1; } // Otherwise use old approach if (shaderActIdx < 0) { for (int i = m_shaderGroup->actions().size() - 1; i >= 0; --i) { if (m_shaderGroup->actions().at(i)->isEnabled()) { m_shaderGroup->actions().at(i)->activate(QAction::Trigger); break; } } } }
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), m_ui(new Ui::MainWindow), m_materialDock(new MaterialDock(this)), m_transformDock(new TransformDock(this)), m_meshDock(new MeshDock(this)), m_textureDialog(new TextureDialog(this)), m_UVEditor(new UVEditor(this)), m_settings(new QSettings(this)), m_shaderSignalMapper(new QSignalMapper(this)), m_actionEnableUserShaders(nullptr), m_actionLocateUserShaders(nullptr), m_actionReloadUserShaders(nullptr) { m_ui->setupUi(this); m_pathImport = m_settings->value(WMIT_SETTINGS_IMPORTVAL, QDir::currentPath()).toString(); m_pathExport = m_settings->value(WMIT_SETTINGS_EXPORTVAL, QDir::currentPath()).toString(); m_materialDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); m_materialDock->hide(); m_transformDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); m_transformDock->hide(); m_meshDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); m_meshDock->hide(); m_UVEditor->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); m_UVEditor->hide(); addDockWidget(Qt::RightDockWidgetArea, m_materialDock, Qt::Horizontal); addDockWidget(Qt::RightDockWidgetArea, m_transformDock, Qt::Horizontal); addDockWidget(Qt::RightDockWidgetArea, m_meshDock, Qt::Horizontal); addDockWidget(Qt::LeftDockWidgetArea, m_UVEditor, Qt::Horizontal); // UI is ready and now we can load window previous state (will do nothing if state wasn't saved). // 3DView specifics are loaded later on viewerInitialized event resize(QSettings().value("Window/size", size()).toSize()); move(QSettings().value("Window/position", pos()).toPoint()); restoreState(QSettings().value("Window/state", QByteArray()).toByteArray()); m_ui->actionOpen->setIcon(QIcon::fromTheme("document-open", style()->standardIcon(QStyle::SP_DirOpenIcon))); m_ui->menuOpenRecent->setIcon(QIcon::fromTheme("document-open-recent")); m_ui->actionClearRecentFiles->setIcon(QIcon::fromTheme("edit-clear-list")); m_ui->actionSave->setIcon(QIcon::fromTheme("document-save", style()->standardIcon(QStyle::SP_DialogSaveButton))); m_ui->actionSaveAs->setIcon(QIcon::fromTheme("document-save-as")); m_ui->actionClose->setIcon(QIcon::fromTheme("window-close")); m_ui->actionExit->setIcon(QIcon::fromTheme("application-exit", style()->standardIcon(QStyle::SP_DialogCloseButton))); m_ui->actionAboutApplication->setIcon(QIcon::fromTheme("help-about")); connect(m_ui->centralWidget, SIGNAL(viewerInitialized()), this, SLOT(viewerInitialized())); connect(m_ui->menuFile, SIGNAL(aboutToShow()), this, SLOT(updateRecentFilesMenu())); connect(m_ui->actionOpen, SIGNAL(triggered()), this, SLOT(actionOpen())); connect(m_ui->menuOpenRecent, SIGNAL(triggered(QAction*)), this, SLOT(actionOpenRecent(QAction*))); connect(m_ui->actionClearRecentFiles, SIGNAL(triggered()), this, SLOT(actionClearRecentFiles())); connect(m_ui->actionClear_Missing_Files, SIGNAL(triggered()), this, SLOT(actionClearMissingFiles())); connect(m_ui->actionSave, SIGNAL(triggered()), this, SLOT(actionSave())); connect(m_ui->actionSaveAs, SIGNAL(triggered()), this, SLOT(actionSaveAs())); connect(m_ui->actionClose, SIGNAL(triggered()), this, SLOT(actionClose())); connect(m_ui->actionUVEditor, SIGNAL(toggled(bool)), m_UVEditor, SLOT(setVisible(bool))); connect(m_ui->actionSetupTextures, SIGNAL(triggered()), this, SLOT(actionSetupTextures())); connect(m_ui->actionAppendModel, SIGNAL(triggered()), this, SLOT(actionAppendModel())); connect(m_ui->actionImport_Animation, SIGNAL(triggered()), this, SLOT(actionImport_Animation())); connect(m_ui->actionImport_Connectors, SIGNAL(triggered()), this, SLOT(actionImport_Connectors())); connect(m_ui->actionShowAxes, SIGNAL(toggled(bool)), m_ui->centralWidget, SLOT(setAxisIsDrawn(bool))); connect(m_ui->actionShowGrid, SIGNAL(toggled(bool)), m_ui->centralWidget, SLOT(setGridIsDrawn(bool))); connect(m_ui->actionShowLightSource, SIGNAL(toggled(bool)), m_ui->centralWidget, SLOT(setDrawLightSource(bool))); connect(m_ui->actionLink_Light_Source_To_Camera, SIGNAL(toggled(bool)), m_ui->centralWidget, SLOT(setLinkLightToCamera(bool))); connect(m_ui->actionAnimate, SIGNAL(toggled(bool)), m_ui->centralWidget, SLOT(setAnimateState(bool))); connect(m_ui->actionAboutQt, SIGNAL(triggered()), QApplication::instance(), SLOT(aboutQt())); connect(m_ui->actionSetTeamColor, SIGNAL(triggered()), this, SLOT(actionSetTeamColor())); /// Material dock m_materialDock->toggleViewAction()->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_M)); m_ui->menuModel->insertAction(m_ui->menuModel->actions().value(0) ,m_materialDock->toggleViewAction()); connect(m_materialDock, SIGNAL(materialChanged(WZMaterial)), this, SLOT(materialChangedFromUI(WZMaterial))); /// Transform dock m_transformDock->toggleViewAction()->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_T)); m_ui->menuModel->insertAction(m_ui->menuModel->actions().value(0) ,m_transformDock->toggleViewAction()); // transformations connect(m_transformDock, SIGNAL(scaleXYZChanged(double)), this, SLOT(scaleXYZChanged(double))); connect(m_transformDock, SIGNAL(scaleXChanged(double)), this, SLOT(scaleXChanged(double))); connect(m_transformDock, SIGNAL(scaleYChanged(double)), this, SLOT(scaleYChanged(double))); connect(m_transformDock, SIGNAL(scaleZChanged(double)), this, SLOT(scaleZChanged(double))); connect(m_transformDock, SIGNAL(reverseWindings()), this, SLOT(reverseWindings())); connect(m_transformDock, SIGNAL(flipNormals()), this, SLOT(flipNormals())); connect(m_transformDock, SIGNAL(applyTransformations()), &m_model, SLOT(applyTransformations())); connect(m_transformDock, SIGNAL(changeActiveMesh(int)), &m_model, SLOT(setActiveMesh(int))); connect(m_transformDock, SIGNAL(recalculateTB()), &m_model, SLOT(slotRecalculateTB())); connect(m_transformDock, SIGNAL(removeMesh()), this, SLOT(removeMesh())); connect(m_transformDock, SIGNAL(mirrorAxis(int)), this, SLOT(mirrorAxis(int))); connect(m_transformDock, SIGNAL(centerMesh(int)), this, SLOT(centerMesh(int))); connect(&m_model, SIGNAL(meshCountChanged(int,QStringList)), m_transformDock, SLOT(setMeshCount(int,QStringList))); /// Mesh dock m_meshDock->toggleViewAction()->setShortcut(QKeySequence(Qt::Key_M)); m_ui->menuModel->insertAction(m_ui->menuModel->actions().value(0), m_meshDock->toggleViewAction()); connect(m_meshDock, SIGNAL(connectorsWereUpdated()), this, SLOT(updateModelRender())); connect(&m_model, SIGNAL(meshCountChanged(int,QStringList)), m_meshDock, SLOT(setMeshCount(int,QStringList))); /// Reset state clear(); }