10#ifndef WIRESHARK_MAIN_WINDOW_H
11#define WIRESHARK_MAIN_WINDOW_H
61# include <QSocketNotifier>
75class CaptureOptionsDialog;
88#if defined(HAVE_LIBNL) && defined(HAVE_NL80211)
98 class WiresharkMainWindow;
137 info_data_t *captureInfoData() {
return &info_data_; }
248 MatchSelectedReplace,
256 Ui::WiresharkMainWindow *main_ui_;
258#if defined(HAVE_LIBNL) && defined(HAVE_NL80211)
261 QWidget *previous_focus_;
263 QActionGroup *show_hide_actions_;
264 QAction *appearance_mode_spacer_ =
nullptr;
265 QActionGroup *time_display_actions_;
266 QActionGroup *time_precision_actions_;
268 QAction *action_telephony_dis_streams_;
269 QAction *action_telephony_imsi_list_;
270 QList<QPair<QAction *, bool>> freeze_actions_;
271 QPointer<QWidget> freeze_focus_;
272 QMap<QAction *, ts_type> td_actions;
273 QMap<QAction *, ts_precision> tp_actions;
281 bool capture_stopping_;
282 bool capture_filter_valid_;
285 CaptureOptionsDialog *capture_options_dialog_;
289 QPoint dragStartPosition;
291 QPointer<TLSKeylogDialog> tlskeylog_dialog_;
292 QPointer<PreferencesDialog> preferences_dialog_;
308 void mergeCaptureFile();
314 void importCaptureFile();
322 bool saveCaptureFile(
capture_file *cf,
bool dont_reopen);
332 bool saveAsCaptureFile(
capture_file *cf,
bool must_support_comments =
false,
bool dont_reopen =
false);
338 void exportSelectedPackets();
350 void enableAggregationView(
bool enable)
const;
360 void fileAddExtension(QString &file_name,
int file_type, ws_compression_type compression_type);
367 void captureStop(
bool discard =
false);
370 void initMainToolbarIcons();
373 void updateMainToolbarIconSize();
379 void cycleAppearanceMode();
382 void updateAppearanceModeAction();
385 void updateAppearanceModeButton();
388 void initShowHideMainWidgets();
391 void initTimeDisplayFormatMenu();
394 void initTimePrecisionFormatMenu();
397 void initFreezeActions();
403 void setMenusForCaptureFile(
bool force_disable =
false)
override;
409 void setMenusForCaptureInProgress(
bool capture_in_progress =
false);
412 void setMenusForCaptureStopping();
418 void setForCapturedPackets(
bool have_captured_packets);
424 void setMenusForFileSet(
bool enable_list_files);
429 void updateStyleSheet();
437 void externalMenuHelper(
ext_menu_t *menu, QMenu *subMenu,
int depth);
446 void setForCaptureInProgress(
bool capture_in_progress =
false,
bool handle_toolbars =
false, GArray *ifaces = NULL);
455 QMenu *findOrAddMenu(QMenu *parent_menu,
const QStringList &menu_parts);
463 QMenu *findOrAddMenubar(
const QString menu_text);
469 void captureFileReadStarted(
const QString &action);
476 void addMenusandSubmenus(QAction *action, QMenu *cur_menu);
483 void removeMenusandSubmenus(QAction *action, QMenu *cur_menu);
490 void addMenuActions(QList<QAction *> &actions,
int menu_group);
497 void removeMenuActions(QList<QAction *> &actions,
int menu_group);
504 void goToConversationFrame(
bool go_next,
bool start_current =
true);
511 void colorizeWithFilter(QByteArray filter,
int color_number = -1);
556 void showExtcapOptions(QString &device_name,
bool startCaptureOnClose);
578 bool openCaptureFile(QString cf_path, QString display_filter,
unsigned int type,
bool is_tempfile =
false);
662 void launchRLCGraph(
bool channelKnown, uint8_t RAT, uint16_t ueid, uint8_t rlcMode,
663 uint16_t channelType, uint16_t channelId, uint8_t direction);
667 void openLuaDebuggerDialog();
724 void applyFilter(QString new_filter = QString(),
bool force =
false)
override;
734 void onAppInitialized();
743 void initViewColorizeMenu();
746 void initConversationMenus();
755 static bool addExportObjectsMenuItem(
const void *key,
void *value,
void *userdata);
758 void initExportObjectsMenus();
767 static bool addFollowStreamMenuItem(
const void *key,
void *value,
void *userdata);
770 void initFollowStreamMenus();
776 void startCapture(QStringList interfaces);
782 void pushLiveCaptureInProgress();
785 void popLiveCaptureInProgress();
794 void aggregationViewChanged(
bool enable)
const;
797 void loadWindowGeometry();
800 void saveWindowGeometry();
805 void mainStackChanged(
int);
808 void updateRecentCaptures();
811 void addPacketComment();
814 void editPacketComment();
817 void deletePacketComment();
820 void deleteCommentsFromPackets();
828 QString commentToMenuText(QString text,
int max_len = 40);
831 void setEditCommentsMenu();
834 void setMenusForSelectedPacket();
843 void interfaceSelectionChanged();
849 void captureFilterSyntaxChanged(
bool valid);
852 void redissectPackets();
855 void checkDisplayFilter();
858 void fieldsChanged();
861 void reloadLuaPlugins();
868 void showAccordionFrame(
AccordionFrame *show_frame,
bool toggle =
false);
874 void showColumnEditor(
int column);
877 void showPreferenceEditor();
880 void addStatsPluginsToMenu();
883 void addDynamicMenus();
886 void reloadDynamicMenus();
889 void addPluginIFStructures();
896 QMenu *searchSubMenu(QString objectName);
901 void activatePluginIFToolbar(
bool);
908 void startInterfaceCapture(
bool valid,
const QString capture_filter);
912 void applyGlobalCommandLineOptions();
918 void setFeaturesEnabled(
bool enabled =
true);
921 void on_actionNewDisplayFilterExpression_triggered();
928 void onFilterSelected(QString filterText,
bool prepare);
931 void onFilterPreferences();
937 void onFilterEdit(
int uatIndex);
953 void openStatCommandDialog(
const QString &menu_path,
const char *arg,
void *userdata);
961 void openTapParameterDialog(
const QString cfg_str,
const QString arg,
void *userdata);
964 void openTapParameterDialog();
967 void connectFileMenuActions();
970 void exportPacketBytes();
976 void stripPacketHeaders();
979 void exportTLSSessionKeys();
985 void connectEditMenuActions();
997 void editTimeShift();
1000 void editConfigurationProfiles();
1006 void editTimeShiftFinished(
int result);
1021 void editPacketCommentFinished(
PacketCommentDialog *pc_dialog,
int result,
unsigned nComment);
1024 void deleteAllPacketComments();
1030 void deleteAllPacketCommentsFinished(
int result);
1037 void injectSecrets(
const char *proto_name,
const char *wiki_link);
1040 void discardAllSecrets();
1046 void discardAllSecretsFinished(
int result);
1052 void showPreferencesDialog(QString module_name)
override;
1055 void connectViewMenuActions();
1061 void showHideMainWidgets(QAction *action);
1067 void setTimestampFormat(QAction *action);
1073 void setTimestampPrecision(QAction *action);
1079 void setTimeDisplaySecondsWithHoursAndMinutes(
bool checked);
1082 void editResolvedName();
1085 void setNameResolution();
1088 void showColoringRulesDialog();
1091 void showTaggingRulesDialog();
1098 void colorizeConversation(
bool create_rule =
false);
1101 void colorizeActionTriggered();
1107 void openPacketDialog(
bool from_reference =
false);
1110 void reloadCaptureFileAsFormatOrCapture();
1113 void reloadCaptureFile();
1116 void connectGoMenuActions();
1119 void setPreviousFocus();
1122 void resetPreviousFocus();
1125 void connectCaptureMenuActions();
1128 void startCaptureTriggered();
1131 void connectAnalyzeMenuActions();
1142 void applyFieldAsColumn();
1145 void filterMenuAboutToShow();
1148 void applyConversationFilter();
1151 void applyExportObject();
1160 void openFollowStreamDialog(
int proto_id,
unsigned stream_num,
unsigned sub_stream_num,
bool use_stream_index =
true);
1166 void openFollowStreamDialog(
int proto_id);
1174 void openIOGraph(
bool filtered, QVector<uint> conv_ids, QVector<QVariant> conv_agg);
1179 void statCommandExpertInfo(
const char *,
void *);
1182 void connectHelpMenuActions();
1185 void goToCancelClicked();
1188 void goToGoClicked();
1191 void goToLineEditReturnPressed();
1194 void connectStatisticsMenuActions();
1197 void showResolvedAddressesDialog();
1200 void showConversationsDialog();
1203 void showEndpointsDialog();
1209 void openTcpStreamDialog(
int graph_type);
1210 void openTcpDedupDialog();
1213 void openSCTPAllAssocsDialog();
1216 void on_actionSCTPShowAllAssociations_triggered();
1219 void on_actionSCTPAnalyseThisAssociation_triggered();
1222 void on_actionSCTPFilterThisAssociation_triggered();
1227 void statCommandMulticastStatistics(
const char *,
void *);
1232 void statCommandWlanStatistics(
const char *,
void *);
1238 void openStatisticsTreeDialog(
const char *abbr);
1243 void statCommandIOGraph(
const char *,
void *);
1257 void showPlotDialog(
const QString &y_field = QString(),
bool filtered =
false)
override;
1265 void showIOGraphDialogForFilters(
const QString &displayFilter,
1266 const QVector<QString> &filters,
1267 const QVector<QString> &names = QVector<QString>())
override;
1270 void connectTelephonyMenuActions();
1300 void statCommandLteMacStatistics(
const char *arg,
void *);
1306 void statCommandLteRlcStatistics(
const char *arg,
void *);
1309 void openRtpStreamAnalysisDialog();
1312 void openRtpPlayerDialog();
1315 void connectWirelessMenuActions();
1318 void connectToolsMenuActions();
1321 void externalMenuItemTriggered();
1324 void on_actionContextWikiProtocolPage_triggered();
1327 void on_actionContextFilterFieldReference_triggered();
1333 void extcap_options_finished(
int result);
1340 void showExtcapOptionsDialog(QString device_name,
bool startCaptureOnClose);
1349 QString findRtpStreams(QVector<rtpstream_id_t *> *stream_ids,
bool reverse);
1352 void openTLSKeylogDialog();
struct _info_data info_data_t
Aggregates packet count statistics and UI state for a live capture info display.
struct _capture_session capture_session
Opaque handle representing an active or pending capture session.
struct _capture_file capture_file
Represents a capture file and its associated metadata.
A QFrame that shows and hides itself with a slide animation.
Definition accordion_frame.h:21
Represents an event occurring during a capture or file operation.
Definition capture_event.h:24
A tab widget that manages and displays different data sources for a packet (e.g., Hex,...
Definition data_source_tab.h:36
A dialog for viewing and managing DIS (Distributed Interactive Simulation) streams from a capture fil...
Definition dis_stream_dialog.h:34
A dialog for managing and displaying capture file sets.
Definition file_set_dialog.h:32
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
A dialog for managing and editing capture filters, display filters, and display macros.
Definition filter_dialog.h:31
Manages statistics and user interface interactions for Lua-based funnel plugins.
Definition funnel_statistics.h:35
Search-within-current-packet logic shared by Find Packet (main window) and InPacketFindBar (single-pa...
Definition in_packet_search.h:24
CopySelected
Enumeration for determining what to copy when items are selected.
Definition main_window.h:255
MainWindow(QWidget *parent=nullptr)
Constructs a new MainWindow.
Definition main_window.cpp:51
FileCloseContext
Context under which a capture file is being closed.
Definition main_window.h:279
@ Default
Default closing context.
Definition main_window.h:281
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:51
Dialog for configuring Wireshark preferences.
Definition preferences_dialog.h:33
Dialog that provides packet print and print-preview functionality for a live or saved capture file.
Definition print_dialog.h:31
A tree view for displaying protocol dissection details.
Definition proto_tree.h:30
Singleton dialog for analyzing RTP streams.
Definition rtp_analysis_dialog.h:106
Singleton dialog for playing and analyzing RTP audio streams. Singleton pattern based on https://refa...
Definition rtp_player_dialog.h:108
Singleton dialog for viewing and managing RTP streams. Singleton pattern based on https://refactoring...
Definition rtp_stream_dialog.h:32
Widget displayed on application startup, providing interface selection, capture filter configuration,...
Definition welcome_page.h:31
Toolbar frame that exposes 802.11 wireless interface controls — channel, channel type,...
Definition wireless_frame.h:27
Top-level Qt application object for the Wireshark GUI.
Definition wireshark_application.h:19
bool event(QEvent *event) override
Handles window-level events such as activation changes.
Definition wireshark_main_window.cpp:983
bool openCaptureFile(QString cf_path, QString display_filter, unsigned int type, bool is_tempfile=false)
Opens a capture file.
Definition wireshark_main_window_slots.cpp:209
void captureFileReadFinished()
Updates UI state after a capture file has been fully read.
Definition wireshark_main_window_slots.cpp:801
void rtpPlayerDialogAddRtpStreams(QVector< rtpstream_id_t * > stream_ids)
Adds streams to the RTP Player dialog.
Definition wireshark_main_window_slots.cpp:4408
void updateAggregationView() const
Refreshes the packet aggregation view to reflect the current capture state.
Definition wireshark_main_window_slots.cpp:447
void launchRLCGraph(bool channelKnown, uint8_t RAT, uint16_t ueid, uint8_t rlcMode, uint16_t channelType, uint16_t channelId, uint8_t direction)
Opens the LTE RLC graph dialog for a specific channel.
Definition wireshark_main_window_slots.cpp:4022
void openRecentCaptureFile(const QString &filename) override
Opens the given recent capture file, handling any necessary prompts.
Definition wireshark_main_window_slots.cpp:1062
void keyPressEvent(QKeyEvent *event) override
Handles key press events for global keyboard shortcuts.
Definition wireshark_main_window.cpp:997
void dropEvent(QDropEvent *event) override
Opens a capture file dropped onto the window.
Definition wireshark_main_window.cpp:1130
void rtpPlayerDialogReplaceRtpStreams(QVector< rtpstream_id_t * > stream_ids)
Replaces all streams in the RTP Player dialog with the given stream list.
Definition wireshark_main_window_slots.cpp:4401
friend class MainApplication
Friend class allowing access to private members.
Definition wireshark_main_window.h:1355
QMenu * createPopupMenu() override
Creates and returns the window's right-click popup menu.
Definition wireshark_main_window.cpp:839
void removeInterfaceToolbar(const char *menu_title)
Removes the interface toolbar with the given menu title.
Definition wireshark_main_window.cpp:913
void rtpAnalysisDialogReplaceRtpStreams(QVector< rtpstream_id_t * > stream_ids)
Replaces all streams in the RTP Analysis dialog with the given stream list.
Definition wireshark_main_window_slots.cpp:4422
void setFunnelMenus(void)
Rebuilds the Lua funnel statistics menus from registered funnel entries.
Definition wireshark_main_window.cpp:3127
void changeEvent(QEvent *event) override
Responds to locale or palette changes by retranslating the UI.
Definition wireshark_main_window.cpp:2714
bool eventFilter(QObject *obj, QEvent *event) override
Filters events on watched objects (e.g. focus changes on child widgets).
Definition wireshark_main_window.cpp:965
void updatePreferenceActions()
Refreshes menu items that reflect preference values.
Definition wireshark_main_window_slots.cpp:384
void rtpPlayerDialogRemoveRtpStreams(QVector< rtpstream_id_t * > stream_ids)
Removes streams from the RTP Player dialog.
Definition wireshark_main_window_slots.cpp:4415
void packetInfoChanged(struct _packet_info *pinfo)
Emitted when the selected packet changes, providing the new packet info.
void setTitlebarForCaptureFile()
Updates the window title bar to reflect the current capture file name and state.
Definition wireshark_main_window.cpp:2545
void dragEnterEvent(QDragEnterEvent *event) override
Accepts drag-enter events for capture files dragged onto the window.
Definition wireshark_main_window.cpp:1099
void rtpStreamsDialogSelectRtpStreams(QVector< rtpstream_id_t * > stream_ids)
Selects the given streams in the RTP Streams dialog.
Definition wireshark_main_window_slots.cpp:4437
void captureFileClosing()
Updates UI state while a capture file is being closed.
Definition wireshark_main_window_slots.cpp:827
void setDissectedCaptureFile(capture_file *cf)
Emitted when a dissected capture file becomes the active file.
void updateRecentActions()
Rebuilds the File → Open Recent submenu from the recent-files list.
Definition wireshark_main_window_slots.cpp:400
void applyFilter(QString new_filter=QString(), bool force=false) override
Applies a new display filter to the open capture file.
Definition wireshark_main_window_slots.cpp:317
void rtpAnalysisDialogAddRtpStreams(QVector< rtpstream_id_t * > stream_ids)
Adds streams to the RTP Analysis dialog.
Definition wireshark_main_window_slots.cpp:4427
void selectRtpStream(rtpstream_id_t *id)
Emitted to request that an RTP stream be selected in all interested dialogs.
void deselectRtpStream(rtpstream_id_t *id)
Emitted to request that an RTP stream be deselected in all interested dialogs.
WiresharkMainWindow(QWidget *parent=nullptr)
Constructs the Wireshark main window and initialises all menus, toolbars, and UI components.
Definition wireshark_main_window.cpp:347
void rtpAnalysisDialogRemoveRtpStreams(QVector< rtpstream_id_t * > stream_ids)
Removes streams from the RTP Analysis dialog.
Definition wireshark_main_window_slots.cpp:4432
void captureFileOpened()
Updates UI state when a capture file is first opened.
Definition wireshark_main_window_slots.cpp:777
bool openCaptureFile(QString cf_path=QString(), QString display_filter=QString())
Convenience overload that auto-detects file type.
Definition wireshark_main_window.h:586
void layoutToolbars()
Repositions and resizes toolbars according to current layout settings.
Definition wireshark_main_window_slots.cpp:330
~WiresharkMainWindow()
Destroys the main window and releases all associated resources.
Definition wireshark_main_window.cpp:812
void captureFileClosed()
Resets UI state after a capture file has been fully closed.
Definition wireshark_main_window_slots.cpp:842
void reloadFields()
Emitted to request that all views reload their field definitions.
void showCaptureOptionsDialog()
Opens the capture options dialog (interface selection, filters, etc.).
Definition wireshark_main_window_slots.cpp:3182
void closeEvent(QCloseEvent *event) override
Prompts the user to save unsaved changes before closing the window.
Definition wireshark_main_window.cpp:1037
void setMwFileName(QString fileName)
Sets the file path shown in the main window title bar.
Definition wireshark_main_window.cpp:3166
bool tryClosingCaptureFile(QString before_what, FileCloseContext context=Default) override
Attempts to close the current capture file, prompting the user to save if there are unsaved changes.
Definition wireshark_main_window.cpp:1882
void closePacketDialogs()
Emitted to request that all packet-detail dialogs close themselves.
QString getMwFileName()
Returns the file path currently shown in the main window title bar.
Definition wireshark_main_window.cpp:3161
void addInterfaceToolbar(const iface_toolbar *toolbar_entry)
Adds an interface toolbar for the given toolbar descriptor.
Definition wireshark_main_window.cpp:872
void rtpStreamsDialogDeselectRtpStreams(QVector< rtpstream_id_t * > stream_ids)
Deselects the given streams in the RTP Streams dialog.
Definition wireshark_main_window_slots.cpp:4442
void removeAdditionalToolbar(QString toolbarName)
Removes an additional (plugin/interface) toolbar by name.
Definition wireshark_main_window.cpp:3132
void fieldFilterChanged(const QByteArray field_filter)
Emitted when the field-based display filter changes.
export_type_e
Output format for packet data export operations.
Definition file_dialog.h:32
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
ext_menubar_t ext_menu_t
Definition plugin_if.h:65
struct _rtpstream_id rtpstream_id_t
Represents the metadata and indexing information for a single captured frame.
Definition packet_info.h:43
ts_precision
Sub-second precision used when formatting packet timestamps.
Definition timestamp.h:41
ts_type
Format used to display packet timestamps in the summary packet list.
Definition timestamp.h:22