ufe 7.0
Universal Front End is a DCC-agnostic component that will allow a DCC to browse and edit data in multiple data models
hierarchy.h
Go to the documentation of this file.
1#line 1 "D:/Jenkins/workspace/EMS/ECG/ufe/full/ufe-full-python3.13-windows/ufe/include/hierarchy.h"
2#ifndef UFE_HIERARCHY_H
3#define UFE_HIERARCHY_H
4
5// ===========================================================================
6// Copyright 2025 Autodesk, Inc. All rights reserved.
7//
8// The use of this software is subject to the Autodesk Terms of Use or other
9// license agreement provided at the time of installation or download, or
10// which otherwise accompanies this software.
11// ===========================================================================
12
13#include "common/ufeExport.h"
14#include "sceneItemList.h"
15#include "sceneItem.h"
16#include "undoableCommand.h"
17
18#include <memory>
19#include <string>
20
22
23class Selection;
24
26
31 ChildFilterFlag() = default;
33 const std::string& filterName,
34 const std::string& filterLabel,
35 bool filterValue);
36
39
42
44 bool value{false};
45};
46
47
49
71{
72public:
73 typedef std::shared_ptr<Hierarchy> Ptr;
74 typedef std::list<ChildFilterFlag> ChildFilter;
75
82 static Ptr hierarchy(const SceneItem::Ptr& item);
83
93
96
98 Hierarchy(const Hierarchy&) = default;
99
101 virtual ~Hierarchy();
102
104 virtual SceneItem::Ptr sceneItem() const = 0;
105
109 virtual bool hasChildren() const = 0;
110
112 virtual SceneItemList children() const = 0;
113
117 virtual bool hasFilteredChildren(const ChildFilter&) const = 0;
118
120 virtual SceneItemList filteredChildren(const ChildFilter&) const = 0;
121
123 virtual SceneItem::Ptr parent() const = 0;
124
129 virtual SceneItem::Ptr defaultParent() const = 0;
130
139 const SceneItem::Ptr& child, const SceneItem::Ptr& pos) = 0;
140
149 const SceneItem::Ptr& child, const SceneItem::Ptr& pos) = 0;
150
157 return insertChildCmd(child, nullptr);
158 }
159
168 virtual SceneItem::Ptr createGroup(const PathComponent& name) const = 0;
169
178
183 virtual UndoableCommand::Ptr reorderCmd(const Ufe::SceneItemList& orderedList) const = 0;
184
189 virtual bool reorder(const Ufe::SceneItemList& orderedList) {
190 auto cmd = reorderCmd(orderedList);
191 if (cmd) {
192 cmd->execute();
193 return true;
194 }
195 return false;
196 }
197
201 virtual UndoableCommand::Ptr ungroupCmd() const = 0;
202
205 virtual bool ungroup() {
206 auto cmd = ungroupCmd();
207 if (cmd) {
208 cmd->execute();
209 return true;
210 }
211 return false;
212 }
213};
214
215}
216
217#endif /* UFE_HIERARCHY_H */
218
Abstract base class for scene hierarchy interface.
Definition: hierarchy.h:71
virtual bool reorder(const Ufe::SceneItemList &orderedList)
Definition: hierarchy.h:189
virtual SceneItemList children() const =0
virtual bool hasFilteredChildren(const ChildFilter &) const =0
std::shared_ptr< Hierarchy > Ptr
Definition: hierarchy.h:73
virtual UndoableCommand::Ptr ungroupCmd() const =0
virtual SceneItemList filteredChildren(const ChildFilter &) const =0
virtual InsertChildCommand::Ptr insertChildCmd(const SceneItem::Ptr &child, const SceneItem::Ptr &pos)=0
virtual UndoableCommand::Ptr reorderCmd(const Ufe::SceneItemList &orderedList) const =0
Hierarchy()
Constructor.
virtual bool hasChildren() const =0
virtual ~Hierarchy()
Destructor.
static SceneItem::Ptr createItem(const Path &path)
virtual InsertChildCommand::Ptr createGroupCmd(const PathComponent &name) const =0
static Ptr hierarchy(const SceneItem::Ptr &item)
virtual SceneItem::Ptr defaultParent() const =0
virtual SceneItem::Ptr parent() const =0
InsertChildCommand::Ptr appendChildCmd(const SceneItem::Ptr &child)
Definition: hierarchy.h:156
std::list< ChildFilterFlag > ChildFilter
Definition: hierarchy.h:74
Hierarchy(const Hierarchy &)=default
Default copy constructor.
virtual SceneItem::Ptr sceneItem() const =0
Scene item accessor.
virtual SceneItem::Ptr insertChild(const SceneItem::Ptr &child, const SceneItem::Ptr &pos)=0
virtual SceneItem::Ptr createGroup(const PathComponent &name) const =0
virtual bool ungroup()
Definition: hierarchy.h:205
std::shared_ptr< InsertChildCommand > Ptr
Constant string representation with fixed space and O(1) comparison.
Definition: pathComponent.h:35
Identify an object or 3D path in the scene.
Definition: path.h:40
std::shared_ptr< SceneItem > Ptr
Definition: sceneItem.h:45
std::shared_ptr< UndoableCommand > Ptr
std::string string(const Path &path)
Path path(const std::string &pathString)
std::list< std::shared_ptr< SceneItem > > SceneItemList
Definition: sceneItemList.h:22
Structure to describe child filtering.
Definition: hierarchy.h:30
ChildFilterFlag(const std::string &filterName, const std::string &filterLabel, bool filterValue)
std::string label
The user-visible string, possibly localized.
Definition: hierarchy.h:41
ChildFilterFlag()=default
std::string name
The implementation-specific name of this child filter flag.
Definition: hierarchy.h:38
#define UFE_NS_DEF
Definition: ufe.h:36
Definition of macros for symbol visibility.
#define UFE_SDK_DECL
Definition: ufeExport.h:35