From af84f09190f5f333fac0840e21edf3b67ed89d1d Mon Sep 17 00:00:00 2001 From: andreas <andreas@5a81b35b-ba03-0410-adc8-b2c5c5119f08> Date: Wed, 15 Sep 2010 22:05:09 +0000 Subject: [PATCH] removed ost::Message / removed prefix from ost::Error / added exception translation for ost:error to base and removed exception translations in img and info modules / removed some try:/except: clauses in gui pymod scene scripts by using InfoGroup::RetrieveGroup git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@2703 5a81b35b-ba03-0410-adc8-b2c5c5119f08 --- modules/base/pymod/wrap_base.cc | 9 ++++ modules/base/src/message.cc | 42 +++++++++++++++---- modules/base/src/message.hh | 18 ++++---- .../scene/immutable_gradient_info_handler.py | 5 +-- .../gui/pymod/scene/immutable_info_handler.py | 5 +-- .../scene/immutable_loader_info_handler.py | 5 +-- .../scene/immutable_preset_info_handler.py | 5 +-- modules/gui/src/file_loader.cc | 20 ++++----- modules/gui/src/file_loader.hh | 2 +- modules/img/base/pymod/wrap_img.cc | 9 ---- modules/info/pymod/wrap_info.cc | 4 -- 11 files changed, 65 insertions(+), 59 deletions(-) diff --git a/modules/base/pymod/wrap_base.cc b/modules/base/pymod/wrap_base.cc index 3fb9b29a6..20a6668cb 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 7a53deb15..401ff1fb8 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 6b51a9891..aca6387f6 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 6eb2b7545..ddf5de046 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 c75c14f5c..4c2c0332d 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 80e906ea8..03ada4036 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 8fc24539c..1ae6d34b5 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 bf510dc37..d7061b3eb 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 ea2d63e2d..26d77cd49 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 20576672d..e98a15853 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 23659e918..0f80c9522 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) -- GitLab