ufe 6.2
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.11-windows/ufe/include/hierarchy.h"
2#ifndef _hierarchy
3#define _hierarchy
4// ===========================================================================
5// Copyright 2020 Autodesk, Inc. All rights reserved.
6//
7// Use of this software is subject to the terms of the Autodesk license
8// agreement provided at the time of installation or download, or which
9// otherwise accompanies this software in either electronic or hard copy form.
10// ===========================================================================
11
12#include "common/ufeExport.h"
13#include "sceneItemList.h"
14#include "sceneItem.h"
15#include "undoableCommand.h"
16
17#include <memory>
18#include <string>
19
21
22class Selection;
23
25
30 ChildFilterFlag() = default;
32 const std::string& filterName,
33 const std::string& filterLabel,
34 bool filterValue);
35
38
41
43 bool value{false};
44};
45
46
48
70{
71public:
72 typedef std::shared_ptr<Hierarchy> Ptr;
73 typedef std::list<ChildFilterFlag> ChildFilter;
74
81 static Ptr hierarchy(const SceneItem::Ptr& item);
82
92
95
97 Hierarchy(const Hierarchy&) = default;
98
100 virtual ~Hierarchy();
101
103 virtual SceneItem::Ptr sceneItem() const = 0;
104
108 virtual bool hasChildren() const = 0;
109
111 virtual SceneItemList children() const = 0;
112
116 virtual bool hasFilteredChildren(const ChildFilter&) const = 0;
117
119 virtual SceneItemList filteredChildren(const ChildFilter&) const = 0;
120
122 virtual SceneItem::Ptr parent() const = 0;
123
128 virtual SceneItem::Ptr defaultParent() const = 0;
129
138 const SceneItem::Ptr& child, const SceneItem::Ptr& pos) = 0;
139
148 const SceneItem::Ptr& child, const SceneItem::Ptr& pos) = 0;
149
156 return insertChildCmd(child, nullptr);
157 }
158
167 virtual SceneItem::Ptr createGroup(const PathComponent& name) const = 0;
168
177
182 virtual UndoableCommand::Ptr reorderCmd(const Ufe::SceneItemList& orderedList) const = 0;
183
188 virtual bool reorder(const Ufe::SceneItemList& orderedList) {
189 auto cmd = reorderCmd(orderedList);
190 if (cmd) {
191 cmd->execute();
192 return true;
193 }
194 return false;
195 }
196
200 virtual UndoableCommand::Ptr ungroupCmd() const = 0;
201
204 virtual bool ungroup() {
205 auto cmd = ungroupCmd();
206 if (cmd) {
207 cmd->execute();
208 return true;
209 }
210 return false;
211 }
212};
213
214}
215
216#endif /* _hierarchy */
217
Abstract base class for scene hierarchy interface.
Definition: hierarchy.h:70
virtual bool reorder(const Ufe::SceneItemList &orderedList)
Definition: hierarchy.h:188
virtual SceneItemList children() const =0
virtual bool hasFilteredChildren(const ChildFilter &) const =0
std::shared_ptr< Hierarchy > Ptr
Definition: hierarchy.h:72
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:155
std::list< ChildFilterFlag > ChildFilter
Definition: hierarchy.h:73
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:204
std::shared_ptr< InsertChildCommand > Ptr
Constant string representation with fixed space and O(1) comparison.
Definition: pathComponent.h:33
Identify an object or 3D path in the scene.
Definition: path.h:38
std::shared_ptr< SceneItem > Ptr
Definition: sceneItem.h:44
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:21
Structure to describe child filtering.
Definition: hierarchy.h:29
ChildFilterFlag(const std::string &filterName, const std::string &filterLabel, bool filterValue)
std::string label
The user-visible string, possibly localized.
Definition: hierarchy.h:40
ChildFilterFlag()=default
std::string name
The implementation-specific name of this child filter flag.
Definition: hierarchy.h:37
#define UFE_NS_DEF
Definition: ufe.h:35
Definition of macros for symbol visibility.
#define UFE_SDK_DECL
Definition: ufeExport.h:36