/* proto_tree.h * * Wireshark - Network traffic analyzer * By Gerald Combs * Copyright 1998 Gerald Combs * * SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef PROTO_TREE_H #define PROTO_TREE_H #include #include #include "cfile.h" #include "protocol_preferences_menu.h" #include #include #include class ProtoTreeModel; class ProtoNode; class ProtoTree : public QTreeView { Q_OBJECT public: explicit ProtoTree(QWidget *parent = 0, epan_dissect_t *edt_fixed = 0); QMenu *colorizeMenu() { return &colorize_menu_; } void setRootNode(proto_node *root_node); void emitRelatedFrame(int related_frame, ft_framenum_type_t framenum_type = FT_FRAMENUM_NONE); void autoScrollTo(const QModelIndex &index); void goToHfid(int hfid); void clear(); void closeContextMenu(); void restoreSelectedField(); QString toString(const QModelIndex &start_idx = QModelIndex()) const; protected: virtual void contextMenuEvent(QContextMenuEvent *event); virtual void timerEvent(QTimerEvent *event); virtual void keyReleaseEvent(QKeyEvent *event); virtual bool eventFilter(QObject * obj, QEvent * ev); virtual QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers); QString traverseTree(const QModelIndex & rootNode, int identLevel = 0) const; private: ProtoTreeModel *proto_tree_model_; QMenu ctx_menu_; QMenu conv_menu_; QMenu colorize_menu_; ProtocolPreferencesMenu proto_prefs_menu_; QAction *decode_as_; QList copy_actions_; QFont mono_font_; int column_resize_timer_; QList > selected_hfid_path_; // row, hfinfo QPoint drag_start_position_; capture_file *cap_file_; epan_dissect_t *edt_; void saveSelectedField(QModelIndex &index); static void foreachTreeNode(proto_node *node, gpointer proto_tree_ptr); signals: void fieldSelected(FieldInformation *); void openPacketInNewWindow(bool); void goToPacket(int); void relatedFrame(int, ft_framenum_type_t); void showProtocolPreferences(const QString module_name); void editProtocolPreference(struct preference *pref, struct pref_module *module); public slots: /* Set the capture file */ void setCaptureFile(capture_file *cf); void setMonospaceFont(const QFont &mono_font); void syncExpanded(const QModelIndex & index); void syncCollapsed(const QModelIndex & index); void expandSubtrees(); void collapseSubtrees(); void expandAll(); void collapseAll(); void itemDoubleClicked(const QModelIndex & index); void selectedFieldChanged(FieldInformation *); protected slots: void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected); private slots: void updateContentWidth(); }; #endif // PROTO_TREE_H /* * Editor modelines * * Local Variables: * c-basic-offset: 4 * tab-width: 8 * indent-tabs-mode: nil * End: * * ex: set shiftwidth=4 tabstop=8 expandtab: * :indentSize=4:tabSize=8:noTabs=true: */