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