Commit a77353b4 authored by hjk's avatar hjk

debugger: move DebuggerMainWindow to debuggermainwindow.{h,cpp}

parent 05f6151d
......@@ -28,12 +28,12 @@ HEADERS += breakhandler.h \
debuggerconstants.h \
debuggerdialogs.h \
debuggerengine.h \
debuggermainwindow.h \
debuggerplugin.h \
debuggerrunner.h \
debuggerstreamops.h \
debuggerstringutils.h \
debuggertooltip.h \
debuggeruiswitcher.h \
disassemblerlines.h \
logwindow.h \
moduleshandler.h \
......@@ -68,11 +68,11 @@ SOURCES += breakhandler.cpp \
debuggeragents.cpp \
debuggerdialogs.cpp \
debuggerengine.cpp \
debuggermainwindow.cpp \
debuggerplugin.cpp \
debuggerrunner.cpp \
debuggerstreamops.cpp \
debuggertooltip.cpp \
debuggeruiswitcher.cpp \
disassemblerlines.cpp \
logwindow.cpp \
moduleshandler.cpp \
......
This diff is collapsed.
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** Commercial Usage
**
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** GNU Lesser General Public License Usage
**
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** If you are unsure which license is appropriate for your use, please
** contact the sales department at http://qt.nokia.com/contact.
**
**************************************************************************/
#ifndef DEBUGGERUISWITCHER_H
#define DEBUGGERUISWITCHER_H
#include "debugger_global.h"
#include "debuggerconstants.h"
#include <utils/fancymainwindow.h>
#include <QtCore/QObject>
QT_BEGIN_NAMESPACE
class QDockWidget;
class QSettings;
class QMenu;
QT_END_NAMESPACE
namespace Core {
class Command;
class Context;
class IMode;
}
namespace ProjectExplorer {
class Project;
class Target;
class RunConfiguration;
}
namespace Debugger {
namespace Internal {
class DebuggerMainWindowPrivate;
}
class DEBUGGER_EXPORT DebuggerMainWindow : public Utils::FancyMainWindow
{
Q_OBJECT
public:
DebuggerMainWindow();
~DebuggerMainWindow();
// debuggable languages are registered with this function.
void addLanguage(const DebuggerLanguage &language, const Core::Context &context);
// debugger toolbars are registered with this function
void setToolbar(const DebuggerLanguage &language, QWidget *widget);
// menu actions are registered with this function
void addMenuAction(Core::Command *command, const DebuggerLanguage &language,
const QString &group = QString());
// all supported languages
DebuggerLanguages supportedLanguages() const;
// active languages to be debugged.
DebuggerLanguages activeDebugLanguages() const;
// called when all dependent plugins have loaded
void initialize(QSettings *settings);
void onModeChanged(Core::IMode *mode);
// most common debugger windows
QDockWidget *breakWindow() const;
QDockWidget *stackWindow() const;
QDockWidget *watchWindow() const;
QDockWidget *snapshotsWindow() const;
QDockWidget *threadsWindow() const;
QDockWidget *outputWindow() const;
QDockWidget *qmlInspectorWindow() const;
QDockWidget *dockWidget(const QString &objectName) const;
// dockwidgets are registered to the main window
QDockWidget *createDockWidget(const DebuggerLanguage &language, QWidget *widget,
Qt::DockWidgetArea area = Qt::TopDockWidgetArea);
QWidget *createContents(Core::IMode *mode);
QMenu *createPopupMenu();
signals:
// emit when user changes active languages from the menu.
// Both UI and debugger startup are affected.
void activeLanguagesChanged(Debugger::DebuggerLanguages activeLanguages);
void dockResetRequested(Debugger::DebuggerLanguages activeLanguages);
void memoryEditorRequested();
private slots:
void updateUi();
void resetDebuggerLayout();
void updateUiForProject(ProjectExplorer::Project *project);
void updateUiForTarget(ProjectExplorer::Target *target);
void updateUiForRunConfiguration(ProjectExplorer::RunConfiguration *rc);
void updateUiForCurrentRunConfiguration();
void updateUiOnFileListChange();
public slots:
void updateActiveLanguages();
void updateDockWidgetSettings();
void readSettings();
void writeSettings() const;
private:
void activateQmlCppLayout();
void activateCppLayout();
void hideInactiveWidgets();
void createViewsMenuItems();
bool isQmlCppActive() const;
bool isQmlActive() const;
Internal::DebuggerMainWindowPrivate *d;
};
} // namespace Debugger
#endif // DEBUGGERUISWITCHER_H
......@@ -35,10 +35,10 @@
#include "debuggercore.h"
#include "debuggerdialogs.h"
#include "debuggerengine.h"
#include "debuggermainwindow.h"
#include "debuggerrunner.h"
#include "debuggerstringutils.h"
#include "debuggertooltip.h"
#include "debuggeruiswitcher.h"
#include "breakpoint.h"
#include "breakhandler.h"
......
......@@ -32,9 +32,9 @@
#include "debuggeractions.h"
#include "debuggercore.h"
#include "debuggerengine.h"
#include "debuggermainwindow.h"
#include "debuggerplugin.h"
#include "debuggerstringutils.h"
#include "debuggeruiswitcher.h"
#include "gdb/gdbengine.h"
#include "gdb/remotegdbserveradapter.h"
#include "gdb/remoteplaingdbadapter.h"
......
This diff is collapsed.
/**************************************************************************
**
** This file is part of Qt Creator
**
** Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
**
** Contact: Nokia Corporation (qt-info@nokia.com)
**
** Commercial Usage
**
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** GNU Lesser General Public License Usage
**
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** If you are unsure which license is appropriate for your use, please
** contact the sales department at http://qt.nokia.com/contact.
**
**************************************************************************/
#ifndef DEBUGGERUISWITCHER_H
#define DEBUGGERUISWITCHER_H
#include "debugger_global.h"
#include "debuggerconstants.h"
#include <utils/fancymainwindow.h>
#include <QtCore/QObject>
QT_BEGIN_NAMESPACE
class QDockWidget;
class QSettings;
class QMenu;
QT_END_NAMESPACE
namespace Core {
class Command;
class Context;
class IMode;
}
namespace ProjectExplorer {
class Project;
class Target;
class RunConfiguration;
}
namespace Debugger {
namespace Internal {
class DebuggerMainWindowPrivate;
}
class DEBUGGER_EXPORT DebuggerMainWindow : public Utils::FancyMainWindow
{
Q_OBJECT
public:
DebuggerMainWindow();
~DebuggerMainWindow();
// debuggable languages are registered with this function.
void addLanguage(const DebuggerLanguage &language, const Core::Context &context);
// debugger toolbars are registered with this function
void setToolbar(const DebuggerLanguage &language, QWidget *widget);
// menu actions are registered with this function
void addMenuAction(Core::Command *command, const DebuggerLanguage &language,
const QString &group = QString());
// all supported languages
DebuggerLanguages supportedLanguages() const;
// active languages to be debugged.
DebuggerLanguages activeDebugLanguages() const;
// called when all dependent plugins have loaded
void initialize(QSettings *settings);
void onModeChanged(Core::IMode *mode);
// most common debugger windows
QDockWidget *breakWindow() const;
QDockWidget *stackWindow() const;
QDockWidget *watchWindow() const;
QDockWidget *snapshotsWindow() const;
QDockWidget *threadsWindow() const;
QDockWidget *outputWindow() const;
QDockWidget *qmlInspectorWindow() const;
QDockWidget *dockWidget(const QString &objectName) const;
// dockwidgets are registered to the main window
QDockWidget *createDockWidget(const DebuggerLanguage &language, QWidget *widget,
Qt::DockWidgetArea area = Qt::TopDockWidgetArea);
QWidget *createContents(Core::IMode *mode);
QMenu *createPopupMenu();
signals:
// emit when user changes active languages from the menu.
// Both UI and debugger startup are affected.
void activeLanguagesChanged(Debugger::DebuggerLanguages activeLanguages);
void dockResetRequested(Debugger::DebuggerLanguages activeLanguages);
void memoryEditorRequested();
private slots:
void updateUi();
void resetDebuggerLayout();
void updateUiForProject(ProjectExplorer::Project *project);
void updateUiForTarget(ProjectExplorer::Target *target);
void updateUiForRunConfiguration(ProjectExplorer::RunConfiguration *rc);
void updateUiForCurrentRunConfiguration();
void updateUiOnFileListChange();
public slots:
void updateActiveLanguages();
void updateDockWidgetSettings();
void readSettings();
void writeSettings() const;
private:
void activateQmlCppLayout();
void activateCppLayout();
void hideInactiveWidgets();
void createViewsMenuItems();
bool isQmlCppActive() const;
bool isQmlActive() const;
Internal::DebuggerMainWindowPrivate *d;
};
} // namespace Debugger
#endif // DEBUGGERUISWITCHER_H
......@@ -32,7 +32,6 @@
#include "gdbengine.h"
#include "gdboptionspage.h"
#include "debuggeruiswitcher.h"
#include "debuggercore.h"
#include "debuggerplugin.h"
#include "debuggerrunner.h"
......@@ -4025,35 +4024,45 @@ bool GdbEngine::startGdb(const QStringList &args, const QString &gdb, const QStr
gdbArgs << _("-i");
gdbArgs << _("mi");
gdbArgs += args;
#ifdef Q_OS_WIN
// Set python path. By convention, python is located below gdb executable.
// Extend the environment set on the process in startAdapter().
const QFileInfo fi(m_gdb);
bool foundPython = false;
if (fi.isAbsolute()) {
const QString winPythonVersion = QLatin1String(winPythonVersionC);
const QDir dir = fi.absoluteDir();
if (dir.exists(winPythonVersion)) {
QProcessEnvironment environment = gdbProc()->processEnvironment();
const QString pythonPathVariable = QLatin1String("PYTHONPATH");
// Check for existing values.
if (environment.contains(pythonPathVariable)) {
const QString oldPythonPath = environment.value(pythonPathVariable);
showMessage(_("Using existing python path: %1")
.arg(oldPythonPath), LogMisc);
} else {
const QString pythonPath =
QDir::toNativeSeparators(dir.absoluteFilePath(winPythonVersion));
environment.insert(pythonPathVariable, pythonPath);
showMessage(_("Python path: %1").arg(pythonPath), LogMisc);
gdbProc()->setProcessEnvironment(environment);
}
foundPython = true;
}
if (!fi.isAbsolute()) {
showMessage(_("GDB %1 DOES NOT HAVE ABSOLUTE LOCATION.").arg(m_gdb));
const QString msg = tr("The gdb location must be given as an "
"absolute path in the debugger settings.");
handleAdapterStartFailed(msg, settingsIdHint);
return false;
}
if (!foundPython) {
showMessage(_("UNSUPPORTED GDB %1 DOES NOT HAVE PYTHON.").arg(m_gdb));
showStatusMessage(_("Gdb at %1 does not have python").arg(m_gdb));
const QString winPythonVersion = QLatin1String(winPythonVersionC);
const QDir dir = fi.absoluteDir();
if (!dir.exists(winPythonVersion)) {
showMessage(_("GDB %1 CANNOT FIND PYTHON INSTALLATION.").arg(m_gdb));
showStatusMessage(_("Gdb at %1 cannot find python").arg(m_gdb));
const QString msg = tr("The gdb installed at %1 cannot "
"find a valid python installation in its %2 subdirectory.\n"
"You may set the PYTHONPATH to your installation.")
.arg(m_gdb).arg(winPythonVersion);
handleAdapterStartFailed(msg, settingsIdHint);
return false;
}
QProcessEnvironment environment = gdbProc()->processEnvironment();
const QString pythonPathVariable = QLatin1String("PYTHONPATH");
// Check for existing values.
if (environment.contains(pythonPathVariable)) {
const QString oldPythonPath = environment.value(pythonPathVariable);
showMessage(_("Using existing python path: %1")
.arg(oldPythonPath), LogMisc);
} else {
const QString pythonPath =
QDir::toNativeSeparators(dir.absoluteFilePath(winPythonVersion));
environment.insert(pythonPathVariable, pythonPath);
showMessage(_("Python path: %1").arg(pythonPath), LogMisc);
gdbProc()->setProcessEnvironment(environment);
}
#endif
......
#include "qmlcppengine.h"
#include "qmlengine.h"
#include "debuggeruiswitcher.h"
#include "debuggermainwindow.h"
#include "debuggercore.h"
#include <qmljseditor/qmljseditorconstants.h>
......
......@@ -34,10 +34,10 @@
#include "debuggerconstants.h"
#include "debuggercore.h"
#include "debuggerdialogs.h"
#include "debuggermainwindow.h"
#include "debuggerrunner.h"
#include "debuggerstringutils.h"
#include "debuggertooltip.h"
#include "debuggeruiswitcher.h"
#include "breakhandler.h"
#include "moduleshandler.h"
......
......@@ -26,6 +26,7 @@
** contact the sales department at http://qt.nokia.com/contact.
**
**************************************************************************/
#include "qmljsinspectorconstants.h"
#include "qmljsinspector.h"
#include "qmlinspectortoolbar.h"
......@@ -41,19 +42,15 @@
#include <qmljs/parser/qmljsast_p.h>
#include <qmljseditor/qmljseditorconstants.h>
#include <qmljseditor/qmljseditor.h>
#include <debugger/debuggerrunner.h>
#include <debugger/debuggerconstants.h>
#include <debugger/debuggerengine.h>
#include <debugger/debuggermainwindow.h>
#include <debugger/debuggerplugin.h>
#include <debugger/debuggerrunner.h>
#include <debugger/debuggeruiswitcher.h>
#include <debugger/debuggerconstants.h>
#include <debugger/qml/qmlengine.h>
#include <utils/qtcassert.h>
#include <utils/styledbar.h>
#include <utils/fancymainwindow.h>
#include <coreplugin/icontext.h>
#include <coreplugin/basemode.h>
......
......@@ -42,7 +42,6 @@
#include <debugger/debuggerrunner.h>
#include <debugger/debuggerplugin.h>
#include <debugger/debuggerconstants.h>
#include <debugger/debuggeruiswitcher.h>
#include <debugger/debuggerengine.h>
#include <qmljsinspector/qmljsinspectorconstants.h>
#include <qt4projectmanager/qtversionmanager.h>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment