Wireshark 4.7.0
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
main_application.h
Go to the documentation of this file.
1
10#ifndef MAIN_APPLICATION_H
11#define MAIN_APPLICATION_H
12
13#include <config.h>
14
15#include "wsutil/feature_list.h"
16
17#include "ui/help_url.h"
18
19#include <QApplication>
20#include <QDir>
21#include <QFont>
22#include <QIcon>
23#include <QTimer>
24#include <QTranslator>
25
26#include "capture_event.h"
27
28struct _e_prefs;
29
30class QAction;
31class QSocketNotifier;
32
33class MainWindow;
34
38class MainApplication : public QApplication
39{
40 Q_OBJECT
41public:
47 explicit MainApplication(int &argc, char **argv);
48
53
83
93
111
116 void emitAppSignal(AppSignal signal);
117
137 void queueAppSignal(AppSignal signal) { app_signals_ << signal; }
138
145 void emitStatCommandSignal(const QString &menu_path, const char *arg, void *userdata);
146
153 void emitTapParameterSignal(const QString cfg_abbr, const QString arg, void *userdata);
154
160 void addDynamicMenuGroupItem(int group, QAction *sg_action);
161
167 void appendDynamicMenuGroupItem(int group, QAction *sg_action);
168
174 void removeDynamicMenuGroupItem(int group, QAction *sg_action);
175
181 QList<QAction *> dynamicMenuGroupItems(int group);
182
188 QList<QAction *> addedMenuGroupItems(int group);
189
195 QList<QAction *> removedMenuGroupItems(int group);
196
201
206
210 void allSystemsGo();
211
218 void emitLocalInterfaceEvent(const char *ifname, int added, int up);
219
223 virtual void refreshLocalInterfaces();
224
225#ifdef HAVE_LIBPCAP
234 GList * getInterfaceList() const;
235
243 void setInterfaceList(GList *if_list);
244#endif
245
251 struct _e_prefs * readConfigurationFiles(bool reset);
252
258
263 void setLastOpenDirFromFilename(QString file_name);
264
269 void helpTopicAction(topic_action_e action);
270
276 const QFont monospaceFont(bool zoomed = false) const;
277
283 int monospaceTextSize(const char *str);
284
290 void setConfigurationProfile(const char *profile_name, bool write_recent_file = true);
291
296
301 bool isInitialized() { return initialized_; }
302
307 void setReloadingLua(bool is_reloading) { is_reloading_lua_ = is_reloading; }
308
313 bool isReloadingLua() { return is_reloading_lua_; }
314
319 const QIcon &normalIcon();
320
325 const QIcon &captureIcon();
326
331 const QString &windowTitleSeparator() const { return window_title_separator_; }
332
338 const QString windowTitleString(QStringList title_parts);
339
345 const QString windowTitleString(QString title_part) { return windowTitleString(QStringList() << title_part); }
346
351
357
359 QTranslator translator;
360
362 QTranslator translatorQt;
363
368 void loadLanguage(const QString language);
369
374 void doTriggerMenuItem(MainMenuItem menuItem);
375
380 void zoomTextFont(int zoomLevel);
381
388 void pushStatus(StatusInfo sinfo, const QString &message, const QString &messagetip = QString());
389
394 void popStatus(StatusInfo sinfo);
395
400 void gotoFrame(int frameNum);
401
406 int maxMenuDepth(void) { return 5; }
407
408private:
410 bool initialized_;
411
413 bool is_reloading_lua_;
414
416 QFont zoomed_font_;
417
419 QTimer packet_data_timer_;
420
422 QTimer tap_update_timer_;
423
425 QList<QString> pending_open_files_;
426
428 QSocketNotifier *if_notifier_;
429
431 static QString window_title_separator_;
432
434 QList<AppSignal> app_signals_;
435
437 int active_captures_;
438
440 bool refresh_interfaces_pending_;
441
445 void storeCustomColorsInRecent();
446
450 void clearDynamicMenuGroupItems();
451
452protected:
458 bool event(QEvent *event);
459
463 virtual void initializeIcons() = 0;
464
467
470
471#ifdef HAVE_LIBPCAP
473 GList *cached_if_list_;
474#endif
475
476signals:
480 void localInterfaceEvent(const char *ifname, int added, int up);
482 void scanLocalInterfaces(GList *filter_list = nullptr);
486 void openCaptureFile(QString cf_path, QString display_filter, unsigned int type);
494 void profileNameChanged(const char *profile_name);
495
497 void freezePacketList(bool changing_profile);
525
527 void openStatCommandDialog(const QString &menu_path, const char *arg, void *userdata);
529 void openTapParameterDialog(const QString cfg_str, const QString arg, void *userdata);
530
532 void captureActive(int);
533
535 void zoomRegularFont(const QFont & font);
537 void zoomMonospaceFont(const QFont & font);
538
539public slots:
545
552 void flushAppSignals();
553
558
559private slots:
563 void updateTaps();
564
568 void cleanup();
569
573 void ifChangeEventsAvailable();
574
578 void refreshPacketData();
579
580};
581
582extern MainApplication *mainApp;
583
600#endif // MAIN_APPLICATION_H
Represents an event occurring during a capture or file operation.
Definition capture_event.h:24
Core application class handling global state, signals, and configurations.
Definition main_application.h:39
void openStatCommandDialog(const QString &menu_path, const char *arg, void *userdata)
Signal emitted to open a specific stat command dialog.
void queueAppSignal(AppSignal signal)
Queues an application signal to be emitted later.
Definition main_application.h:137
void clearAddedMenuGroupItems()
Clears the list of tracked added menu group items.
Definition main_application.cpp:690
QTranslator translatorQt
Definition main_application.h:362
void localInterfaceEvent(const char *ifname, int added, int up)
Signal emitted for local interface events (add/remove/up/down).
void packetDissectionChanged()
Signal emitted when packet dissection settings are changed.
AppSignal
Enumeration of application-wide signals.
Definition main_application.h:57
@ PacketDissectionChanged
Packet dissection preferences changed.
Definition main_application.h:73
@ ColumnsChanged
Packet list columns changed.
Definition main_application.h:61
@ FreezePacketList
Freeze the packet list updates.
Definition main_application.h:79
@ FilterExpressionsChanged
Filter expressions changed.
Definition main_application.h:67
@ RecentPreferencesRead
Recent preferences have been read.
Definition main_application.h:77
@ AggregationChanged
Aggregation logic or values changed.
Definition main_application.h:81
@ PreferencesChanged
General preferences changed.
Definition main_application.h:75
@ LocalInterfacesChanged
Local interfaces changed.
Definition main_application.h:69
@ CaptureFilterListChanged
Capture filter list changed.
Definition main_application.h:59
@ FieldsChanged
Protocol fields changed.
Definition main_application.h:65
@ NameResolutionChanged
Name resolution configuration changed.
Definition main_application.h:71
@ DisplayFilterListChanged
Display filter list changed.
Definition main_application.h:63
const QIcon & normalIcon()
Retrieves the normal application icon.
Definition main_application.cpp:356
void appendDynamicMenuGroupItem(int group, QAction *sg_action)
Appends an action item to a dynamic menu group.
Definition main_application.cpp:632
void helpTopicAction(topic_action_e action)
Executes a help topic action.
Definition main_application.cpp:199
void captureActive(int)
Signals activation and stop of a capture. The value provides the number of active captures.
void reloadLuaPluginsDelayed()
Triggers a delayed reload of Lua plugins.
Definition main_application.cpp:346
virtual void initializeIcons()=0
Pure virtual method for initializing application icons.
void preferencesChanged()
Signal emitted when preferences are changed.
void popStatus(StatusInfo sinfo)
Pops the most recent status message of a given type.
Definition main_application.cpp:1031
struct _e_prefs * readConfigurationFiles(bool reset)
Reads application configuration files.
Definition main_application.cpp:842
void removeDynamicMenuGroupItem(int group, QAction *sg_action)
Removes an action item from a dynamic menu group.
Definition main_application.cpp:641
const QFont monospaceFont(bool zoomed=false) const
Retrieves the monospace font used by the application.
Definition main_application.cpp:208
void allSystemsGo()
Indicates that initial setup is complete and all systems are operational.
Definition main_application.cpp:817
void doTriggerMenuItem(MainMenuItem menuItem)
Triggers a specific main menu item.
Definition main_application.cpp:914
QTranslator translator
Definition main_application.h:359
void profileNameChanged(const char *profile_name)
Signal emitted when the configuration profile name has changed.
QIcon normal_icon_
Definition main_application.h:466
~MainApplication()
Destroys the MainApplication.
Definition main_application.cpp:539
void emitLocalInterfaceEvent(const char *ifname, int added, int up)
Emits a signal regarding local interface status changes.
Definition main_application.cpp:784
virtual void refreshLocalInterfaces()
Refreshes the local interfaces list.
Definition main_application.cpp:789
bool isReloadingLua()
Checks if Lua plugins are currently reloading.
Definition main_application.h:313
void gotoFrame(int frameNum)
Triggers navigation to a specific frame number.
Definition main_application.cpp:1066
void displayFilterListChanged()
Signal emitted when display filters are changed.
void freezePacketList(bool changing_profile)
Signal emitted to freeze or unfreeze packet list updates.
void localInterfaceListChanged()
Signal emitted when the local interface list changes.
void openTapParameterDialog(const QString cfg_str, const QString arg, void *userdata)
Signal emitted to open a tap parameter dialog.
int monospaceTextSize(const char *str)
Calculates the horizontal pixel size of a string using the monospace font.
Definition main_application.cpp:219
void scanLocalInterfaces(GList *filter_list=nullptr)
Signal emitted to request a scan of local interfaces.
void zoomMonospaceFont(const QFont &font)
Signal emitted to apply a new zoomed monospace font.
void recentPreferencesRead()
Signal emitted when recent preferences are read.
void reloadDisplayFilterMacros()
Reloads display filter macros.
Definition main_application.cpp:1076
MainWindow * mainWindow()
Retrieves the main window instance.
Definition main_application.cpp:396
void emitAppSignal(AppSignal signal)
Emits a specific application signal.
Definition main_application.cpp:548
void openCaptureOptions()
Signal emitted to open the capture options dialog.
void setConfigurationProfile(const char *profile_name, bool write_recent_file=true)
Sets the active configuration profile.
Definition main_application.cpp:224
void setReloadingLua(bool is_reloading)
Sets the flag indicating if Lua is currently reloading.
Definition main_application.h:307
void zoomTextFont(int zoomLevel)
Applies text zooming to application fonts.
Definition main_application.cpp:927
void columnDataChanged()
Signal emitted when column data definitions change.
void checkDisplayFilter()
Signal emitted to check display filter validity.
const QString windowTitleString(QString title_part)
Generates a window title with a single part.
Definition main_application.h:345
QList< QAction * > addedMenuGroupItems(int group)
Retrieves items recently added to a dynamic menu group.
Definition main_application.cpp:668
bool isInitialized()
Checks if the application is initialized.
Definition main_application.h:301
const QIcon & captureIcon()
Retrieves the capture application icon.
Definition main_application.cpp:364
void emitStatCommandSignal(const QString &menu_path, const char *arg, void *userdata)
Emits a signal to execute a statistics command.
Definition main_application.cpp:613
void clearRemovedMenuGroupItems()
Clears the list of tracked removed menu group items.
Definition main_application.cpp:697
QList< QAction * > dynamicMenuGroupItems(int group)
Retrieves all action items for a dynamic menu group.
Definition main_application.cpp:657
void loadLanguage(const QString language)
Loads a specific UI language.
Definition main_application.cpp:871
QDir openDialogInitialDir()
Retrieves the initial directory for open dialogs.
Definition main_application.cpp:187
const QString windowTitleString(QStringList title_parts)
Generates a window title from parts.
Definition main_application.cpp:372
void setLastOpenDirFromFilename(QString file_name)
Sets the last opened directory from a given filename.
Definition main_application.cpp:191
void reloadLuaPlugins()
Signal emitted to initiate a Lua plugin reload.
StatusInfo
Enumeration for status bar information types.
Definition main_application.h:97
@ FieldStatus
Protocol field status.
Definition main_application.h:101
@ BusyStatus
Application busy status.
Definition main_application.h:105
@ FilterSyntax
Filter syntax status.
Definition main_application.h:99
@ TemporaryStatus
General temporary status message.
Definition main_application.h:109
@ FileStatus
File operations status.
Definition main_application.h:103
@ ByteStatus
Byte loading/processing status.
Definition main_application.h:107
void filterExpressionsChanged()
Signal emitted when filter expressions are changed.
QIcon capture_icon_
Definition main_application.h:469
void zoomRegularFont(const QFont &font)
Signal emitted to apply a new zoomed regular font.
void captureEventHandler(CaptureEvent ev)
Slot for handling capture events.
Definition main_application.cpp:947
bool event(QEvent *event)
Core Qt event handler override.
Definition main_application.cpp:419
void aggregationChanged()
Signal emitted when aggregation values change.
MainMenuItem
Enumeration for standard main menu items.
Definition main_application.h:87
@ FileOpenDialog
The file open dialog action.
Definition main_application.h:89
@ CaptureOptionsDialog
The capture options dialog action.
Definition main_application.h:91
void emitTapParameterSignal(const QString cfg_abbr, const QString arg, void *userdata)
Emits a signal indicating tap parameters changed.
Definition main_application.cpp:618
void addressResolutionChanged()
Signal emitted when address resolution settings change.
const QString & windowTitleSeparator() const
Retrieves the window title separator string.
Definition main_application.h:331
void appInitialized()
Signal emitted when application is fully initialized.
void addDynamicMenuGroupItem(int group, QAction *sg_action)
Adds an action item to a dynamic menu group.
Definition main_application.cpp:624
void applyCustomColorsFromRecent()
Applies custom colors stored in recent files.
Definition main_application.cpp:383
int maxMenuDepth(void)
Defines the maximum nested depth allowed for menus.
Definition main_application.h:406
void captureFilterListChanged()
Signal emitted when capture filters are changed.
void columnsChanged()
Signal emitted when columns are changed (recreates packet list). XXX This recreates the packet list....
void fieldsChanged()
Signal emitted when protocol fields change.
void pushStatus(StatusInfo sinfo, const QString &message, const QString &messagetip=QString())
Pushes a message to the specified status bar section.
Definition main_application.cpp:996
void profileChanging()
Signal emitted while the configuration profile is changing.
void openCaptureFile(QString cf_path, QString display_filter, unsigned int type)
Signal emitted to open a specific capture file.
QList< QAction * > removedMenuGroupItems(int group)
Retrieves items recently removed from a dynamic menu group.
Definition main_application.cpp:679
void flushAppSignals()
Flushes queued app signals.
Definition main_application.cpp:606
The main window of the application.
Definition main_window.h:51
GList ** feature_list
Semi-opaque handle to a list of features or dependencies.
Definition feature_list.h:33
topic_action_e
Identifies a help topic or navigable destination reachable from the UI help system.
Definition help_url.h:28
void gather_wireshark_runtime_info(feature_list l)
Gather runtime information for Wireshark.
Definition main.cpp:259
void gather_wireshark_qt_compiled_info(feature_list l)
Gather compiled information for Wireshark Qt components.
Definition main.cpp:218
Global Wireshark preferences structure holding all persistent configuration settings.
Definition prefs.h:213