// Copyright 2018 Dolphin Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include #include "Common/CommonTypes.h" class FifoPlayer; class QFont; class QGroupBox; class QLabel; class QLineEdit; class QListWidget; class QPushButton; class QSplitter; class QTextBrowser; class QTreeWidget; class FIFOAnalyzer final : public QWidget { Q_OBJECT public: explicit FIFOAnalyzer(FifoPlayer& fifo_player); ~FIFOAnalyzer(); void Update(); private: void CreateWidgets(); void ConnectWidgets(); void BeginSearch(); void FindNext(); void FindPrevious(); void ShowSearchResult(size_t index); void UpdateTree(); void UpdateDetails(); void UpdateDescription(); void OnDebugFontChanged(const QFont& font); FifoPlayer& m_fifo_player; QTreeWidget* m_tree_widget; QListWidget* m_detail_list; QTextBrowser* m_entry_detail_browser; QSplitter* m_object_splitter; // Search QGroupBox* m_search_box; QLineEdit* m_search_edit; QPushButton* m_search_new; QPushButton* m_search_next; QPushButton* m_search_previous; QLabel* m_search_label; QSplitter* m_search_splitter; struct SearchResult { constexpr SearchResult(u32 frame, u32 object_idx, u32 cmd) : m_frame(frame), m_object_idx(object_idx), m_cmd(cmd) { } const u32 m_frame; // Index in tree view. Does not correspond with object numbers or part numbers. const u32 m_object_idx; const u32 m_cmd; }; // Offsets from the start of the first part in an object for each command within the currently // selected object. std::vector m_object_data_offsets; std::vector m_search_results; };