diff --git a/src/plugins/debugger/debuggeragents.cpp b/src/plugins/debugger/debuggeragents.cpp index d29b5e506fcb4d88b2e4b3347d8f3b39060adf79..102be15cb7f373339eb26e60470ded51b248075c 100644 --- a/src/plugins/debugger/debuggeragents.cpp +++ b/src/plugins/debugger/debuggeragents.cpp @@ -44,6 +44,8 @@ #include <utils/qtcassert.h> #include <QtCore/QDebug> + +#include <QtGui/QMessageBox> #include <QtGui/QPlainTextEdit> #include <QtGui/QTextCursor> #include <QtGui/QSyntaxHighlighter> @@ -68,13 +70,13 @@ namespace Internal { */ MemoryViewAgent::MemoryViewAgent(DebuggerManager *manager, quint64 addr) - : QObject(manager), m_engine(manager->currentEngine()) + : QObject(manager), m_engine(manager->currentEngine()), m_manager(manager) { init(addr); } MemoryViewAgent::MemoryViewAgent(DebuggerManager *manager, const QString &addr) - : QObject(manager), m_engine(manager->currentEngine()) + : QObject(manager), m_engine(manager->currentEngine()), m_manager(manager) { bool ok = true; init(addr.toULongLong(&ok, 0)); @@ -94,11 +96,19 @@ void MemoryViewAgent::init(quint64 addr) m_editor = editorManager->openEditorWithContents( Core::Constants::K_DEFAULT_BINARY_EDITOR, &titlePattern); - connect(m_editor->widget(), SIGNAL(lazyDataRequested(quint64,bool)), - this, SLOT(fetchLazyData(quint64,bool))); - editorManager->activateEditor(m_editor); - QMetaObject::invokeMethod(m_editor->widget(), "setLazyData", - Q_ARG(quint64, addr), Q_ARG(int, 1024 * 1024), Q_ARG(int, BinBlockSize)); + if (m_editor) { + connect(m_editor->widget(), SIGNAL(lazyDataRequested(quint64,bool)), + this, SLOT(fetchLazyData(quint64,bool))); + editorManager->activateEditor(m_editor); + QMetaObject::invokeMethod(m_editor->widget(), "setLazyData", + Q_ARG(quint64, addr), Q_ARG(int, 1024 * 1024), Q_ARG(int, BinBlockSize)); + } else { + m_manager->showMessageBox(QMessageBox::Warning, + tr("No memory viewer available"), + tr("The memory contents cannot be shown as no viewer plugin not " + "the BinEditor plugin could be loaded.")); + deleteLater(); + } } void MemoryViewAgent::fetchLazyData(quint64 block, bool sync) diff --git a/src/plugins/debugger/debuggeragents.h b/src/plugins/debugger/debuggeragents.h index ff7e4879aa6c52fcee8ecc9d4969a7542c3ac796..f0888c6b92f8730b24606d741fd290fea224c90a 100644 --- a/src/plugins/debugger/debuggeragents.h +++ b/src/plugins/debugger/debuggeragents.h @@ -70,6 +70,7 @@ private: QPointer<IDebuggerEngine> m_engine; QPointer<Core::IEditor> m_editor; + QPointer<DebuggerManager> m_manager; };