#ifndef XTREEWIDGET_H #define XTREEWIDGET_H #include class QTreeWidgetItem; class XTreeWidget : public QTreeWidget { Q_OBJECT public: explicit XTreeWidget(QWidget *parent = nullptr); // Helper methods for batch export int countExportableChildren(QTreeWidgetItem* parent) const; int countExportableChildrenByType(QTreeWidgetItem* parent, int contentType) const; signals: void ItemSelected(const QString itemText, QTreeWidgetItem* item); void ItemClosed(const QString itemText); void Cleared(); // Export signals void exportRequested(const QString& format, QTreeWidgetItem* item); void quickExportRequested(QTreeWidgetItem* item); void exportDialogRequested(QTreeWidgetItem* item); void batchExportRequested(QTreeWidgetItem* parentItem); void batchExportByTypeRequested(QTreeWidgetItem* parentItem, int contentType); protected: void ItemSelectionChanged(); void PrepareContextMenu(const QPoint &pos); private: void prepareInstanceContextMenu(QMenu* menu, QTreeWidgetItem* item); void prepareContainerContextMenu(QMenu* menu, QTreeWidgetItem* item); }; #endif // XTREEWIDGET_H