MCPcopy Create free account
hub / github.com/FreeCAD/FreeCAD / sActivateWorkbenchHandler

Method sActivateWorkbenchHandler

src/Gui/ApplicationPy.cpp:1308–1351  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1306}
1307
1308PyObject* ApplicationPy::sActivateWorkbenchHandler(PyObject* /*self*/, PyObject* args)
1309{
1310 char* psKey = nullptr;
1311 if (!PyArg_ParseTuple(args, "s", &psKey)) {
1312 return nullptr;
1313 }
1314
1315 requirePythonMainThread("FreeCADGui.activateWorkbench");
1316
1317 // search for workbench handler from the dictionary
1318 PyObject* pcWorkbench = PyDict_GetItemString(Application::Instance->_pcWorkbenchDictionary, psKey);
1319 if (!pcWorkbench) {
1320 PyErr_Format(PyExc_KeyError, "No such workbench '%s'", psKey);
1321 return nullptr;
1322 }
1323
1324 try {
1325 bool ok = Application::Instance->activateWorkbench(psKey);
1326 return Py::new_reference_to(Py::Boolean(ok));
1327 }
1328 catch (const Base::Exception& e) {
1329 std::stringstream err;
1330 err << psKey << ": " << e.what();
1331 PyErr_SetString(e.getPyExceptionType(), err.str().c_str());
1332 return nullptr;
1333 }
1334 catch (const XERCES_CPP_NAMESPACE::TranscodingException& e) {
1335 std::stringstream err;
1336 char* pMsg = XERCES_CPP_NAMESPACE::XMLString::transcode(e.getMessage());
1337 err << "Transcoding exception in Xerces-c:\n\n"
1338 << "Transcoding exception raised in activateWorkbench.\n"
1339 << "Check if your user configuration file is valid.\n"
1340 << " Exception message:" << pMsg;
1341 XERCES_CPP_NAMESPACE::XMLString::release(&pMsg);
1342 PyErr_SetString(PyExc_RuntimeError, err.str().c_str());
1343 return nullptr;
1344 }
1345 catch (...) {
1346 std::stringstream err;
1347 err << "Unknown C++ exception raised in activateWorkbench('" << psKey << "')";
1348 PyErr_SetString(Base::PyExc_FC_GeneralError, err.str().c_str());
1349 return nullptr;
1350 }
1351}
1352
1353PyObject* ApplicationPy::sAddWorkbenchHandler(PyObject* /*self*/, PyObject* args)
1354{

Callers

nothing calls this directly

Calls 8

requirePythonMainThreadFunction · 0.85
new_reference_toFunction · 0.85
getPyExceptionTypeMethod · 0.80
activateWorkbenchMethod · 0.45
whatMethod · 0.45
c_strMethod · 0.45
strMethod · 0.45
getMessageMethod · 0.45

Tested by

no test coverage detected