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
347
349 QTranslator translator;
350
352 QTranslator translatorQt;
353
358 void loadLanguage(const QString language);
359
364 void doTriggerMenuItem(MainMenuItem menuItem);
365
372 void pushStatus(StatusInfo sinfo, const QString &message, const QString &messagetip = QString());
373
378 void popStatus(StatusInfo sinfo);
379
384 void gotoFrame(int frameNum);
385
390 int maxMenuDepth(void) { return 5; }
391
392private:
398 void whenInitializedDispatch(const QObject *context, std::function<void()> fn);
399
401 bool initialized_;
402
404 bool is_reloading_lua_;
405
407 QTimer packet_data_timer_;
408
410 QTimer tap_update_timer_;
411
413 QList<QString> pending_open_files_;
414
416 QSocketNotifier *if_notifier_;
417
419 static QString window_title_separator_;
420
422 QList<AppSignal> app_signals_;
423
425 int active_captures_;
426
430 void storeCustomColorsInRecent();
431
435 void clearDynamicMenuGroupItems();
436
437protected:
443 bool event(QEvent *event) override;
444
448 virtual void initializeIcons() = 0;
449
452
455
456signals:
460 void localInterfaceEvent(const char *ifname, int added, int up);
462 void openCaptureFile(QString cf_path, QString display_filter, unsigned int type);
470 void profileNameChanged(const char *profile_name);
471
473 void freezePacketList(bool changing_profile);
501
503 void openStatCommandDialog(const QString &menu_path, const char *arg, void *userdata);
505 void openTapParameterDialog(const QString cfg_str, const QString arg, void *userdata);
506
508 void captureActive(int);
509
510public slots:
516
523 void flushAppSignals();
524
529
530private slots:
534 void updateTaps();
535
539 void cleanup();
540
544 void ifChangeEventsAvailable();
545
549 void refreshPacketData();
550
551};
552
553extern MainApplication *mainApp;
554
556
564
571#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:625
QTranslator translatorQt
Definition main_application.h:352
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:323
void appendDynamicMenuGroupItem(int group, QAction *sg_action)
Appends an action item to a dynamic menu group.
Definition main_application.cpp:567
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:313
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:965
struct _e_prefs * readConfigurationFiles(bool reset)
Reads application configuration files.
Definition main_application.cpp:791
void removeDynamicMenuGroupItem(int group, QAction *sg_action)
Removes an action item from a dynamic menu group.
Definition main_application.cpp:576
void allSystemsGo()
Indicates that initial setup is complete and all systems are operational.
Definition main_application.cpp:766
void doTriggerMenuItem(MainMenuItem menuItem)
Triggers a specific main menu item.
Definition main_application.cpp:868
QTranslator translator
Definition main_application.h:349
void profileNameChanged(const char *profile_name)
Signal emitted when the configuration profile name has changed.
QIcon normal_icon_
Definition main_application.h:451
~MainApplication()
Destroys the MainApplication.
Definition main_application.cpp:480
void emitLocalInterfaceEvent(const char *ifname, int added, int up)
Emits a signal regarding local interface status changes.
Definition main_application.cpp:721
bool event(QEvent *event) override
Core Qt event handler override.
Definition main_application.cpp:386
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:1000
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 recentPreferencesRead()
Signal emitted when recent preferences are read.
MainApplication(int &argc, char **argv)
Constructs the MainApplication.
Definition main_application.cpp:416
void reloadDisplayFilterMacros()
Reloads display filter macros.
Definition main_application.cpp:1010
MainWindow * mainWindow()
Retrieves the main window instance.
Definition main_application.cpp:363
void emitAppSignal(AppSignal signal)
Emits a specific application signal.
Definition main_application.cpp:486
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:603
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:331
void emitStatCommandSignal(const QString &menu_path, const char *arg, void *userdata)
Emits a signal to execute a statistics command.
Definition main_application.cpp:548
void clearRemovedMenuGroupItems()
Clears the list of tracked removed menu group items.
Definition main_application.cpp:632
QList< QAction * > dynamicMenuGroupItems(int group)
Retrieves all action items for a dynamic menu group.
Definition main_application.cpp:592
void loadLanguage(const QString language)
Loads a specific UI language.
Definition main_application.cpp:832
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:339
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:454
void captureEventHandler(CaptureEvent ev)
Slot for handling capture events.
Definition main_application.cpp:881
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:553
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:559
void applyCustomColorsFromRecent()
Applies custom colors stored in recent files.
Definition main_application.cpp:350
int maxMenuDepth(void)
Defines the maximum nested depth allowed for menus.
Definition main_application.h:390
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:930
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:614
void flushAppSignals()
Flushes queued app signals.
Definition main_application.cpp:541
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