blob: 80201c81ff79731b7e7309e898149e7ad4e14384 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
/** @file
*
* Wireshark - Network traffic analyzer
* By Gerald Combs <gerald@wireshark.org>
* Copyright 1998 Gerald Combs
*
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#ifndef SHOW_PACKET_BYTES_DIALOG_H
#define SHOW_PACKET_BYTES_DIALOG_H
#include <config.h>
#include <glib.h>
#include <stdio.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#endif
#include "file.h"
#include "wireshark_dialog.h"
#include <QLineEdit>
#include <QPushButton>
#include <QTextEdit>
#include <QTextCodec>
namespace Ui {
class ShowPacketBytesDialog;
class ShowPacketBytesTextEdit;
}
class ShowPacketBytesDialog : public WiresharkDialog
{
Q_OBJECT
public:
explicit ShowPacketBytesDialog(QWidget &parent, CaptureFile &cf);
~ShowPacketBytesDialog();
void addCodecs(const QMap<QString, QTextCodec *> &codecMap);
protected:
bool eventFilter(QObject *obj, QEvent *event);
void keyPressEvent(QKeyEvent *event);
void captureFileClosing();
void captureFileClosed();
private slots:
void on_sbStart_valueChanged(int value);
void on_sbEnd_valueChanged(int value);
void on_cbDecodeAs_currentIndexChanged(int idx);
void on_cbShowAs_currentIndexChanged(int idx);
void on_leFind_returnPressed();
void on_bFind_clicked();
void on_buttonBox_rejected();
void showSelected(int start, int end);
void useRegexFind(bool use_regex);
void findText(bool go_back = true);
void helpButton();
void printBytes();
void copyBytes();
void saveAs();
private:
void setStartAndEnd(int start, int end);
bool enableShowSelected();
void updateWidgets(); // Needed for WiresharkDialog?
void updateHintLabel();
void sanitizeBuffer(QByteArray &ba, bool handle_CR);
void symbolizeBuffer(QByteArray &ba);
QByteArray decodeQuotedPrintable(const guint8 *bytes, int length);
void rot13(QByteArray &ba);
void updateFieldBytes(bool initialization = false);
void updatePacketBytes();
Ui::ShowPacketBytesDialog *ui;
const field_info *finfo_;
QByteArray field_bytes_;
QString hint_label_;
QPushButton *print_button_;
QPushButton *copy_button_;
QPushButton *save_as_button_;
bool use_regex_find_;
int start_;
int end_;
QImage image_;
};
class ShowPacketBytesTextEdit : public QTextEdit
{
Q_OBJECT
public:
explicit ShowPacketBytesTextEdit(QWidget *parent = 0) :
QTextEdit(parent), show_selected_enabled_(true), menus_enabled_(true) { }
~ShowPacketBytesTextEdit() { }
void setShowSelectedEnabled(bool enabled) { show_selected_enabled_ = enabled; }
void setMenusEnabled(bool enabled) { menus_enabled_ = enabled; }
signals:
void showSelected(int, int);
private slots:
void contextMenuEvent(QContextMenuEvent *event);
void showSelected();
void showAll();
private:
bool show_selected_enabled_;
bool menus_enabled_;
};
#endif // SHOW_PACKET_BYTES_DIALOG_H
|