ViewPtr ViewCollectionWidgetMixed::addView(View::Type type, LayoutRegion region) { ViewPtr view; mTotalRegion = merge(region, mTotalRegion); if (type==View::VIEW_3D) { ViewWidget* overlay = this->mViewCacheOverlay->retrieveView(); overlay->getView()->setType(type); overlay->show(); mOverlays.push_back(overlay); view = overlay->getView(); this->addWidgetToLayout(mLayout, overlay, region); } else { mBaseRegion = merge(region, mBaseRegion); view = mBaseLayout->addView(type, region); // re-add the base widget with updated position in grid this->addWidgetToLayout(mLayout, mBaseLayout, mBaseRegion); } view_utils::setStretchFactors(mLayout, mTotalRegion, 1); return view; }
void ModelExplorer::showPrecision(const bool showPrecision) { ViewWidget * widget = NULL; widget = static_cast<ViewWidget *>(mStackedWidget->currentWidget()); if(widget){ widget->showPrecisionDlg(showPrecision); } }
void ModelExplorer::showComments(const bool showComments) { ViewWidget * widget = NULL; widget = static_cast<ViewWidget *>(mStackedWidget->currentWidget()); if(widget){ widget->showComments(showComments); } }
void ModelExplorer::copyObjects() { ViewWidget * widget = nullptr; widget = static_cast<ViewWidget *>(mStackedWidget->currentWidget()); if(widget){ widget->copyObjects(); } }
void ModelExplorer::pasteObjects() { ViewWidget * widget = NULL; widget = static_cast<ViewWidget *>(mStackedWidget->currentWidget()); if(widget){ widget->pasteObjects(); } }
void LayoutWidgetUsingViewWidgets::setModified() { for (unsigned i=0; i<mViews.size(); ++i) { ViewWidget* current = mViews[i]; current->setModified(); } }
void ModelExplorer::showAllFields(bool state) { ViewWidget * widget = NULL; widget = static_cast<ViewWidget *>(mStackedWidget->currentWidget()); if(widget){ widget->showAllFields(state); } }
void ModelExplorer::createAllFields() { ViewWidget * widget = NULL; widget = static_cast<ViewWidget *>(mStackedWidget->currentWidget()); if(widget){ widget->createAllFields(); } }
void ModelExplorer::setRecursive(bool state) { ViewWidget * widget = NULL; widget = static_cast<ViewWidget *>(mStackedWidget->currentWidget()); if(widget){ widget->setRecursive(state); } }
void ModelExplorer::addObjects(openstudio::IddObjectType type) { ViewWidget * widget = NULL; widget = static_cast<ViewWidget *>(mStackedWidget->currentWidget()); if(widget){ widget->addObjects(type); } }
ViewWidget* LayoutWidgetUsingViewWidgets::WidgetFromView(ViewPtr view) { for (unsigned i=0; i<mViews.size(); ++i) { ViewWidget* current = mViews[i]; if (current->getView()==view) return current; } return NULL; }
void LayoutWidgetUsingViewWidgets::render() { for (unsigned i=0; i<mViews.size(); ++i) { ViewWidget* current = mViews[i]; current->render(); // render only changed scenegraph (shaky but smooth) } emit rendered(); }
QPoint LayoutWidgetUsingViewWidgets::getPosition(ViewPtr view) { ViewWidget* widget = this->WidgetFromView(view); if (!widget) { CX_LOG_ERROR() << "Did not find view in layout " << view->getUid(); return QPoint(0,0); } QPoint p = widget->mapToGlobal(QPoint(0,0)); p = this->mapFromGlobal(p); return p; }
ViewPtr LayoutWidgetUsingViewWidgets::addView(View::Type type, LayoutRegion region) { ViewWidget* view = this->retrieveView(type); view->getView()->setType(type); mLayout->addWidget(view, region.pos.row, region.pos.col, region.span.row, region.span.col); view_utils::setStretchFactors(mLayout, region, 1); view->show(); mViews.push_back(view); return view->getView(); }
void QViewWidget::setSelectedCamera(int index) { if (!viewMap.contains(sceneSelection.currentText()) || (index > ISOMETRIC && index < PERSPECTIVE)) return; ViewWidget * viewWidget = viewMap.value(sceneSelection.currentText()); osg::Vec3d cameraVector = viewWidget->getView()->getCameraManipulator()->getMatrix().getTrans(); double distance = pow((pow(cameraVector.x(),2) + pow(cameraVector.y(),2) + pow(cameraVector.z(),2)), 0.5); osg::Vec3d *eye = 0, center(0,0,0), up(0,0,1); switch (index) { case PERSPECTIVE: case ISOMETRIC: eye = new osg::Vec3d(0,distance,distance); break; case LEFT: eye = new osg::Vec3d(-distance,0,0); break; case RIGHT: eye = new osg::Vec3d(distance,0,0); break; case FRONT: eye = new osg::Vec3d(0,distance,0); break; case BACK: eye = new osg::Vec3d(0,-distance,0); break; case TOP: eye = new osg::Vec3d(0,0,distance); break; case BOTTOM: eye = new osg::Vec3d(0,0,-distance); break; } // if the change concerned the eye position, apply it if (eye) { viewWidget->getView()->getCameraManipulator()->setHomePosition(*eye,center,up); viewWidget->getView()->home(); delete eye; } }
void QViewWidget::setSelectedDisplay(int index) { if (!viewMap.contains(sceneSelection.currentText()) || (index > ISOMETRIC && index < PERSPECTIVE)) return; ViewWidget * viewWidget = viewMap.value(sceneSelection.currentText()); osg::StateSet * state = viewWidget->getRoot()->getOrCreateStateSet(); osg::CullFace* cf; osg::PolygonMode *polyModeObj; osg::ShadeModel* sm; switch (index) { case WIREFRAME: polyModeObj = dynamic_cast<osg::PolygonMode*>(state->getAttribute(osg::StateAttribute::POLYGONMODE)); if (!polyModeObj) { polyModeObj = new osg::PolygonMode; state->setAttributeAndModes(polyModeObj, osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE); } polyModeObj->setMode(osg::PolygonMode::FRONT_AND_BACK, osg::PolygonMode::LINE); break; case POLYMODE_FILL: polyModeObj = dynamic_cast<osg::PolygonMode*>(state->getAttribute(osg::StateAttribute::POLYGONMODE)); if (polyModeObj) polyModeObj->setMode(osg::PolygonMode::FRONT_AND_BACK, osg::PolygonMode::FILL); break; case BACK_CULL: cf = dynamic_cast<osg::CullFace*>(state->getAttribute(osg::StateAttribute::CULLFACE)); if (!cf) cf = new osg::CullFace; state->setAttributeAndModes(cf, osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE); break; case SHADING: sm = new osg::ShadeModel; sm->setMode(osg::ShadeModel::FLAT); state->setAttributeAndModes(sm, osg::StateAttribute::ON | osg::StateAttribute::OVERRIDE); break; } }
int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; ViewWidget vWidget; if (argc > 1) { vWidget.loadModel(argv[1]); } else { vWidget.loadModel(""); } vWidget.resize(800, 600); w.setCentralWidget(&vWidget); w.resize(800, 600); w.show(); return a.exec(); }
void QViewWidget::addScene(osg::Group * sceneRoot, QString name) { bool showGrid = true; bool showAxes = true; if (name.toStdString() == "dummy") showGrid = showAxes = false; ViewWidget * viewWidget = splitter-> addViewWidget(splitter->createCamera(0,0,100,100), sceneRoot, showGrid, showAxes); if (viewWidget) { if (name.toStdString() != "dummy") sceneSelection.addItem(name); sceneStack->addWidget(viewWidget->getWidget()); if (viewMap.count() == 1) sceneStack->setCurrentWidget(viewWidget->getWidget()); viewMap.insert(name, viewWidget); } }
void QViewWidget::setSelectedScene(int index) { ViewWidget * viewWidget = viewMap.value(sceneSelection.itemText(index)); sceneStack->setCurrentWidget(viewWidget->getWidget()); viewWidget->getView()->requestRedraw(); }