forked from qt-creator/qt-creator
Debugger: Merge debug mode and analyze mode
On the user-visible side, only the 'Analyze' mode button disappears, and instead a combobox to switch between different tools in appears in the Debug mode toolbar. Internally, that's quite some re-organzition: The centralized 'Analyze mode is busy' flag is gone, allowing us to run e.g. ClangStaticAnalyzer and MemCheck in parallel. Analyzer tools and debugger now share the same mechanism to generate/load/save dock widgets. Analyzer tools now create and handle their own start/stop button when appropriate. In general, Analyzer tools can create/handle more than one run control at a time. Further consolidation is possible, e.g. RunControl state handling could be merged into the base ProjectExplorer::RunControl to avoid the still existing duplication in ~15 instances. Change-Id: I91e5940ebc4211f98056d507cf2f7b5f8efe7f07 Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
This commit is contained in:
@@ -37,60 +37,12 @@
|
||||
|
||||
using namespace ProjectExplorer;
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// AnalyzerRunControl
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////
|
||||
|
||||
namespace Analyzer {
|
||||
namespace Debugger {
|
||||
|
||||
AnalyzerRunControl::AnalyzerRunControl(RunConfiguration *runConfiguration, Core::Id runMode)
|
||||
: RunControl(runConfiguration, runMode)
|
||||
{
|
||||
setIcon(Icons::ANALYZER_CONTROL_START);
|
||||
|
||||
connect(this, &AnalyzerRunControl::finished,
|
||||
this, &AnalyzerRunControl::runControlFinished);
|
||||
connect(AnalyzerManager::stopAction(), &QAction::triggered,
|
||||
this, &AnalyzerRunControl::stopIt);
|
||||
}
|
||||
|
||||
void AnalyzerRunControl::stopIt()
|
||||
{
|
||||
if (stop() == RunControl::StoppedSynchronously)
|
||||
AnalyzerManager::handleToolFinished();
|
||||
}
|
||||
|
||||
void AnalyzerRunControl::runControlFinished()
|
||||
{
|
||||
m_isRunning = false;
|
||||
AnalyzerManager::handleToolFinished();
|
||||
}
|
||||
|
||||
void AnalyzerRunControl::start()
|
||||
{
|
||||
AnalyzerManager::handleToolStarted();
|
||||
|
||||
if (startEngine()) {
|
||||
m_isRunning = true;
|
||||
emit started();
|
||||
}
|
||||
}
|
||||
|
||||
RunControl::StopResult AnalyzerRunControl::stop()
|
||||
{
|
||||
if (!m_isRunning)
|
||||
return StoppedSynchronously;
|
||||
|
||||
stopEngine();
|
||||
m_isRunning = false;
|
||||
return AsynchronousStop;
|
||||
}
|
||||
|
||||
bool AnalyzerRunControl::isRunning() const
|
||||
{
|
||||
return m_isRunning;
|
||||
}
|
||||
|
||||
} // namespace Analyzer
|
||||
} // namespace Debugger
|
||||
|
||||
Reference in New Issue
Block a user