载入中...
搜索中...
未找到
UiTheme.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
8#include "ui/Theme.h"
9
10#include <string>
11#include <vector>
12
13namespace eve::ui_editing {
14
17using editing::DomainOperation;
18using editing::EditRegion;
19using editing::IDomainOperationTarget;
20using editing::IDomainOperationTargetStaging;
21using editing::IEditableTarget;
22using editing::IEditingSnapshotProvider;
23using editing::IPropertyProvider;
25using editing::PropertyDescriptor;
27using editing::PropertyPath;
28using editing::PropertyReadResult;
30using editing::PropertySchema;
34using editing::RuleId;
35using editing::SelectionSnapshot;
36using editing::TargetDescriptor;
38using editing::Result;
40using EditorValue = editing::Value;
42
45
53
56 public virtual IEditableTarget,
59 public IPropertyProvider,
61public:
66 explicit UiThemeCatalogTarget(std::string id);
67
69 static CapabilityId propertyCapabilityId() { return CapabilityId("eve.editor.target.ui-theme-properties"); }
70
72 TargetId targetId() const override { return TargetId(id_); }
74 TargetDescriptor describe() const override;
81 void* queryCapability(const CapabilityId& capability) override;
82
84 Result<void> applyDomainOperation(const DomainOperation& operation) override;
86 std::unique_ptr<IDomainOperationTarget> cloneDomainState() const override;
88 Result<void> commitDomainState(std::unique_ptr<IDomainOperationTarget> candidate) override;
89
91 const std::vector<UiThemeAsset>& themes() const noexcept { return themes_; }
93 const ObjectId& activeId() const noexcept { return activeId_; }
94
96 Result<UiThemeAsset> theme(const ObjectId& id) const;
98 std::string runtimeName(const ObjectId& id) const;
99
101 [[nodiscard]] Result<DomainOperation> makeCreateFromPreset(const ObjectId& id, std::string name,
102 UiThemeBasePreset preset) const;
104 [[nodiscard]] Result<DomainOperation> makeDuplicate(const ObjectId& source, const ObjectId& id,
105 std::string name) const;
107 [[nodiscard]] Result<DomainOperation> makeRename(const ObjectId& id, std::string name) const;
109 [[nodiscard]] Result<DomainOperation> makeDelete(const ObjectId& id) const;
111 [[nodiscard]] Result<DomainOperation> makeSetActive(const ObjectId& id) const;
113 [[nodiscard]] Result<DomainOperation> makeResetToBase(const ObjectId& id) const;
114
116 eve::Result<eve::Revision> currentRevision(const SelectionSnapshot& selection) const override;
118 PropertySchema schema(const SelectionSnapshot& selection) const override;
120 PropertyReadResult read(const SelectionSnapshot& selection, const PropertyPath& path) const override;
122 Result<DomainOperation> makeSet(const SelectionSnapshot& selection, const PropertyPath& path,
123 const EditorValue& value, PropertySetMode mode) const override;
125 Result<DomainOperation> makeReset(const SelectionSnapshot& selection,
126 const PropertyPath& path) const override;
127
129 EditorValue snapshotValue() const override;
131 Result<void> loadSnapshot(const EditorValue& snapshot);
133 std::vector<EditorDiagnostic> validate() const;
134
135private:
137 Result<DomainOperation> replacement(EditorValue content, std::string property = {}) const;
139 EditorValue contentValue() const;
141 bool matches(const SelectionSnapshot& selection) const;
148 UiThemeAsset* mutableTheme(const ObjectId& id);
155 const UiThemeAsset* findTheme(const ObjectId& id) const;
156
157 std::string id_;
158 std::vector<UiThemeAsset> themes_;
159 ObjectId activeId_;
160};
161
164 EditorStatus status = EditorStatus::Failed;
166 ObjectId themeId;
168 std::string runtimeName;
169 std::vector<EditorDiagnostic> diagnostics;
170};
171
174public:
179 UiThemePreviewSnapshot build(const UiThemeCatalogTarget& catalog, const ObjectId& themeId,
180 Revision expectedRevision) const;
181};
182
185public:
190 [[nodiscard]] Result<void> publish(const UiThemeCatalogTarget& catalog) const;
191};
192
193} // namespace eve::ui_editing
ActionParameterOperation operation
double value
Object::Ptr theme
#define EVENGINE_API_DOMAINS
Definition Export.h:110
std::string name
std::string path
Definition PlayHost.cpp:110
const UnitySourceAsset & source
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Dirty region and revision shared by every editable document target.
Optional candidate/publish capability for atomic domain operations.
Editable-target capability that applies owning domain operations.
IEditableTarget public API.
Optional capability exposing a deterministic, persistence-safe editing snapshot.
UI-independent property access for an immutable selection snapshot.
Dotted property path (layout.size) compared and persisted as text.
Definition EditingIds.h:78
Deterministic owning value tree shared by authoring hosts.
Serializable catalog of named UI themes with one active publication slot.
Definition UiTheme.h:60
const ObjectId & activeId() const noexcept
Active publication id; empty only if the catalog failed to seed.
Definition UiTheme.h:93
TargetId targetId() const override
Target id.
Definition UiTheme.h:72
static CapabilityId propertyCapabilityId()
Inspector capability published by describe().
Definition UiTheme.h:69
const std::vector< UiThemeAsset > & themes() const noexcept
Borrow authored themes in catalog order.
Definition UiTheme.h:91
Builds a Theme copy for a catalog revision without touching runtime globals.
Definition UiTheme.h:173
Publishes the active catalog theme through ui::setGlobalTheme.
Definition UiTheme.h:184
eve::Severity DiagnosticSeverity
std::uint64_t Revision
StrongId< TargetIdTag > TargetId
Definition EditingIds.h:57
eve::Diagnostic Diagnostic
StrongId< ObjectIdTag > ObjectId
Definition EditingIds.h:65
PropertyType
PropertyType public API.
StrongId< RuleIdTag > RuleId
Definition EditingIds.h:60
PropertySetMode
PropertySetMode public API.
PropertyFlag
PropertyFlag public API.
eve::StatusCode Status
StrongId< CapabilityIdTag > CapabilityId
Definition EditingIds.h:61
eve::Result< T > Result
PropertyReadState
PropertyReadState public API.
editing::Diagnostic EditorDiagnostic
Definition UiDocument.h:45
UiThemeBasePreset
Base preset used when resetting a named theme asset.
Definition UiTheme.h:44
editing::Value EditorValue
Definition UiDocument.h:44
editing::Status EditorStatus
Definition UiDocument.h:43
StatusCode
Stable outcome category for an operation.
Definition Status.h:27
detail::StrongUint64< detail::RevisionTag > Revision
Monotonic content/state revision used for optimistic-concurrency checks.
Definition Revision.h:13
DomainOperation public API.
PropertyReadResult public API.
EVENGINE_API_PLATFORM public API.
SelectionSnapshot public API.
Stable discovery metadata exposed by every editable target.
Unified UI design tokens (colors, geometry, typography). Applied to ImGui each frame via applyThemeTo...
Definition Theme.h:39
One named, fully snapshotted Theme asset.
Definition UiTheme.h:47
UiThemeBasePreset basePreset
Definition UiTheme.h:50
Revision-bound Theme copy used by gallery hosts without mutating globalTheme.
Definition UiTheme.h:163
std::vector< EditorDiagnostic > diagnostics
Definition UiTheme.h:169