Skip to content

Commit 1cabd2d

Browse files
committed
make remaining triage header items use copylabel
1 parent 0facaba commit 1cabd2d

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

examples/triage/headers.cpp

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ NavigationLabel::NavigationLabel(const QString& text, QColor color, const std::f
1414
style.setColor(QPalette::WindowText, color);
1515
setPalette(style);
1616
setFont(getMonospaceFont(this));
17+
setCursor(Qt::PointingHandCursor);
1718
}
1819

1920

@@ -97,7 +98,7 @@ GenericHeaders::GenericHeaders(BinaryViewRef data)
9798
AddField("Platform", QString::fromStdString(data->GetDefaultPlatform()->GetName()));
9899
auto entryFunctions = data->GetAllEntryFunctions();
99100
if (!entryFunctions.empty() && data->GetEntryPoint() != 0)
100-
AddField("Entry Point", QString("0x") + QString::number(data->GetEntryPoint(), 16), CodeHeaderField);
101+
AddField("Entry Point", QString("0x") + QString::number(data->GetEntryPoint(), 16), AddressHeaderField);
101102
else
102103
AddField("Entry Point", "None");
103104
if (data->IsValidOffset(data->GetStart()))
@@ -133,7 +134,7 @@ PEHeaders::PEHeaders(BinaryViewRef data)
133134
AddField("Platform", QString::fromStdString(data->GetDefaultPlatform()->GetName()));
134135
auto entryFunctions = data->GetAllEntryFunctions();
135136
if (!entryFunctions.empty() && data->GetEntryPoint() != 0)
136-
AddField("Entry Point", QString("0x") + QString::number(data->GetEntryPoint(), 16), CodeHeaderField);
137+
AddField("Entry Point", QString("0x") + QString::number(data->GetEntryPoint(), 16), AddressHeaderField);
137138
else
138139
AddField("Entry Point", "None");
139140
return;
@@ -167,7 +168,7 @@ PEHeaders::PEHeaders(BinaryViewRef data)
167168
uint64_t entryPoint = currentBase + GetValueOfStructMember(data, optHeaderName, optHeaderStart, "addressOfEntryPoint");
168169
auto entryFunctions = data->GetAllEntryFunctions();
169170
if (!entryFunctions.empty() && entryPoint != 0)
170-
AddField("Entry Point", QString("0x") + QString::number(entryPoint, 16), CodeHeaderField);
171+
AddField("Entry Point", QString("0x") + QString::number(entryPoint, 16), AddressHeaderField);
171172
else
172173
AddField("Entry Point", "None");
173174

@@ -370,6 +371,16 @@ HeaderWidget::HeaderWidget(QWidget* parent, const Headers& header) : QWidget(par
370371
for (auto& field : header.GetFields())
371372
{
372373
layout->addWidget(new QLabel(field.title + ": "), row, col * 3);
374+
375+
// For text fields with multiple values, join them with newlines for copying
376+
QString copyText;
377+
if (field.type == TextHeaderField && field.values.size() > 1)
378+
{
379+
copyText = field.values[0];
380+
for (size_t i = 1; i < field.values.size(); i++)
381+
copyText += "\n" + field.values[i];
382+
}
383+
373384
for (auto& value : field.values)
374385
{
375386
QWidget* label;
@@ -383,8 +394,12 @@ HeaderWidget::HeaderWidget(QWidget* parent, const Headers& header) : QWidget(par
383394
}
384395
else
385396
{
386-
label = new QLabel(value);
387-
label->setFont(getMonospaceFont(this));
397+
// Use CopyableLabel for text fields with AlphanumericHighlightColor
398+
auto copyLabel = new CopyableLabel(value, getThemeColor(AlphanumericHighlightColor));
399+
copyLabel->setFont(getMonospaceFont(this));
400+
if (field.values.size() > 1)
401+
copyLabel->setCopyText(copyText);
402+
label = copyLabel;
388403
}
389404
layout->addWidget(label, row, col * 3 + 1);
390405
row++;

examples/triage/headers.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
#include <QtWidgets/QWidget>
55
#include <functional>
66
#include "uitypes.h"
7+
#include "copyablelabel.h"
78

89

910
class NavigationLabel : public QLabel

0 commit comments

Comments
 (0)