/** @file * * Wireshark - Network traffic analyzer * By Gerald Combs * Copyright 1998 Gerald Combs * * SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef PACKET_DIAGRAM_H #define PACKET_DIAGRAM_H #include #include #include "cfile.h" #include #include class DiagramLayout; class PacketDiagram : public QGraphicsView { Q_OBJECT public: PacketDiagram(QWidget *parent = nullptr); ~PacketDiagram(); void setRootNode(proto_node *root_node); void clear(); signals: void fieldSelected(FieldInformation *); public slots: void setCaptureFile(capture_file *cf); void setFont(const QFont &font); void selectedFieldChanged(FieldInformation *finfo); void selectedFrameChanged(QList frames); protected: virtual bool event(QEvent *event) override; virtual void contextMenuEvent(QContextMenuEvent *event) override; private slots: void connectToMainWindow(); void sceneSelectionChanged(); private: void resetScene(bool reset_root = true); void addDiagram(proto_node *tl_node); void setSelectedField(field_info *fi); QImage exportToImage(); #if defined(QT_SVG_LIB) && 0 QByteArray exportToSvg(); #endif void showFieldsToggled(bool checked); void saveAsTriggered(); void copyAsRasterTriggered(); #if defined(QT_SVG_LIB) && !defined(Q_OS_MAC) && 0 void copyAsSvgTriggered(); #endif DiagramLayout *layout_; capture_file *cap_file_; proto_node *root_node_; field_info *selected_field_; int y_pos_; }; #endif // PACKET_DIAGRAM_H