void SoFCUnifiedSelection::applySettings() { float transparency; ParameterGrp::handle hGrp = Gui::WindowParameter::getDefaultParameter()->GetGroup("View"); bool enablePre = hGrp->GetBool("EnablePreselection", true); bool enableSel = hGrp->GetBool("EnableSelection", true); if (!enablePre) { this->highlightMode = SoFCUnifiedSelection::OFF; } else { // Search for a user defined value with the current color as default SbColor highlightColor = this->colorHighlight.getValue(); unsigned long highlight = (unsigned long)(highlightColor.getPackedValue()); highlight = hGrp->GetUnsigned("HighlightColor", highlight); highlightColor.setPackedValue((uint32_t)highlight, transparency); this->colorHighlight.setValue(highlightColor); } if (!enableSel) { this->selectionMode = SoFCUnifiedSelection::OFF; } else { // Do the same with the selection color SbColor selectionColor = this->colorSelection.getValue(); unsigned long selection = (unsigned long)(selectionColor.getPackedValue()); selection = hGrp->GetUnsigned("SelectionColor", selection); selectionColor.setPackedValue((uint32_t)selection, transparency); this->colorSelection.setValue(selectionColor); } }
Gui::SoFCSelection* ViewProviderPoints::createFromSettings() const { Gui::SoFCSelection* sel = new Gui::SoFCSelection(); float transparency; ParameterGrp::handle hGrp = Gui::WindowParameter::getDefaultParameter()->GetGroup("View"); bool enablePre = hGrp->GetBool("EnablePreselection", true); bool enableSel = hGrp->GetBool("EnableSelection", true); if (!enablePre) { sel->highlightMode = Gui::SoFCSelection::OFF; } else { // Search for a user defined value with the current color as default SbColor highlightColor = sel->colorHighlight.getValue(); unsigned long highlight = (unsigned long)(highlightColor.getPackedValue()); highlight = hGrp->GetUnsigned("HighlightColor", highlight); highlightColor.setPackedValue((uint32_t)highlight, transparency); sel->colorHighlight.setValue(highlightColor); } if (!enableSel || !Selectable.getValue()) { sel->selectionMode = Gui::SoFCSelection::SEL_OFF; } else { // Do the same with the selection color SbColor selectionColor = sel->colorSelection.getValue(); unsigned long selection = (unsigned long)(selectionColor.getPackedValue()); selection = hGrp->GetUnsigned("SelectionColor", selection); selectionColor.setPackedValue((uint32_t)selection, transparency); sel->colorSelection.setValue(selectionColor); } return sel; }
void ImpExpDxfRead::setOptions(void) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath(getOptionSource().c_str()); optionGroupLayers = hGrp->GetBool("groupLayers",false); optionImportAnnotations = hGrp->GetBool("dxftext",false); optionScaling = hGrp->GetFloat("dxfScaling",1.0); }
DraftDxfRead::DraftDxfRead(std::string filepath, App::Document *pcDoc) : CDxfRead(filepath.c_str()) { document = pcDoc; ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Draft"); optionGroupLayers = hGrp->GetBool("groupLayers",false); optionImportAnnotations = hGrp->GetBool("dxftext",false); optionScaling = hGrp->GetFloat("dxfScaling",1.0); }
void ImpExpDxfWrite::setOptions(void) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath(getOptionSource().c_str()); optionMaxLength = hGrp->GetFloat("maxsegmentlength",5.0); optionExpPoints = hGrp->GetBool("ExportPoints",false); m_version = hGrp->GetInt("DxfVersionOut",14); optionPolyLine = hGrp->GetBool("DiscretizeEllipses",false); m_polyOverride = hGrp->GetBool("DiscretizeEllipses",false); setDataDir(App::Application::getResourceDir() + "Mod/Import/DxfPlate/"); }
void MacroManager::run(MacroType eType,const char *sName) { try { ParameterGrp::handle hGrp = App::GetApplication().GetUserParameter() .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("OutputWindow"); PyObject* pyout = hGrp->GetBool("RedirectPythonOutput") ? new OutputStdout : 0; PyObject* pyerr = hGrp->GetBool("RedirectPythonErrors") ? new OutputStderr : 0; PythonRedirector std_out("stdout",pyout); PythonRedirector std_err("stderr",pyerr); //The given path name is expected to be Utf-8 Base::Interpreter().runFile(sName, true); } catch (const Base::SystemExitException&) { Base::PyGILStateLocker lock; PyErr_Clear(); Base::Interpreter().systemExit(); } catch (const Base::PyException& e) { Base::Console().Error("%s%s: %s\n", e.getStackTrace().c_str(), e.getErrorType().c_str(), e.what()); } catch (const Base::Exception& e) { qWarning("%s",e.what()); } }
void Gui::ActiveObjectList::setObject(App::DocumentObject* obj, const char* name, const Gui::HighlightMode& mode) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/TreeView"); bool autoExpand = hGrp->GetBool("TreeActiveAutoExpand", true); if (hasObject(name)) { App::DocumentObject* act = getObject<App::DocumentObject*>(name); Gui::Document* doc = Application::Instance->getDocument(act->getDocument()); Gui::ViewProviderDocumentObject* viewProvider = static_cast <Gui::ViewProviderDocumentObject*>(doc->getViewProvider(act)); doc->signalHighlightObject(*viewProvider, mode, false); if (autoExpand) doc->signalExpandObject(*viewProvider, Gui::Collapse); } if (obj) { Gui::Document* doc = Application::Instance->getDocument(obj->getDocument()); Gui::ViewProviderDocumentObject* viewProvider = static_cast <Gui::ViewProviderDocumentObject*>(doc->getViewProvider(obj)); doc->signalHighlightObject(*viewProvider, mode, true); if (autoExpand) doc->signalExpandObject(*viewProvider, Gui::Expand); _ObjectMap[name] = obj; } else { if (hasObject(name)) _ObjectMap.erase(name); } }
void ShowRestoreInformationLayer(SketcherGui::ViewProviderSketch* vp, char * visibleelementname) { ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher/General"); bool status = hGrp->GetBool(visibleelementname, true); hGrp->SetBool(visibleelementname, !status); vp->showRestoreInformationLayer(); }
DrawingView::DrawingView(Gui::Document* doc, QWidget* parent) : Gui::MDIView(doc, parent), m_view(new SvgView) { m_backgroundAction = new QAction(tr("&Background"), this); m_backgroundAction->setEnabled(false); m_backgroundAction->setCheckable(true); m_backgroundAction->setChecked(true); connect(m_backgroundAction, SIGNAL(toggled(bool)), m_view, SLOT(setViewBackground(bool))); m_outlineAction = new QAction(tr("&Outline"), this); m_outlineAction->setEnabled(false); m_outlineAction->setCheckable(true); m_outlineAction->setChecked(false); connect(m_outlineAction, SIGNAL(toggled(bool)), m_view, SLOT(setViewOutline(bool))); m_nativeAction = new QAction(tr("&Native"), this); m_nativeAction->setCheckable(true); m_nativeAction->setChecked(false); #ifndef QT_NO_OPENGL m_glAction = new QAction(tr("&OpenGL"), this); m_glAction->setCheckable(true); #endif m_imageAction = new QAction(tr("&Image"), this); m_imageAction->setCheckable(true); #ifndef QT_NO_OPENGL m_highQualityAntialiasingAction = new QAction(tr("&High Quality Antialiasing"), this); m_highQualityAntialiasingAction->setEnabled(false); m_highQualityAntialiasingAction->setCheckable(true); m_highQualityAntialiasingAction->setChecked(false); connect(m_highQualityAntialiasingAction, SIGNAL(toggled(bool)), m_view, SLOT(setHighQualityAntialiasing(bool))); #endif QActionGroup *rendererGroup = new QActionGroup(this); rendererGroup->addAction(m_nativeAction); #ifndef QT_NO_OPENGL rendererGroup->addAction(m_glAction); #endif rendererGroup->addAction(m_imageAction); connect(rendererGroup, SIGNAL(triggered(QAction *)), this, SLOT(setRenderer(QAction *))); setCentralWidget(m_view); //setWindowTitle(tr("SVG Viewer")); m_orientation = QPrinter::Landscape; m_pageSize = QPrinter::A4; ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath ("User parameter:BaseApp/Preferences/View"); bool on = hGrp->GetBool("InvertZoom", true); m_view->setZoomInverted(on); }
bool ViewProviderPartExt::loadParameter() { bool changed = false; ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath ("User parameter:BaseApp/Preferences/Mod/Part"); float deviation = hGrp->GetFloat("MeshDeviation",0.2); bool novertexnormals = hGrp->GetBool("NoPerVertexNormals",false); bool qualitynormals = hGrp->GetBool("QualityNormals",false); if (Deviation.getValue() != deviation) { Deviation.setValue(deviation); changed = true; } if (this->noPerVertexNormals != novertexnormals) { this->noPerVertexNormals = novertexnormals; changed = true; } if (this->qualityNormals != qualitynormals) { this->qualityNormals = qualitynormals; changed = true; } return changed; }
DockWindowItems* StdWorkbench::setupDockWindows() const { DockWindowItems* root = new DockWindowItems(); root->addDockWidget("Std_ToolBox", Qt::RightDockWidgetArea, false, false); //root->addDockWidget("Std_HelpView", Qt::RightDockWidgetArea, true, false); root->addDockWidget("Std_TreeView", Qt::LeftDockWidgetArea, true, false); root->addDockWidget("Std_PropertyView", Qt::LeftDockWidgetArea, true, false); root->addDockWidget("Std_SelectionView", Qt::LeftDockWidgetArea, false, false); root->addDockWidget("Std_CombiView", Qt::LeftDockWidgetArea, false, false); root->addDockWidget("Std_ReportView", Qt::BottomDockWidgetArea, true, true); root->addDockWidget("Std_PythonView", Qt::BottomDockWidgetArea, true, true); //Dagview through parameter. ParameterGrp::handle group = App::GetApplication().GetUserParameter(). GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("DAGView"); bool enabled = group->GetBool("Enabled", false); if (enabled) root->addDockWidget("Std_DAGView", Qt::RightDockWidgetArea, false, false); return root; }
void MacroManager::run(MacroType eType, const char *sName) { Q_UNUSED(eType); try { ParameterGrp::handle hGrp = App::GetApplication().GetUserParameter() .GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("OutputWindow"); PyObject* pyout = hGrp->GetBool("RedirectPythonOutput",true) ? new OutputStdout : 0; PyObject* pyerr = hGrp->GetBool("RedirectPythonErrors",true) ? new OutputStderr : 0; PythonRedirector std_out("stdout",pyout); PythonRedirector std_err("stderr",pyerr); //The given path name is expected to be Utf-8 Base::Interpreter().runFile(sName, this->localEnv); } catch (const Base::SystemExitException&) { throw; } catch (const Base::PyException& e) { e.ReportException(); } catch (const Base::Exception& e) { qWarning("%s",e.what()); } }
void Gui::GUIApplicationNativeEventAware::importSettings() { ParameterGrp::handle group = App::GetApplication().GetUserParameter().GetGroup("BaseApp")->GetGroup("Spaceball")->GetGroup("Motion"); // here I import settings from a dialog. For now they are set as is bool dominant = group->GetBool("Dominant"); // Is dominant checked bool flipXY = group->GetBool("FlipYZ");; // Is Flip X/Y checked float generalSensitivity = convertPrefToSensitivity(group->GetInt("GlobalSensitivity")); // array that has stored info about "Enabled" checkboxes of all axes bool enabled[6]; enabled[0] = group->GetBool("Translations", true) && group->GetBool("PanLREnable", true); enabled[1] = group->GetBool("Translations", true) && group->GetBool("PanUDEnable", true); enabled[2] = group->GetBool("Translations", true) && group->GetBool("ZoomEnable", true); enabled[3] = group->GetBool("Rotations", true) && group->GetBool("TiltEnable", true); enabled[4] = group->GetBool("Rotations", true) && group->GetBool("RollEnable", true); enabled[5] = group->GetBool("Rotations", true) && group->GetBool("SpinEnable", true); // array that has stored info about "Reversed" checkboxes of all axes bool reversed[6]; reversed[0] = group->GetBool("PanLRReverse"); reversed[1] = group->GetBool("PanUDReverse"); reversed[2] = group->GetBool("ZoomReverse"); reversed[3] = group->GetBool("TiltReverse"); reversed[4] = group->GetBool("RollReverse"); reversed[5] = group->GetBool("SpinReverse"); // array that has stored info about sliders - on each slider you need to use method DlgSpaceballSettings::GetValuefromSlider // which will convert <-50, 50> linear integers from slider to <0.1, 10> exponential floating values float sensitivity[6]; sensitivity[0] = convertPrefToSensitivity(group->GetInt("PanLRSensitivity")); sensitivity[1] = convertPrefToSensitivity(group->GetInt("PanUDSensitivity")); sensitivity[2] = convertPrefToSensitivity(group->GetInt("ZoomSensitivity")); sensitivity[3] = convertPrefToSensitivity(group->GetInt("TiltSensitivity")); sensitivity[4] = convertPrefToSensitivity(group->GetInt("RollSensitivity")); sensitivity[5] = convertPrefToSensitivity(group->GetInt("SpinSensitivity")); if (group->GetBool("Calibrate")) { group->SetInt("CalibrationX",motionDataArray[0]); group->SetInt("CalibrationY",motionDataArray[1]); group->SetInt("CalibrationZ",motionDataArray[2]); group->SetInt("CalibrationXr",motionDataArray[3]); group->SetInt("CalibrationYr",motionDataArray[4]); group->SetInt("CalibrationZr",motionDataArray[5]); group->RemoveBool("Calibrate"); return; } else { motionDataArray[0] = motionDataArray[0] - group->GetInt("CalibrationX"); motionDataArray[1] = motionDataArray[1] - group->GetInt("CalibrationY"); motionDataArray[2] = motionDataArray[2] - group->GetInt("CalibrationZ"); motionDataArray[3] = motionDataArray[3] - group->GetInt("CalibrationXr"); motionDataArray[4] = motionDataArray[4] - group->GetInt("CalibrationYr"); motionDataArray[5] = motionDataArray[5] - group->GetInt("CalibrationZr"); } int i; if (flipXY) { bool tempBool; float tempFloat; tempBool = enabled[1]; enabled[1] = enabled[2]; enabled[2] = tempBool; tempBool = enabled[4]; enabled[4] = enabled[5]; enabled[5] = tempBool; tempBool = reversed[1]; reversed[1] = reversed[2]; reversed[2] = tempBool; tempBool = reversed[4]; reversed[4] = reversed[5]; reversed[5] = tempBool; tempFloat = sensitivity[1]; sensitivity[1] = sensitivity[2]; sensitivity[2] = tempFloat; tempFloat = sensitivity[4]; sensitivity[4] = sensitivity[5]; sensitivity[5] = tempFloat; i = motionDataArray[1]; motionDataArray[1] = motionDataArray[2]; motionDataArray[2] = - i; i = motionDataArray[4]; motionDataArray[4] = motionDataArray[5]; motionDataArray[5] = - i; } if (dominant) { // if dominant is checked int max = 0; bool flag = false; for (i = 0; i < 6; ++i) { if (abs(motionDataArray[i]) > abs(max)) max = motionDataArray[i]; } for (i = 0; i < 6; ++i) { if ((motionDataArray[i] != max) || (flag)) { motionDataArray[i] = 0; } else if (motionDataArray[i] == max) { flag = true; } } } for (i = 0; i < 6; ++i) { if (motionDataArray[i] != 0) { if (enabled[i] == false) motionDataArray[i] = 0; else { if (reversed[i] == true) motionDataArray[i] = - motionDataArray[i]; motionDataArray[i] = (int)((float)(motionDataArray[i]) * sensitivity[i] * generalSensitivity); } } } }
void TaskCheckGeometryResults::goCheck() { Gui::WaitCursor wc; int selectedCount(0), checkedCount(0), invalidShapes(0); std::vector<Gui::SelectionSingleton::SelObj> selection = Gui::Selection().getSelection(); std::vector<Gui::SelectionSingleton::SelObj>::iterator it; ResultEntry *theRoot = new ResultEntry(); for (it = selection.begin(); it != selection.end(); ++it) { selectedCount++; Part::Feature *feature = dynamic_cast<Part::Feature *>((*it).pObject); if (!feature) continue; currentSeparator = Gui::Application::Instance->activeDocument()->getViewProvider(feature)->getRoot(); if (!currentSeparator) continue; TopoDS_Shape shape = feature->Shape.getValue(); QString baseName; QTextStream baseStream(&baseName); baseStream << (*it).DocName; baseStream << "." << (*it).FeatName; if (strlen((*it).SubName) > 0) { shape = feature->Shape.getShape().getSubShape((*it).SubName); baseStream << "." << (*it).SubName; } if (shape.IsNull()) continue; checkedCount++; checkedMap.Clear(); buildShapeContent(baseName, shape); BRepCheck_Analyzer shapeCheck(shape); if (!shapeCheck.IsValid()) { invalidShapes++; ResultEntry *entry = new ResultEntry(); entry->parent = theRoot; entry->shape = shape; entry->name = baseName; entry->type = shapeEnumToString(shape.ShapeType()); entry->error = QObject::tr("Invalid"); entry->viewProviderRoot = currentSeparator; entry->viewProviderRoot->ref(); goSetupResultBoundingBox(entry); theRoot->children.push_back(entry); recursiveCheck(shapeCheck, shape, entry); continue; //don't run BOPAlgo_ArgumentAnalyzer if BRepCheck_Analyzer finds something. } else { //BOPAlgo_ArgumentAnalyzer can be really slow! //so only run it when the shape seems valid to BRepCheck_Analyzer And //when the option is set. ParameterGrp::handle group = App::GetApplication().GetUserParameter(). GetGroup("BaseApp")->GetGroup("Preferences")->GetGroup("Mod")->GetGroup("Part")->GetGroup("CheckGeometry"); bool runSignal = group->GetBool("RunBOPCheck", false); //for now, user has edit the config file to turn it on. //following line ensures that the config file has the setting. group->SetBool("RunBOPCheck", runSignal); if (runSignal) invalidShapes += goBOPSingleCheck(shape, theRoot, baseName); } } model->setResults(theRoot); treeView->expandAll(); treeView->header()->resizeSections(QHeaderView::ResizeToContents); QString aMessage; QTextStream aStream(&aMessage); aStream << checkedCount << " processed out of " << selectedCount << " selected\n"; aStream << invalidShapes << " invalid shapes."; message->setText(aMessage); Gui::Selection().clearSelection(); }
void CmdSketcherToggleConstruction::activated(int iMsg) { Q_UNUSED(iMsg); // Option A: nothing is selected change creation mode from/to construction if(Gui::Selection().countObjectsOfType(Sketcher::SketchObject::getClassTypeId()) == 0){ Gui::CommandManager &rcCmdMgr = Gui::Application::Instance->commandManager(); if (geometryCreationMode == Construction) { geometryCreationMode = Normal; } else { geometryCreationMode = Construction; } rcCmdMgr.updateCommands("ToggleConstruction", static_cast<int>(geometryCreationMode)); } else // there was a selection, so operate in toggle mode. { // get the selection std::vector<Gui::SelectionObject> selection = getSelection().getSelectionEx(); // only one sketch with its subelements are allowed to be selected if (selection.size() != 1) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), QObject::tr("Select edge(s) from the sketch.")); return; } // get the needed lists and objects const std::vector<std::string> &SubNames = selection[0].getSubNames(); if (SubNames.empty()) { QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong selection"), QObject::tr("Select edge(s) from the sketch.")); return; } // undo command open openCommand("Toggle draft from/to draft"); // go through the selected subelements for (std::vector<std::string>::const_iterator it=SubNames.begin();it!=SubNames.end();++it){ // only handle edges if (it->size() > 4 && it->substr(0,4) == "Edge") { int GeoId = std::atoi(it->substr(4,4000).c_str()) - 1; // issue the actual commands to toggle doCommand(Doc,"App.ActiveDocument.%s.toggleConstruction(%d) ",selection[0].getFeatName(),GeoId); } } // finish the transaction and update commitCommand(); ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/Mod/Sketcher"); bool autoRecompute = hGrp->GetBool("AutoRecompute",false); if(autoRecompute) // toggling does not modify the DoF of the solver, however it may affect features depending on the sketch Gui::Command::updateActive(); // clear the selection (convenience) getSelection().clearSelection(); } }
void StdCmdDownloadOnlineHelp::activated(int iMsg) { if (!wget->isDownloading()) { ParameterGrp::handle hGrp = App::GetApplication().GetUserParameter().GetGroup("BaseApp"); hGrp = hGrp->GetGroup("Preferences")->GetGroup("OnlineHelp"); std::string url = hGrp->GetASCII("DownloadURL", "www.freecadweb.org/wiki/"); std::string prx = hGrp->GetASCII("ProxyText", ""); bool bUseProxy = hGrp->GetBool ("UseProxy", false); bool bAuthor = hGrp->GetBool ("Authorize", false); if (bUseProxy) { QString username = QString::null; QString password = QString::null; if (bAuthor) { QDialog dlg(getMainWindow()); dlg.setModal(true); Ui_DlgAuthorization ui; ui.setupUi(&dlg); if (dlg.exec() == QDialog::Accepted) { username = ui.username->text(); password = ui.password->text(); } } wget->setProxy(QString::fromAscii(prx.c_str()), username, password); } int loop=3; bool canStart = false; // set output directory QString path = QString::fromUtf8(App::GetApplication().GetHomePath()); path += QString::fromAscii("/doc/"); ParameterGrp::handle hURLGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/OnlineHelp"); path = QString::fromUtf8(hURLGrp->GetASCII( "DownloadLocation", path.toAscii() ).c_str()); while (loop > 0) { loop--; QFileInfo fi( path); if (!fi.exists()) { if (QMessageBox::critical(getMainWindow(), tr("Non-existing directory"), tr("The directory '%1' does not exist.\n\n" "Do you want to specify an existing directory?").arg(fi.filePath()), QMessageBox::Yes|QMessageBox::Default, QMessageBox::No|QMessageBox::Escape) != QMessageBox::Yes) { // exit the command return; } else { path = FileDialog::getExistingDirectory(); if ( path.isEmpty() ) return; } } if (!fi.permission( QFile::WriteUser)) { if (QMessageBox::critical(getMainWindow(), tr("Missing permission"), tr("You don't have write permission to '%1'\n\n" "Do you want to specify another directory?").arg(fi.filePath()), QMessageBox::Yes|QMessageBox::Default, QMessageBox::No|QMessageBox::Escape) != QMessageBox::Yes) { // exit the command return; } else { path = FileDialog::getExistingDirectory(); if ( path.isEmpty() ) return; } } else { wget->setOutputDirectory( path ); canStart = true; break; } } if (canStart) { bool ok = wget->startDownload(QString::fromAscii(url.c_str())); if ( ok == false ) Base::Console().Error("The tool 'wget' couldn't be found. Please check your installation."); else if ( wget->isDownloading() && _pcAction ) _pcAction->setText(tr("Stop downloading")); } } else // kill the process now { wget->abort(); } }