From 65a30b06af5f66205a1fe49720c6d529f88bc3f2 Mon Sep 17 00:00:00 2001 From: Lasse Holmstedt <lasse.holmstedt@nokia.com> Date: Mon, 12 Apr 2010 12:29:13 +0200 Subject: [PATCH] Some more fixes to exception handling in bauhaus Reviewed-by: thomas hartmann --- src/plugins/qmldesigner/core/exceptions/exception.cpp | 2 +- .../core/exceptions/invalidargumentexception.cpp | 10 ++++++++++ .../core/include/invalidargumentexception.h | 1 + src/plugins/qmldesigner/core/model/model.cpp | 4 ++-- src/plugins/qmldesigner/designmodewidget.cpp | 4 +++- 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/plugins/qmldesigner/core/exceptions/exception.cpp b/src/plugins/qmldesigner/core/exceptions/exception.cpp index b4c89482db5..976e1bf2049 100644 --- a/src/plugins/qmldesigner/core/exceptions/exception.cpp +++ b/src/plugins/qmldesigner/core/exceptions/exception.cpp @@ -135,7 +135,7 @@ QString Exception::backTrace() const */ QString Exception::description() const { - return QString(); + return QString("file: %1, function: %2, line: %3").arg(m_file, m_function, QString::number(m_line)); } /*! diff --git a/src/plugins/qmldesigner/core/exceptions/invalidargumentexception.cpp b/src/plugins/qmldesigner/core/exceptions/invalidargumentexception.cpp index 27f907fbf26..59c97a418c5 100644 --- a/src/plugins/qmldesigner/core/exceptions/invalidargumentexception.cpp +++ b/src/plugins/qmldesigner/core/exceptions/invalidargumentexception.cpp @@ -28,6 +28,7 @@ **************************************************************************/ #include "invalidargumentexception.h" +#include <QString> /*! \class QmlDesigner::InvalidArgumentException @@ -50,6 +51,15 @@ InvalidArgumentException::InvalidArgumentException(int line, const QString &argument) : Exception(line, function, file), m_argument(argument) { + +} + +QString InvalidArgumentException::description() const +{ + if (function() == "createNode") + return QString(QObject::tr("Failed to create item of type %1")).arg(m_argument); + + return Exception::description(); } /*! diff --git a/src/plugins/qmldesigner/core/include/invalidargumentexception.h b/src/plugins/qmldesigner/core/include/invalidargumentexception.h index 108c31c393a..c6661509cb0 100644 --- a/src/plugins/qmldesigner/core/include/invalidargumentexception.h +++ b/src/plugins/qmldesigner/core/include/invalidargumentexception.h @@ -45,6 +45,7 @@ public: QString type() const; QString argument() const; + QString description() const; private: const QString m_argument; diff --git a/src/plugins/qmldesigner/core/model/model.cpp b/src/plugins/qmldesigner/core/model/model.cpp index d109030d85e..d3f6c2057e6 100644 --- a/src/plugins/qmldesigner/core/model/model.cpp +++ b/src/plugins/qmldesigner/core/model/model.cpp @@ -169,9 +169,9 @@ InternalNode::Pointer ModelPrivate::createNode(const QString &typeString, const QList<QPair<QString, QVariant> > &propertyList) { if (typeString.isEmpty()) - throw InvalidArgumentException(__LINE__, __FUNCTION__, __FILE__, "typeString"); + throw InvalidArgumentException(__LINE__, __FUNCTION__, __FILE__, tr("invalid type")); if (!m_metaInfo.nodeMetaInfo(typeString).isValid()) - throw InvalidArgumentException(__LINE__, __FUNCTION__, __FILE__, "typeString"); + throw InvalidArgumentException(__LINE__, __FUNCTION__, __FILE__, typeString); InternalNode::Pointer newInternalNodePointer = InternalNode::create(typeString, majorVersion, minorVersion); diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp index e9abc83860b..69c87605361 100644 --- a/src/plugins/qmldesigner/designmodewidget.cpp +++ b/src/plugins/qmldesigner/designmodewidget.cpp @@ -106,8 +106,10 @@ void DocumentWarningWidget::setError(const RewriterView::Error &error) QString str; if (error.type() == RewriterView::Error::ParseError) { str = tr("%3 (%1:%2)").arg(QString::number(error.line()), QString::number(error.column()), error.description()); + m_goToError->show(); } else if (error.type() == RewriterView::Error::InternalError) { - str = tr("Internal error (%1)") .arg(error.description()); + str = tr("Internal error (%1)").arg(error.description()); + m_goToError->hide(); } m_errorMessage->setText(str); -- GitLab