DebuggerState state() const { return m_state; }
void updateState(DebuggerEngine *engine);
+ void updateWatchersWindow();
void onCurrentProjectChanged(ProjectExplorer::Project *project);
void gotoLocation(const QString &file, int line, bool setMarker);
SLOT(aboutToSaveSession()));
connect(sessionManager(), SIGNAL(aboutToUnloadSession()),
SLOT(aboutToUnloadSession()));
- connect(ProjectExplorer::ProjectExplorerPlugin::instance(), SIGNAL(updateRunActions()),
- this, SLOT(updateDebugActions()));
+ connect(ProjectExplorerPlugin::instance(), SIGNAL(updateRunActions()),
+ SLOT(updateDebugActions()));
// EditorManager
QObject *editorManager = core->editorManager();
void DebuggerPluginPrivate::debugProject()
{
- Project *pro = ProjectExplorer::ProjectExplorerPlugin::instance()->startupProject();
- if (!pro)
- return;
-
- ProjectExplorer::ProjectExplorerPlugin::instance()->runProject(pro, Constants::DEBUGMODE);
- }
+ ProjectExplorerPlugin *pe = ProjectExplorerPlugin::instance();
+ if (Project *pro = pe->startupProject())
+ pe->runProject(pro, Constants::DEBUGMODE);
+}
void DebuggerPluginPrivate::startExternalApplication()
{
sp.processArgs = dlg.executableArguments();
// Fixme: 1 of 3 testing hacks.
if (sp.processArgs.startsWith(__("@tcf@ ")) || sp.processArgs.startsWith(__("@sym@ ")))
- sp.toolChainType = ProjectExplorer::ToolChain_RVCT_ARMV5;
+ sp.toolChainType = ToolChain_RVCT_ARMV5;
if (RunControl *rc = m_debuggerRunControlFactory->create(sp))
{
const QString connectionKey = _("CdbRemoteConnection");
DebuggerStartParameters sp;
- sp.toolChainType = ProjectExplorer::ToolChain_MSVC;
+ sp.toolChainType = ToolChain_MSVC;
sp.startMode = AttachToRemote;
StartRemoteCdbDialog dlg(mainWindow());
QString previousConnection = configValue(connectionKey).toString();
sp.displayName = dlg.localExecutable();
sp.debuggerCommand = dlg.debugger(); // Override toolchain-detection.
if (!sp.debuggerCommand.isEmpty())
- sp.toolChainType = ProjectExplorer::ToolChain_INVALID;
+ sp.toolChainType = ToolChain_INVALID;
sp.startMode = AttachToRemote;
sp.useServerStartScript = dlg.useServerStartScript();
sp.serverStartScript = dlg.serverStartScript();
//emit m_plugin->stateChanged(m_state);
}
+void DebuggerPluginPrivate::updateWatchersWindow()
+{
+ m_watchersWindow->setVisible(
+ m_watchersWindow->model()->rowCount(QModelIndex()) > 0);
+ m_returnWindow->setVisible(
+ m_returnWindow->model()->rowCount(QModelIndex()) > 0);
+}
+
void DebuggerPluginPrivate::updateState(DebuggerEngine *engine)
{
QTC_ASSERT(engine, return);
m_threadBox->setCurrentIndex(engine->threadsHandler()->currentThread());
- m_watchersWindow->setVisible(
- m_watchersWindow->model()->rowCount(QModelIndex()) > 0);
- m_returnWindow->setVisible(
- m_returnWindow->model()->rowCount(QModelIndex()) > 0);
+ updateWatchersWindow();
//m_plugin->showMessage(QString("PLUGIN SET STATE: ")
// + DebuggerEngine::stateName(engine->state()), LogStatus);
void DebuggerPluginPrivate::updateDebugActions()
{
- ProjectExplorer::ProjectExplorerPlugin *peplugin = ProjectExplorer::ProjectExplorerPlugin::instance();
- Project *project = peplugin->startupProject();
- m_debugAction->setEnabled(peplugin->canRun(project, Constants::DEBUGMODE));
+ ProjectExplorerPlugin *pe = ProjectExplorerPlugin::instance();
+ Project *project = pe->startupProject();
+ m_debugAction->setEnabled(pe->canRun(project, Constants::DEBUGMODE));
}
void DebuggerPluginPrivate::gotoLocation(const QString &file, int line, bool setMarker)
#include <ctype.h>
#include <utils/qtcassert.h>
-// creates debug output for accesses to the model
+// Creates debug output for accesses to the model.
//#define DEBUG_MODEL 1
#if DEBUG_MODEL
void WatchHandler::watchExpression(const QString &exp)
{
QTC_ASSERT(m_engine, return);
- QTC_ASSERT(m_engine->debuggerCapabilities() & AddWatcherCapability, return);
// Do not insert multiple placeholders.
if (exp.isEmpty() && m_watcherNames.contains(QByteArray()))
return;
if (exp.isEmpty())
data.setAllUnneeded();
data.iname = watcherName(data.exp);
- if (m_engine->isSynchronous())
+ if (m_engine->state() == DebuggerNotReady) {
+ data.setAllUnneeded();
+ data.setValue(" ");
+ data.setHasChildren(false);
+ insertData(data);
+ } else if (m_engine->isSynchronous()) {
m_engine->updateWatchData(data);
- else
+ } else {
insertData(data);
+ }
updateWatchersWindow();
saveWatchers();
emitAllChanged();
void WatchHandler::updateWatchersWindow()
{
// Force show/hide of watchers and return view.
- debuggerCore()->updateState(m_engine);
+ debuggerCore()->updateWatchersWindow();
}
void WatchHandler::updateWatchers()