Wireshark 4.7.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
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 QAction;
29class QMenu;
30class QSplitter;
31class QStackedWidget;
32class QTextCodec;
33
34class DataSourceTab;
37class FunnelAction;
38class MainStatusBar;
39class PacketDiagram;
40class PacketList;
41class ProfileSwitcher;
42class ProtoTree;
43class WelcomePage;
44
45typedef struct _capture_file capture_file;
46
47class MainWindow : public QMainWindow
48{
49 Q_OBJECT
50public:
51 explicit MainWindow(QWidget *parent = nullptr);
53 void setMainWindowTitle(QString title = QString());
54 bool hasSelection();
55 bool hasUniqueSelection();
56 QList<int> selectedRows(bool useFrameNum = false);
57 void insertColumn(QString name, QString abbrev, int pos = -1);
58 void gotoFrame(int packet_num);
59 frame_data* frameDataForRow(int) const;
60
61 QString getFilter();
62 MainStatusBar *statusBar();
63
64 // Used for managing custom packet menus
65 void appendPacketMenu(FunnelAction *funnel_action);
66 QList<QAction*> getPacketMenuActions();
67 void clearAddedPacketMenus();
68 bool addPacketMenus(QMenu * ctx_menu, GPtrArray *finfo_array);
69
70public slots:
71 void setDisplayFilter(QString filter, FilterAction::Action action, FilterAction::ActionType filterType);
72 virtual void filterPackets(QString, bool) = 0;
73 virtual void showPreferencesDialog(QString module_name) = 0;
74 virtual void showIOGraphDialog(io_graph_item_unit_t, QString) = 0;
75 virtual void showPlotDialog(const QString&, bool) = 0;
76 void layoutPanes();
77 void applyRecentPaneGeometry();
78 void updateForUnsavedChanges();
79 void cyclePane(bool reverse = false);
80
81protected:
82 enum CopySelected {
83 CopyAllVisibleItems,
84 CopyAllVisibleSelectedTreeItems,
85 CopySelectedDescription,
86 CopySelectedFieldName,
87 CopySelectedValue,
88 CopyListAsText,
89 CopyListAsCSV,
90 CopyListAsYAML,
91 CopyListAsHTML,
92 };
93
94 enum FileCloseContext {
95 Default,
96 Quit,
97 Restart,
98 Reload,
99 Update,
100 Export
101 };
102
103 void showWelcome();
104 void showCapture();
105 void setTitlebarForCaptureInProgress();
106 void setIconForCaptureInProgress(bool capture_in_progress);
107 virtual void setMenusForCaptureFile(bool force_disable = false) = 0;
108
109 CaptureFile capture_file_;
110 QList<register_stat_group_t> menu_groups_;
111 QWidget* getLayoutWidget(layout_pane_content_e type);
112
113 QStackedWidget *main_stack_;
114 WelcomePage *welcome_page_;
115 QSplitter master_split_;
116 QSplitter extra_split_;
117 QWidget empty_pane_;
118 QVector<unsigned> cur_layout_;
119
120 PacketList *packet_list_;
121 ProtoTree *proto_tree_;
122 DataSourceTab *data_source_tab_;
123 PacketDiagram *packet_diagram_;
124 DisplayFilterCombo *df_combo_box_;
125 MainStatusBar *main_status_bar_;
126 ProfileSwitcher *profile_switcher_;
127 bool use_capturing_title_;
128 QMap<QString, QTextCodec *> text_codec_map_;
129
130 // Recent captures menu support - set by subclasses
131 QMenu *recent_captures_menu_;
132 QAction *no_recent_files_action_;
133#if defined(Q_OS_MAC)
134 QMenu *dock_menu_;
135#endif
136
142
151
156 virtual void openRecentCaptureFile(const QString &filename) = 0;
157
158 virtual bool tryClosingCaptureFile(QString before_what, FileCloseContext context = Default) = 0;
159
160protected slots:
161 void addDisplayFilterTranslationActions(QMenu *copy_menu);
162 void updateDisplayFilterTranslationActions(const QString &df_text);
163 void updateTitlebar();
164
165private:
166 QString replaceWindowTitleVariables(QString title);
167 void findTextCodecs();
168
169 QVector<QAction *> df_translate_actions_;
170 static const char *translator_;
171 static const char *translated_filter_;
172
173private slots:
174 void copyDisplayFilterTranslation(void);
175
176signals:
177 void setCaptureFile(capture_file *cf);
178 void captureActive(int);
179 void fieldSelected(FieldInformation *);
180 void fieldHighlight(FieldInformation *);
181 void framesSelected(QList<int>);
182 void filterAction(QString filter, FilterAction::Action action, FilterAction::ActionType type);
183 void displayFilterSuccess(bool success);
184
185};
186
187#endif // MAINWINDOW_H
Definition capture_file.h:21
Definition data_source_tab.h:33
Definition display_filter_combo.h:17
Definition field_information.h:23
Definition funnel_statistics.h:68
Definition main_status_bar.h:33
Definition main_window.h:48
void retranslateUiElements()
Handle retranslation of UI elements in MainWindow.
Definition main_window.cpp:581
virtual void openRecentCaptureFile(const QString &filename)=0
void populateRecentCapturesMenu()
Definition main_window.cpp:503
Definition packet_diagram.h:26
Definition packet_list.h:41
Definition profile_switcher.h:28
Definition proto_tree.h:27
Definition welcome_page.h:28
Definition cfile.h:68