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