Qt: Split MainWindow into WiresharkMainWindow and LogwolfMainWindow.
Rename the main_window class and UIC files to wireshark_main_window and the MainWindow class to WiresharkMainWindow. Copy wireshark_main_window / WiresharkMainWindow to logwolf_main_window / LogwolfMainWindow. Remove the Wireless menu from Logwolf.
This commit is contained in:
parent
80de95ca71
commit
d8008cb89e
|
@ -245,6 +245,7 @@ set(WIRESHARK_QT_HEADERS
|
|||
wireless_frame.h
|
||||
wireshark_application.h
|
||||
wireshark_dialog.h
|
||||
wireshark_main_window.h
|
||||
wlan_statistics_dialog.h
|
||||
${WIRESHARK_CUSTOM_QT_HEADERS}
|
||||
)
|
||||
|
@ -425,7 +426,6 @@ set(WIRESHARK_QT_SRC
|
|||
main_status_bar.cpp
|
||||
main_window_layout.cpp
|
||||
main_window_preferences_frame.cpp
|
||||
main_window_slots.cpp
|
||||
main_window.cpp
|
||||
main.cpp
|
||||
manage_interfaces_dialog.cpp
|
||||
|
@ -481,6 +481,8 @@ set(WIRESHARK_QT_SRC
|
|||
wireless_frame.cpp
|
||||
wireshark_application.cpp
|
||||
wireshark_dialog.cpp
|
||||
wireshark_main_window.cpp
|
||||
wireshark_main_window_slots.cpp
|
||||
${WIRESHARK_CUSTOM_QT_SRCS}
|
||||
)
|
||||
|
||||
|
@ -563,7 +565,6 @@ set(WIRESHARK_QT_UI
|
|||
lbm_stream_dialog.ui
|
||||
lte_rlc_graph_dialog.ui
|
||||
main_window_preferences_frame.ui
|
||||
main_window.ui
|
||||
manage_interfaces_dialog.ui
|
||||
module_preferences_scroll_area.ui
|
||||
mtp3_summary_dialog.ui
|
||||
|
@ -603,6 +604,7 @@ set(WIRESHARK_QT_UI
|
|||
welcome_page.ui
|
||||
widgets/splash_overlay.ui
|
||||
wireless_frame.ui
|
||||
wireshark_main_window.ui
|
||||
)
|
||||
|
||||
if(HAVE_PCAP_REMOTE)
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
#include <ui/qt/main_application.h>
|
||||
#include <ui/qt/main_window.h>
|
||||
|
||||
#include <QClipboard>
|
||||
#include <QMenu>
|
||||
|
||||
FilterAction::FilterAction(QObject *parent, FilterAction::Action action, FilterAction::ActionType type, FilterAction::ActionDirection direction) :
|
||||
|
|
|
@ -81,7 +81,7 @@
|
|||
#include "ui/qt/utils/color_utils.h"
|
||||
#include "ui/qt/coloring_rules_dialog.h"
|
||||
#include "ui/qt/endpoint_dialog.h"
|
||||
#include "ui/qt/main_window.h"
|
||||
#include "ui/qt/wireshark_main_window.h"
|
||||
#include "ui/qt/response_time_delay_dialog.h"
|
||||
#include "ui/qt/service_response_time_dialog.h"
|
||||
#include "ui/qt/simple_dialog.h"
|
||||
|
@ -418,7 +418,7 @@ macos_enable_layer_backing(void)
|
|||
/* And now our feature presentation... [ fade to music ] */
|
||||
int main(int argc, char *qt_argv[])
|
||||
{
|
||||
MainWindow *main_w;
|
||||
WiresharkMainWindow *main_w;
|
||||
|
||||
#ifdef _WIN32
|
||||
LPWSTR *wc_argv;
|
||||
|
@ -697,7 +697,7 @@ int main(int argc, char *qt_argv[])
|
|||
/* ws_log(LOG_DOMAIN_MAIN, LOG_LEVEL_DEBUG, "Translator %s", language); */
|
||||
|
||||
// Init the main window (and splash)
|
||||
main_w = new(MainWindow);
|
||||
main_w = new(WiresharkMainWindow);
|
||||
main_w->show();
|
||||
// We may not need a queued connection here but it would seem to make sense
|
||||
// to force the issue.
|
||||
|
|
|
@ -72,7 +72,7 @@
|
|||
#include <ui/qt/capture_file.h>
|
||||
|
||||
#include <ui/qt/main_window.h>
|
||||
#include <ui_main_window.h>
|
||||
#include <ui/qt/main_status_bar.h>
|
||||
|
||||
#include <QAction>
|
||||
#include <QApplication>
|
||||
|
@ -1301,10 +1301,10 @@ void MainApplication::pushStatus(StatusInfo status, const QString &message, cons
|
|||
return;
|
||||
|
||||
MainWindow * mw = qobject_cast<MainWindow *>(mainWindow());
|
||||
if (! mw->main_ui_ || ! mw->main_ui_->statusBar)
|
||||
if (! mw->statusBar())
|
||||
return;
|
||||
|
||||
MainStatusBar * bar = mw->main_ui_->statusBar;
|
||||
MainStatusBar * bar = mw->statusBar();
|
||||
|
||||
switch(status)
|
||||
{
|
||||
|
@ -1335,10 +1335,10 @@ void MainApplication::popStatus(StatusInfo status)
|
|||
return;
|
||||
|
||||
MainWindow * mw = qobject_cast<MainWindow *>(mainWindow());
|
||||
if (! mw->main_ui_ || ! mw->main_ui_->statusBar)
|
||||
if (! mw->statusBar())
|
||||
return;
|
||||
|
||||
MainStatusBar * bar = mw->main_ui_->statusBar;
|
||||
MainStatusBar * bar = mw->statusBar();
|
||||
|
||||
switch(status)
|
||||
{
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -10,736 +10,70 @@
|
|||
#ifndef MAINWINDOW_H
|
||||
#define MAINWINDOW_H
|
||||
|
||||
/** @defgroup main_window_group Main window
|
||||
* The main window has the following submodules:
|
||||
@dot
|
||||
digraph main_dependencies {
|
||||
node [shape=record, fontname=Helvetica, fontsize=10];
|
||||
main [ label="main window" URL="\ref main.h"];
|
||||
menu [ label="menubar" URL="\ref menus.h"];
|
||||
toolbar [ label="toolbar" URL="\ref main_toolbar.h"];
|
||||
packet_list [ label="packet list pane" URL="\ref packet_list.h"];
|
||||
proto_draw [ label="packet details & bytes panes" URL="\ref main_proto_draw.h"];
|
||||
recent [ label="recent user settings" URL="\ref recent.h"];
|
||||
main -> menu [ arrowhead="open", style="solid" ];
|
||||
main -> toolbar [ arrowhead="open", style="solid" ];
|
||||
main -> packet_list [ arrowhead="open", style="solid" ];
|
||||
main -> proto_draw [ arrowhead="open", style="solid" ];
|
||||
main -> recent [ arrowhead="open", style="solid" ];
|
||||
}
|
||||
@enddot
|
||||
*/
|
||||
|
||||
/** @file
|
||||
* The main window
|
||||
* @ingroup main_window_group
|
||||
* @ingroup windows_group
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#include "file.h"
|
||||
|
||||
#include "ui/ws_ui_util.h"
|
||||
#include "ui/iface_toolbar.h"
|
||||
|
||||
#include <epan/prefs.h>
|
||||
#include <epan/plugin_if.h>
|
||||
#include <epan/timestamp.h>
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
#include "capture_opts.h"
|
||||
#endif
|
||||
#include <capture/capture_session.h>
|
||||
#include "filter_action.h"
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QPointer>
|
||||
#include <QSplitter>
|
||||
#include <QTextCodec>
|
||||
|
||||
#ifdef _WIN32
|
||||
# include <QTimer>
|
||||
#else
|
||||
# include <QSocketNotifier>
|
||||
#endif
|
||||
|
||||
#include "capture_file.h"
|
||||
#include "capture_file_dialog.h"
|
||||
#include "print_dialog.h"
|
||||
#include "capture_file_properties_dialog.h"
|
||||
#include <ui/qt/utils/field_information.h>
|
||||
#include <ui/qt/widgets/display_filter_combo.h>
|
||||
#include "filter_action.h"
|
||||
#include "follow_stream_dialog.h"
|
||||
#include <ui/qt/models/pref_models.h>
|
||||
#include "rtp_stream_dialog.h"
|
||||
#include "voip_calls_dialog.h"
|
||||
#include "rtp_analysis_dialog.h"
|
||||
|
||||
class AccordionFrame;
|
||||
class QSplitter;
|
||||
class QStackedWidget;
|
||||
class ByteViewTab;
|
||||
class CaptureOptionsDialog;
|
||||
class PrintDialog;
|
||||
class FileSetDialog;
|
||||
class FilterDialog;
|
||||
class FunnelStatistics;
|
||||
class WelcomePage;
|
||||
class PacketCommentDialog;
|
||||
class DisplayFilterCombo;
|
||||
class FieldInformation;
|
||||
class MainStatusBar;
|
||||
class PacketDiagram;
|
||||
class PacketList;
|
||||
class ProtoTree;
|
||||
#if defined(HAVE_LIBNL) && defined(HAVE_NL80211)
|
||||
class WirelessFrame;
|
||||
#endif
|
||||
class FilterExpressionToolBar;
|
||||
class WiresharkApplication;
|
||||
class WelcomePage;
|
||||
|
||||
class QAction;
|
||||
class QActionGroup;
|
||||
|
||||
namespace Ui {
|
||||
class MainWindow;
|
||||
}
|
||||
|
||||
Q_DECLARE_METATYPE(ts_type)
|
||||
Q_DECLARE_METATYPE(ts_precision)
|
||||
typedef struct _capture_file capture_file;
|
||||
|
||||
class MainWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit MainWindow(QWidget *parent = 0);
|
||||
~MainWindow();
|
||||
void setPipeInputHandler(gint source, gpointer user_data, ws_process_id *child_process, pipe_input_cb_t input_cb);
|
||||
|
||||
QString getFilter();
|
||||
#ifdef HAVE_LIBPCAP
|
||||
capture_session *captureSession() { return &cap_session_; }
|
||||
info_data_t *captureInfoData() { return &info_data_; }
|
||||
#endif
|
||||
|
||||
virtual QMenu *createPopupMenu();
|
||||
|
||||
void gotoFrame(int packet_num);
|
||||
CaptureFile *captureFile() { return &capture_file_; }
|
||||
|
||||
void removeAdditionalToolbar(QString toolbarName);
|
||||
|
||||
void addInterfaceToolbar(const iface_toolbar *toolbar_entry);
|
||||
void removeInterfaceToolbar(const gchar *menu_title);
|
||||
|
||||
QString getMwFileName();
|
||||
void setMwFileName(QString fileName);
|
||||
|
||||
void insertColumn(QString name, QString abbrev, gint pos = -1);
|
||||
|
||||
explicit MainWindow(QWidget *parent = nullptr);
|
||||
bool hasSelection();
|
||||
QList<int> selectedRows(bool useFrameNum = false);
|
||||
frame_data * frameDataForRow(int row) const;
|
||||
void insertColumn(QString name, QString abbrev, gint pos = -1);
|
||||
void gotoFrame(int packet_num);
|
||||
|
||||
QString getFilter();
|
||||
MainStatusBar *statusBar();
|
||||
|
||||
public slots:
|
||||
void setDisplayFilter(QString filter, FilterAction::Action action, FilterAction::ActionType filterType);
|
||||
void layoutPanes();
|
||||
void applyRecentPaneGeometry();
|
||||
|
||||
protected:
|
||||
virtual bool eventFilter(QObject *obj, QEvent *event);
|
||||
virtual bool event(QEvent *event);
|
||||
virtual void keyPressEvent(QKeyEvent *event);
|
||||
virtual void closeEvent(QCloseEvent *event);
|
||||
virtual void dragEnterEvent(QDragEnterEvent *event);
|
||||
virtual void dropEvent(QDropEvent *event);
|
||||
virtual void changeEvent(QEvent* event);
|
||||
void showWelcome();
|
||||
void showCapture();
|
||||
|
||||
private:
|
||||
// XXX Move to FilterUtils
|
||||
enum MatchSelected {
|
||||
MatchSelectedReplace,
|
||||
MatchSelectedAnd,
|
||||
MatchSelectedOr,
|
||||
MatchSelectedNot,
|
||||
MatchSelectedAndNot,
|
||||
MatchSelectedOrNot
|
||||
};
|
||||
QWidget* getLayoutWidget(layout_pane_content_e type);
|
||||
|
||||
enum CopySelected {
|
||||
CopyAllVisibleItems,
|
||||
CopyAllVisibleSelectedTreeItems,
|
||||
CopySelectedDescription,
|
||||
CopySelectedFieldName,
|
||||
CopySelectedValue,
|
||||
CopyListAsText,
|
||||
CopyListAsCSV,
|
||||
CopyListAsYAML
|
||||
};
|
||||
|
||||
enum FileCloseContext {
|
||||
Default,
|
||||
Quit,
|
||||
Restart,
|
||||
Reload
|
||||
};
|
||||
|
||||
Ui::MainWindow *main_ui_;
|
||||
QStackedWidget *main_stack_;
|
||||
WelcomePage *welcome_page_;
|
||||
QSplitter master_split_;
|
||||
QSplitter extra_split_;
|
||||
QWidget empty_pane_;
|
||||
QVector<unsigned> cur_layout_;
|
||||
WelcomePage *welcome_page_;
|
||||
DisplayFilterCombo *df_combo_box_;
|
||||
CaptureFile capture_file_;
|
||||
QFont mono_font_;
|
||||
QMap<QString, QTextCodec *> text_codec_map_;
|
||||
#if defined(HAVE_LIBNL) && defined(HAVE_NL80211)
|
||||
WirelessFrame *wireless_frame_;
|
||||
#endif
|
||||
// XXX - packet_list_ and proto_tree_ should
|
||||
// probably be full-on values instead of pointers.
|
||||
|
||||
PacketList *packet_list_;
|
||||
ProtoTree *proto_tree_;
|
||||
ByteViewTab *byte_view_tab_;
|
||||
PacketDiagram *packet_diagram_;
|
||||
QWidget *previous_focus_;
|
||||
FileSetDialog *file_set_dialog_;
|
||||
QWidget empty_pane_;
|
||||
QActionGroup *show_hide_actions_;
|
||||
QActionGroup *time_display_actions_;
|
||||
QActionGroup *time_precision_actions_;
|
||||
FunnelStatistics *funnel_statistics_;
|
||||
QList<QPair<QAction *, bool> > freeze_actions_;
|
||||
QPointer<QWidget> freeze_focus_;
|
||||
QMap<QAction *, ts_type> td_actions;
|
||||
QMap<QAction *, ts_precision> tp_actions;
|
||||
bool was_maximized_;
|
||||
|
||||
/* the following values are maintained so that the capture file name and status
|
||||
is available when there is no cf structure available */
|
||||
QString mwFileName_;
|
||||
|
||||
bool capture_stopping_;
|
||||
bool capture_filter_valid_;
|
||||
#ifdef HAVE_LIBPCAP
|
||||
capture_session cap_session_;
|
||||
CaptureOptionsDialog *capture_options_dialog_;
|
||||
info_data_t info_data_;
|
||||
#endif
|
||||
FilterDialog *display_filter_dlg_;
|
||||
FilterDialog *capture_filter_dlg_;
|
||||
|
||||
// Pipe input
|
||||
gint pipe_source_;
|
||||
gpointer pipe_user_data_;
|
||||
ws_process_id *pipe_child_process_;
|
||||
pipe_input_cb_t pipe_input_cb_;
|
||||
#ifdef _WIN32
|
||||
QTimer *pipe_timer_;
|
||||
#else
|
||||
QSocketNotifier *pipe_notifier_;
|
||||
#endif
|
||||
|
||||
#if defined(Q_OS_MAC)
|
||||
QMenu *dock_menu_;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SOFTWARE_UPDATE
|
||||
QAction *update_action_;
|
||||
#endif
|
||||
|
||||
QPoint dragStartPosition;
|
||||
|
||||
QWidget* getLayoutWidget(layout_pane_content_e type);
|
||||
|
||||
void freeze();
|
||||
void thaw();
|
||||
|
||||
void mergeCaptureFile();
|
||||
void importCaptureFile();
|
||||
bool saveCaptureFile(capture_file *cf, bool dont_reopen);
|
||||
bool saveAsCaptureFile(capture_file *cf, bool must_support_comments = false, bool dont_reopen = false);
|
||||
void exportSelectedPackets();
|
||||
void exportDissections(export_type_e export_type);
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
void fileAddExtension(QString &file_name, int file_type, wtap_compression_type compression_type);
|
||||
#endif // Q_OS_WIN
|
||||
bool testCaptureFileClose(QString before_what, FileCloseContext context = Default);
|
||||
void captureStop();
|
||||
|
||||
void findTextCodecs();
|
||||
|
||||
void initMainToolbarIcons();
|
||||
void initShowHideMainWidgets();
|
||||
void initTimeDisplayFormatMenu();
|
||||
void initTimePrecisionFormatMenu();
|
||||
void initFreezeActions();
|
||||
|
||||
void setTitlebarForCaptureInProgress();
|
||||
void setMenusForCaptureFile(bool force_disable = false);
|
||||
void setMenusForCaptureInProgress(bool capture_in_progress = false);
|
||||
void setMenusForCaptureStopping();
|
||||
void setForCapturedPackets(bool have_captured_packets);
|
||||
void setMenusForFileSet(bool enable_list_files);
|
||||
void setWindowIcon(const QIcon &icon);
|
||||
QString replaceWindowTitleVariables(QString title);
|
||||
|
||||
void externalMenuHelper(ext_menu_t * menu, QMenu * subMenu, gint depth);
|
||||
|
||||
void setForCaptureInProgress(bool capture_in_progress = false, bool handle_toolbars = false, GArray *ifaces = NULL);
|
||||
QMenu* findOrAddMenu(QMenu *parent_menu, QString& menu_text);
|
||||
|
||||
void captureFileReadStarted(const QString &action);
|
||||
|
||||
void addMenuActions(QList<QAction *> &actions, int menu_group);
|
||||
void removeMenuActions(QList<QAction *> &actions, int menu_group);
|
||||
void goToConversationFrame(bool go_next);
|
||||
void colorizeWithFilter(QByteArray filter, int color_number = -1);
|
||||
DisplayFilterCombo *df_combo_box_;
|
||||
MainStatusBar *main_status_bar_;
|
||||
|
||||
signals:
|
||||
void setCaptureFile(capture_file *cf);
|
||||
void setDissectedCaptureFile(capture_file *cf);
|
||||
void displayFilterSuccess(bool success);
|
||||
void closePacketDialogs();
|
||||
void reloadFields();
|
||||
void packetInfoChanged(struct _packet_info *pinfo);
|
||||
void fieldFilterChanged(const QByteArray field_filter);
|
||||
void fieldSelected(FieldInformation *);
|
||||
void framesSelected(QList<int>);
|
||||
void filterAction(QString filter, FilterAction::Action action, FilterAction::ActionType type);
|
||||
|
||||
void fieldSelected(FieldInformation *);
|
||||
void fieldHighlight(FieldInformation *);
|
||||
|
||||
void framesSelected(QList<int>);
|
||||
|
||||
void captureActive(int);
|
||||
void selectRtpStream(rtpstream_id_t *id);
|
||||
void deselectRtpStream(rtpstream_id_t *id);
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
void showExtcapOptions(QString &device_name, bool startCaptureOnClose);
|
||||
#endif
|
||||
|
||||
public slots:
|
||||
// in main_window_slots.cpp
|
||||
/**
|
||||
* Open a capture file.
|
||||
* @param cf_path Path to the file.
|
||||
* @param display_filter Display filter to apply. May be empty.
|
||||
* @param type File type.
|
||||
* @param is_tempfile TRUE/FALSE.
|
||||
* @return True on success, false on failure.
|
||||
*/
|
||||
// XXX We might want to return a cf_read_status_t or a CaptureFile.
|
||||
bool openCaptureFile(QString cf_path, QString display_filter, unsigned int type, gboolean is_tempfile = FALSE);
|
||||
bool openCaptureFile(QString cf_path = QString(), QString display_filter = QString()) { return openCaptureFile(cf_path, display_filter, WTAP_TYPE_AUTO); }
|
||||
void filterPackets(QString new_filter = QString(), bool force = false);
|
||||
void setDisplayFilter(QString filter, FilterAction::Action action, FilterAction::ActionType filterType);
|
||||
void updateForUnsavedChanges();
|
||||
void layoutPanes();
|
||||
void applyRecentPaneGeometry();
|
||||
void layoutToolbars();
|
||||
void updatePreferenceActions();
|
||||
void updateRecentActions();
|
||||
|
||||
void showWelcome();
|
||||
void showCapture();
|
||||
|
||||
void setTitlebarForCaptureFile();
|
||||
void setWSWindowTitle(QString title = QString());
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
void captureCapturePrepared(capture_session *);
|
||||
void captureCaptureUpdateStarted(capture_session *);
|
||||
void captureCaptureUpdateFinished(capture_session *);
|
||||
void captureCaptureFixedFinished(capture_session *cap_session);
|
||||
void captureCaptureFailed(capture_session *);
|
||||
#endif
|
||||
|
||||
void captureFileOpened();
|
||||
void captureFileReadFinished();
|
||||
void captureFileClosing();
|
||||
void captureFileClosed();
|
||||
|
||||
void launchRLCGraph(bool channelKnown, guint16 ueid, guint8 rlcMode,
|
||||
guint16 channelType, guint16 channelId, guint8 direction);
|
||||
|
||||
void on_actionViewFullScreen_triggered(bool checked);
|
||||
|
||||
void rtpPlayerDialogReplaceRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpPlayerDialogAddRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpPlayerDialogRemoveRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpAnalysisDialogReplaceRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpAnalysisDialogAddRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpAnalysisDialogRemoveRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpStreamsDialogSelectRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpStreamsDialogDeselectRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
|
||||
private slots:
|
||||
|
||||
void captureEventHandler(CaptureEvent ev);
|
||||
|
||||
// Manually connected slots (no "on_<object>_<signal>").
|
||||
|
||||
void initViewColorizeMenu();
|
||||
void initConversationMenus();
|
||||
static gboolean addExportObjectsMenuItem(const void *key, void *value, void *userdata);
|
||||
void initExportObjectsMenus();
|
||||
|
||||
// in main_window_slots.cpp
|
||||
/**
|
||||
* @brief startCapture
|
||||
* Start capturing from the selected interfaces using the capture filter
|
||||
* shown in the main welcome screen.
|
||||
*/
|
||||
void startCapture(QStringList);
|
||||
void startCapture();
|
||||
void pipeTimeout();
|
||||
void pipeActivated(int source);
|
||||
void pipeNotifierDestroyed();
|
||||
void stopCapture();
|
||||
|
||||
void loadWindowGeometry();
|
||||
void saveWindowGeometry();
|
||||
void mainStackChanged(int);
|
||||
void updateRecentCaptures();
|
||||
void recentActionTriggered();
|
||||
void actionAddPacketComment();
|
||||
void actionEditPacketComment();
|
||||
void actionDeletePacketComment();
|
||||
void actionDeleteCommentsFromPackets();
|
||||
QString commentToMenuText(QString text, int max_len = 40);
|
||||
void setEditCommentsMenu();
|
||||
void setMenusForSelectedPacket();
|
||||
void setMenusForSelectedTreeRow(FieldInformation *fi = NULL);
|
||||
void interfaceSelectionChanged();
|
||||
void captureFilterSyntaxChanged(bool valid);
|
||||
void redissectPackets();
|
||||
void checkDisplayFilter();
|
||||
void fieldsChanged();
|
||||
void reloadLuaPlugins();
|
||||
void showAccordionFrame(AccordionFrame *show_frame, bool toggle = false);
|
||||
void showColumnEditor(int column);
|
||||
void showPreferenceEditor(); // module_t *, pref *
|
||||
void addStatsPluginsToMenu();
|
||||
void addDynamicMenus();
|
||||
void reloadDynamicMenus();
|
||||
void addPluginIFStructures();
|
||||
QMenu * searchSubMenu(QString objectName);
|
||||
void activatePluginIFToolbar(bool);
|
||||
|
||||
void startInterfaceCapture(bool valid, const QString capture_filter);
|
||||
|
||||
void applyGlobalCommandLineOptions();
|
||||
void setFeaturesEnabled(bool enabled = true);
|
||||
|
||||
void on_actionDisplayFilterExpression_triggered();
|
||||
void on_actionNewDisplayFilterExpression_triggered();
|
||||
void onFilterSelected(QString, bool);
|
||||
void onFilterPreferences();
|
||||
void onFilterEdit(int uatIndex);
|
||||
|
||||
// Handle FilterAction signals
|
||||
void queuedFilterAction(QString filter, FilterAction::Action action, FilterAction::ActionType type);
|
||||
|
||||
/** Pass stat cmd arguments to a slot.
|
||||
* @param menu_path slot Partial slot name, e.g. "StatisticsIOGraph".
|
||||
* @param arg "-z" argument, e.g. "io,stat".
|
||||
* @param userdata Optional user data.
|
||||
*/
|
||||
void openStatCommandDialog(const QString &menu_path, const char *arg, void *userdata);
|
||||
|
||||
/** Pass tap parameter arguments to a slot.
|
||||
* @param cfg_str slot Partial slot name, e.g. "StatisticsAFPSrt".
|
||||
* @param arg "-z" argument, e.g. "afp,srt".
|
||||
* @param userdata Optional user data.
|
||||
*/
|
||||
void openTapParameterDialog(const QString cfg_str, const QString arg, void *userdata);
|
||||
void openTapParameterDialog();
|
||||
|
||||
#if defined(HAVE_SOFTWARE_UPDATE) && defined(Q_OS_WIN)
|
||||
void softwareUpdateRequested();
|
||||
#endif
|
||||
|
||||
// Automatically connected slots ("on_<object>_<signal>").
|
||||
//
|
||||
// The slots below follow the naming conventaion described in
|
||||
// https://doc.qt.io/archives/qt-4.8/qmetaobject.html#connectSlotsByName
|
||||
// and are automatically connected at initialization time via
|
||||
// main_ui_->setupUi, which in turn calls connectSlotsByName.
|
||||
//
|
||||
// If you're manually connecting a signal to a slot, don't prefix its name
|
||||
// with "on_". Otherwise you'll get runtime warnings.
|
||||
|
||||
// We might want move these to main_window_actions.cpp similar to
|
||||
// gtk/main_menubar.c
|
||||
|
||||
void on_actionFileOpen_triggered();
|
||||
void on_actionFileMerge_triggered();
|
||||
void on_actionFileImportFromHexDump_triggered();
|
||||
void on_actionFileClose_triggered();
|
||||
void on_actionFileSave_triggered();
|
||||
void on_actionFileSaveAs_triggered();
|
||||
void on_actionFileSetListFiles_triggered();
|
||||
void on_actionFileSetNextFile_triggered();
|
||||
void on_actionFileSetPreviousFile_triggered();
|
||||
void on_actionFileExportPackets_triggered();
|
||||
void on_actionFileExportAsPlainText_triggered();
|
||||
// We're dropping PostScript exports
|
||||
void on_actionFileExportAsCSV_triggered();
|
||||
void on_actionFileExportAsCArrays_triggered();
|
||||
void on_actionFileExportAsPSML_triggered();
|
||||
void on_actionFileExportAsPDML_triggered();
|
||||
void on_actionFileExportAsJSON_triggered();
|
||||
void on_actionFileExportPacketBytes_triggered();
|
||||
void on_actionFilePrint_triggered();
|
||||
|
||||
void on_actionFileExportPDU_triggered();
|
||||
void on_actionFileStripHeaders_triggered();
|
||||
void on_actionFileExportTLSSessionKeys_triggered();
|
||||
|
||||
void actionEditCopyTriggered(MainWindow::CopySelected selection_type);
|
||||
void on_actionCopyAllVisibleItems_triggered();
|
||||
void on_actionCopyAllVisibleSelectedTreeItems_triggered();
|
||||
void on_actionCopyListAsText_triggered();
|
||||
void on_actionCopyListAsCSV_triggered();
|
||||
void on_actionCopyListAsYAML_triggered();
|
||||
void on_actionEditCopyDescription_triggered();
|
||||
void on_actionEditCopyFieldName_triggered();
|
||||
void on_actionEditCopyValue_triggered();
|
||||
void on_actionEditCopyAsFilter_triggered();
|
||||
void on_actionEditFindPacket_triggered();
|
||||
void on_actionEditFindNext_triggered();
|
||||
void on_actionEditFindPrevious_triggered();
|
||||
void on_actionEditMarkPacket_triggered();
|
||||
void on_actionEditMarkAllDisplayed_triggered();
|
||||
void on_actionEditUnmarkAllDisplayed_triggered();
|
||||
void on_actionEditNextMark_triggered();
|
||||
void on_actionEditPreviousMark_triggered();
|
||||
void on_actionEditIgnorePacket_triggered();
|
||||
void on_actionEditIgnoreAllDisplayed_triggered();
|
||||
void on_actionEditUnignoreAllDisplayed_triggered();
|
||||
void on_actionEditSetTimeReference_triggered();
|
||||
void on_actionEditUnsetAllTimeReferences_triggered();
|
||||
void on_actionEditNextTimeReference_triggered();
|
||||
void on_actionEditPreviousTimeReference_triggered();
|
||||
void on_actionEditTimeShift_triggered();
|
||||
void editTimeShiftFinished(int);
|
||||
void addPacketCommentFinished(PacketCommentDialog* pc_dialog, int result);
|
||||
void editPacketCommentFinished(PacketCommentDialog* pc_dialog, int result, guint nComment);
|
||||
void on_actionDeleteAllPacketComments_triggered();
|
||||
void deleteAllPacketCommentsFinished(int result);
|
||||
void on_actionEditConfigurationProfiles_triggered();
|
||||
void showPreferencesDialog(QString module_name);
|
||||
void on_actionEditPreferences_triggered();
|
||||
|
||||
void showHideMainWidgets(QAction *action);
|
||||
void setTimestampFormat(QAction *action);
|
||||
void setTimestampPrecision(QAction *action);
|
||||
void on_actionViewTimeDisplaySecondsWithHoursAndMinutes_triggered(bool checked);
|
||||
void on_actionViewEditResolvedName_triggered();
|
||||
void setNameResolution();
|
||||
void on_actionViewNameResolutionPhysical_triggered();
|
||||
void on_actionViewNameResolutionNetwork_triggered();
|
||||
void on_actionViewNameResolutionTransport_triggered();
|
||||
// XXX We're not porting the concurrency action from GTK+ on purpose.
|
||||
void zoomText();
|
||||
void on_actionViewZoomIn_triggered();
|
||||
void on_actionViewZoomOut_triggered();
|
||||
void on_actionViewNormalSize_triggered();
|
||||
void on_actionViewColorizePacketList_triggered(bool checked);
|
||||
void on_actionViewColoringRules_triggered();
|
||||
void colorizeConversation(bool create_rule = false);
|
||||
void colorizeActionTriggered();
|
||||
void on_actionViewColorizeResetColorization_triggered();
|
||||
void on_actionViewColorizeNewColoringRule_triggered();
|
||||
void on_actionViewResetLayout_triggered();
|
||||
void on_actionViewResizeColumns_triggered();
|
||||
|
||||
void on_actionViewInternalsConversationHashTables_triggered();
|
||||
void on_actionViewInternalsDissectorTables_triggered();
|
||||
void on_actionViewInternalsSupportedProtocols_triggered();
|
||||
|
||||
void openPacketDialog(bool from_reference = false);
|
||||
void on_actionViewShowPacketInNewWindow_triggered();
|
||||
void on_actionContextShowLinkedPacketInNewWindow_triggered();
|
||||
void on_actionViewReload_triggered();
|
||||
void on_actionViewReload_as_File_Format_or_Capture_triggered();
|
||||
|
||||
void on_actionGoGoToPacket_triggered();
|
||||
void on_actionGoGoToLinkedPacket_triggered();
|
||||
void on_actionGoNextConversationPacket_triggered();
|
||||
void on_actionGoPreviousConversationPacket_triggered();
|
||||
void on_actionGoAutoScroll_toggled(bool checked);
|
||||
void resetPreviousFocus();
|
||||
|
||||
void on_actionCaptureOptions_triggered();
|
||||
#ifdef HAVE_LIBPCAP
|
||||
void on_actionCaptureRefreshInterfaces_triggered();
|
||||
#endif
|
||||
void on_actionCaptureCaptureFilters_triggered();
|
||||
|
||||
void on_actionAnalyzeDisplayFilters_triggered();
|
||||
void on_actionAnalyzeDisplayFilterMacros_triggered();
|
||||
void matchFieldFilter(FilterAction::Action action, FilterAction::ActionType filter_type);
|
||||
void on_actionAnalyzeCreateAColumn_triggered();
|
||||
|
||||
void filterMenuAboutToShow();
|
||||
|
||||
void applyConversationFilter();
|
||||
void applyExportObject();
|
||||
|
||||
void on_actionAnalyzeEnabledProtocols_triggered();
|
||||
void on_actionAnalyzeDecodeAs_triggered();
|
||||
void on_actionAnalyzeReloadLuaPlugins_triggered();
|
||||
|
||||
void openFollowStreamDialog(follow_type_t type, guint stream_num, guint sub_stream_num, bool use_stream_index = true);
|
||||
void openFollowStreamDialogForType(follow_type_t type);
|
||||
void on_actionAnalyzeFollowTCPStream_triggered();
|
||||
void on_actionAnalyzeFollowUDPStream_triggered();
|
||||
void on_actionAnalyzeFollowDCCPStream_triggered();
|
||||
void on_actionAnalyzeFollowTLSStream_triggered();
|
||||
void on_actionAnalyzeFollowHTTPStream_triggered();
|
||||
void on_actionAnalyzeFollowHTTP2Stream_triggered();
|
||||
void on_actionAnalyzeFollowQUICStream_triggered();
|
||||
void on_actionAnalyzeFollowSIPCall_triggered();
|
||||
|
||||
void statCommandExpertInfo(const char *, void *);
|
||||
void on_actionAnalyzeExpertInfo_triggered();
|
||||
|
||||
void on_actionHelpContents_triggered();
|
||||
void on_actionHelpMPWireshark_triggered();
|
||||
void on_actionHelpMPWireshark_Filter_triggered();
|
||||
void on_actionHelpMPCapinfos_triggered();
|
||||
void on_actionHelpMPDumpcap_triggered();
|
||||
void on_actionHelpMPEditcap_triggered();
|
||||
void on_actionHelpMPMergecap_triggered();
|
||||
void on_actionHelpMPRawshark_triggered();
|
||||
void on_actionHelpMPReordercap_triggered();
|
||||
void on_actionHelpMPText2pcap_triggered();
|
||||
void on_actionHelpMPTShark_triggered();
|
||||
void on_actionHelpWebsite_triggered();
|
||||
void on_actionHelpFAQ_triggered();
|
||||
void on_actionHelpAsk_triggered();
|
||||
void on_actionHelpDownloads_triggered();
|
||||
void on_actionHelpWiki_triggered();
|
||||
void on_actionHelpSampleCaptures_triggered();
|
||||
void on_actionHelpAbout_triggered();
|
||||
|
||||
#ifdef HAVE_SOFTWARE_UPDATE
|
||||
void checkForUpdates();
|
||||
#endif
|
||||
|
||||
void on_goToCancel_clicked();
|
||||
void on_goToGo_clicked();
|
||||
void on_goToLineEdit_returnPressed();
|
||||
void on_actionCaptureStart_triggered();
|
||||
void on_actionCaptureStop_triggered();
|
||||
void on_actionCaptureRestart_triggered();
|
||||
|
||||
void on_actionStatisticsCaptureFileProperties_triggered();
|
||||
void on_actionStatisticsResolvedAddresses_triggered();
|
||||
void on_actionStatisticsProtocolHierarchy_triggered();
|
||||
void on_actionStatisticsFlowGraph_triggered();
|
||||
void openTcpStreamDialog(int graph_type);
|
||||
void on_actionStatisticsTcpStreamStevens_triggered();
|
||||
void on_actionStatisticsTcpStreamTcptrace_triggered();
|
||||
void on_actionStatisticsTcpStreamThroughput_triggered();
|
||||
void on_actionStatisticsTcpStreamRoundTripTime_triggered();
|
||||
void on_actionStatisticsTcpStreamWindowScaling_triggered();
|
||||
void openSCTPAllAssocsDialog();
|
||||
void on_actionSCTPShowAllAssociations_triggered();
|
||||
void on_actionSCTPAnalyseThisAssociation_triggered();
|
||||
void on_actionSCTPFilterThisAssociation_triggered();
|
||||
void statCommandMulticastStatistics(const char *arg, void *);
|
||||
void on_actionStatisticsUdpMulticastStreams_triggered();
|
||||
|
||||
void statCommandWlanStatistics(const char *arg, void *);
|
||||
void on_actionWirelessWlanStatistics_triggered();
|
||||
|
||||
void openStatisticsTreeDialog(const gchar *abbr);
|
||||
void on_actionStatistics29WestTopics_Advertisements_by_Topic_triggered();
|
||||
void on_actionStatistics29WestTopics_Advertisements_by_Source_triggered();
|
||||
void on_actionStatistics29WestTopics_Advertisements_by_Transport_triggered();
|
||||
void on_actionStatistics29WestTopics_Queries_by_Topic_triggered();
|
||||
void on_actionStatistics29WestTopics_Queries_by_Receiver_triggered();
|
||||
void on_actionStatistics29WestTopics_Wildcard_Queries_by_Pattern_triggered();
|
||||
void on_actionStatistics29WestTopics_Wildcard_Queries_by_Receiver_triggered();
|
||||
void on_actionStatistics29WestQueues_Advertisements_by_Queue_triggered();
|
||||
void on_actionStatistics29WestQueues_Advertisements_by_Source_triggered();
|
||||
void on_actionStatistics29WestQueues_Queries_by_Queue_triggered();
|
||||
void on_actionStatistics29WestQueues_Queries_by_Receiver_triggered();
|
||||
void on_actionStatistics29WestUIM_Streams_triggered();
|
||||
void on_actionStatistics29WestLBTRM_triggered();
|
||||
void on_actionStatistics29WestLBTRU_triggered();
|
||||
void on_actionStatisticsANCP_triggered();
|
||||
void on_actionStatisticsBACappInstanceId_triggered();
|
||||
void on_actionStatisticsBACappIP_triggered();
|
||||
void on_actionStatisticsBACappObjectId_triggered();
|
||||
void on_actionStatisticsBACappService_triggered();
|
||||
void on_actionStatisticsCollectd_triggered();
|
||||
void statCommandConversations(const char *arg = NULL, void *userdata = NULL);
|
||||
void on_actionStatisticsConversations_triggered();
|
||||
void statCommandEndpoints(const char *arg = NULL, void *userdata = NULL);
|
||||
void on_actionStatisticsEndpoints_triggered();
|
||||
void on_actionStatisticsHART_IP_triggered();
|
||||
void on_actionStatisticsHTTPPacketCounter_triggered();
|
||||
void on_actionStatisticsHTTPRequests_triggered();
|
||||
void on_actionStatisticsHTTPLoadDistribution_triggered();
|
||||
void on_actionStatisticsHTTPRequestSequences_triggered();
|
||||
void on_actionStatisticsPacketLengths_triggered();
|
||||
void statCommandIOGraph(const char *, void *);
|
||||
void on_actionStatisticsIOGraph_triggered();
|
||||
void on_actionStatisticsSametime_triggered();
|
||||
void on_actionStatisticsDNS_triggered();
|
||||
void actionStatisticsPlugin_triggered();
|
||||
void on_actionStatisticsHpfeeds_triggered();
|
||||
void on_actionStatisticsHTTP2_triggered();
|
||||
void on_actionStatisticsSOMEIPmessages_triggered();
|
||||
void on_actionStatisticsSOMEIPSDentries_triggered();
|
||||
|
||||
RtpStreamDialog *openTelephonyRtpStreamsDialog();
|
||||
RtpPlayerDialog *openTelephonyRtpPlayerDialog();
|
||||
VoipCallsDialog *openTelephonyVoipCallsDialogVoip();
|
||||
VoipCallsDialog *openTelephonyVoipCallsDialogSip();
|
||||
RtpAnalysisDialog *openTelephonyRtpAnalysisDialog();
|
||||
void on_actionTelephonyVoipCalls_triggered();
|
||||
void on_actionTelephonyGsmMapSummary_triggered();
|
||||
void statCommandLteMacStatistics(const char *arg, void *);
|
||||
void on_actionTelephonyLteRlcStatistics_triggered();
|
||||
void statCommandLteRlcStatistics(const char *arg, void *);
|
||||
void on_actionTelephonyLteMacStatistics_triggered();
|
||||
void on_actionTelephonyLteRlcGraph_triggered();
|
||||
void on_actionTelephonyIax2StreamAnalysis_triggered();
|
||||
void on_actionTelephonyISUPMessages_triggered();
|
||||
void on_actionTelephonyMtp3Summary_triggered();
|
||||
void on_actionTelephonyOsmuxPacketCounter_triggered();
|
||||
void on_actionTelephonyRtpStreams_triggered();
|
||||
void on_actionTelephonyRtpStreamAnalysis_triggered();
|
||||
void on_actionTelephonyRtpPlayer_triggered();
|
||||
void on_actionTelephonyRTSPPacketCounter_triggered();
|
||||
void on_actionTelephonySMPPOperations_triggered();
|
||||
void on_actionTelephonyUCPMessages_triggered();
|
||||
void on_actionTelephonyF1APMessages_triggered();
|
||||
void on_actionTelephonyNGAPMessages_triggered();
|
||||
void on_actionTelephonySipFlows_triggered();
|
||||
|
||||
void on_actionBluetoothATT_Server_Attributes_triggered();
|
||||
void on_actionBluetoothDevices_triggered();
|
||||
void on_actionBluetoothHCI_Summary_triggered();
|
||||
|
||||
void on_actionToolsFirewallAclRules_triggered();
|
||||
void on_actionToolsCredentials_triggered();
|
||||
|
||||
void externalMenuItem_triggered();
|
||||
|
||||
void on_actionAnalyzeShowPacketBytes_triggered();
|
||||
|
||||
void on_actionContextWikiProtocolPage_triggered();
|
||||
void on_actionContextFilterFieldReference_triggered();
|
||||
|
||||
void extcap_options_finished(int result);
|
||||
void showExtcapOptionsDialog(QString & device_name, bool startCaptureOnClose);
|
||||
|
||||
QString findRtpStreams(QVector<rtpstream_id_t *> *stream_ids, bool reverse);
|
||||
|
||||
friend class MainApplication;
|
||||
};
|
||||
|
||||
#endif // MAINWINDOW_H
|
||||
|
|
|
@ -22,12 +22,14 @@
|
|||
#include <QWidget>
|
||||
#include <QRect>
|
||||
#include <QAction>
|
||||
#include <QStackedWidget>
|
||||
#include <QToolBar>
|
||||
|
||||
#include <ui/qt/byte_view_tab.h>
|
||||
#include <ui/qt/packet_list.h>
|
||||
#include <ui/qt/packet_diagram.h>
|
||||
#include <ui/qt/proto_tree.h>
|
||||
#include <ui/qt/welcome_page.h>
|
||||
|
||||
#include <wsutil/ws_assert.h>
|
||||
|
||||
|
@ -35,18 +37,18 @@
|
|||
* The generated Ui_MainWindow::setupUi() can grow larger than our configured limit,
|
||||
* so turn off -Wframe-larger-than= for ui_main_window.h.
|
||||
*/
|
||||
DIAG_OFF(frame-larger-than=)
|
||||
#include <ui_main_window.h>
|
||||
DIAG_ON(frame-larger-than=)
|
||||
//DIAG_OFF(frame-larger-than=)
|
||||
//#include <ui_main_window.h>
|
||||
//DIAG_ON(frame-larger-than=)
|
||||
|
||||
void MainWindow::showWelcome()
|
||||
{
|
||||
main_ui_->mainStack->setCurrentWidget(welcome_page_);
|
||||
main_stack_->setCurrentWidget(welcome_page_);
|
||||
}
|
||||
|
||||
void MainWindow::showCapture()
|
||||
{
|
||||
main_ui_->mainStack->setCurrentWidget(&master_split_);
|
||||
main_stack_->setCurrentWidget(&master_split_);
|
||||
}
|
||||
|
||||
QWidget* MainWindow::getLayoutWidget(layout_pane_content_e type) {
|
||||
|
@ -91,12 +93,12 @@ void MainWindow::layoutPanes()
|
|||
// Reparent all widgets and add them back in the proper order below.
|
||||
// This hides each widget as well.
|
||||
packet_list_->freeze(); // Clears tree, byte view tabs, and diagram.
|
||||
packet_list_->setParent(main_ui_->mainStack);
|
||||
proto_tree_->setParent(main_ui_->mainStack);
|
||||
byte_view_tab_->setParent(main_ui_->mainStack);
|
||||
packet_diagram_->setParent(main_ui_->mainStack);
|
||||
empty_pane_.setParent(main_ui_->mainStack);
|
||||
extra_split_.setParent(main_ui_->mainStack);
|
||||
packet_list_->setParent(main_stack_);
|
||||
proto_tree_->setParent(main_stack_);
|
||||
byte_view_tab_->setParent(main_stack_);
|
||||
packet_diagram_->setParent(main_stack_);
|
||||
empty_pane_.setParent(main_stack_);
|
||||
extra_split_.setParent(main_stack_);
|
||||
|
||||
// XXX We should try to preserve geometries if we can, e.g. by
|
||||
// checking to see if the layout type is the same.
|
||||
|
@ -189,12 +191,12 @@ void MainWindow::applyRecentPaneGeometry()
|
|||
// each.
|
||||
|
||||
// Force a geometry recalculation
|
||||
QWidget *cur_w = main_ui_->mainStack->currentWidget();
|
||||
QWidget *cur_w = main_stack_->currentWidget();
|
||||
showCapture();
|
||||
QRect geom = main_ui_->mainStack->geometry();
|
||||
QRect geom = main_stack_->geometry();
|
||||
QList<int> master_sizes = master_split_.sizes();
|
||||
QList<int> extra_sizes = extra_split_.sizes();
|
||||
main_ui_->mainStack->setCurrentWidget(cur_w);
|
||||
main_stack_->setCurrentWidget(cur_w);
|
||||
|
||||
int master_last_size = master_split_.orientation() == Qt::Vertical ? geom.height() : geom.width();
|
||||
master_last_size -= master_split_.handleWidth() * (master_sizes.length() - 1);
|
||||
|
|
|
@ -19,14 +19,16 @@
|
|||
#include "main_application.h"
|
||||
|
||||
#include "ui/qt/main_window.h"
|
||||
#include "ui/qt/capture_file_dialog.h"
|
||||
#include "ui/qt/utils/proto_node.h"
|
||||
#include "ui/qt/utils/variant_pointer.h"
|
||||
#include "ui/recent.h"
|
||||
|
||||
|
||||
#include <QClipboard>
|
||||
#include <QContextMenuEvent>
|
||||
#include <QGraphicsItem>
|
||||
#include <QMenu>
|
||||
#include <QStyleOptionGraphicsItem>
|
||||
|
||||
#if defined(QT_SVG_LIB) && 0
|
||||
#include <QBuffer>
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "wsutil/utf8_entities.h"
|
||||
|
||||
#include <QAction>
|
||||
#include <QClipboard>
|
||||
#include <QImage>
|
||||
#include <QJsonDocument>
|
||||
#include <QKeyEvent>
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include <ui/qt/main_window.h>
|
||||
|
||||
#include <models/packet_list_model.h>
|
||||
#include <models/pref_models.h>
|
||||
#include <ui/qt/utils/wireshark_mime_data.h>
|
||||
#include <ui/qt/widgets/packet_list_header.h>
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,711 @@
|
|||
/** @file
|
||||
*
|
||||
* Wireshark - Network traffic analyzer
|
||||
* By Gerald Combs <gerald@wireshark.org>
|
||||
* Copyright 1998 Gerald Combs
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef WIRESHARK_MAIN_WINDOW_H
|
||||
#define WIRESHARK_MAIN_WINDOW_H
|
||||
|
||||
/** @defgroup main_window_group Main window
|
||||
* The main window has the following submodules:
|
||||
@dot
|
||||
digraph main_dependencies {
|
||||
node [shape=record, fontname=Helvetica, fontsize=10];
|
||||
main [ label="main window" URL="\ref main.h"];
|
||||
menu [ label="menubar" URL="\ref menus.h"];
|
||||
toolbar [ label="toolbar" URL="\ref main_toolbar.h"];
|
||||
packet_list [ label="packet list pane" URL="\ref packet_list.h"];
|
||||
proto_draw [ label="packet details & bytes panes" URL="\ref main_proto_draw.h"];
|
||||
recent [ label="recent user settings" URL="\ref recent.h"];
|
||||
main -> menu [ arrowhead="open", style="solid" ];
|
||||
main -> toolbar [ arrowhead="open", style="solid" ];
|
||||
main -> packet_list [ arrowhead="open", style="solid" ];
|
||||
main -> proto_draw [ arrowhead="open", style="solid" ];
|
||||
main -> recent [ arrowhead="open", style="solid" ];
|
||||
}
|
||||
@enddot
|
||||
*/
|
||||
|
||||
/** @file
|
||||
* The Wireshark main window
|
||||
* @ingroup main_window_group
|
||||
* @ingroup windows_group
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#include "file.h"
|
||||
|
||||
#include "ui/ws_ui_util.h"
|
||||
#include "ui/iface_toolbar.h"
|
||||
|
||||
#include <epan/plugin_if.h>
|
||||
#include <epan/timestamp.h>
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
#include "capture_opts.h"
|
||||
#endif
|
||||
#include <capture/capture_session.h>
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QPointer>
|
||||
#include <QTextCodec>
|
||||
|
||||
#ifdef _WIN32
|
||||
# include <QTimer>
|
||||
#else
|
||||
# include <QSocketNotifier>
|
||||
#endif
|
||||
|
||||
#include "capture_file.h"
|
||||
#include "capture_file_dialog.h"
|
||||
#include "print_dialog.h"
|
||||
#include "capture_file_properties_dialog.h"
|
||||
#include <ui/qt/utils/field_information.h>
|
||||
#include <ui/qt/widgets/display_filter_combo.h>
|
||||
#include "follow_stream_dialog.h"
|
||||
#include "main_window.h"
|
||||
#include "rtp_stream_dialog.h"
|
||||
#include "voip_calls_dialog.h"
|
||||
#include "rtp_analysis_dialog.h"
|
||||
|
||||
class AccordionFrame;
|
||||
class ByteViewTab;
|
||||
class CaptureOptionsDialog;
|
||||
class PrintDialog;
|
||||
class FileSetDialog;
|
||||
class FilterDialog;
|
||||
class FunnelStatistics;
|
||||
class WelcomePage;
|
||||
class PacketCommentDialog;
|
||||
class PacketDiagram;
|
||||
class PacketList;
|
||||
class ProtoTree;
|
||||
#if defined(HAVE_LIBNL) && defined(HAVE_NL80211)
|
||||
class WirelessFrame;
|
||||
#endif
|
||||
class FilterExpressionToolBar;
|
||||
class WiresharkApplication;
|
||||
|
||||
class QAction;
|
||||
class QActionGroup;
|
||||
|
||||
namespace Ui {
|
||||
class WiresharkMainWindow;
|
||||
}
|
||||
|
||||
Q_DECLARE_METATYPE(ts_type)
|
||||
Q_DECLARE_METATYPE(ts_precision)
|
||||
|
||||
class WiresharkMainWindow : public MainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit WiresharkMainWindow(QWidget *parent = nullptr);
|
||||
~WiresharkMainWindow();
|
||||
void setPipeInputHandler(gint source, gpointer user_data, ws_process_id *child_process, pipe_input_cb_t input_cb);
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
capture_session *captureSession() { return &cap_session_; }
|
||||
info_data_t *captureInfoData() { return &info_data_; }
|
||||
#endif
|
||||
|
||||
virtual QMenu *createPopupMenu();
|
||||
|
||||
CaptureFile *captureFile() { return &capture_file_; }
|
||||
|
||||
void removeAdditionalToolbar(QString toolbarName);
|
||||
|
||||
void addInterfaceToolbar(const iface_toolbar *toolbar_entry);
|
||||
void removeInterfaceToolbar(const gchar *menu_title);
|
||||
|
||||
QString getMwFileName();
|
||||
void setMwFileName(QString fileName);
|
||||
|
||||
frame_data * frameDataForRow(int row) const;
|
||||
|
||||
protected:
|
||||
virtual bool eventFilter(QObject *obj, QEvent *event);
|
||||
virtual bool event(QEvent *event);
|
||||
virtual void keyPressEvent(QKeyEvent *event);
|
||||
virtual void closeEvent(QCloseEvent *event);
|
||||
virtual void dragEnterEvent(QDragEnterEvent *event);
|
||||
virtual void dropEvent(QDropEvent *event);
|
||||
virtual void changeEvent(QEvent* event);
|
||||
|
||||
private:
|
||||
// XXX Move to FilterUtils
|
||||
enum MatchSelected {
|
||||
MatchSelectedReplace,
|
||||
MatchSelectedAnd,
|
||||
MatchSelectedOr,
|
||||
MatchSelectedNot,
|
||||
MatchSelectedAndNot,
|
||||
MatchSelectedOrNot
|
||||
};
|
||||
|
||||
enum CopySelected {
|
||||
CopyAllVisibleItems,
|
||||
CopyAllVisibleSelectedTreeItems,
|
||||
CopySelectedDescription,
|
||||
CopySelectedFieldName,
|
||||
CopySelectedValue,
|
||||
CopyListAsText,
|
||||
CopyListAsCSV,
|
||||
CopyListAsYAML
|
||||
};
|
||||
|
||||
enum FileCloseContext {
|
||||
Default,
|
||||
Quit,
|
||||
Restart,
|
||||
Reload
|
||||
};
|
||||
|
||||
Ui::WiresharkMainWindow *main_ui_;
|
||||
CaptureFile capture_file_;
|
||||
QFont mono_font_;
|
||||
QMap<QString, QTextCodec *> text_codec_map_;
|
||||
#if defined(HAVE_LIBNL) && defined(HAVE_NL80211)
|
||||
WirelessFrame *wireless_frame_;
|
||||
#endif
|
||||
QWidget *previous_focus_;
|
||||
FileSetDialog *file_set_dialog_;
|
||||
QActionGroup *show_hide_actions_;
|
||||
QActionGroup *time_display_actions_;
|
||||
QActionGroup *time_precision_actions_;
|
||||
FunnelStatistics *funnel_statistics_;
|
||||
QList<QPair<QAction *, bool> > freeze_actions_;
|
||||
QPointer<QWidget> freeze_focus_;
|
||||
QMap<QAction *, ts_type> td_actions;
|
||||
QMap<QAction *, ts_precision> tp_actions;
|
||||
bool was_maximized_;
|
||||
|
||||
/* the following values are maintained so that the capture file name and status
|
||||
is available when there is no cf structure available */
|
||||
QString mwFileName_;
|
||||
|
||||
bool capture_stopping_;
|
||||
bool capture_filter_valid_;
|
||||
#ifdef HAVE_LIBPCAP
|
||||
capture_session cap_session_;
|
||||
CaptureOptionsDialog *capture_options_dialog_;
|
||||
info_data_t info_data_;
|
||||
#endif
|
||||
FilterDialog *display_filter_dlg_;
|
||||
FilterDialog *capture_filter_dlg_;
|
||||
|
||||
// Pipe input
|
||||
gint pipe_source_;
|
||||
gpointer pipe_user_data_;
|
||||
ws_process_id *pipe_child_process_;
|
||||
pipe_input_cb_t pipe_input_cb_;
|
||||
#ifdef _WIN32
|
||||
QTimer *pipe_timer_;
|
||||
#else
|
||||
QSocketNotifier *pipe_notifier_;
|
||||
#endif
|
||||
|
||||
#if defined(Q_OS_MAC)
|
||||
QMenu *dock_menu_;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SOFTWARE_UPDATE
|
||||
QAction *update_action_;
|
||||
#endif
|
||||
|
||||
QPoint dragStartPosition;
|
||||
|
||||
void freeze();
|
||||
void thaw();
|
||||
|
||||
void mergeCaptureFile();
|
||||
void importCaptureFile();
|
||||
bool saveCaptureFile(capture_file *cf, bool dont_reopen);
|
||||
bool saveAsCaptureFile(capture_file *cf, bool must_support_comments = false, bool dont_reopen = false);
|
||||
void exportSelectedPackets();
|
||||
void exportDissections(export_type_e export_type);
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
void fileAddExtension(QString &file_name, int file_type, wtap_compression_type compression_type);
|
||||
#endif // Q_OS_WIN
|
||||
bool testCaptureFileClose(QString before_what, FileCloseContext context = Default);
|
||||
void captureStop();
|
||||
|
||||
void findTextCodecs();
|
||||
|
||||
void initMainToolbarIcons();
|
||||
void initShowHideMainWidgets();
|
||||
void initTimeDisplayFormatMenu();
|
||||
void initTimePrecisionFormatMenu();
|
||||
void initFreezeActions();
|
||||
|
||||
void setTitlebarForCaptureInProgress();
|
||||
void setMenusForCaptureFile(bool force_disable = false);
|
||||
void setMenusForCaptureInProgress(bool capture_in_progress = false);
|
||||
void setMenusForCaptureStopping();
|
||||
void setForCapturedPackets(bool have_captured_packets);
|
||||
void setMenusForFileSet(bool enable_list_files);
|
||||
void setWindowIcon(const QIcon &icon);
|
||||
QString replaceWindowTitleVariables(QString title);
|
||||
|
||||
void externalMenuHelper(ext_menu_t * menu, QMenu * subMenu, gint depth);
|
||||
|
||||
void setForCaptureInProgress(bool capture_in_progress = false, bool handle_toolbars = false, GArray *ifaces = NULL);
|
||||
QMenu* findOrAddMenu(QMenu *parent_menu, QString& menu_text);
|
||||
|
||||
void captureFileReadStarted(const QString &action);
|
||||
|
||||
void addMenuActions(QList<QAction *> &actions, int menu_group);
|
||||
void removeMenuActions(QList<QAction *> &actions, int menu_group);
|
||||
void goToConversationFrame(bool go_next);
|
||||
void colorizeWithFilter(QByteArray filter, int color_number = -1);
|
||||
|
||||
signals:
|
||||
void setDissectedCaptureFile(capture_file *cf);
|
||||
void displayFilterSuccess(bool success);
|
||||
void closePacketDialogs();
|
||||
void reloadFields();
|
||||
void packetInfoChanged(struct _packet_info *pinfo);
|
||||
void fieldFilterChanged(const QByteArray field_filter);
|
||||
|
||||
void fieldHighlight(FieldInformation *);
|
||||
|
||||
void captureActive(int);
|
||||
void selectRtpStream(rtpstream_id_t *id);
|
||||
void deselectRtpStream(rtpstream_id_t *id);
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
void showExtcapOptions(QString &device_name, bool startCaptureOnClose);
|
||||
#endif
|
||||
|
||||
public slots:
|
||||
// in main_window_slots.cpp
|
||||
/**
|
||||
* Open a capture file.
|
||||
* @param cf_path Path to the file.
|
||||
* @param display_filter Display filter to apply. May be empty.
|
||||
* @param type File type.
|
||||
* @param is_tempfile TRUE/FALSE.
|
||||
* @return True on success, false on failure.
|
||||
*/
|
||||
// XXX We might want to return a cf_read_status_t or a CaptureFile.
|
||||
bool openCaptureFile(QString cf_path, QString display_filter, unsigned int type, gboolean is_tempfile = FALSE);
|
||||
bool openCaptureFile(QString cf_path = QString(), QString display_filter = QString()) { return openCaptureFile(cf_path, display_filter, WTAP_TYPE_AUTO); }
|
||||
void filterPackets(QString new_filter = QString(), bool force = false);
|
||||
void updateForUnsavedChanges();
|
||||
void layoutToolbars();
|
||||
void updatePreferenceActions();
|
||||
void updateRecentActions();
|
||||
|
||||
void setTitlebarForCaptureFile();
|
||||
void setWSWindowTitle(QString title = QString());
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
void captureCapturePrepared(capture_session *);
|
||||
void captureCaptureUpdateStarted(capture_session *);
|
||||
void captureCaptureUpdateFinished(capture_session *);
|
||||
void captureCaptureFixedFinished(capture_session *cap_session);
|
||||
void captureCaptureFailed(capture_session *);
|
||||
#endif
|
||||
|
||||
void captureFileOpened();
|
||||
void captureFileReadFinished();
|
||||
void captureFileClosing();
|
||||
void captureFileClosed();
|
||||
|
||||
void launchRLCGraph(bool channelKnown, guint16 ueid, guint8 rlcMode,
|
||||
guint16 channelType, guint16 channelId, guint8 direction);
|
||||
|
||||
void on_actionViewFullScreen_triggered(bool checked);
|
||||
|
||||
void rtpPlayerDialogReplaceRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpPlayerDialogAddRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpPlayerDialogRemoveRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpAnalysisDialogReplaceRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpAnalysisDialogAddRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpAnalysisDialogRemoveRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpStreamsDialogSelectRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpStreamsDialogDeselectRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
|
||||
private slots:
|
||||
|
||||
void captureEventHandler(CaptureEvent ev);
|
||||
|
||||
// Manually connected slots (no "on_<object>_<signal>").
|
||||
|
||||
void initViewColorizeMenu();
|
||||
void initConversationMenus();
|
||||
static gboolean addExportObjectsMenuItem(const void *key, void *value, void *userdata);
|
||||
void initExportObjectsMenus();
|
||||
|
||||
// in main_window_slots.cpp
|
||||
/**
|
||||
* @brief startCapture
|
||||
* Start capturing from the selected interfaces using the capture filter
|
||||
* shown in the main welcome screen.
|
||||
*/
|
||||
void startCapture(QStringList);
|
||||
void startCapture();
|
||||
void pipeTimeout();
|
||||
void pipeActivated(int source);
|
||||
void pipeNotifierDestroyed();
|
||||
void stopCapture();
|
||||
|
||||
void loadWindowGeometry();
|
||||
void saveWindowGeometry();
|
||||
void mainStackChanged(int);
|
||||
void updateRecentCaptures();
|
||||
void recentActionTriggered();
|
||||
void actionAddPacketComment();
|
||||
void actionEditPacketComment();
|
||||
void actionDeletePacketComment();
|
||||
void actionDeleteCommentsFromPackets();
|
||||
QString commentToMenuText(QString text, int max_len = 40);
|
||||
void setEditCommentsMenu();
|
||||
void setMenusForSelectedPacket();
|
||||
void setMenusForSelectedTreeRow(FieldInformation *fi = NULL);
|
||||
void interfaceSelectionChanged();
|
||||
void captureFilterSyntaxChanged(bool valid);
|
||||
void redissectPackets();
|
||||
void checkDisplayFilter();
|
||||
void fieldsChanged();
|
||||
void reloadLuaPlugins();
|
||||
void showAccordionFrame(AccordionFrame *show_frame, bool toggle = false);
|
||||
void showColumnEditor(int column);
|
||||
void showPreferenceEditor(); // module_t *, pref *
|
||||
void addStatsPluginsToMenu();
|
||||
void addDynamicMenus();
|
||||
void reloadDynamicMenus();
|
||||
void addPluginIFStructures();
|
||||
QMenu * searchSubMenu(QString objectName);
|
||||
void activatePluginIFToolbar(bool);
|
||||
|
||||
void startInterfaceCapture(bool valid, const QString capture_filter);
|
||||
|
||||
void applyGlobalCommandLineOptions();
|
||||
void setFeaturesEnabled(bool enabled = true);
|
||||
|
||||
void on_actionDisplayFilterExpression_triggered();
|
||||
void on_actionNewDisplayFilterExpression_triggered();
|
||||
void onFilterSelected(QString, bool);
|
||||
void onFilterPreferences();
|
||||
void onFilterEdit(int uatIndex);
|
||||
|
||||
// Handle FilterAction signals
|
||||
void queuedFilterAction(QString filter, FilterAction::Action action, FilterAction::ActionType type);
|
||||
|
||||
/** Pass stat cmd arguments to a slot.
|
||||
* @param menu_path slot Partial slot name, e.g. "StatisticsIOGraph".
|
||||
* @param arg "-z" argument, e.g. "io,stat".
|
||||
* @param userdata Optional user data.
|
||||
*/
|
||||
void openStatCommandDialog(const QString &menu_path, const char *arg, void *userdata);
|
||||
|
||||
/** Pass tap parameter arguments to a slot.
|
||||
* @param cfg_str slot Partial slot name, e.g. "StatisticsAFPSrt".
|
||||
* @param arg "-z" argument, e.g. "afp,srt".
|
||||
* @param userdata Optional user data.
|
||||
*/
|
||||
void openTapParameterDialog(const QString cfg_str, const QString arg, void *userdata);
|
||||
void openTapParameterDialog();
|
||||
|
||||
#if defined(HAVE_SOFTWARE_UPDATE) && defined(Q_OS_WIN)
|
||||
void softwareUpdateRequested();
|
||||
#endif
|
||||
|
||||
// Automatically connected slots ("on_<object>_<signal>").
|
||||
//
|
||||
// The slots below follow the naming conventaion described in
|
||||
// https://doc.qt.io/archives/qt-4.8/qmetaobject.html#connectSlotsByName
|
||||
// and are automatically connected at initialization time via
|
||||
// main_ui_->setupUi, which in turn calls connectSlotsByName.
|
||||
//
|
||||
// If you're manually connecting a signal to a slot, don't prefix its name
|
||||
// with "on_". Otherwise you'll get runtime warnings.
|
||||
|
||||
// We might want move these to main_window_actions.cpp similar to
|
||||
// gtk/main_menubar.c
|
||||
|
||||
void on_actionFileOpen_triggered();
|
||||
void on_actionFileMerge_triggered();
|
||||
void on_actionFileImportFromHexDump_triggered();
|
||||
void on_actionFileClose_triggered();
|
||||
void on_actionFileSave_triggered();
|
||||
void on_actionFileSaveAs_triggered();
|
||||
void on_actionFileSetListFiles_triggered();
|
||||
void on_actionFileSetNextFile_triggered();
|
||||
void on_actionFileSetPreviousFile_triggered();
|
||||
void on_actionFileExportPackets_triggered();
|
||||
void on_actionFileExportAsPlainText_triggered();
|
||||
// We're dropping PostScript exports
|
||||
void on_actionFileExportAsCSV_triggered();
|
||||
void on_actionFileExportAsCArrays_triggered();
|
||||
void on_actionFileExportAsPSML_triggered();
|
||||
void on_actionFileExportAsPDML_triggered();
|
||||
void on_actionFileExportAsJSON_triggered();
|
||||
void on_actionFileExportPacketBytes_triggered();
|
||||
void on_actionFilePrint_triggered();
|
||||
|
||||
void on_actionFileExportPDU_triggered();
|
||||
void on_actionFileStripHeaders_triggered();
|
||||
void on_actionFileExportTLSSessionKeys_triggered();
|
||||
|
||||
void actionEditCopyTriggered(WiresharkMainWindow::CopySelected selection_type);
|
||||
void on_actionCopyAllVisibleItems_triggered();
|
||||
void on_actionCopyAllVisibleSelectedTreeItems_triggered();
|
||||
void on_actionCopyListAsText_triggered();
|
||||
void on_actionCopyListAsCSV_triggered();
|
||||
void on_actionCopyListAsYAML_triggered();
|
||||
void on_actionEditCopyDescription_triggered();
|
||||
void on_actionEditCopyFieldName_triggered();
|
||||
void on_actionEditCopyValue_triggered();
|
||||
void on_actionEditCopyAsFilter_triggered();
|
||||
void on_actionEditFindPacket_triggered();
|
||||
void on_actionEditFindNext_triggered();
|
||||
void on_actionEditFindPrevious_triggered();
|
||||
void on_actionEditMarkPacket_triggered();
|
||||
void on_actionEditMarkAllDisplayed_triggered();
|
||||
void on_actionEditUnmarkAllDisplayed_triggered();
|
||||
void on_actionEditNextMark_triggered();
|
||||
void on_actionEditPreviousMark_triggered();
|
||||
void on_actionEditIgnorePacket_triggered();
|
||||
void on_actionEditIgnoreAllDisplayed_triggered();
|
||||
void on_actionEditUnignoreAllDisplayed_triggered();
|
||||
void on_actionEditSetTimeReference_triggered();
|
||||
void on_actionEditUnsetAllTimeReferences_triggered();
|
||||
void on_actionEditNextTimeReference_triggered();
|
||||
void on_actionEditPreviousTimeReference_triggered();
|
||||
void on_actionEditTimeShift_triggered();
|
||||
void editTimeShiftFinished(int);
|
||||
void addPacketCommentFinished(PacketCommentDialog* pc_dialog, int result);
|
||||
void editPacketCommentFinished(PacketCommentDialog* pc_dialog, int result, guint nComment);
|
||||
void on_actionDeleteAllPacketComments_triggered();
|
||||
void deleteAllPacketCommentsFinished(int result);
|
||||
void on_actionEditConfigurationProfiles_triggered();
|
||||
void showPreferencesDialog(QString module_name);
|
||||
void on_actionEditPreferences_triggered();
|
||||
|
||||
void showHideMainWidgets(QAction *action);
|
||||
void setTimestampFormat(QAction *action);
|
||||
void setTimestampPrecision(QAction *action);
|
||||
void on_actionViewTimeDisplaySecondsWithHoursAndMinutes_triggered(bool checked);
|
||||
void on_actionViewEditResolvedName_triggered();
|
||||
void setNameResolution();
|
||||
void on_actionViewNameResolutionPhysical_triggered();
|
||||
void on_actionViewNameResolutionNetwork_triggered();
|
||||
void on_actionViewNameResolutionTransport_triggered();
|
||||
// XXX We're not porting the concurrency action from GTK+ on purpose.
|
||||
void zoomText();
|
||||
void on_actionViewZoomIn_triggered();
|
||||
void on_actionViewZoomOut_triggered();
|
||||
void on_actionViewNormalSize_triggered();
|
||||
void on_actionViewColorizePacketList_triggered(bool checked);
|
||||
void on_actionViewColoringRules_triggered();
|
||||
void colorizeConversation(bool create_rule = false);
|
||||
void colorizeActionTriggered();
|
||||
void on_actionViewColorizeResetColorization_triggered();
|
||||
void on_actionViewColorizeNewColoringRule_triggered();
|
||||
void on_actionViewResetLayout_triggered();
|
||||
void on_actionViewResizeColumns_triggered();
|
||||
|
||||
void on_actionViewInternalsConversationHashTables_triggered();
|
||||
void on_actionViewInternalsDissectorTables_triggered();
|
||||
void on_actionViewInternalsSupportedProtocols_triggered();
|
||||
|
||||
void openPacketDialog(bool from_reference = false);
|
||||
void on_actionViewShowPacketInNewWindow_triggered();
|
||||
void on_actionContextShowLinkedPacketInNewWindow_triggered();
|
||||
void on_actionViewReload_triggered();
|
||||
void on_actionViewReload_as_File_Format_or_Capture_triggered();
|
||||
|
||||
void on_actionGoGoToPacket_triggered();
|
||||
void on_actionGoGoToLinkedPacket_triggered();
|
||||
void on_actionGoNextConversationPacket_triggered();
|
||||
void on_actionGoPreviousConversationPacket_triggered();
|
||||
void on_actionGoAutoScroll_toggled(bool checked);
|
||||
void resetPreviousFocus();
|
||||
|
||||
void on_actionCaptureOptions_triggered();
|
||||
#ifdef HAVE_LIBPCAP
|
||||
void on_actionCaptureRefreshInterfaces_triggered();
|
||||
#endif
|
||||
void on_actionCaptureCaptureFilters_triggered();
|
||||
|
||||
void on_actionAnalyzeDisplayFilters_triggered();
|
||||
void on_actionAnalyzeDisplayFilterMacros_triggered();
|
||||
void matchFieldFilter(FilterAction::Action action, FilterAction::ActionType filter_type);
|
||||
void on_actionAnalyzeCreateAColumn_triggered();
|
||||
|
||||
void filterMenuAboutToShow();
|
||||
|
||||
void applyConversationFilter();
|
||||
void applyExportObject();
|
||||
|
||||
void on_actionAnalyzeEnabledProtocols_triggered();
|
||||
void on_actionAnalyzeDecodeAs_triggered();
|
||||
void on_actionAnalyzeReloadLuaPlugins_triggered();
|
||||
|
||||
void openFollowStreamDialog(follow_type_t type, guint stream_num, guint sub_stream_num, bool use_stream_index = true);
|
||||
void openFollowStreamDialogForType(follow_type_t type);
|
||||
void on_actionAnalyzeFollowTCPStream_triggered();
|
||||
void on_actionAnalyzeFollowUDPStream_triggered();
|
||||
void on_actionAnalyzeFollowDCCPStream_triggered();
|
||||
void on_actionAnalyzeFollowTLSStream_triggered();
|
||||
void on_actionAnalyzeFollowHTTPStream_triggered();
|
||||
void on_actionAnalyzeFollowHTTP2Stream_triggered();
|
||||
void on_actionAnalyzeFollowQUICStream_triggered();
|
||||
void on_actionAnalyzeFollowSIPCall_triggered();
|
||||
|
||||
void statCommandExpertInfo(const char *, void *);
|
||||
void on_actionAnalyzeExpertInfo_triggered();
|
||||
|
||||
void on_actionHelpContents_triggered();
|
||||
void on_actionHelpMPWireshark_triggered();
|
||||
void on_actionHelpMPWireshark_Filter_triggered();
|
||||
void on_actionHelpMPCapinfos_triggered();
|
||||
void on_actionHelpMPDumpcap_triggered();
|
||||
void on_actionHelpMPEditcap_triggered();
|
||||
void on_actionHelpMPMergecap_triggered();
|
||||
void on_actionHelpMPRawshark_triggered();
|
||||
void on_actionHelpMPReordercap_triggered();
|
||||
void on_actionHelpMPText2pcap_triggered();
|
||||
void on_actionHelpMPTShark_triggered();
|
||||
void on_actionHelpWebsite_triggered();
|
||||
void on_actionHelpFAQ_triggered();
|
||||
void on_actionHelpAsk_triggered();
|
||||
void on_actionHelpDownloads_triggered();
|
||||
void on_actionHelpWiki_triggered();
|
||||
void on_actionHelpSampleCaptures_triggered();
|
||||
void on_actionHelpAbout_triggered();
|
||||
|
||||
#ifdef HAVE_SOFTWARE_UPDATE
|
||||
void checkForUpdates();
|
||||
#endif
|
||||
|
||||
void on_goToCancel_clicked();
|
||||
void on_goToGo_clicked();
|
||||
void on_goToLineEdit_returnPressed();
|
||||
void on_actionCaptureStart_triggered();
|
||||
void on_actionCaptureStop_triggered();
|
||||
void on_actionCaptureRestart_triggered();
|
||||
|
||||
void on_actionStatisticsCaptureFileProperties_triggered();
|
||||
void on_actionStatisticsResolvedAddresses_triggered();
|
||||
void on_actionStatisticsProtocolHierarchy_triggered();
|
||||
void on_actionStatisticsFlowGraph_triggered();
|
||||
void openTcpStreamDialog(int graph_type);
|
||||
void on_actionStatisticsTcpStreamStevens_triggered();
|
||||
void on_actionStatisticsTcpStreamTcptrace_triggered();
|
||||
void on_actionStatisticsTcpStreamThroughput_triggered();
|
||||
void on_actionStatisticsTcpStreamRoundTripTime_triggered();
|
||||
void on_actionStatisticsTcpStreamWindowScaling_triggered();
|
||||
void openSCTPAllAssocsDialog();
|
||||
void on_actionSCTPShowAllAssociations_triggered();
|
||||
void on_actionSCTPAnalyseThisAssociation_triggered();
|
||||
void on_actionSCTPFilterThisAssociation_triggered();
|
||||
void statCommandMulticastStatistics(const char *arg, void *);
|
||||
void on_actionStatisticsUdpMulticastStreams_triggered();
|
||||
|
||||
void statCommandWlanStatistics(const char *arg, void *);
|
||||
void on_actionWirelessWlanStatistics_triggered();
|
||||
|
||||
void openStatisticsTreeDialog(const gchar *abbr);
|
||||
void on_actionStatistics29WestTopics_Advertisements_by_Topic_triggered();
|
||||
void on_actionStatistics29WestTopics_Advertisements_by_Source_triggered();
|
||||
void on_actionStatistics29WestTopics_Advertisements_by_Transport_triggered();
|
||||
void on_actionStatistics29WestTopics_Queries_by_Topic_triggered();
|
||||
void on_actionStatistics29WestTopics_Queries_by_Receiver_triggered();
|
||||
void on_actionStatistics29WestTopics_Wildcard_Queries_by_Pattern_triggered();
|
||||
void on_actionStatistics29WestTopics_Wildcard_Queries_by_Receiver_triggered();
|
||||
void on_actionStatistics29WestQueues_Advertisements_by_Queue_triggered();
|
||||
void on_actionStatistics29WestQueues_Advertisements_by_Source_triggered();
|
||||
void on_actionStatistics29WestQueues_Queries_by_Queue_triggered();
|
||||
void on_actionStatistics29WestQueues_Queries_by_Receiver_triggered();
|
||||
void on_actionStatistics29WestUIM_Streams_triggered();
|
||||
void on_actionStatistics29WestLBTRM_triggered();
|
||||
void on_actionStatistics29WestLBTRU_triggered();
|
||||
void on_actionStatisticsANCP_triggered();
|
||||
void on_actionStatisticsBACappInstanceId_triggered();
|
||||
void on_actionStatisticsBACappIP_triggered();
|
||||
void on_actionStatisticsBACappObjectId_triggered();
|
||||
void on_actionStatisticsBACappService_triggered();
|
||||
void on_actionStatisticsCollectd_triggered();
|
||||
void statCommandConversations(const char *arg = NULL, void *userdata = NULL);
|
||||
void on_actionStatisticsConversations_triggered();
|
||||
void statCommandEndpoints(const char *arg = NULL, void *userdata = NULL);
|
||||
void on_actionStatisticsEndpoints_triggered();
|
||||
void on_actionStatisticsHART_IP_triggered();
|
||||
void on_actionStatisticsHTTPPacketCounter_triggered();
|
||||
void on_actionStatisticsHTTPRequests_triggered();
|
||||
void on_actionStatisticsHTTPLoadDistribution_triggered();
|
||||
void on_actionStatisticsHTTPRequestSequences_triggered();
|
||||
void on_actionStatisticsPacketLengths_triggered();
|
||||
void statCommandIOGraph(const char *, void *);
|
||||
void on_actionStatisticsIOGraph_triggered();
|
||||
void on_actionStatisticsSametime_triggered();
|
||||
void on_actionStatisticsDNS_triggered();
|
||||
void actionStatisticsPlugin_triggered();
|
||||
void on_actionStatisticsHpfeeds_triggered();
|
||||
void on_actionStatisticsHTTP2_triggered();
|
||||
void on_actionStatisticsSOMEIPmessages_triggered();
|
||||
void on_actionStatisticsSOMEIPSDentries_triggered();
|
||||
|
||||
RtpStreamDialog *openTelephonyRtpStreamsDialog();
|
||||
RtpPlayerDialog *openTelephonyRtpPlayerDialog();
|
||||
VoipCallsDialog *openTelephonyVoipCallsDialogVoip();
|
||||
VoipCallsDialog *openTelephonyVoipCallsDialogSip();
|
||||
RtpAnalysisDialog *openTelephonyRtpAnalysisDialog();
|
||||
void on_actionTelephonyVoipCalls_triggered();
|
||||
void on_actionTelephonyGsmMapSummary_triggered();
|
||||
void statCommandLteMacStatistics(const char *arg, void *);
|
||||
void on_actionTelephonyLteRlcStatistics_triggered();
|
||||
void statCommandLteRlcStatistics(const char *arg, void *);
|
||||
void on_actionTelephonyLteMacStatistics_triggered();
|
||||
void on_actionTelephonyLteRlcGraph_triggered();
|
||||
void on_actionTelephonyIax2StreamAnalysis_triggered();
|
||||
void on_actionTelephonyISUPMessages_triggered();
|
||||
void on_actionTelephonyMtp3Summary_triggered();
|
||||
void on_actionTelephonyOsmuxPacketCounter_triggered();
|
||||
void on_actionTelephonyRtpStreams_triggered();
|
||||
void on_actionTelephonyRtpStreamAnalysis_triggered();
|
||||
void on_actionTelephonyRtpPlayer_triggered();
|
||||
void on_actionTelephonyRTSPPacketCounter_triggered();
|
||||
void on_actionTelephonySMPPOperations_triggered();
|
||||
void on_actionTelephonyUCPMessages_triggered();
|
||||
void on_actionTelephonyF1APMessages_triggered();
|
||||
void on_actionTelephonyNGAPMessages_triggered();
|
||||
void on_actionTelephonySipFlows_triggered();
|
||||
|
||||
void on_actionBluetoothATT_Server_Attributes_triggered();
|
||||
void on_actionBluetoothDevices_triggered();
|
||||
void on_actionBluetoothHCI_Summary_triggered();
|
||||
|
||||
void on_actionToolsFirewallAclRules_triggered();
|
||||
void on_actionToolsCredentials_triggered();
|
||||
|
||||
void externalMenuItem_triggered();
|
||||
|
||||
void on_actionAnalyzeShowPacketBytes_triggered();
|
||||
|
||||
void on_actionContextWikiProtocolPage_triggered();
|
||||
void on_actionContextFilterFieldReference_triggered();
|
||||
|
||||
void extcap_options_finished(int result);
|
||||
void showExtcapOptionsDialog(QString & device_name, bool startCaptureOnClose);
|
||||
|
||||
QString findRtpStreams(QVector<rtpstream_id_t *> *stream_ids, bool reverse);
|
||||
|
||||
friend class MainApplication;
|
||||
};
|
||||
|
||||
#endif // WIRESHARK_MAIN_WINDOW_H
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ui version="4.0">
|
||||
<class>MainWindow</class>
|
||||
<widget class="QMainWindow" name="MainWindow">
|
||||
<class>WiresharkMainWindow</class>
|
||||
<widget class="QMainWindow" name="WiresharkMainWindow">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
<x>0</x>
|
||||
|
@ -3094,7 +3094,7 @@
|
|||
<connection>
|
||||
<sender>actionFileQuit</sender>
|
||||
<signal>triggered()</signal>
|
||||
<receiver>MainWindow</receiver>
|
||||
<receiver>WiresharkMainWindow</receiver>
|
||||
<slot>close()</slot>
|
||||
<hints>
|
||||
<hint type="sourcelabel">
|
File diff suppressed because it is too large
Load Diff
|
@ -137,10 +137,6 @@ set(WIRESHARK_QT_HEADERS
|
|||
../qt/about_dialog.h
|
||||
../qt/accordion_frame.h
|
||||
../qt/address_editor_frame.h
|
||||
../qt/bluetooth_att_server_attributes_dialog.h
|
||||
../qt/bluetooth_device_dialog.h
|
||||
../qt/bluetooth_devices_dialog.h
|
||||
../qt/bluetooth_hci_summary_dialog.h
|
||||
../qt/byte_view_tab.h
|
||||
../qt/capture_file_dialog.h
|
||||
../qt/capture_file_properties_dialog.h
|
||||
|
@ -253,7 +249,6 @@ set(WIRESHARK_QT_HEADERS
|
|||
../qt/welcome_page.h
|
||||
../qt/wireless_frame.h
|
||||
../qt/wireshark_dialog.h
|
||||
../qt/wlan_statistics_dialog.h
|
||||
../qt/${WIRESHARK_CUSTOM_QT_HEADERS}
|
||||
)
|
||||
|
||||
|
@ -271,6 +266,7 @@ endif()
|
|||
|
||||
set (LOGSHARK_QT_HEADERS
|
||||
logshark_application.h
|
||||
logwolf_main_window.h
|
||||
${WIRESHARK_QT_HEADERS}
|
||||
)
|
||||
|
||||
|
@ -390,10 +386,6 @@ set(WIRESHARK_QT_SRC
|
|||
../qt/about_dialog.cpp
|
||||
../qt/accordion_frame.cpp
|
||||
../qt/address_editor_frame.cpp
|
||||
../qt/bluetooth_att_server_attributes_dialog.cpp
|
||||
../qt/bluetooth_device_dialog.cpp
|
||||
../qt/bluetooth_devices_dialog.cpp
|
||||
../qt/bluetooth_hci_summary_dialog.cpp
|
||||
../qt/byte_view_tab.cpp
|
||||
../qt/capture_file_dialog.cpp
|
||||
../qt/capture_file_properties_dialog.cpp
|
||||
|
@ -448,9 +440,7 @@ set(WIRESHARK_QT_SRC
|
|||
../qt/main_status_bar.cpp
|
||||
../qt/main_window_layout.cpp
|
||||
../qt/main_window_preferences_frame.cpp
|
||||
../qt/main_window_slots.cpp
|
||||
../qt/main_window.cpp
|
||||
# ../qt/main.cpp
|
||||
../qt/manage_interfaces_dialog.cpp
|
||||
../qt/module_preferences_scroll_area.cpp
|
||||
../qt/packet_comment_dialog.cpp
|
||||
|
@ -519,6 +509,8 @@ endif()
|
|||
|
||||
set (LOGSHARK_QT_SRC
|
||||
ls_main.cpp
|
||||
logwolf_main_window.cpp
|
||||
logwolf_main_window_slots.cpp
|
||||
logshark_application.cpp
|
||||
${WIRESHARK_QT_SRC})
|
||||
|
||||
|
@ -535,7 +527,6 @@ set(WIRESHARK_QT_TAP_SRC
|
|||
${CMAKE_CURRENT_SOURCE_DIR}/../qt/sctp_all_assocs_dialog.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../qt/sctp_assoc_analyse_dialog.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../qt/stats_tree_dialog.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../qt/wlan_statistics_dialog.cpp
|
||||
${WIRESHARK_CUSTOM_TAP_SRC}
|
||||
)
|
||||
|
||||
|
@ -593,7 +584,6 @@ set(WIRESHARK_QT_UI
|
|||
../qt/lbm_stream_dialog.ui
|
||||
../qt/lte_rlc_graph_dialog.ui
|
||||
../qt/main_window_preferences_frame.ui
|
||||
../qt/main_window.ui
|
||||
../qt/manage_interfaces_dialog.ui
|
||||
../qt/module_preferences_scroll_area.ui
|
||||
../qt/mtp3_summary_dialog.ui
|
||||
|
@ -641,7 +631,10 @@ if(HAVE_PCAP_REMOTE)
|
|||
)
|
||||
endif()
|
||||
|
||||
set (LOGSHARK_QT_UI ${WIRESHARK_QT_UI})
|
||||
set (LOGSHARK_QT_UI
|
||||
logwolf_main_window.ui
|
||||
${WIRESHARK_QT_UI}
|
||||
)
|
||||
|
||||
set(WIRESHARK_QT_TS
|
||||
../qt/wireshark_de.ts
|
||||
|
|
|
@ -15,8 +15,8 @@ LogsharkApplication::LogsharkApplication(int &argc, char **argv) :
|
|||
MainApplication(argc, argv)
|
||||
{
|
||||
lsApp = this;
|
||||
setApplicationName("Logshark");
|
||||
setDesktopFileName(QStringLiteral("org.wireshark.Logshark"));
|
||||
setApplicationName("Logwolf");
|
||||
setDesktopFileName(QStringLiteral("org.wireshark.Logwolf"));
|
||||
}
|
||||
|
||||
LogsharkApplication::~LogsharkApplication()
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
/** @file
|
||||
*
|
||||
* Logshark - Event log analyzer
|
||||
* Logwolf - Event log analyzer
|
||||
* By Gerald Combs <gerald@wireshark.org>
|
||||
* Copyright 1998 Gerald Combs
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef LOGSHARK_APPLICATION_H
|
||||
#define LOGSHARK_APPLICATION_H
|
||||
#ifndef LOGWOLF_APPLICATION_H
|
||||
#define LOGWOLF_APPLICATION_H
|
||||
|
||||
#include <main_application.h>
|
||||
|
||||
|
@ -21,4 +21,4 @@ public:
|
|||
|
||||
extern LogsharkApplication *lsApp;
|
||||
|
||||
#endif // LOGSHARK_APPLICATION_H
|
||||
#endif // LOGWOLF_APPLICATION_H
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,703 @@
|
|||
/** @file
|
||||
*
|
||||
* Logwolf - Event log analyzer
|
||||
* By Gerald Combs <gerald@wireshark.org>
|
||||
* Copyright 1998 Gerald Combs
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef LOGWOLF_MAIN_WINDOW_H
|
||||
#define LOGWOLF_MAIN_WINDOW_H
|
||||
|
||||
/** @defgroup main_window_group Main window
|
||||
* The main window has the following submodules:
|
||||
@dot
|
||||
digraph main_dependencies {
|
||||
node [shape=record, fontname=Helvetica, fontsize=10];
|
||||
main [ label="main window" URL="\ref main.h"];
|
||||
menu [ label="menubar" URL="\ref menus.h"];
|
||||
toolbar [ label="toolbar" URL="\ref main_toolbar.h"];
|
||||
packet_list [ label="packet list pane" URL="\ref packet_list.h"];
|
||||
proto_draw [ label="packet details & bytes panes" URL="\ref main_proto_draw.h"];
|
||||
recent [ label="recent user settings" URL="\ref recent.h"];
|
||||
main -> menu [ arrowhead="open", style="solid" ];
|
||||
main -> toolbar [ arrowhead="open", style="solid" ];
|
||||
main -> packet_list [ arrowhead="open", style="solid" ];
|
||||
main -> proto_draw [ arrowhead="open", style="solid" ];
|
||||
main -> recent [ arrowhead="open", style="solid" ];
|
||||
}
|
||||
@enddot
|
||||
*/
|
||||
|
||||
/** @file
|
||||
* The Logwolf main window
|
||||
* @ingroup main_window_group
|
||||
* @ingroup windows_group
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
#include "file.h"
|
||||
|
||||
#include "ui/ws_ui_util.h"
|
||||
#include "ui/iface_toolbar.h"
|
||||
|
||||
#include <epan/plugin_if.h>
|
||||
#include <epan/timestamp.h>
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
#include "capture_opts.h"
|
||||
#endif
|
||||
#include <capture/capture_session.h>
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QPointer>
|
||||
#include <QTextCodec>
|
||||
|
||||
#ifdef _WIN32
|
||||
# include <QTimer>
|
||||
#else
|
||||
# include <QSocketNotifier>
|
||||
#endif
|
||||
|
||||
#include "capture_file.h"
|
||||
#include "capture_file_dialog.h"
|
||||
#include "print_dialog.h"
|
||||
#include "capture_file_properties_dialog.h"
|
||||
#include <ui/qt/utils/field_information.h>
|
||||
#include <ui/qt/widgets/display_filter_combo.h>
|
||||
#include "follow_stream_dialog.h"
|
||||
#include "main_window.h"
|
||||
#include "rtp_stream_dialog.h"
|
||||
#include "voip_calls_dialog.h"
|
||||
#include "rtp_analysis_dialog.h"
|
||||
|
||||
class AccordionFrame;
|
||||
class ByteViewTab;
|
||||
class CaptureOptionsDialog;
|
||||
class PrintDialog;
|
||||
class FileSetDialog;
|
||||
class FilterDialog;
|
||||
class FunnelStatistics;
|
||||
class WelcomePage;
|
||||
class PacketCommentDialog;
|
||||
class PacketDiagram;
|
||||
class PacketList;
|
||||
class ProtoTree;
|
||||
#if defined(HAVE_LIBNL) && defined(HAVE_NL80211)
|
||||
class WirelessFrame;
|
||||
#endif
|
||||
class FilterExpressionToolBar;
|
||||
class WiresharkApplication;
|
||||
|
||||
class QAction;
|
||||
class QActionGroup;
|
||||
|
||||
namespace Ui {
|
||||
class LogwolfMainWindow;
|
||||
}
|
||||
|
||||
Q_DECLARE_METATYPE(ts_type)
|
||||
Q_DECLARE_METATYPE(ts_precision)
|
||||
|
||||
class LogwolfMainWindow : public MainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit LogwolfMainWindow(QWidget *parent = nullptr);
|
||||
~LogwolfMainWindow();
|
||||
void setPipeInputHandler(gint source, gpointer user_data, ws_process_id *child_process, pipe_input_cb_t input_cb);
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
capture_session *captureSession() { return &cap_session_; }
|
||||
info_data_t *captureInfoData() { return &info_data_; }
|
||||
#endif
|
||||
|
||||
virtual QMenu *createPopupMenu();
|
||||
|
||||
CaptureFile *captureFile() { return &capture_file_; }
|
||||
|
||||
void removeAdditionalToolbar(QString toolbarName);
|
||||
|
||||
void addInterfaceToolbar(const iface_toolbar *toolbar_entry);
|
||||
void removeInterfaceToolbar(const gchar *menu_title);
|
||||
|
||||
QString getMwFileName();
|
||||
void setMwFileName(QString fileName);
|
||||
|
||||
frame_data * frameDataForRow(int row) const;
|
||||
|
||||
protected:
|
||||
virtual bool eventFilter(QObject *obj, QEvent *event);
|
||||
virtual bool event(QEvent *event);
|
||||
virtual void keyPressEvent(QKeyEvent *event);
|
||||
virtual void closeEvent(QCloseEvent *event);
|
||||
virtual void dragEnterEvent(QDragEnterEvent *event);
|
||||
virtual void dropEvent(QDropEvent *event);
|
||||
virtual void changeEvent(QEvent* event);
|
||||
|
||||
private:
|
||||
// XXX Move to FilterUtils
|
||||
enum MatchSelected {
|
||||
MatchSelectedReplace,
|
||||
MatchSelectedAnd,
|
||||
MatchSelectedOr,
|
||||
MatchSelectedNot,
|
||||
MatchSelectedAndNot,
|
||||
MatchSelectedOrNot
|
||||
};
|
||||
|
||||
enum CopySelected {
|
||||
CopyAllVisibleItems,
|
||||
CopyAllVisibleSelectedTreeItems,
|
||||
CopySelectedDescription,
|
||||
CopySelectedFieldName,
|
||||
CopySelectedValue,
|
||||
CopyListAsText,
|
||||
CopyListAsCSV,
|
||||
CopyListAsYAML
|
||||
};
|
||||
|
||||
enum FileCloseContext {
|
||||
Default,
|
||||
Quit,
|
||||
Restart,
|
||||
Reload
|
||||
};
|
||||
|
||||
Ui::LogwolfMainWindow *main_ui_;
|
||||
CaptureFile capture_file_;
|
||||
QFont mono_font_;
|
||||
QMap<QString, QTextCodec *> text_codec_map_;
|
||||
#if defined(HAVE_LIBNL) && defined(HAVE_NL80211)
|
||||
WirelessFrame *wireless_frame_;
|
||||
#endif
|
||||
QWidget *previous_focus_;
|
||||
FileSetDialog *file_set_dialog_;
|
||||
QActionGroup *show_hide_actions_;
|
||||
QActionGroup *time_display_actions_;
|
||||
QActionGroup *time_precision_actions_;
|
||||
FunnelStatistics *funnel_statistics_;
|
||||
QList<QPair<QAction *, bool> > freeze_actions_;
|
||||
QPointer<QWidget> freeze_focus_;
|
||||
QMap<QAction *, ts_type> td_actions;
|
||||
QMap<QAction *, ts_precision> tp_actions;
|
||||
bool was_maximized_;
|
||||
|
||||
/* the following values are maintained so that the capture file name and status
|
||||
is available when there is no cf structure available */
|
||||
QString mwFileName_;
|
||||
|
||||
bool capture_stopping_;
|
||||
bool capture_filter_valid_;
|
||||
#ifdef HAVE_LIBPCAP
|
||||
capture_session cap_session_;
|
||||
CaptureOptionsDialog *capture_options_dialog_;
|
||||
info_data_t info_data_;
|
||||
#endif
|
||||
FilterDialog *display_filter_dlg_;
|
||||
FilterDialog *capture_filter_dlg_;
|
||||
|
||||
// Pipe input
|
||||
gint pipe_source_;
|
||||
gpointer pipe_user_data_;
|
||||
ws_process_id *pipe_child_process_;
|
||||
pipe_input_cb_t pipe_input_cb_;
|
||||
#ifdef _WIN32
|
||||
QTimer *pipe_timer_;
|
||||
#else
|
||||
QSocketNotifier *pipe_notifier_;
|
||||
#endif
|
||||
|
||||
#if defined(Q_OS_MAC)
|
||||
QMenu *dock_menu_;
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_SOFTWARE_UPDATE
|
||||
QAction *update_action_;
|
||||
#endif
|
||||
|
||||
QPoint dragStartPosition;
|
||||
|
||||
void freeze();
|
||||
void thaw();
|
||||
|
||||
void mergeCaptureFile();
|
||||
void importCaptureFile();
|
||||
bool saveCaptureFile(capture_file *cf, bool dont_reopen);
|
||||
bool saveAsCaptureFile(capture_file *cf, bool must_support_comments = false, bool dont_reopen = false);
|
||||
void exportSelectedPackets();
|
||||
void exportDissections(export_type_e export_type);
|
||||
|
||||
#ifdef Q_OS_WIN
|
||||
void fileAddExtension(QString &file_name, int file_type, wtap_compression_type compression_type);
|
||||
#endif // Q_OS_WIN
|
||||
bool testCaptureFileClose(QString before_what, FileCloseContext context = Default);
|
||||
void captureStop();
|
||||
|
||||
void findTextCodecs();
|
||||
|
||||
void initMainToolbarIcons();
|
||||
void initShowHideMainWidgets();
|
||||
void initTimeDisplayFormatMenu();
|
||||
void initTimePrecisionFormatMenu();
|
||||
void initFreezeActions();
|
||||
|
||||
void setTitlebarForCaptureInProgress();
|
||||
void setMenusForCaptureFile(bool force_disable = false);
|
||||
void setMenusForCaptureInProgress(bool capture_in_progress = false);
|
||||
void setMenusForCaptureStopping();
|
||||
void setForCapturedPackets(bool have_captured_packets);
|
||||
void setMenusForFileSet(bool enable_list_files);
|
||||
void setWindowIcon(const QIcon &icon);
|
||||
QString replaceWindowTitleVariables(QString title);
|
||||
|
||||
void externalMenuHelper(ext_menu_t * menu, QMenu * subMenu, gint depth);
|
||||
|
||||
void setForCaptureInProgress(bool capture_in_progress = false, bool handle_toolbars = false, GArray *ifaces = NULL);
|
||||
QMenu* findOrAddMenu(QMenu *parent_menu, QString& menu_text);
|
||||
|
||||
void captureFileReadStarted(const QString &action);
|
||||
|
||||
void addMenuActions(QList<QAction *> &actions, int menu_group);
|
||||
void removeMenuActions(QList<QAction *> &actions, int menu_group);
|
||||
void goToConversationFrame(bool go_next);
|
||||
void colorizeWithFilter(QByteArray filter, int color_number = -1);
|
||||
|
||||
signals:
|
||||
void setDissectedCaptureFile(capture_file *cf);
|
||||
void displayFilterSuccess(bool success);
|
||||
void closePacketDialogs();
|
||||
void reloadFields();
|
||||
void packetInfoChanged(struct _packet_info *pinfo);
|
||||
void fieldFilterChanged(const QByteArray field_filter);
|
||||
|
||||
void fieldHighlight(FieldInformation *);
|
||||
|
||||
void captureActive(int);
|
||||
void selectRtpStream(rtpstream_id_t *id);
|
||||
void deselectRtpStream(rtpstream_id_t *id);
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
void showExtcapOptions(QString &device_name, bool startCaptureOnClose);
|
||||
#endif
|
||||
|
||||
public slots:
|
||||
// in main_window_slots.cpp
|
||||
/**
|
||||
* Open a capture file.
|
||||
* @param cf_path Path to the file.
|
||||
* @param display_filter Display filter to apply. May be empty.
|
||||
* @param type File type.
|
||||
* @param is_tempfile TRUE/FALSE.
|
||||
* @return True on success, false on failure.
|
||||
*/
|
||||
// XXX We might want to return a cf_read_status_t or a CaptureFile.
|
||||
bool openCaptureFile(QString cf_path, QString display_filter, unsigned int type, gboolean is_tempfile = FALSE);
|
||||
bool openCaptureFile(QString cf_path = QString(), QString display_filter = QString()) { return openCaptureFile(cf_path, display_filter, WTAP_TYPE_AUTO); }
|
||||
void filterPackets(QString new_filter = QString(), bool force = false);
|
||||
void updateForUnsavedChanges();
|
||||
void layoutToolbars();
|
||||
void updatePreferenceActions();
|
||||
void updateRecentActions();
|
||||
|
||||
void setTitlebarForCaptureFile();
|
||||
void setWSWindowTitle(QString title = QString());
|
||||
|
||||
#ifdef HAVE_LIBPCAP
|
||||
void captureCapturePrepared(capture_session *);
|
||||
void captureCaptureUpdateStarted(capture_session *);
|
||||
void captureCaptureUpdateFinished(capture_session *);
|
||||
void captureCaptureFixedFinished(capture_session *cap_session);
|
||||
void captureCaptureFailed(capture_session *);
|
||||
#endif
|
||||
|
||||
void captureFileOpened();
|
||||
void captureFileReadFinished();
|
||||
void captureFileClosing();
|
||||
void captureFileClosed();
|
||||
|
||||
void launchRLCGraph(bool channelKnown, guint16 ueid, guint8 rlcMode,
|
||||
guint16 channelType, guint16 channelId, guint8 direction);
|
||||
|
||||
void on_actionViewFullScreen_triggered(bool checked);
|
||||
|
||||
void rtpPlayerDialogReplaceRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpPlayerDialogAddRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpPlayerDialogRemoveRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpAnalysisDialogReplaceRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpAnalysisDialogAddRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpAnalysisDialogRemoveRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpStreamsDialogSelectRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
void rtpStreamsDialogDeselectRtpStreams(QVector<rtpstream_id_t *> stream_ids);
|
||||
|
||||
private slots:
|
||||
|
||||
void captureEventHandler(CaptureEvent ev);
|
||||
|
||||
// Manually connected slots (no "on_<object>_<signal>").
|
||||
|
||||
void initViewColorizeMenu();
|
||||
void initConversationMenus();
|
||||
static gboolean addExportObjectsMenuItem(const void *key, void *value, void *userdata);
|
||||
void initExportObjectsMenus();
|
||||
|
||||
// in main_window_slots.cpp
|
||||
/**
|
||||
* @brief startCapture
|
||||
* Start capturing from the selected interfaces using the capture filter
|
||||
* shown in the main welcome screen.
|
||||
*/
|
||||
void startCapture(QStringList);
|
||||
void startCapture();
|
||||
void pipeTimeout();
|
||||
void pipeActivated(int source);
|
||||
void pipeNotifierDestroyed();
|
||||
void stopCapture();
|
||||
|
||||
void loadWindowGeometry();
|
||||
void saveWindowGeometry();
|
||||
void mainStackChanged(int);
|
||||
void updateRecentCaptures();
|
||||
void recentActionTriggered();
|
||||
void actionAddPacketComment();
|
||||
void actionEditPacketComment();
|
||||
void actionDeletePacketComment();
|
||||
void actionDeleteCommentsFromPackets();
|
||||
QString commentToMenuText(QString text, int max_len = 40);
|
||||
void setEditCommentsMenu();
|
||||
void setMenusForSelectedPacket();
|
||||
void setMenusForSelectedTreeRow(FieldInformation *fi = NULL);
|
||||
void interfaceSelectionChanged();
|
||||
void captureFilterSyntaxChanged(bool valid);
|
||||
void redissectPackets();
|
||||
void checkDisplayFilter();
|
||||
void fieldsChanged();
|
||||
void reloadLuaPlugins();
|
||||
void showAccordionFrame(AccordionFrame *show_frame, bool toggle = false);
|
||||
void showColumnEditor(int column);
|
||||
void showPreferenceEditor(); // module_t *, pref *
|
||||
void addStatsPluginsToMenu();
|
||||
void addDynamicMenus();
|
||||
void reloadDynamicMenus();
|
||||
void addPluginIFStructures();
|
||||
QMenu * searchSubMenu(QString objectName);
|
||||
void activatePluginIFToolbar(bool);
|
||||
|
||||
void startInterfaceCapture(bool valid, const QString capture_filter);
|
||||
|
||||
void applyGlobalCommandLineOptions();
|
||||
void setFeaturesEnabled(bool enabled = true);
|
||||
|
||||
void on_actionDisplayFilterExpression_triggered();
|
||||
void on_actionNewDisplayFilterExpression_triggered();
|
||||
void onFilterSelected(QString, bool);
|
||||
void onFilterPreferences();
|
||||
void onFilterEdit(int uatIndex);
|
||||
|
||||
// Handle FilterAction signals
|
||||
void queuedFilterAction(QString filter, FilterAction::Action action, FilterAction::ActionType type);
|
||||
|
||||
/** Pass stat cmd arguments to a slot.
|
||||
* @param menu_path slot Partial slot name, e.g. "StatisticsIOGraph".
|
||||
* @param arg "-z" argument, e.g. "io,stat".
|
||||
* @param userdata Optional user data.
|
||||
*/
|
||||
void openStatCommandDialog(const QString &menu_path, const char *arg, void *userdata);
|
||||
|
||||
/** Pass tap parameter arguments to a slot.
|
||||
* @param cfg_str slot Partial slot name, e.g. "StatisticsAFPSrt".
|
||||
* @param arg "-z" argument, e.g. "afp,srt".
|
||||
* @param userdata Optional user data.
|
||||
*/
|
||||
void openTapParameterDialog(const QString cfg_str, const QString arg, void *userdata);
|
||||
void openTapParameterDialog();
|
||||
|
||||
#if defined(HAVE_SOFTWARE_UPDATE) && defined(Q_OS_WIN)
|
||||
void softwareUpdateRequested();
|
||||
#endif
|
||||
|
||||
// Automatically connected slots ("on_<object>_<signal>").
|
||||
//
|
||||
// The slots below follow the naming conventaion described in
|
||||
// https://doc.qt.io/archives/qt-4.8/qmetaobject.html#connectSlotsByName
|
||||
// and are automatically connected at initialization time via
|
||||
// main_ui_->setupUi, which in turn calls connectSlotsByName.
|
||||
//
|
||||
// If you're manually connecting a signal to a slot, don't prefix its name
|
||||
// with "on_". Otherwise you'll get runtime warnings.
|
||||
|
||||
// We might want move these to main_window_actions.cpp similar to
|
||||
// gtk/main_menubar.c
|
||||
|
||||
void on_actionFileOpen_triggered();
|
||||
void on_actionFileMerge_triggered();
|
||||
void on_actionFileImportFromHexDump_triggered();
|
||||
void on_actionFileClose_triggered();
|
||||
void on_actionFileSave_triggered();
|
||||
void on_actionFileSaveAs_triggered();
|
||||
void on_actionFileSetListFiles_triggered();
|
||||
void on_actionFileSetNextFile_triggered();
|
||||
void on_actionFileSetPreviousFile_triggered();
|
||||
void on_actionFileExportPackets_triggered();
|
||||
void on_actionFileExportAsPlainText_triggered();
|
||||
// We're dropping PostScript exports
|
||||
void on_actionFileExportAsCSV_triggered();
|
||||
void on_actionFileExportAsCArrays_triggered();
|
||||
void on_actionFileExportAsPSML_triggered();
|
||||
void on_actionFileExportAsPDML_triggered();
|
||||
void on_actionFileExportAsJSON_triggered();
|
||||
void on_actionFileExportPacketBytes_triggered();
|
||||
void on_actionFilePrint_triggered();
|
||||
|
||||
void on_actionFileExportPDU_triggered();
|
||||
void on_actionFileExportTLSSessionKeys_triggered();
|
||||
|
||||
void actionEditCopyTriggered(LogwolfMainWindow::CopySelected selection_type);
|
||||
void on_actionCopyAllVisibleItems_triggered();
|
||||
void on_actionCopyAllVisibleSelectedTreeItems_triggered();
|
||||
void on_actionCopyListAsText_triggered();
|
||||
void on_actionCopyListAsCSV_triggered();
|
||||
void on_actionCopyListAsYAML_triggered();
|
||||
void on_actionEditCopyDescription_triggered();
|
||||
void on_actionEditCopyFieldName_triggered();
|
||||
void on_actionEditCopyValue_triggered();
|
||||
void on_actionEditCopyAsFilter_triggered();
|
||||
void on_actionEditFindPacket_triggered();
|
||||
void on_actionEditFindNext_triggered();
|
||||
void on_actionEditFindPrevious_triggered();
|
||||
void on_actionEditMarkPacket_triggered();
|
||||
void on_actionEditMarkAllDisplayed_triggered();
|
||||
void on_actionEditUnmarkAllDisplayed_triggered();
|
||||
void on_actionEditNextMark_triggered();
|
||||
void on_actionEditPreviousMark_triggered();
|
||||
void on_actionEditIgnorePacket_triggered();
|
||||
void on_actionEditIgnoreAllDisplayed_triggered();
|
||||
void on_actionEditUnignoreAllDisplayed_triggered();
|
||||
void on_actionEditSetTimeReference_triggered();
|
||||
void on_actionEditUnsetAllTimeReferences_triggered();
|
||||
void on_actionEditNextTimeReference_triggered();
|
||||
void on_actionEditPreviousTimeReference_triggered();
|
||||
void on_actionEditTimeShift_triggered();
|
||||
void editTimeShiftFinished(int);
|
||||
void addPacketCommentFinished(PacketCommentDialog* pc_dialog, int result);
|
||||
void editPacketCommentFinished(PacketCommentDialog* pc_dialog, int result, guint nComment);
|
||||
void on_actionDeleteAllPacketComments_triggered();
|
||||
void deleteAllPacketCommentsFinished(int result);
|
||||
void on_actionEditConfigurationProfiles_triggered();
|
||||
void showPreferencesDialog(QString module_name);
|
||||
void on_actionEditPreferences_triggered();
|
||||
|
||||
void showHideMainWidgets(QAction *action);
|
||||
void setTimestampFormat(QAction *action);
|
||||
void setTimestampPrecision(QAction *action);
|
||||
void on_actionViewTimeDisplaySecondsWithHoursAndMinutes_triggered(bool checked);
|
||||
void on_actionViewEditResolvedName_triggered();
|
||||
void setNameResolution();
|
||||
void on_actionViewNameResolutionPhysical_triggered();
|
||||
void on_actionViewNameResolutionNetwork_triggered();
|
||||
void on_actionViewNameResolutionTransport_triggered();
|
||||
// XXX We're not porting the concurrency action from GTK+ on purpose.
|
||||
void zoomText();
|
||||
void on_actionViewZoomIn_triggered();
|
||||
void on_actionViewZoomOut_triggered();
|
||||
void on_actionViewNormalSize_triggered();
|
||||
void on_actionViewColorizePacketList_triggered(bool checked);
|
||||
void on_actionViewColoringRules_triggered();
|
||||
void colorizeConversation(bool create_rule = false);
|
||||
void colorizeActionTriggered();
|
||||
void on_actionViewColorizeResetColorization_triggered();
|
||||
void on_actionViewColorizeNewColoringRule_triggered();
|
||||
void on_actionViewResetLayout_triggered();
|
||||
void on_actionViewResizeColumns_triggered();
|
||||
|
||||
void on_actionViewInternalsConversationHashTables_triggered();
|
||||
void on_actionViewInternalsDissectorTables_triggered();
|
||||
void on_actionViewInternalsSupportedProtocols_triggered();
|
||||
|
||||
void openPacketDialog(bool from_reference = false);
|
||||
void on_actionViewShowPacketInNewWindow_triggered();
|
||||
void on_actionContextShowLinkedPacketInNewWindow_triggered();
|
||||
void on_actionViewReload_triggered();
|
||||
void on_actionViewReload_as_File_Format_or_Capture_triggered();
|
||||
|
||||
void on_actionGoGoToPacket_triggered();
|
||||
void on_actionGoGoToLinkedPacket_triggered();
|
||||
void on_actionGoNextConversationPacket_triggered();
|
||||
void on_actionGoPreviousConversationPacket_triggered();
|
||||
void on_actionGoAutoScroll_toggled(bool checked);
|
||||
void resetPreviousFocus();
|
||||
|
||||
void on_actionCaptureOptions_triggered();
|
||||
#ifdef HAVE_LIBPCAP
|
||||
void on_actionCaptureRefreshInterfaces_triggered();
|
||||
#endif
|
||||
void on_actionCaptureCaptureFilters_triggered();
|
||||
|
||||
void on_actionAnalyzeDisplayFilters_triggered();
|
||||
void on_actionAnalyzeDisplayFilterMacros_triggered();
|
||||
void matchFieldFilter(FilterAction::Action action, FilterAction::ActionType filter_type);
|
||||
void on_actionAnalyzeCreateAColumn_triggered();
|
||||
|
||||
void filterMenuAboutToShow();
|
||||
|
||||
void applyConversationFilter();
|
||||
void applyExportObject();
|
||||
|
||||
void on_actionAnalyzeEnabledProtocols_triggered();
|
||||
void on_actionAnalyzeDecodeAs_triggered();
|
||||
void on_actionAnalyzeReloadLuaPlugins_triggered();
|
||||
|
||||
void openFollowStreamDialog(follow_type_t type, guint stream_num, guint sub_stream_num, bool use_stream_index = true);
|
||||
void openFollowStreamDialogForType(follow_type_t type);
|
||||
void on_actionAnalyzeFollowTCPStream_triggered();
|
||||
void on_actionAnalyzeFollowUDPStream_triggered();
|
||||
void on_actionAnalyzeFollowDCCPStream_triggered();
|
||||
void on_actionAnalyzeFollowTLSStream_triggered();
|
||||
void on_actionAnalyzeFollowHTTPStream_triggered();
|
||||
void on_actionAnalyzeFollowHTTP2Stream_triggered();
|
||||
void on_actionAnalyzeFollowQUICStream_triggered();
|
||||
void on_actionAnalyzeFollowSIPCall_triggered();
|
||||
|
||||
void statCommandExpertInfo(const char *, void *);
|
||||
void on_actionAnalyzeExpertInfo_triggered();
|
||||
|
||||
void on_actionHelpContents_triggered();
|
||||
void on_actionHelpMPWireshark_triggered();
|
||||
void on_actionHelpMPWireshark_Filter_triggered();
|
||||
void on_actionHelpMPCapinfos_triggered();
|
||||
void on_actionHelpMPDumpcap_triggered();
|
||||
void on_actionHelpMPEditcap_triggered();
|
||||
void on_actionHelpMPMergecap_triggered();
|
||||
void on_actionHelpMPRawshark_triggered();
|
||||
void on_actionHelpMPReordercap_triggered();
|
||||
void on_actionHelpMPText2pcap_triggered();
|
||||
void on_actionHelpMPTShark_triggered();
|
||||
void on_actionHelpWebsite_triggered();
|
||||
void on_actionHelpFAQ_triggered();
|
||||
void on_actionHelpAsk_triggered();
|
||||
void on_actionHelpDownloads_triggered();
|
||||
void on_actionHelpWiki_triggered();
|
||||
void on_actionHelpSampleCaptures_triggered();
|
||||
void on_actionHelpAbout_triggered();
|
||||
|
||||
#ifdef HAVE_SOFTWARE_UPDATE
|
||||
void checkForUpdates();
|
||||
#endif
|
||||
|
||||
void on_goToCancel_clicked();
|
||||
void on_goToGo_clicked();
|
||||
void on_goToLineEdit_returnPressed();
|
||||
void on_actionCaptureStart_triggered();
|
||||
void on_actionCaptureStop_triggered();
|
||||
void on_actionCaptureRestart_triggered();
|
||||
|
||||
void on_actionStatisticsCaptureFileProperties_triggered();
|
||||
void on_actionStatisticsResolvedAddresses_triggered();
|
||||
void on_actionStatisticsProtocolHierarchy_triggered();
|
||||
void on_actionStatisticsFlowGraph_triggered();
|
||||
void openTcpStreamDialog(int graph_type);
|
||||
void on_actionStatisticsTcpStreamStevens_triggered();
|
||||
void on_actionStatisticsTcpStreamTcptrace_triggered();
|
||||
void on_actionStatisticsTcpStreamThroughput_triggered();
|
||||
void on_actionStatisticsTcpStreamRoundTripTime_triggered();
|
||||
void on_actionStatisticsTcpStreamWindowScaling_triggered();
|
||||
void openSCTPAllAssocsDialog();
|
||||
void on_actionSCTPShowAllAssociations_triggered();
|
||||
void on_actionSCTPAnalyseThisAssociation_triggered();
|
||||
void on_actionSCTPFilterThisAssociation_triggered();
|
||||
void statCommandMulticastStatistics(const char *arg, void *);
|
||||
void on_actionStatisticsUdpMulticastStreams_triggered();
|
||||
|
||||
void openStatisticsTreeDialog(const gchar *abbr);
|
||||
void on_actionStatistics29WestTopics_Advertisements_by_Topic_triggered();
|
||||
void on_actionStatistics29WestTopics_Advertisements_by_Source_triggered();
|
||||
void on_actionStatistics29WestTopics_Advertisements_by_Transport_triggered();
|
||||
void on_actionStatistics29WestTopics_Queries_by_Topic_triggered();
|
||||
void on_actionStatistics29WestTopics_Queries_by_Receiver_triggered();
|
||||
void on_actionStatistics29WestTopics_Wildcard_Queries_by_Pattern_triggered();
|
||||
void on_actionStatistics29WestTopics_Wildcard_Queries_by_Receiver_triggered();
|
||||
void on_actionStatistics29WestQueues_Advertisements_by_Queue_triggered();
|
||||
void on_actionStatistics29WestQueues_Advertisements_by_Source_triggered();
|
||||
void on_actionStatistics29WestQueues_Queries_by_Queue_triggered();
|
||||
void on_actionStatistics29WestQueues_Queries_by_Receiver_triggered();
|
||||
void on_actionStatistics29WestUIM_Streams_triggered();
|
||||
void on_actionStatistics29WestLBTRM_triggered();
|
||||
void on_actionStatistics29WestLBTRU_triggered();
|
||||
void on_actionStatisticsANCP_triggered();
|
||||
void on_actionStatisticsBACappInstanceId_triggered();
|
||||
void on_actionStatisticsBACappIP_triggered();
|
||||
void on_actionStatisticsBACappObjectId_triggered();
|
||||
void on_actionStatisticsBACappService_triggered();
|
||||
void on_actionStatisticsCollectd_triggered();
|
||||
void statCommandConversations(const char *arg = NULL, void *userdata = NULL);
|
||||
void on_actionStatisticsConversations_triggered();
|
||||
void statCommandEndpoints(const char *arg = NULL, void *userdata = NULL);
|
||||
void on_actionStatisticsEndpoints_triggered();
|
||||
void on_actionStatisticsHART_IP_triggered();
|
||||
void on_actionStatisticsHTTPPacketCounter_triggered();
|
||||
void on_actionStatisticsHTTPRequests_triggered();
|
||||
void on_actionStatisticsHTTPLoadDistribution_triggered();
|
||||
void on_actionStatisticsHTTPRequestSequences_triggered();
|
||||
void on_actionStatisticsPacketLengths_triggered();
|
||||
void statCommandIOGraph(const char *, void *);
|
||||
void on_actionStatisticsIOGraph_triggered();
|
||||
void on_actionStatisticsSametime_triggered();
|
||||
void on_actionStatisticsDNS_triggered();
|
||||
void actionStatisticsPlugin_triggered();
|
||||
void on_actionStatisticsHpfeeds_triggered();
|
||||
void on_actionStatisticsHTTP2_triggered();
|
||||
void on_actionStatisticsSOMEIPmessages_triggered();
|
||||
void on_actionStatisticsSOMEIPSDentries_triggered();
|
||||
|
||||
RtpStreamDialog *openTelephonyRtpStreamsDialog();
|
||||
RtpPlayerDialog *openTelephonyRtpPlayerDialog();
|
||||
VoipCallsDialog *openTelephonyVoipCallsDialogVoip();
|
||||
VoipCallsDialog *openTelephonyVoipCallsDialogSip();
|
||||
RtpAnalysisDialog *openTelephonyRtpAnalysisDialog();
|
||||
void on_actionTelephonyVoipCalls_triggered();
|
||||
void on_actionTelephonyGsmMapSummary_triggered();
|
||||
void statCommandLteMacStatistics(const char *arg, void *);
|
||||
void on_actionTelephonyLteRlcStatistics_triggered();
|
||||
void statCommandLteRlcStatistics(const char *arg, void *);
|
||||
void on_actionTelephonyLteMacStatistics_triggered();
|
||||
void on_actionTelephonyLteRlcGraph_triggered();
|
||||
void on_actionTelephonyIax2StreamAnalysis_triggered();
|
||||
void on_actionTelephonyISUPMessages_triggered();
|
||||
void on_actionTelephonyMtp3Summary_triggered();
|
||||
void on_actionTelephonyOsmuxPacketCounter_triggered();
|
||||
void on_actionTelephonyRtpStreams_triggered();
|
||||
void on_actionTelephonyRtpStreamAnalysis_triggered();
|
||||
void on_actionTelephonyRtpPlayer_triggered();
|
||||
void on_actionTelephonyRTSPPacketCounter_triggered();
|
||||
void on_actionTelephonySMPPOperations_triggered();
|
||||
void on_actionTelephonyUCPMessages_triggered();
|
||||
void on_actionTelephonyF1APMessages_triggered();
|
||||
void on_actionTelephonyNGAPMessages_triggered();
|
||||
void on_actionTelephonySipFlows_triggered();
|
||||
|
||||
void on_actionToolsFirewallAclRules_triggered();
|
||||
void on_actionToolsCredentials_triggered();
|
||||
|
||||
void externalMenuItem_triggered();
|
||||
|
||||
void on_actionAnalyzeShowPacketBytes_triggered();
|
||||
|
||||
void on_actionContextWikiProtocolPage_triggered();
|
||||
void on_actionContextFilterFieldReference_triggered();
|
||||
|
||||
void extcap_options_finished(int result);
|
||||
void showExtcapOptionsDialog(QString & device_name, bool startCaptureOnClose);
|
||||
|
||||
QString findRtpStreams(QVector<rtpstream_id_t *> *stream_ids, bool reverse);
|
||||
|
||||
friend class MainApplication;
|
||||
};
|
||||
|
||||
#endif // LOGWOLF_MAIN_WINDOW_H
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -81,7 +81,7 @@
|
|||
#include "ui/qt/utils/color_utils.h"
|
||||
#include "ui/qt/coloring_rules_dialog.h"
|
||||
#include "ui/qt/endpoint_dialog.h"
|
||||
#include "ui/qt/main_window.h"
|
||||
#include "ui/qt_logshark/logwolf_main_window.h"
|
||||
#include "ui/qt/response_time_delay_dialog.h"
|
||||
#include "ui/qt/service_response_time_dialog.h"
|
||||
#include "ui/qt/simple_dialog.h"
|
||||
|
@ -418,7 +418,7 @@ macos_enable_layer_backing(void)
|
|||
/* And now our feature presentation... [ fade to music ] */
|
||||
int main(int argc, char *qt_argv[])
|
||||
{
|
||||
MainWindow *main_w;
|
||||
LogwolfMainWindow *main_w;
|
||||
|
||||
#ifdef _WIN32
|
||||
LPWSTR *wc_argv;
|
||||
|
@ -697,7 +697,7 @@ int main(int argc, char *qt_argv[])
|
|||
/* ws_log(LOG_DOMAIN_MAIN, LOG_LEVEL_DEBUG, "Translator %s", language); */
|
||||
|
||||
// Init the main window (and splash)
|
||||
main_w = new(MainWindow);
|
||||
main_w = new(LogwolfMainWindow);
|
||||
main_w->show();
|
||||
// We may not need a queued connection here but it would seem to make sense
|
||||
// to force the issue.
|
||||
|
|
Loading…
Reference in New Issue