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
80protected:
81 enum CopySelected {
82 CopyAllVisibleItems,
83 CopyAllVisibleSelectedTreeItems,
84 CopySelectedDescription,
85 CopySelectedFieldName,
86 CopySelectedValue,
87 CopyListAsText,
88 CopyListAsCSV,
89 CopyListAsYAML,
90 CopyListAsHTML,
91 };
92
93 void showWelcome();
94 void showCapture();
95 void setTitlebarForCaptureInProgress();
96 void setIconForCaptureInProgress(bool capture_in_progress);
97 virtual void setMenusForCaptureFile(bool force_disable = false) = 0;
98
99 CaptureFile capture_file_;
100 QList<register_stat_group_t> menu_groups_;
101 QWidget* getLayoutWidget(layout_pane_content_e type);
102
103 QStackedWidget *main_stack_;
104 WelcomePage *welcome_page_;
105 QSplitter master_split_;
106 QSplitter extra_split_;
107 QWidget empty_pane_;
108 QVector<unsigned> cur_layout_;
109
110 PacketList *packet_list_;
111 ProtoTree *proto_tree_;
112 DataSourceTab *data_source_tab_;
113 PacketDiagram *packet_diagram_;
114 DisplayFilterCombo *df_combo_box_;
115 MainStatusBar *main_status_bar_;
116 ProfileSwitcher *profile_switcher_;
117 bool use_capturing_title_;
118 QMap<QString, QTextCodec *> text_codec_map_;
119
120 // Recent captures menu support - set by subclasses
121 QMenu *recent_captures_menu_;
122 QAction *no_recent_files_action_;
123#if defined(Q_OS_MAC)
124 QMenu *dock_menu_;
125#endif
126
132
141
146 virtual void openRecentCaptureFile(const QString &filename) = 0;
147
148 protected slots:
149 void addDisplayFilterTranslationActions(QMenu *copy_menu);
150 void updateDisplayFilterTranslationActions(const QString &df_text);
151 void updateTitlebar();
152
153private:
154 QString replaceWindowTitleVariables(QString title);
155 void findTextCodecs();
156
157 QVector<QAction *> df_translate_actions_;
158 static const char *translator_;
159 static const char *translated_filter_;
160
161private slots:
162 void copyDisplayFilterTranslation(void);
163
164signals:
165 void setCaptureFile(capture_file *cf);
166 void captureActive(int);
167 void fieldSelected(FieldInformation *);
168 void fieldHighlight(FieldInformation *);
169 void framesSelected(QList<int>);
170 void filterAction(QString filter, FilterAction::Action action, FilterAction::ActionType type);
171 void displayFilterSuccess(bool success);
172
173};
174
175#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: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:562
virtual void openRecentCaptureFile(const QString &filename)=0
void populateRecentCapturesMenu()
Definition main_window.cpp:484
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