Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions gui/browsable/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ ROOT_STANDARD_LIBRARY_PACKAGE(ROOTBrowsable
ROOT/Browsable/TObjectElement.hxx
ROOT/Browsable/TObjectHolder.hxx
ROOT/Browsable/TObjectItem.hxx
ROOT/Browsable/RNTupleItem.hxx
SOURCES
src/RElement.cxx
src/RGroup.cxx
Expand Down
1 change: 1 addition & 0 deletions gui/browsable/inc/LinkDef.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,6 @@

#pragma link C++ class ROOT::Browsable::RItem+;
#pragma link C++ class ROOT::Browsable::RSysFileItem+;
#pragma link C++ class ROOT::Browsable::RNTupleItem+;

#endif
56 changes: 56 additions & 0 deletions gui/browsable/inc/ROOT/Browsable/RNTupleItem.hxx
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/*************************************************************************
* Copyright (C) 1995-2025, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/

#ifndef ROOT7_Browsable_RNTupleItem
#define ROOT7_Browsable_RNTupleItem

#include <ROOT/Browsable/RItem.hxx>

namespace ROOT {
namespace Browsable {

/** \class RNTupleItem
\ingroup rbrowser
\brief Representation of an RNTuple item in the browser
\author Patryk Tymoteusz Pilichowski
*/

class RNTupleItem : public RItem {
public:
enum ECategory {
kField,
kVisualization
};

RNTupleItem() = default;
RNTupleItem(const std::string &_name, int _nchilds = 0, const std::string &_icon = "", ECategory _category = kField)
: RItem(_name, _nchilds, _icon), category(_category)
{
}
// must be here, one needs virtual table for correct streaming of sub-classes
virtual ~RNTupleItem() = default;

bool IsVisualization() const { return category == kVisualization; }
bool IsField() const { return category == kField; }

bool Compare(const RItem *b, const std::string &s) const override
{
auto tuple_b = dynamic_cast<const RNTupleItem *>(b);
if (tuple_b != nullptr && (IsVisualization() || tuple_b->IsVisualization()))
return IsVisualization();
return RItem::Compare(b, s);
}

protected:
ECategory category{kField};
};

} // namespace Browsable
} // namespace ROOT

#endif
17 changes: 10 additions & 7 deletions gui/browsable/src/RNTupleBrowseProvider.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
#include <ROOT/Browsable/RProvider.hxx>
#include <ROOT/Browsable/RLevelIter.hxx>
#include <ROOT/Browsable/RItem.hxx>
#include <ROOT/Browsable/RNTupleItem.hxx>

#include <ROOT/RNTupleReader.hxx>
#include <ROOT/RNTupleBrowseUtils.hxx>
Expand Down Expand Up @@ -76,7 +77,7 @@ class RTreeMapElement : public RElement {
/** Create item with TreeMap icon */
std::unique_ptr<RItem> CreateItem() const override
{
auto item = std::make_unique<RItem>(GetName(), 0, "sap-icon://Chart-Tree-Map");
auto item = std::make_unique<RNTupleItem>(GetName(), 0, "sap-icon://Chart-Tree-Map");
item->SetTitle(GetTitle());
return item;
}
Expand Down Expand Up @@ -132,7 +133,8 @@ class RVisualizationElement : public RElement {
/** Create item with visualization folder icon */
std::unique_ptr<RItem> CreateItem() const override
{
auto item = std::make_unique<RItem>(GetName(), 1, "sap-icon://show");
auto item =
std::make_unique<RNTupleItem>(GetName(), 1, "sap-icon://show", RNTupleItem::ECategory::kVisualization);
item->SetTitle(GetTitle());
return item;
}
Expand Down Expand Up @@ -184,7 +186,7 @@ class RVisualizationIterator : public RLevelIter {
std::unique_ptr<RItem> CreateItem() override
{
if (fCounter == 0) {
auto item = std::make_unique<RItem>("TreeMap", 0, "sap-icon://Chart-Tree-Map");
auto item = std::make_unique<RNTupleItem>("TreeMap", 0, "sap-icon://Chart-Tree-Map");
item->SetTitle("TreeMap visualization of RNTuple structure and disk usage");
return item;
}
Expand Down Expand Up @@ -306,7 +308,7 @@ class RNTupleElement : public RElement {

std::unique_ptr<RItem> CreateItem() const override
{
auto item = std::make_unique<RItem>(GetName(), -1, "sap-icon://table-chart");
auto item = std::make_unique<RNTupleItem>(GetName(), -1, "sap-icon://table-chart");
item->SetTitle(GetTitle());
return item;
}
Expand Down Expand Up @@ -382,7 +384,8 @@ class RNTupleIterator : public RLevelIter {
std::unique_ptr<RItem> CreateItem() override
{
if (fHasVisualization && fCounter == 0) {
auto item = std::make_unique<RItem>("Visualization", 1, "sap-icon://show");
auto item = std::make_unique<RNTupleItem>("Visualization", 1, "sap-icon://show",
RNTupleItem::ECategory::kVisualization);
item->SetTitle("Visualization tools and options for RNTuple data");
return item;
}
Expand All @@ -396,8 +399,8 @@ class RNTupleIterator : public RLevelIter {

const auto &field = fNtplReader->GetDescriptor().GetFieldDescriptor(fProvidedFieldIds[fieldIndex]);

auto item =
std::make_unique<RItem>(field.GetFieldName(), nchilds, nchilds > 0 ? "sap-icon://split" : "sap-icon://e-care");
auto item = std::make_unique<RNTupleItem>(field.GetFieldName(), nchilds,
nchilds > 0 ? "sap-icon://split" : "sap-icon://e-care");

item->SetTitle("RField name "s + field.GetFieldName() + " type "s + field.GetTypeName());
return item;
Expand Down
Loading