diff options
author | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2009-07-10 14:36:28 +0200 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@nokia.com> | 2009-07-10 14:36:28 +0200 |
commit | abf5e3ddc39b8f4971f61fb9f8dccdb1d4635bf5 (patch) | |
tree | 04ea8668ecac1c3922da8ccaabc78e067d196535 /src/plugins/debugger/script/scriptengine.cpp | |
parent | b0227ce4968a5095fbbef6cb8e7a6f7752ecf0c0 (diff) | |
download | qt-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.cpp | 21 |
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; } |