Wireshark  4.3.0
The Wireshark network protocol analyzer
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 "filter_action.h"
22 
23 #include <QMainWindow>
24 #include <QSplitter>
25 
26 class QSplitter;
27 class QStackedWidget;
28 class ByteViewTab;
29 class DisplayFilterCombo;
30 class FieldInformation;
31 class MainStatusBar;
32 class PacketDiagram;
33 class PacketList;
34 class ProfileSwitcher;
35 class ProtoTree;
36 class WelcomePage;
37 
38 typedef struct _capture_file capture_file;
39 
40 class MainWindow : public QMainWindow
41 {
42  Q_OBJECT
43 public:
44  explicit MainWindow(QWidget *parent = nullptr);
45  ~MainWindow();
46  bool hasSelection();
47  bool hasUniqueSelection();
48  QList<int> selectedRows(bool useFrameNum = false);
49  void insertColumn(QString name, QString abbrev, int pos = -1);
50  void gotoFrame(int packet_num);
51  frame_data* frameDataForRow(int) const;
52 
53  QString getFilter();
54  MainStatusBar *statusBar();
55 
56  // Used for managing custom packet menus
57  void appendPacketMenu(QAction* funnel_action);
58  QList<QAction*> getPacketMenuActions();
59  void clearAddedPacketMenus();
60  bool addPacketMenus(QMenu * ctx_menu, GPtrArray *finfo_array);
61 
62 public slots:
63  void setDisplayFilter(QString filter, FilterAction::Action action, FilterAction::ActionType filterType);
64  virtual void filterPackets(QString, bool) = 0;
65  virtual void showPreferencesDialog(QString module_name) = 0;
66  void layoutPanes();
67  void applyRecentPaneGeometry();
68 
69 protected:
70  enum CopySelected {
71  CopyAllVisibleItems,
72  CopyAllVisibleSelectedTreeItems,
73  CopySelectedDescription,
74  CopySelectedFieldName,
75  CopySelectedValue,
76  CopyListAsText,
77  CopyListAsCSV,
78  CopyListAsYAML
79  };
80 
81  void showWelcome();
82  void showCapture();
83 
84  QList<register_stat_group_t> menu_groups_;
85  QWidget* getLayoutWidget(layout_pane_content_e type);
86 
87  QStackedWidget *main_stack_;
88  WelcomePage *welcome_page_;
89  QSplitter master_split_;
90  QSplitter extra_split_;
91  QWidget empty_pane_;
92  QVector<unsigned> cur_layout_;
93 
94  PacketList *packet_list_;
95  ProtoTree *proto_tree_;
96  ByteViewTab *byte_view_tab_;
97  PacketDiagram *packet_diagram_;
98  DisplayFilterCombo *df_combo_box_;
99  MainStatusBar *main_status_bar_;
100  ProfileSwitcher *profile_switcher_;
101 
102 signals:
103  void setCaptureFile(capture_file *cf);
104  void fieldSelected(FieldInformation *);
105  void framesSelected(QList<int>);
106  void filterAction(QString filter, FilterAction::Action action, FilterAction::ActionType type);
107  void displayFilterSuccess(bool success);
108 
109 };
110 
111 #endif // MAINWINDOW_H
Definition: byte_view_tab.h:29
Definition: display_filter_combo.h:17
Definition: field_information.h:23
Definition: main_status_bar.h:33
Definition: main_window.h:41
Definition: packet_diagram.h:26
Definition: packet_list.h:40
Definition: profile_switcher.h:28
Definition: proto_tree.h:29
Definition: welcome_page.h:27
Definition: cfile.h:67