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
50class MainWindow : public QMainWindow
51{
52 Q_OBJECT
53public:
58 explicit MainWindow(QWidget *parent = nullptr);
59
64
69 void setMainWindowTitle(QString title = QString());
70
75 bool hasSelection();
76
81 bool hasUniqueSelection();
82
88 QList<int> selectedRows(bool useFrameNum = false);
89
96 void insertColumn(QString name, QString abbrev, int pos = -1);
97
102 void gotoFrame(int packet_num);
103
109 frame_data* frameDataForRow(int row) const;
110
115 QString getFilter();
116
122
123 // Used for managing custom packet menus
124
129 void appendPacketMenu(FunnelAction *funnel_action);
130
135 QList<QAction*> getPacketMenuActions();
136
141
148 bool addPacketMenus(QMenu * ctx_menu, GPtrArray *finfo_array);
149
150public slots:
157 void setDisplayFilter(QString filter, FilterAction::Action action, FilterAction::ActionType filterType);
158
164 virtual void filterPackets(QString new_filter, bool force) = 0;
165
170 virtual void showPreferencesDialog(QString module_name) = 0;
171
177 virtual void showIOGraphDialog(io_graph_item_unit_t value_units, QString yfield) = 0;
178
184 virtual void showPlotDialog(const QString& y_field, bool filtered) = 0;
185
189 void layoutPanes();
190
195
200
205 void cyclePane(bool reverse = false);
206
207protected:
231
249
253 void showWelcome();
254
258 void showCapture();
259
264
269 void setIconForCaptureInProgress(bool capture_in_progress);
270
275 virtual void setMenusForCaptureFile(bool force_disable = false) = 0;
276
279
281 QList<register_stat_group_t> menu_groups_;
282
289
291 QStackedWidget *main_stack_;
292
295
297 QSplitter master_split_;
298
300 QSplitter extra_split_;
301
303 QWidget empty_pane_;
304
306 QVector<unsigned> cur_layout_;
307
310
313
316
319
322
325
328
331
334
336 QMap<QString, QTextCodec *> text_codec_map_;
337
338 // Recent captures menu support - set by subclasses
339
342
345#if defined(Q_OS_MAC)
347 QMenu *dock_menu_;
348#endif
349
355
364
369 virtual void openRecentCaptureFile(const QString &filename) = 0;
370
377 virtual bool tryClosingCaptureFile(QString before_what, FileCloseContext context = Default) = 0;
378
379protected slots:
384 void addDisplayFilterTranslationActions(QMenu *copy_menu);
385
390 void updateDisplayFilterTranslationActions(const QString &df_text);
391
395 void updateTitlebar();
396
397private:
403 QString replaceWindowTitleVariables(QString title);
404
408 void findTextCodecs();
409
411 QVector<QAction *> df_translate_actions_;
412
414 static const char *translator_;
415
417 static const char *translated_filter_;
418
419private slots:
423 void copyDisplayFilterTranslation(void);
424
425signals:
431
436 void captureActive(int active);
437
443
449
454 void framesSelected(QList<int> frames);
455
463
468 void displayFilterSuccess(bool success);
469};
470
471#endif // MAINWINDOW_H
Manages a capture file and its associated state and operations.
Definition capture_file.h:27
A tab widget that manages and displays different data sources for a packet (e.g., Hex,...
Definition data_source_tab.h:36
A combo box widget tailored for entering, evaluating, and storing display filters.
Definition display_filter_combo.h:20
Represents information about a dissected packet field.
Definition field_information.h:26
Action
Defines an action to be taken with a filter.
Definition filter_action.h:30
ActionType
Defines how the new filter should be combined with the existing one.
Definition filter_action.h:43
An action representing a specific funnel menu or packet menu command.
Definition funnel_statistics.h:167
The main status bar of the application.
Definition main_status_bar.h:36
The main window of the application.
Definition main_window.h:51
virtual void showIOGraphDialog(io_graph_item_unit_t value_units, QString yfield)=0
Shows the IO graph dialog.
QAction * no_recent_files_action_
Definition main_window.h:344
QList< QAction * > getPacketMenuActions()
Retrieves the list of custom packet menu actions.
Definition main_window.cpp:231
QSplitter extra_split_
Definition main_window.h:300
void setTitlebarForCaptureInProgress()
Sets the title bar text for when a capture is in progress.
Definition main_window.cpp:458
void framesSelected(QList< int > frames)
Signal emitted when frames are selected.
virtual bool tryClosingCaptureFile(QString before_what, FileCloseContext context=Default)=0
Tries to safely close the current capture file.
MainStatusBar * main_status_bar_
Definition main_window.h:327
void setCaptureFile(capture_file *cf)
Signal emitted to set a new capture file.
bool use_capturing_title_
Definition main_window.h:333
frame_data * frameDataForRow(int row) const
Retrieves frame data for a specific row.
Definition main_window.cpp:169
PacketList * packet_list_
Definition main_window.h:309
void retranslateUiElements()
Handle retranslation of UI elements in MainWindow.
Definition main_window.cpp:581
virtual void filterPackets(QString new_filter, bool force)=0
Filters the packets.
void showWelcome()
Displays the welcome screen.
Definition main_window_layout.cpp:39
void updateDisplayFilterTranslationActions(const QString &df_text)
Updates the available translation actions based on filter text.
Definition main_window.cpp:340
QVector< unsigned > cur_layout_
Definition main_window.h:306
MainStatusBar * statusBar()
Retrieves the main status bar.
Definition main_window.cpp:201
void fieldSelected(FieldInformation *finfo)
Signal emitted when a field is selected.
void filterAction(QString filter, FilterAction::Action action, FilterAction::ActionType type)
Signal emitted to perform a filter action.
QList< int > selectedRows(bool useFrameNum=false)
Retrieves the selected rows.
Definition main_window.cpp:162
void showCapture()
Displays the main capture view.
Definition main_window_layout.cpp:44
virtual void openRecentCaptureFile(const QString &filename)=0
Open a capture file from the recent files menu.
CopySelected
Enumeration for determining what to copy when items are selected.
Definition main_window.h:211
@ CopyAllVisibleItems
Copy all visible items.
Definition main_window.h:213
@ CopyListAsText
Copy the list formatted as text.
Definition main_window.h:223
@ CopySelectedFieldName
Copy the selected field name.
Definition main_window.h:219
@ CopyListAsHTML
Copy the list formatted as HTML.
Definition main_window.h:229
@ CopyAllVisibleSelectedTreeItems
Copy all visible items within the selected tree.
Definition main_window.h:215
@ CopySelectedValue
Copy the selected value.
Definition main_window.h:221
@ CopyListAsYAML
Copy the list formatted as YAML.
Definition main_window.h:227
@ CopyListAsCSV
Copy the list formatted as CSV.
Definition main_window.h:225
@ CopySelectedDescription
Copy the selected description.
Definition main_window.h:217
void fieldHighlight(FieldInformation *finfo)
Signal emitted when a field is highlighted.
QWidget * proto_container_
Definition main_window.h:315
DisplayFilterCombo * df_combo_box_
Definition main_window.h:324
void setMainWindowTitle(QString title=QString())
Sets the title of the main window.
Definition main_window.cpp:425
void appendPacketMenu(FunnelAction *funnel_action)
Appends a custom packet menu action.
Definition main_window.cpp:216
void clearAddedPacketMenus()
Clears the recently added custom packet menus.
Definition main_window.cpp:248
void layoutPanes()
Recalculates and lays out the panes.
Definition main_window_layout.cpp:107
QStackedWidget * main_stack_
Definition main_window.h:291
PacketDiagram * packet_diagram_
Definition main_window.h:321
void insertColumn(QString name, QString abbrev, int pos=-1)
Inserts a column into the view.
Definition main_window.cpp:177
void cyclePane(bool reverse=false)
Cycles the focus through the available panes.
Definition main_window_layout.cpp:76
void populateRecentCapturesMenu()
Populate the recent captures menu. Calls openRecentCaptureFile() for each menu item action.
Definition main_window.cpp:503
void setDisplayFilter(QString filter, FilterAction::Action action, FilterAction::ActionType filterType)
Sets the display filter and performs an action.
Definition main_window.cpp:206
QMenu * recent_captures_menu_
Definition main_window.h:341
void displayFilterSuccess(bool success)
Signal emitted when a display filter is successfully applied.
void applyRecentPaneGeometry()
Applies the most recent pane geometry settings.
Definition main_window_layout.cpp:237
QString getFilter()
Retrieves the current display filter.
Definition main_window.cpp:196
CaptureFile capture_file_
Definition main_window.h:278
QMap< QString, QTextCodec * > text_codec_map_
Definition main_window.h:336
QWidget * getLayoutWidget(layout_pane_content_e type)
Retrieves the widget corresponding to a layout pane content type.
Definition main_window_layout.cpp:52
QSplitter master_split_
Definition main_window.h:297
virtual void showPreferencesDialog(QString module_name)=0
Shows the preferences dialog for a specific module.
DataSourceTab * data_source_tab_
Definition main_window.h:318
void captureActive(int active)
Signal emitted when a capture becomes active.
void setIconForCaptureInProgress(bool capture_in_progress)
Sets the window icon to indicate if a capture is in progress.
Definition main_window.cpp:488
bool addPacketMenus(QMenu *ctx_menu, GPtrArray *finfo_array)
Adds packet menus to the given context menu.
Definition main_window.cpp:268
void updateForUnsavedChanges()
Updates the UI to reflect unsaved changes.
Definition main_window_layout.cpp:302
QList< register_stat_group_t > menu_groups_
Definition main_window.h:281
ProtoTree * proto_tree_
Definition main_window.h:312
ProfileSwitcher * profile_switcher_
Definition main_window.h:330
void addDisplayFilterTranslationActions(QMenu *copy_menu)
Adds translation actions for the display filter to a menu.
Definition main_window.cpp:308
QWidget empty_pane_
Definition main_window.h:303
void updateTitlebar()
Updates the main title bar text.
Definition main_window.cpp:464
WelcomePage * welcome_page_
Definition main_window.h:294
~MainWindow()
Destroys the MainWindow.
Definition main_window.cpp:88
bool hasUniqueSelection()
Checks if the current selection is unique.
Definition main_window.cpp:155
bool hasSelection()
Checks if there is a current selection.
Definition main_window.cpp:143
void gotoFrame(int packet_num)
Navigates to a specific frame number.
Definition main_window.cpp:189
virtual void setMenusForCaptureFile(bool force_disable=false)=0
Sets up the menus for the active capture file.
FileCloseContext
Context under which a capture file is being closed.
Definition main_window.h:235
@ Update
Closing as part of an update.
Definition main_window.h:245
@ Export
Closing to export the file.
Definition main_window.h:247
@ Quit
Closing because the application is quitting.
Definition main_window.h:239
@ Restart
Closing because the application is restarting.
Definition main_window.h:241
@ Default
Default closing context.
Definition main_window.h:237
@ Reload
Closing to reload the file.
Definition main_window.h:243
virtual void showPlotDialog(const QString &y_field, bool filtered)=0
Shows a plot dialog.
A graphics view widget for displaying protocol packet diagrams.
Definition packet_diagram.h:29
The main packet list view for displaying captured packets.
Definition packet_list.h:45
Monitors incoming packets and automatically switches the active configuration profile when a packet m...
Definition profile_switcher.h:38
A tree view for displaying protocol dissection details.
Definition proto_tree.h:30
Widget displayed on application startup, providing interface selection, capture filter configuration,...
Definition welcome_page.h:31
DIAG_OFF_PEDANTIC struct _frame_data frame_data
Frame data structure.
io_graph_item_unit_t
Selects the Y-axis value unit or aggregate calculation mode for an I/O graph plot.
Definition io_graph_item.h:29
layout_pane_content_e
Content assigned to a single layout pane in the main window.
Definition prefs.h:108
Represents a capture file and its associated metadata.
Definition cfile.h:84