summaryrefslogtreecommitdiff
path: root/src/plugins/debugger/script/scriptengine.cpp
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@nokia.com>2009-07-10 14:36:28 +0200
committerFriedemann Kleint <Friedemann.Kleint@nokia.com>2009-07-10 14:36:28 +0200
commitabf5e3ddc39b8f4971f61fb9f8dccdb1d4635bf5 (patch)
tree04ea8668ecac1c3922da8ccaabc78e067d196535 /src/plugins/debugger/script/scriptengine.cpp
parentb0227ce4968a5095fbbef6cb8e7a6f7752ecf0c0 (diff)
downloadqt-creator-abf5e3ddc39b8f4971f61fb9f8dccdb1d4635bf5.tar.gz
Enabled the use of Debugger-specific watch/locals models.
- Modified WatchModel to handle storage of an hierarchy of WatchItems. - Factored out code for asynchronous population to AsyncWatchModel and added a mixin for convenient handling - Added base class for synchronous models. - Implement simple, synchronous models for CDB, greatly simplifying code and finally getting manual expansion right. Signed-off-by: hjk <qtc-committer@nokia.com>
Diffstat (limited to 'src/plugins/debugger/script/scriptengine.cpp')
-rw-r--r--src/plugins/debugger/script/scriptengine.cpp21
1 files changed, 12 insertions, 9 deletions
diff --git a/src/plugins/debugger/script/scriptengine.cpp b/src/plugins/debugger/script/scriptengine.cpp
index 28d20a24cc..0096e3a414 100644
--- a/src/plugins/debugger/script/scriptengine.cpp
+++ b/src/plugins/debugger/script/scriptengine.cpp
@@ -185,10 +185,13 @@ void ScriptAgent::scriptUnload(qint64 scriptId)
//
///////////////////////////////////////////////////////////////////////
-ScriptEngine::ScriptEngine(DebuggerManager *parent)
+ScriptEngine::ScriptEngine(DebuggerManager *parent) :
+ q(parent),
+ qq(parent->engineInterface()),
+ m_models(qq->watchHandler())
{
- q = parent;
- qq = parent->engineInterface();
+ connect(qq->watchHandler(), SIGNAL(watcherInserted(WatchData)), &m_models, SLOT(insertWatcher(WatchData)));
+ connect(&m_models, SIGNAL(watchDataUpdateNeeded(WatchData)), this, SLOT(updateWatchData(WatchData)));
m_scriptEngine = new QScriptEngine(this);
m_scriptAgent = new ScriptAgent(this, m_scriptEngine);
m_scriptEngine->setAgent(m_scriptAgent);
@@ -572,7 +575,7 @@ void ScriptEngine::maybeBreakNow(bool byFunction)
void ScriptEngine::updateLocals()
{
QScriptContext *context = m_scriptEngine->currentContext();
- qq->watchHandler()->beginCycle();
+ m_models.beginCycle();
//SDEBUG("UPDATE LOCALS");
//
@@ -604,7 +607,7 @@ void ScriptEngine::updateLocals()
data.iname = "local";
data.name = "local";
data.scriptValue = context->activationObject();
- qq->watchHandler()->insertData(data);
+ m_models.insertData(data);
// FIXME: Use an extra thread. This here is evil
m_stopped = true;
@@ -679,7 +682,7 @@ void ScriptEngine::updateSubItem(const WatchData &data0)
data.setType("<unknown>");
data.setValue("<unknown>");
}
- qq->watchHandler()->insertData(data);
+ m_models.insertData(data);
return;
}
@@ -697,13 +700,13 @@ void ScriptEngine::updateSubItem(const WatchData &data0)
data1.setChildrenNeeded();
else
data1.setChildrenUnneeded();
- qq->watchHandler()->insertData(data1);
+ m_models.insertData(data1);
++numChild;
}
//SDEBUG(" ... CHILDREN: " << numChild);
data.setHasChildren(numChild > 0);
data.setChildrenUnneeded();
- qq->watchHandler()->insertData(data);
+ m_models.insertData(data);
return;
}
@@ -716,7 +719,7 @@ void ScriptEngine::updateSubItem(const WatchData &data0)
}
data.setHasChildren(numChild > 0);
//SDEBUG(" ... CHILDCOUNT: " << numChild);
- qq->watchHandler()->insertData(data);
+ m_models.insertData(data);
return;
}