Wireshark 4.5.0
The Wireshark network protocol analyzer
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
main_window.h
Go to the documentation of this file.
1
10#ifndef MAINWINDOW_H
11#define MAINWINDOW_H
12
13#include <epan/prefs.h>
14#include <epan/stat_groups.h>
15#include <epan/frame_data.h>
16
17// frame_data also available with this include in the original wireshark_main_window code
18//#include "follow_stream_dialog.h"
19
20
21#include "capture_file.h"
22#include "filter_action.h"
23#include "io_graph_action.h"
24
25#include <QMainWindow>
26#include <QSplitter>
27
28class QMenu;
29class QSplitter;
30class QStackedWidget;
31class QTextCodec;
32
33class DataSourceTab;
36class FunnelAction;
37class MainStatusBar;
38class PacketDiagram;
39class PacketList;
40class ProfileSwitcher;
41class ProtoTree;
42class WelcomePage;
43
44typedef struct _capture_file capture_file;
45
46class MainWindow : public QMainWindow
47{
48 Q_OBJECT
49public:
50 explicit MainWindow(QWidget *parent = nullptr);
52 void setMainWindowTitle(QString title = QString());
53 bool hasSelection();
54 bool hasUniqueSelection();
55 QList<int> selectedRows(bool useFrameNum = false);
56 void insertColumn(QString name, QString abbrev, int pos = -1);
57 void gotoFrame(int packet_num);
58 frame_data* frameDataForRow(int) const;
59
60 QString getFilter();
61 MainStatusBar *statusBar();
62
63 // Used for managing custom packet menus
64 void appendPacketMenu(FunnelAction *funnel_action);
65 QList<QAction*> getPacketMenuActions();
66 void clearAddedPacketMenus();
67 bool addPacketMenus(QMenu * ctx_menu, GPtrArray *finfo_array);
68
69public slots:
70 void setDisplayFilter(QString filter, FilterAction::Action action, FilterAction::ActionType filterType);
71 virtual void filterPackets(QString, bool) = 0;
72 virtual void showPreferencesDialog(QString module_name) = 0;
73 virtual void showIOGraphDialog(io_graph_item_unit_t, QString) = 0;
74 virtual void showPlotDialog(const QString&, bool) = 0;
75 void layoutPanes();
76 void applyRecentPaneGeometry();
77 void updateForUnsavedChanges();
78
79protected:
80 enum CopySelected {
81 CopyAllVisibleItems,
82 CopyAllVisibleSelectedTreeItems,
83 CopySelectedDescription,
84 CopySelectedFieldName,
85 CopySelectedValue,
86 CopyListAsText,
87 CopyListAsCSV,
88 CopyListAsYAML,
89 CopyListAsHTML,
90 };
91
92 void showWelcome();
93 void showCapture();
94 void setTitlebarForCaptureInProgress();
95 virtual void setMenusForCaptureFile(bool force_disable = false) = 0;
96
97 CaptureFile capture_file_;
98 QList<register_stat_group_t> menu_groups_;
99 QWidget* getLayoutWidget(layout_pane_content_e type);
100
101 QStackedWidget *main_stack_;
102 WelcomePage *welcome_page_;
103 QSplitter master_split_;
104 QSplitter extra_split_;
105 QWidget empty_pane_;
106 QVector<unsigned> cur_layout_;
107
108 PacketList *packet_list_;
109 ProtoTree *proto_tree_;
110 DataSourceTab *data_source_tab_;
111 PacketDiagram *packet_diagram_;
112 DisplayFilterCombo *df_combo_box_;
113 MainStatusBar *main_status_bar_;
114 ProfileSwitcher *profile_switcher_;
115 bool use_capturing_title_;
116 QMap<QString, QTextCodec *> text_codec_map_;
117
118protected slots:
119 void addDisplayFilterTranslationActions(QMenu *copy_menu);
120 void updateDisplayFilterTranslationActions(const QString &df_text);
121 void updateTitlebar();
122
123private:
124 QString replaceWindowTitleVariables(QString title);
125 void findTextCodecs();
126
127 QVector<QAction *> df_translate_actions_;
128 static const char *translator_;
129 static const char *translated_filter_;
130
131private slots:
132 void copyDisplayFilterTranslation(void);
133
134signals:
135 void setCaptureFile(capture_file *cf);
136 void captureActive(int);
137 void fieldSelected(FieldInformation *);
138 void fieldHighlight(FieldInformation *);
139 void framesSelected(QList<int>);
140 void filterAction(QString filter, FilterAction::Action action, FilterAction::ActionType type);
141 void displayFilterSuccess(bool success);
142
143};
144
145#endif // MAINWINDOW_H
Definition capture_file.h:21
Definition data_source_tab.h:28
Definition display_filter_combo.h:17
Definition field_information.h:23
Definition funnel_statistics.h:67
Definition main_status_bar.h:33
Definition main_window.h:47
Definition packet_diagram.h:26
Definition packet_list.h:40
Definition profile_switcher.h:28
Definition proto_tree.h:27
Definition welcome_page.h:27
Definition cfile.h:67