From dd1044a5e8750c0bb88e1e1cb890a9826d3d01f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20Tr=C3=B6ger?= Date: Thu, 24 Oct 2013 17:46:28 +0200 Subject: [PATCH] slightly better error reporting from app to gui --- src/Mod/Assembly/App/ItemAssembly.cpp | 34 +++++++++---------- src/Mod/Assembly/App/ItemAssembly.h | 3 ++ src/Mod/Assembly/Gui/ViewProvider.cpp | 2 +- src/Mod/Assembly/Gui/ViewProvider.h | 1 - src/Mod/Assembly/Gui/ViewProviderAssembly.cpp | 2 ++ src/Mod/Assembly/Gui/ViewProviderAssembly.h | 1 - 6 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/Mod/Assembly/App/ItemAssembly.cpp b/src/Mod/Assembly/App/ItemAssembly.cpp index 5ef714b33..6fcd123f3 100644 --- a/src/Mod/Assembly/App/ItemAssembly.cpp +++ b/src/Mod/Assembly/App/ItemAssembly.cpp @@ -74,26 +74,24 @@ App::DocumentObjectExecReturn* ItemAssembly::execute(void) { finish(boost::shared_ptr()); } - catch(dcm::solving_error& e) { - Base::Console().Error("Solver failed with error %i: %s\n", - *boost::get_error_info(e), - boost::get_error_info(e)->c_str()); + catch + (boost::exception& e) { + message.clear(); + message << "Solver exception " << *boost::get_error_info(e) + << "raised: " << boost::get_error_info(e)->c_str() << std::endl; + throw Base::Exception(message.str().c_str()); } - catch(dcm::creation_error& e) { - Base::Console().Error("Creation failed with error %i: %s\n", - *boost::get_error_info(e), - boost::get_error_info(e)->c_str()); + catch + (std::exception& e) { + message.clear(); + message << "Exception raised in assembly solver: " << e.what() << std::endl; + throw Base::Exception(message.str().c_str()); } - catch(boost::exception& e) { - Base::Console().Error("Solver exception raised: %i: %s\n", - *boost::get_error_info(e), - boost::get_error_info(e)->c_str()); - } - catch(std::exception& e) { - Base::Console().Error("Exception raised in assembly solver: %s\n", e.what()); - } - catch(...) { - Base::Console().Error("Unknown Exception raised in assembly solver during execution\n"); + catch + (...) { + message.clear(); + message << "Unknown Exception raised in assembly solver during execution" << std::endl; + throw Base::Exception(message.str().c_str()); }; this->touch(); return App::DocumentObject::StdReturn; diff --git a/src/Mod/Assembly/App/ItemAssembly.h b/src/Mod/Assembly/App/ItemAssembly.h index 37912d0fe..d0b6e9f3f 100644 --- a/src/Mod/Assembly/App/ItemAssembly.h +++ b/src/Mod/Assembly/App/ItemAssembly.h @@ -77,6 +77,9 @@ public: boost::shared_ptr m_solver; Base::Placement m_downstream_placement; + +private: + std::stringstream message; }; } //namespace Assembly diff --git a/src/Mod/Assembly/Gui/ViewProvider.cpp b/src/Mod/Assembly/Gui/ViewProvider.cpp index 5807f0493..892c0ddea 100644 --- a/src/Mod/Assembly/Gui/ViewProvider.cpp +++ b/src/Mod/Assembly/Gui/ViewProvider.cpp @@ -28,6 +28,7 @@ #endif #include "ViewProvider.h" +#include #include //#include @@ -54,4 +55,3 @@ bool ViewProviderItem::doubleClicked(void) return true; } - diff --git a/src/Mod/Assembly/Gui/ViewProvider.h b/src/Mod/Assembly/Gui/ViewProvider.h index 7cc1a3a7f..d370ac55c 100644 --- a/src/Mod/Assembly/Gui/ViewProvider.h +++ b/src/Mod/Assembly/Gui/ViewProvider.h @@ -45,7 +45,6 @@ public: // returns the root node where the children gets collected(3D) virtual SoGroup* getChildRoot(void) const {return pcChildren;} - virtual bool doubleClicked(void); private: /// group node for all children collected through claimChildren3D(), reused by all Assembly ViewProviders diff --git a/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp b/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp index 301e569d6..55d15ac5b 100644 --- a/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp +++ b/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp @@ -25,11 +25,13 @@ #ifndef _PreComp_ # include +#include #endif #include "ViewProviderAssembly.h" #include #include +#include #include diff --git a/src/Mod/Assembly/Gui/ViewProviderAssembly.h b/src/Mod/Assembly/Gui/ViewProviderAssembly.h index 1e30ef327..93462091b 100644 --- a/src/Mod/Assembly/Gui/ViewProviderAssembly.h +++ b/src/Mod/Assembly/Gui/ViewProviderAssembly.h @@ -53,7 +53,6 @@ public: virtual void setupContextMenu(QMenu* menu, QObject* receiver, const char* member); virtual bool setEdit(int ModNum); - };