Add a switch in the context menu to disable and enable dependency drawing

This commit is contained in:
2021-10-25 15:34:58 +02:00
parent 166ec66a92
commit 1cf0d0c743
6 changed files with 68 additions and 18 deletions

View File

@@ -72,16 +72,16 @@ void Phase::draw(QPainter *painter, const QwtScaleMap &xMap,
drawingProperties.drawText, getPhaseSymbol(), painter, xMap, yMap);
if (getGranularity() == Granularity::Bankwise) {
bool drawAllDependencies = false;
bool drawDependencies = true;
bool drawDependencyText = true;
if (drawAllDependencies || (highlight && drawDependencies)) {
drawPhaseDependencies(span.Begin(), span.End(), line->getYVal(),
drawingProperties, drawDependencyText, painter, xMap, yMap);
DependencyOption drawDependenciesOption = drawingProperties.drawDependenciesOption;
if (drawDependenciesOption == DependencyOption::All ||
(drawDependenciesOption == DependencyOption::Selected && highlight))
{
drawPhaseDependencies(span.Begin(), span.End(), line->getYVal(), drawingProperties,
drawDependencyText, painter, xMap, yMap);
}
}
}
}
@@ -135,6 +135,8 @@ void Phase::drawPhaseDependencies(traceTime begin, traceTime end, double y, cons
{
QPen pen;
pen.setWidth(2);
painter->save();
painter->setPen(pen);
painter->setRenderHint(QPainter::Antialiasing);
@@ -164,8 +166,8 @@ void Phase::drawPhaseDependencies(traceTime begin, traceTime end, double y, cons
QPoint invisibleDepsPoint(static_cast<int>(xMap.transform(begin + (end + offset - begin)/2)), static_cast<int>(yVal + 0.1*symbolHeight));
drawText(painter, QString(std::to_string(invisibleDeps).c_str()), invisibleDepsPoint, TextPositioning::centerCenter);
}
painter->restore();
}
QColor Phase::getColor(const TraceDrawingProperties &drawingProperties) const

View File

@@ -40,11 +40,10 @@
#include "util/traceplotlinecache.h"
#include "traceselector.h"
TraceDrawingProperties::TraceDrawingProperties(bool drawText, bool drawBorder,
ColorGrouping colorGrouping) :
drawText(drawText),
drawBorder(drawBorder),
colorGrouping(colorGrouping)
TraceDrawingProperties::TraceDrawingProperties(bool drawText, bool drawBorder, DependencyOption drawDependenciesOption,
ColorGrouping colorGrouping)
: drawText(drawText), drawBorder(drawBorder), drawDependenciesOption(drawDependenciesOption),
colorGrouping(colorGrouping)
{
}

View File

@@ -58,6 +58,13 @@ class TracePlotLineCache;
using TracePlotLineVector = std::vector<std::shared_ptr<TracePlotLine>>;
enum class DependencyOption
{
Disabled,
Selected,
All
};
class TraceDrawingProperties : public QObject
{
Q_OBJECT
@@ -65,6 +72,7 @@ class TraceDrawingProperties : public QObject
public:
bool drawText;
bool drawBorder;
DependencyOption drawDependenciesOption;
ColorGrouping colorGrouping;
unsigned int numberOfRanks;
@@ -74,8 +82,8 @@ public:
unsigned int groupsPerRank;
unsigned int banksPerGroup;
TraceDrawingProperties(bool drawText = true,
bool drawBorder = true,
TraceDrawingProperties(bool drawText = true, bool drawBorder = true,
DependencyOption drawDependenciesOption = DependencyOption::Disabled,
ColorGrouping colorGrouping = ColorGrouping::PhaseType);
~TraceDrawingProperties();

View File

@@ -162,6 +162,40 @@ void TracePlot::setUpActions()
SLOT(on_toggleCollapsedState()));
toggleCollapsedState->setShortcut(Qt::CTRL + Qt::Key_X);
disabledDependencies = new QAction("Disabled", this);
selectedDependencies = new QAction("Selected transactions", this);
allDependencies = new QAction("All transactions", this);
disabledDependencies->setCheckable(true);
selectedDependencies->setCheckable(true);
allDependencies->setCheckable(true);
disabledDependencies->setChecked(true);
QObject::connect(disabledDependencies, &QAction::triggered, this,
[&]()
{
drawingProperties.drawDependenciesOption = DependencyOption::Disabled;
replot();
});
QObject::connect(selectedDependencies, &QAction::triggered, this,
[&]()
{
drawingProperties.drawDependenciesOption = DependencyOption::Selected;
replot();
});
QObject::connect(allDependencies, &QAction::triggered, this,
[&]()
{
drawingProperties.drawDependenciesOption = DependencyOption::All;
replot();
});
QActionGroup *dependenciesGroup = new QActionGroup(this);
dependenciesGroup->addAction(disabledDependencies);
dependenciesGroup->addAction(selectedDependencies);
dependenciesGroup->addAction(allDependencies);
setUpContextMenu();
}
@@ -174,6 +208,10 @@ void TracePlot::setUpContextMenu()
colorGroupingSubMenu->addActions({setColorGroupingPhase, setColorGroupingTransaction, setColorGroupingThread});
contextMenu->addMenu(colorGroupingSubMenu);
QMenu *dependenciesSubMenu = new QMenu("Show dependencies", contextMenu);
dependenciesSubMenu->addActions({disabledDependencies, selectedDependencies, allDependencies});
contextMenu->addMenu(dependenciesSubMenu);
QMenu *goToSubMenu = new QMenu("Go to", contextMenu);
goToSubMenu->addActions({goToPhase, goToTransaction, goToTime});
contextMenu->addMenu(goToSubMenu);

View File

@@ -180,6 +180,9 @@ private:
QAction *setColorGroupingTransaction;
QAction *setColorGroupingThread;
QAction *exportToPdf;
QAction *disabledDependencies;
QAction *selectedDependencies;
QAction *allDependencies;
ToggleCollapsedAction *toggleCollapsedState;
TracePlotMouseLabel *mouseLabel;

View File

@@ -43,9 +43,9 @@
#include "traceplotitem.h"
#include "util/engineeringScaleDraw.h"
TraceScroller::TraceScroller(QWidget *parent):
QwtPlot(parent), isInitialized(false), drawingProperties(false, false,
ColorGrouping::PhaseType)
TraceScroller::TraceScroller(QWidget *parent)
: QwtPlot(parent), isInitialized(false),
drawingProperties(false, false, DependencyOption::Disabled, ColorGrouping::PhaseType)
{
setAxisScaleDraw(xBottom, new EngineeringScaleDraw);
canvas()->setCursor(Qt::ArrowCursor);