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