void TextureMapping::on_fileChooser_fileNameSelected(const QString& s) { QImage image; if (!image.load(s)) { QMessageBox::warning(this, tr("No image"), tr("The specified file is not a valid image file.")); return; } if (!this->grp) { Gui::Document* doc = Gui::Application::Instance->activeDocument(); if (doc) { Gui::MDIView* mdi = doc->getActiveView(); if (mdi && mdi->isDerivedFrom(View3DInventor::getClassTypeId())) { Gui::View3DInventorViewer* view = static_cast<View3DInventor*>(mdi)->getViewer(); this->grp = static_cast<SoGroup *>(view->getSceneGraph()); this->grp->ref(); this->grp->insertChild(this->tex,1); if (ui->checkEnv->isChecked()) this->grp->insertChild(this->env,2); } } } if (!this->grp) { QMessageBox::warning(this, tr("No 3d view"), tr("No active 3d view found.")); return; } SoSFImage texture; Gui::BitmapFactory().convert(image, texture); this->tex->image = texture; //this->tex->filename = (const char*)s.toUtf8(); App::GetApplication().Config()["TextureImage"] = (const char*)s.toUtf8(); }
void DrawSketchHandler::unsetCursor(void) { Gui::MDIView* view = Gui::getMainWindow()->activeWindow(); if (view && view->isDerivedFrom(Gui::View3DInventor::getClassTypeId())) { Gui::View3DInventorViewer* viewer = static_cast<Gui::View3DInventor*>(view)->getViewer(); viewer->getWidget()->setCursor(oldCursor); } }
void DrawSketchHandler::setCursor(const QPixmap &p,int x,int y) { Gui::MDIView* view = Gui::getMainWindow()->activeWindow(); if (view && view->isDerivedFrom(Gui::View3DInventor::getClassTypeId())) { Gui::View3DInventorViewer* viewer = static_cast<Gui::View3DInventor*>(view)->getViewer(); oldCursor = viewer->getWidget()->cursor(); QCursor cursor(p, x, y); actCursor = cursor; viewer->getWidget()->setCursor(cursor); } }
float SoZoomTranslation::getScaleFactor() { // Dividing by 5 seems to work well Gui::MDIView *mdi = Gui::Application::Instance->activeDocument()->getActiveView(); if (mdi && mdi->isDerivedFrom(Gui::View3DInventor::getClassTypeId())) { Gui::View3DInventorViewer *viewer = static_cast<Gui::View3DInventor *>(mdi)->getViewer(); this->scale = viewer->getCamera()->getViewVolume(viewer->getCamera()->aspectRatio.getValue()).getWorldToScreenScale(SbVec3f(0.f, 0.f, 0.f), 0.1f) / 5; return this->scale; } else { return this->scale; } }
bool CmdFemDefineNodesSet::isActive(void) { // Check for the selected mesh feature (all Mesh types) if (getSelection().countObjectsOfType(Fem::FemMeshObject::getClassTypeId()) != 1) return false; Gui::MDIView* view = Gui::getMainWindow()->activeWindow(); if (view && view->isDerivedFrom(Gui::View3DInventor::getClassTypeId())) { Gui::View3DInventorViewer* viewer = static_cast<Gui::View3DInventor*>(view)->getViewer(); return !viewer->isEditing(); } return false; }
bool CmdInspectElement::isActive(void) { App::Document* doc = App::GetApplication().getActiveDocument(); if (!doc || doc->countObjectsOfType(Inspection::Feature::getClassTypeId()) == 0) return false; Gui::MDIView* view = Gui::getMainWindow()->activeWindow(); if (view && view->isDerivedFrom(Gui::View3DInventor::getClassTypeId())) { Gui::View3DInventorViewer* viewer = static_cast<Gui::View3DInventor*>(view)->getViewer(); return !viewer->isEditing(); } return false; }
void StdCmdEdit::activated(int iMsg) { Gui::MDIView* view = Gui::getMainWindow()->activeWindow(); if (view && view->isDerivedFrom(Gui::View3DInventor::getClassTypeId())) { Gui::View3DInventorViewer* viewer = static_cast<Gui::View3DInventor*>(view)->getViewer(); if (viewer->isEditingViewProvider()) { doCommand(Command::Gui,"Gui.activeDocument().resetEdit()"); } else { if (Selection().getCompleteSelection().size() > 0) { SelectionSingleton::SelObj obj = Selection().getCompleteSelection()[0]; doCommand(Command::Gui,"Gui.activeDocument().setEdit(\"%s\",0)",obj.FeatName); } } } }
bool Document::sendMsgToFirstView(const Base::Type& typeId, const char* pMsg, const char** ppReturn) { // first try the active view Gui::MDIView* view = getActiveView(); if (view && view->isDerivedFrom(typeId)) { if (view->onMsg(pMsg, ppReturn)) return true; } // now try the other views std::list<Gui::MDIView*> views = getMDIViewsOfType(typeId); for (std::list<Gui::MDIView*>::iterator it = views.begin(); it != views.end(); ++it) { if ((*it != view) && (*it)->onMsg(pMsg, ppReturn)) { return true; } } return false; }