Wireshark 4.7.3
The Wireshark network protocol analyzer
Loading...
Searching...
No Matches
main_application.h
Go to the documentation of this file.
1
9
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 <functional>
27#include <utility>
28
29#include "capture_event.h"
30
31struct _e_prefs;
32
33class QAction;
34class QSocketNotifier;
35
36class MainWindow;
37
41class MainApplication : public QApplication
42{
43 Q_OBJECT
44public:
50 explicit MainApplication(int &argc, char **argv);
51
56
84
94
112
117 void emitAppSignal(AppSignal signal);
118
138 void queueAppSignal(AppSignal signal) { app_signals_ << signal; }
139
146 void emitStatCommandSignal(const QString &menu_path, const char *arg, void *userdata);
147
154 void emitTapParameterSignal(const QString cfg_abbr, const QString arg, void *userdata);
155
161 void addDynamicMenuGroupItem(int group, QAction *sg_action);
162
168 void appendDynamicMenuGroupItem(int group, QAction *sg_action);
169
175 void removeDynamicMenuGroupItem(int group, QAction *sg_action);
176
182 QList<QAction *> dynamicMenuGroupItems(int group);
183
189 QList<QAction *> addedMenuGroupItems(int group);
190
196 QList<QAction *> removedMenuGroupItems(int group);
197
202
207
211 void allSystemsGo();
212
219 void emitLocalInterfaceEvent(const char *ifname, int added, int up);
220
226 struct _e_prefs * readConfigurationFiles(bool reset);
227
233
238 void setLastOpenDirFromFilename(QString file_name);
239
244 void helpTopicAction(topic_action_e action);
245
246
252 void setConfigurationProfile(const char *profile_name, bool write_recent_file = true);
253
258
263 bool isInitialized() { return initialized_; }
264
283 template <typename Func>
284 void whenInitialized(const QObject *context, Func &&fn)
285 {
286 if (initialized_) {
287 whenInitializedDispatch(context, std::function<void()>(std::forward<Func>(fn)));
288 } else {
289 connect(this, &MainApplication::appInitialized, context, std::forward<Func>(fn));
290 }
291 }
292
297 void setReloadingLua(bool is_reloading) { is_reloading_lua_ = is_reloading; }
298
303 bool isReloadingLua() { return is_reloading_lua_; }
304
309 const QIcon &normalIcon();
310
315 const QIcon &captureIcon();
316
321 const QString &windowTitleSeparator() const { return window_title_separator_; }
322
328 const QString windowTitleString(QStringList title_parts);
329
335 const QString windowTitleString(QString title_part) { return windowTitleString(QStringList() << title_part); }
336
341
358
360 QTranslator translator;
361
363 QTranslator translatorQt;
364
369 void loadLanguage(const QString language);
370
375 void doTriggerMenuItem(MainMenuItem menuItem);
376
383 void pushStatus(StatusInfo sinfo, const QString &message, const QString &messagetip = QString());
384
389 void popStatus(StatusInfo sinfo);
390
395 void gotoFrame(int frameNum);
396
401 int maxMenuDepth(void) { return 5; }
402
403private:
409 void whenInitializedDispatch(const QObject *context, std::function<void()> fn);
410
412 bool initialized_;
413
415 bool is_reloading_lua_;
416
418 QTimer packet_data_timer_;
419
421 QTimer tap_update_timer_;
422
424 QList<QString> pending_open_files_;
425
427 QSocketNotifier *if_notifier_;
428
430 static QString window_title_separator_;
431
433 QList<AppSignal> app_signals_;
434
436 int active_captures_;
437
441 void storeCustomColorsInRecent();
442
446 void clearDynamicMenuGroupItems();
447
448protected:
454 bool event(QEvent *event) override;
455
459 virtual void initializeIcons() = 0;
460
463
466
467signals:
477 void localInterfaceEvent(const char *ifname, int added, int up);
479 void openCaptureFile(QString cf_path, QString display_filter, unsigned int type);
487 void profileNameChanged(const char *profile_name);
488
490 void freezePacketList(bool changing_profile);
518
520 void openStatCommandDialog(const QString &menu_path, const char *arg, void *userdata);
522 void openTapParameterDialog(const QString cfg_str, const QString arg, void *userdata);
523
525 void captureActive(int);
526
527public slots:
533
540 void flushAppSignals();
541
546
547private slots:
551 void updateTaps();
552
556 void cleanup();
557
561 void ifChangeEventsAvailable();
562
566 void refreshPacketData();
567
568};
569
570extern MainApplication *mainApp;
571
573
581
588#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:42
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:138
void clearAddedMenuGroupItems()
Clears the list of tracked added menu group items.
Definition main_application.cpp:630
QTranslator translatorQt
Definition main_application.h:363
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:60
@ PacketDissectionChanged
Packet dissection preferences changed.
Definition main_application.h:74
@ ColumnsChanged
Packet list columns changed.
Definition main_application.h:64
@ FreezePacketList
Freeze the packet list updates.
Definition main_application.h:80
@ FilterExpressionsChanged
Filter expressions changed.
Definition main_application.h:70
@ RecentPreferencesRead
Recent preferences have been read.
Definition main_application.h:78
@ AggregationChanged
Aggregation logic or values changed.
Definition main_application.h:82
@ PreferencesChanged
General preferences changed.
Definition main_application.h:76
@ CaptureFilterListChanged
Capture filter list changed.
Definition main_application.h:62
@ FieldsChanged
Protocol fields changed.
Definition main_application.h:68
@ NameResolutionChanged
Name resolution configuration changed.
Definition main_application.h:72
@ DisplayFilterListChanged
Display filter list changed.
Definition main_application.h:66
const QIcon & normalIcon()
Retrieves the normal application icon.
Definition main_application.cpp:328
void appendDynamicMenuGroupItem(int group, QAction *sg_action)
Appends an action item to a dynamic menu group.
Definition main_application.cpp:572
void helpTopicAction(topic_action_e action)
Executes a help topic action.
Definition main_application.cpp:184
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:318
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:970
struct _e_prefs * readConfigurationFiles(bool reset)
Reads application configuration files.
Definition main_application.cpp:796
void removeDynamicMenuGroupItem(int group, QAction *sg_action)
Removes an action item from a dynamic menu group.
Definition main_application.cpp:581
void allSystemsGo()
Indicates that initial setup is complete and all systems are operational.
Definition main_application.cpp:771
void doTriggerMenuItem(MainMenuItem menuItem)
Triggers a specific main menu item.
Definition main_application.cpp:873
QTranslator translator
Definition main_application.h:360
void profileNameChanged(const char *profile_name)
Signal emitted when the configuration profile name has changed.
QIcon normal_icon_
Definition main_application.h:462
~MainApplication()
Destroys the MainApplication.
Definition main_application.cpp:485
void emitLocalInterfaceEvent(const char *ifname, int added, int up)
Emits a signal regarding local interface status changes.
Definition main_application.cpp:726
bool event(QEvent *event) override
Core Qt event handler override.
Definition main_application.cpp:391
bool isReloadingLua()
Checks if Lua plugins are currently reloading.
Definition main_application.h:303
void gotoFrame(int frameNum)
Triggers navigation to a specific frame number.
Definition main_application.cpp:1005
void displayFilterListChanged()
Signal emitted when display filters are changed.
void freezePacketList(bool changing_profile)
Signal emitted to freeze or unfreeze packet list updates.
void openTapParameterDialog(const QString cfg_str, const QString arg, void *userdata)
Signal emitted to open a tap parameter dialog.
void interfaceListChanged()
Signal emitted when interface list changes (forwarded from the MainWindow's InterfaceListManager,...
void recentPreferencesRead()
Signal emitted when recent preferences are read.
MainApplication(int &argc, char **argv)
Constructs the MainApplication.
Definition main_application.cpp:421
void reloadDisplayFilterMacros()
Reloads display filter macros.
Definition main_application.cpp:1015
MainWindow * mainWindow()
Retrieves the main window instance.
Definition main_application.cpp:368
void emitAppSignal(AppSignal signal)
Emits a specific application signal.
Definition main_application.cpp:491
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:193
void whenInitialized(const QObject *context, Func &&fn)
Runs fn once the application has finished initialization.
Definition main_application.h:284
void setReloadingLua(bool is_reloading)
Sets the flag indicating if Lua is currently reloading.
Definition main_application.h:297
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:335
QList< QAction * > addedMenuGroupItems(int group)
Retrieves items recently added to a dynamic menu group.
Definition main_application.cpp:608
bool isInitialized()
Checks if the application is initialized.
Definition main_application.h:263
const QIcon & captureIcon()
Retrieves the capture application icon.
Definition main_application.cpp:336
void emitStatCommandSignal(const QString &menu_path, const char *arg, void *userdata)
Emits a signal to execute a statistics command.
Definition main_application.cpp:553
void clearRemovedMenuGroupItems()
Clears the list of tracked removed menu group items.
Definition main_application.cpp:637
QList< QAction * > dynamicMenuGroupItems(int group)
Retrieves all action items for a dynamic menu group.
Definition main_application.cpp:597
void loadLanguage(const QString language)
Loads a specific UI language.
Definition main_application.cpp:837
QDir openDialogInitialDir()
Retrieves the initial directory for open dialogs.
Definition main_application.cpp:172
const QString windowTitleString(QStringList title_parts)
Generates a window title from parts.
Definition main_application.cpp:344
void setLastOpenDirFromFilename(QString file_name)
Sets the last opened directory from a given filename.
Definition main_application.cpp:176
void reloadLuaPlugins()
Signal emitted to initiate a Lua plugin reload.
StatusInfo
Enumeration for status bar information types.
Definition main_application.h:98
@ FieldStatus
Protocol field status.
Definition main_application.h:102
@ BusyStatus
Application busy status.
Definition main_application.h:106
@ FilterSyntax
Filter syntax status.
Definition main_application.h:100
@ TemporaryStatus
General temporary status message.
Definition main_application.h:110
@ FileStatus
File operations status.
Definition main_application.h:104
@ ByteStatus
Byte loading/processing status.
Definition main_application.h:108
void filterExpressionsChanged()
Signal emitted when filter expressions are changed.
QIcon capture_icon_
Definition main_application.h:465
void captureEventHandler(CaptureEvent ev)
Slot for handling capture events.
Definition main_application.cpp:886
void aggregationChanged()
Signal emitted when aggregation values change.
MainMenuItem
Enumeration for standard main menu items.
Definition main_application.h:88
@ FileOpenDialog
The file open dialog action.
Definition main_application.h:90
@ CaptureOptionsDialog
The capture options dialog action.
Definition main_application.h:92
void emitTapParameterSignal(const QString cfg_abbr, const QString arg, void *userdata)
Emits a signal indicating tap parameters changed.
Definition main_application.cpp:558
void addressResolutionChanged()
Signal emitted when address resolution settings change.
const QString & windowTitleSeparator() const
Retrieves the window title separator string.
Definition main_application.h:321
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:564
void applyCustomColorsFromRecent()
Applies custom colors stored in recent files.
Definition main_application.cpp:355
int maxMenuDepth(void)
Defines the maximum nested depth allowed for menus.
Definition main_application.h:401
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:935
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:619
void flushAppSignals()
Flushes queued app signals.
Definition main_application.cpp:546
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:260
void gather_wireshark_qt_compiled_info(feature_list l)
Gather compiled information for Wireshark Qt components.
Definition main.cpp:219
Global Wireshark preferences structure holding all persistent configuration settings.
Definition prefs.h:213