wireshark/ui/qt/packet_format_group_box.cpp
John Thacker 0011bb6a4c Qt: Allow omitting secondary data sources when printing
Add a checkbox to the packet format group box to allow the
hexdump to only have the main frame instead of secondary data
sources as well, so that Print and Export Packet Dissections can
be used for input to text2pcap.
2022-02-10 23:28:53 -05:00

149 lines
3.9 KiB
C++

/* packet_format_group_box.cpp
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include "packet_format_group_box.h"
#include <ui_packet_format_group_box.h>
#include <epan/print.h>
#include <QStyle>
#include <QStyleOption>
PacketFormatGroupBox::PacketFormatGroupBox(QWidget *parent) :
QGroupBox(parent),
pf_ui_(new Ui::PacketFormatGroupBox)
{
pf_ui_->setupUi(this);
setFlat(true);
QStyleOption style_opt;
int cb_label_offset = pf_ui_->detailsCheckBox->style()->subElementRect(QStyle::SE_CheckBoxContents, &style_opt).left();
// Indent the checkbox under the "Packet summary" checkbox
pf_ui_->includeColumnHeadingsCheckBox->setStyleSheet(QString(
"QCheckBox {"
" padding-left: %1px;"
"}"
).arg(cb_label_offset));
// Indent the radio buttons under the "Packet details" checkbox
pf_ui_->allCollapsedButton->setStyleSheet(QString(
"QRadioButton {"
" padding-left: %1px;"
"}"
).arg(cb_label_offset));
pf_ui_->asDisplayedButton->setStyleSheet(QString(
"QRadioButton {"
" padding-left: %1px;"
"}"
).arg(cb_label_offset));
pf_ui_->allExpandedButton->setStyleSheet(QString(
"QRadioButton {"
" padding-left: %1px;"
"}"
).arg(cb_label_offset));
// Indent the checkbox under the "Bytes" checkbox
pf_ui_->includeDataSourcesCheckBox->setStyleSheet(QString(
"QCheckBox {"
" padding-left: %1px;"
"}"
).arg(cb_label_offset));
}
PacketFormatGroupBox::~PacketFormatGroupBox()
{
delete pf_ui_;
}
bool PacketFormatGroupBox::summaryEnabled()
{
return pf_ui_->summaryCheckBox->isChecked();
}
bool PacketFormatGroupBox::detailsEnabled()
{
return pf_ui_->detailsCheckBox->isChecked();
}
bool PacketFormatGroupBox::bytesEnabled()
{
return pf_ui_->bytesCheckBox->isChecked();
}
bool PacketFormatGroupBox::includeColumnHeadingsEnabled()
{
return pf_ui_->includeColumnHeadingsCheckBox->isChecked();
}
bool PacketFormatGroupBox::allCollapsedEnabled()
{
return pf_ui_->allCollapsedButton->isChecked();
}
bool PacketFormatGroupBox::asDisplayedEnabled()
{
return pf_ui_->asDisplayedButton->isChecked();
}
bool PacketFormatGroupBox::allExpandedEnabled()
{
return pf_ui_->allExpandedButton->isChecked();
}
uint PacketFormatGroupBox::getHexdumpOptions()
{
return pf_ui_->includeDataSourcesCheckBox->isChecked() ? HEXDUMP_SOURCE_MULTI : HEXDUMP_SOURCE_PRIMARY;
}
void PacketFormatGroupBox::on_summaryCheckBox_toggled(bool checked)
{
pf_ui_->includeColumnHeadingsCheckBox->setEnabled(checked);
emit formatChanged();
}
void PacketFormatGroupBox::on_detailsCheckBox_toggled(bool checked)
{
pf_ui_->allCollapsedButton->setEnabled(checked);
pf_ui_->asDisplayedButton->setEnabled(checked);
pf_ui_->allExpandedButton->setEnabled(checked);
emit formatChanged();
}
void PacketFormatGroupBox::on_bytesCheckBox_toggled(bool checked)
{
pf_ui_->includeDataSourcesCheckBox->setEnabled(checked);
emit formatChanged();
}
void PacketFormatGroupBox::on_includeColumnHeadingsCheckBox_toggled(bool)
{
emit formatChanged();
}
void PacketFormatGroupBox::on_allCollapsedButton_toggled(bool checked)
{
if (checked) emit formatChanged();
}
void PacketFormatGroupBox::on_asDisplayedButton_toggled(bool checked)
{
if (checked) emit formatChanged();
}
void PacketFormatGroupBox::on_allExpandedButton_toggled(bool checked)
{
if (checked) emit formatChanged();
}
void PacketFormatGroupBox::on_includeDataSourcesCheckBox_toggled(bool)
{
emit formatChanged();
}