- Change TreeBuilder m_registry from reference to pointer to allow assignment - Add default constructor to TreeBuilder for member initialization - Add Xbox SDK xcompress64 library to xscript-cli linker dependencies Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
54 lines
1.6 KiB
C++
54 lines
1.6 KiB
C++
#ifndef TREEBUILDER_H
|
|
#define TREEBUILDER_H
|
|
|
|
#include "dslkeys.h"
|
|
|
|
#include <QVariantMap>
|
|
#include <QString>
|
|
#include <QHash>
|
|
#include <optional>
|
|
|
|
class XTreeWidget;
|
|
class XTreeWidgetItem;
|
|
class TypeRegistry;
|
|
|
|
class TreeBuilder
|
|
{
|
|
public:
|
|
TreeBuilder() : m_tree(nullptr), m_registry(nullptr) {}
|
|
TreeBuilder(XTreeWidget* tree, const TypeRegistry& registry);
|
|
|
|
// Build tree from parsed data
|
|
void addParsedFile(const QString& typeName, const QVariantMap& vars, const QString& fileName);
|
|
|
|
// Category management
|
|
XTreeWidgetItem* ensureTypeCategoryRoot(const QString& typeName, const QString& displayOverride = {});
|
|
XTreeWidgetItem* ensureSubcategory(XTreeWidgetItem* parent, const QString& childTypeName);
|
|
|
|
// Instance management
|
|
XTreeWidgetItem* addInstanceNode(XTreeWidgetItem* parent, const QString& displayName,
|
|
const QString& typeName, const QVariantMap& vars);
|
|
|
|
// Recursively route nested objects into tree
|
|
void routeNestedObjects(XTreeWidgetItem* parent, const QVariantMap& vars);
|
|
|
|
// Post-processing
|
|
void organizeChildrenByExtension(XTreeWidgetItem* parent);
|
|
void updateNodeCounts(XTreeWidgetItem* node);
|
|
|
|
// Utilities
|
|
QString pluralizeType(const QString& typeName) const;
|
|
static QString instanceDisplayFor(const QVariantMap& obj, const QString& fallbackType,
|
|
const QString& fallbackKey = {}, std::optional<int> index = std::nullopt);
|
|
|
|
// Clear all category roots
|
|
void reset();
|
|
|
|
private:
|
|
XTreeWidget* m_tree;
|
|
const TypeRegistry* m_registry;
|
|
QHash<QString, XTreeWidgetItem*> m_categoryRoots;
|
|
};
|
|
|
|
#endif // TREEBUILDER_H
|