diff --git a/modules/base/pymod/wrap_base.cc b/modules/base/pymod/wrap_base.cc index 3fb9b29a665505987d19600d6a6e81c17feb0b2b..20a6668cbedd99e9137d31c51ccf6de0ac2c515e 100644 --- a/modules/base/pymod/wrap_base.cc +++ b/modules/base/pymod/wrap_base.cc @@ -22,6 +22,7 @@ #include <ost/export_helper/vector.hh> #include <ost/base.hh> #include <ost/platform.hh> +#include <ost/message.hh> using namespace boost::python; @@ -30,8 +31,16 @@ void export_GenericProp(); void export_Range(); void export_Units(); +// exception translator +void translator(const ost::Error& x) { + PyErr_SetString(PyExc_Exception, x.what() ); +} + + BOOST_PYTHON_MODULE(_base) { + register_exception_translator<ost::Error>(&translator); + def("SetPrefixPath", &ost::SetPrefixPath); def("GetPrefixPath", &ost::GetPrefixPath); def("GetSharedDataPath", &ost::GetSharedDataPath); diff --git a/modules/base/src/message.cc b/modules/base/src/message.cc index 7a53deb15384cf3648bf203a7815076d01d485ce..401ff1fb8755fb39fa322bf503e2c4f69677c733 100644 --- a/modules/base/src/message.cc +++ b/modules/base/src/message.cc @@ -1,17 +1,43 @@ +//------------------------------------------------------------------------------ +// This file is part of the OpenStructure project <www.openstructure.org> +// +// Copyright (C) 2008-2010 by the OpenStructure authors +// Copyright (C) 2003-2010 by the IPLT authors +// +// This library is free software; you can redistribute it and/or modify it under +// the terms of the GNU Lesser General Public License as published by the Free +// Software Foundation; either version 3.0 of the License, or (at your option) +// any later version. +// This library is distributed in the hope that it will be useful, but WITHOUT +// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more +// details. +// +// You should have received a copy of the GNU Lesser General Public License +// along with this library; if not, write to the Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +//------------------------------------------------------------------------------ +/* + messages and logs + + Authors: Ansgar Philippsen, Andteas Schenk +*/ + #include "message.hh" namespace ost { - -Message::Message(const String& mesg,const String& prefix): - _prefix(prefix), _mesg(mesg) {} -Message::~Message() throw() {} +Error::Error(const String& m): + mesg_(m) +{} -const char* Message::what() const throw() { - String msg = _prefix + ": " +_mesg; - return msg.c_str(); +Error::~Error() throw() +{ } -Error::Error(const String& m): Message(m,"Error") {} +const char* Error::what() const throw() +{ + return mesg_.c_str(); +} } \ No newline at end of file diff --git a/modules/base/src/message.hh b/modules/base/src/message.hh index 6b51a9891709800d0ff749ada92239e5c4d2a46b..aca6387f6be79fbc618acdf2454eb5468584d5c0 100644 --- a/modules/base/src/message.hh +++ b/modules/base/src/message.hh @@ -20,7 +20,7 @@ /* messages and logs - Author: Ansgar Philippsen + Authors: Ansgar Philippsen, Andteas Schenk */ #ifndef OST_MESSAGE_HH @@ -31,18 +31,14 @@ namespace ost { -struct DLLEXPORT Message: public std::exception { - Message(const String& mesg,const String& prefix=""); - virtual ~Message() throw(); - // exception interface - virtual const char* what() const throw(); - - String _prefix; - String _mesg; -}; -struct DLLEXPORT Error: public Message { +class DLLEXPORT Error: virtual public std::exception { +public: Error(const String& m); + ~Error() throw(); + virtual const char* what() const throw(); +protected: + String mesg_; }; } // namespace diff --git a/modules/gui/pymod/scene/immutable_gradient_info_handler.py b/modules/gui/pymod/scene/immutable_gradient_info_handler.py index 6eb2b75450e210c3f92384ce0cee24ba55171c53..ddf5de046f2b7980b6691d9f938dcf7a85f1777f 100644 --- a/modules/gui/pymod/scene/immutable_gradient_info_handler.py +++ b/modules/gui/pymod/scene/immutable_gradient_info_handler.py @@ -36,10 +36,7 @@ class ImmutableGradientInfoHandler(): self.root_ = self.handle_.Root() - try: - self.gradients_ = self.root_.GetGroup(self.GRADIENTS_GROUP_NAME) - except UserWarning: - self.gradients_ = self.root_.CreateGroup(self.GRADIENTS_GROUP_NAME) + self.gradients_ = self.root_.RetrieveGroup(self.GRADIENTS_GROUP_NAME) def GetGfxGradient(self, name): diff --git a/modules/gui/pymod/scene/immutable_info_handler.py b/modules/gui/pymod/scene/immutable_info_handler.py index c75c14f5ceca7b64b5683ef555b91a729a28891d..4c2c0332d9c6fb4e20c37d7073872d005779cf1d 100644 --- a/modules/gui/pymod/scene/immutable_info_handler.py +++ b/modules/gui/pymod/scene/immutable_info_handler.py @@ -36,10 +36,7 @@ class ImmutableInfoHandler(): self.root_ = self.handle_.Root() - try: - self.gradients_ = self.root_.GetGroup(self.GRADIENTS_GROUP_NAME) - except UserWarning: - self.gradients_ = self.root_.CreateGroup(self.GRADIENTS_GROUP_NAME) + self.gradients_ = self.root_.RetrieveGroup(self.GRADIENTS_GROUP_NAME) def GetGfxGradient(self, name): diff --git a/modules/gui/pymod/scene/immutable_loader_info_handler.py b/modules/gui/pymod/scene/immutable_loader_info_handler.py index 80e906ea851722100e87b45e7800c48bde3aed01..03ada4036488ca5cf6dfd16ee653d8c4945fc0ed 100644 --- a/modules/gui/pymod/scene/immutable_loader_info_handler.py +++ b/modules/gui/pymod/scene/immutable_loader_info_handler.py @@ -36,10 +36,7 @@ class ImmutableLoaderInfoHandler(): self.root_ = self.handle_.Root() - try: - self.loaders_ = self.root_.GetGroup(ImmutableLoaderInfoHandler.LOADERS_GROUP_NAME) - except UserWarning: - self.loaders_ = self.root_.CreateGroup(ImmutableLoaderInfoHandler.LOADERS_GROUP_NAME) + self.loaders_ = self.root_.RetrieveGroup(ImmutableLoaderInfoHandler.LOADERS_GROUP_NAME) def GetLoader(self, name): diff --git a/modules/gui/pymod/scene/immutable_preset_info_handler.py b/modules/gui/pymod/scene/immutable_preset_info_handler.py index 8fc24539c200748637ad8abcc4c666b77807b2f2..1ae6d34b573cda9243a5fb34b558c66091c85743 100644 --- a/modules/gui/pymod/scene/immutable_preset_info_handler.py +++ b/modules/gui/pymod/scene/immutable_preset_info_handler.py @@ -36,10 +36,7 @@ class ImmutablePresetInfoHandler(): self.root_ = self.handle_.Root() - try: - self.presets_ = self.root_.GetGroup(ImmutablePresetInfoHandler.PRESETS_GROUP_NAME) - except UserWarning: - self.presets_ = self.root_.CreateGroup(ImmutablePresetInfoHandler.PRESETS_GROUP_NAME) + self.presets_ = self.root_.RetrieveGroup(ImmutablePresetInfoHandler.PRESETS_GROUP_NAME) def GetPreset(self, name): diff --git a/modules/gui/src/file_loader.cc b/modules/gui/src/file_loader.cc index bf510dc37bb7b487fd9194cbac711f2153ea84ba..d7061b3ebf3e30e67e06e12c01c26d7acee0b3b6 100644 --- a/modules/gui/src/file_loader.cc +++ b/modules/gui/src/file_loader.cc @@ -127,7 +127,7 @@ void FileLoader::AddToScene(const QString& filename, gfx::GfxObjP obj) gfx::Scene::Instance().SetCenter(obj->GetCenter()); } } - catch (Message m) { + catch (Error m) { FileLoader::HandleError(m, GFX_ADD, filename, obj); } } @@ -189,11 +189,11 @@ std::vector<String> FileLoader::GetSiteLoaderIdents() return loader_manager_->GetSiteLoaderIdents(); } -void FileLoader::HandleError(Message m, ErrorType type, const QString& filename, gfx::GfxObjP obj) +void FileLoader::HandleError(const Error& e, ErrorType type, const QString& filename, gfx::GfxObjP obj) { if(type==GFX_ADD || type==GFX_MULTIPLE_ADD){ QMessageBox message_box(QMessageBox::Warning, - "Error while adding Node to Scene", m._mesg.c_str()); + "Error while adding Node to Scene", e.what()); if(type==GFX_ADD){ message_box.setStandardButtons( QMessageBox::Yes | QMessageBox::Cancel); message_box.setButtonText(QMessageBox::Yes, "Reload"); @@ -212,7 +212,7 @@ void FileLoader::HandleError(Message m, ErrorType type, const QString& filename, } else if(type==IO_LOADING){ QMessageBox message_box(QMessageBox::Warning, - "Error while loading file", m._mesg.c_str()); + "Error while loading file", e.what()); message_box.setStandardButtons( QMessageBox::Yes | QMessageBox::Cancel); message_box.setButtonText(QMessageBox::Yes, "Chose format"); int value = message_box.exec(); @@ -224,7 +224,7 @@ void FileLoader::HandleError(Message m, ErrorType type, const QString& filename, } else if(type==INFO){ QMessageBox message_box(QMessageBox::Information, - "Information", m._mesg.c_str()); + "Information", e.what()); message_box.setStandardButtons( QMessageBox::Ok); message_box.exec(); } @@ -395,14 +395,14 @@ void FileLoader::LoadPDB(const QString& filename, const QString& selection) } QFileInfo file_info(filename); if(entities.empty()){ - FileLoader::HandleError(Message(QString("No entities found in file: "+ filename).toStdString()),INFO,filename); + FileLoader::HandleError(Error(QString("No entities found in file: "+ filename).toStdString()),INFO,filename); }else if (entities.size()==1){ gfx::EntityP gfx_ent(new gfx::Entity(file_info.baseName().toStdString(),entities.first(),mol::Query(selection.toStdString()))); try{ gfx::Scene::Instance().Add(gfx_ent); } - catch (Message m) { - HandleError(m, GFX_ADD, filename, gfx_ent); + catch (Error e) { + HandleError(e, GFX_ADD, filename, gfx_ent); } if (gfx::Scene::Instance().GetRootNode()->GetChildCount()==1) { gfx::Scene::Instance().SetCenter(gfx_ent->GetCenter()); @@ -414,8 +414,8 @@ void FileLoader::LoadPDB(const QString& filename, const QString& selection) gfx::Scene::Instance().Add(gfx_ent); } } - catch (Message m) { - FileLoader::HandleError(m,GFX_MULTIPLE_ADD,filename); + catch (Error e) { + FileLoader::HandleError(e,GFX_MULTIPLE_ADD,filename); } } } diff --git a/modules/gui/src/file_loader.hh b/modules/gui/src/file_loader.hh index ea2d63e2d8e04eba39eddbff64dae637438fe77c..26d77cd49d98b34ee4b40655089a451eb6a7a4e4 100644 --- a/modules/gui/src/file_loader.hh +++ b/modules/gui/src/file_loader.hh @@ -60,7 +60,7 @@ private: static void RunScript(const QString& filename); static void LoadPDB(const QString& filename, const QString& selection=QString()); static void AddToScene(const QString& filename, gfx::GfxObjP obj); - static void HandleError(Message m, ErrorType type, const QString& filename, gfx::GfxObjP obj=gfx::GfxObjP()); + static void HandleError(const Error& e, ErrorType type, const QString& filename, gfx::GfxObjP obj=gfx::GfxObjP()); static gfx::GfxObjP NoHandlerFound(const QString& filename); virtual ~FileLoader(); diff --git a/modules/img/base/pymod/wrap_img.cc b/modules/img/base/pymod/wrap_img.cc index 20576672d9578fbb56341c5a458bde8138835005..e98a158530546283f4e60e6c6bceb496a62222da 100644 --- a/modules/img/base/pymod/wrap_img.cc +++ b/modules/img/base/pymod/wrap_img.cc @@ -54,18 +54,9 @@ void export_Phase(); void export_Progress(); void export_Map(); -// exception translator -void translator(const ost::Message& x) { - PyErr_SetString(PyExc_UserWarning, x.what() ); -} - // actual module definitions BOOST_PYTHON_MODULE(_img) { - // exception translators - register_exception_translator<ost::Message>(&translator); - register_exception_translator<ost::Error>(&translator); - export_Data(); export_DataAlgorithm(); export_Extent(); diff --git a/modules/info/pymod/wrap_info.cc b/modules/info/pymod/wrap_info.cc index 23659e918650698bf5de7c177dedf8aa103a59e7..0f80c9522eddb2362449998df8ccb156175f2a5e 100644 --- a/modules/info/pymod/wrap_info.cc +++ b/modules/info/pymod/wrap_info.cc @@ -36,9 +36,6 @@ using namespace ost::info; namespace { -void info_error_translator(const InfoError& x) { - PyErr_SetString(PyExc_UserWarning, x.what()); -} InfoHandle (*CreateInfoPtr1)()=CreateInfo; InfoHandle (*CreateInfoPtr2)(const String&)=CreateInfo; @@ -160,7 +157,6 @@ BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(retrieveitem_overloads, RetrieveItem, 1, BOOST_PYTHON_MODULE(_info) { - register_exception_translator<InfoError>(&info_error_translator); enum_<Type>("ItemType") .value("STRING",IT_STRING)