Loading...
Searching...
No Matches
PresetTree.hpp
1#pragma once
2#include <Process/Preset.hpp>
3
4#include <ossia/detail/hash_map.hpp>
5
6#include <QStringList>
7
8#include <score_lib_process_export.h>
9
10#include <memory>
11#include <vector>
12
13namespace score
14{
15struct DocumentContext;
16}
17
18namespace Process
19{
20class ProcessModel;
21
23SCORE_LIB_PROCESS_EXPORT QStringList presetCategoryPath(const QString& category);
24
31struct SCORE_LIB_PROCESS_EXPORT PresetTree
32{
33 struct Node
34 {
35 QString name;
37 struct Entry
38 {
39 const Process::Preset* preset{};
40 int child = -1;
41 };
42 std::vector<Entry> entries;
43 std::vector<std::unique_ptr<Node>> children;
44 ossia::hash_map<QString, int> childIndex;
45 };
46 Node root;
47
51 const Process::ProcessModel& proc, const std::vector<Process::Preset>& library,
52 const std::vector<Process::Preset>& builtins);
53
56 const Process::ProcessIdentifier& id, const std::vector<Process::Preset>& library,
57 const std::vector<Process::Preset>& builtins = {});
58
60 std::vector<const Process::Preset*> ordered() const;
61
62 static QString builtinFolderName();
63
64private:
65 void addLibrary(std::vector<const Process::Preset*> presets);
66 void addBuiltins(const std::vector<Process::Preset>& builtins);
67 static Node& folder(Node& from, const QStringList& path);
68};
69
72SCORE_LIB_PROCESS_EXPORT void
73rememberPreset(const Process::ProcessModel& proc, const Process::Preset& preset);
74SCORE_LIB_PROCESS_EXPORT bool
75isCurrentPreset(const Process::ProcessModel& proc, const Process::Preset& preset);
77SCORE_LIB_PROCESS_EXPORT QStringList presetCursor(const Process::ProcessModel& proc);
78SCORE_LIB_PROCESS_EXPORT void
79setPresetCursor(const Process::ProcessModel& proc, const QStringList& cursor);
80
83SCORE_LIB_PROCESS_EXPORT bool loadPreset(
84 const Process::ProcessModel& proc, const Process::Preset& preset,
85 const score::DocumentContext& ctx);
86}
The Process class.
Definition score-lib-process/Process/Process.hpp:82
Base classes and tools to implement processes and layers.
Definition JSONVisitor.hpp:1115
bool loadPreset(const Process::ProcessModel &proc, const Process::Preset &preset, const score::DocumentContext &ctx)
Definition PresetTree.cpp:167
void rememberPreset(const Process::ProcessModel &proc, const Process::Preset &preset)
Definition PresetTree.cpp:143
QStringList presetCategoryPath(const QString &category)
"Foo / Bar//Baz" -> {"Foo", "Bar", "Baz"}: a category as it is nested
Definition PresetTree.cpp:17
QStringList presetCursor(const Process::ProcessModel &proc)
{category, name} of the current preset, empty if none: to put it back
Definition PresetTree.cpp:149
Base toolkit upon which the software is built.
Definition Application.cpp:83
Definition Preset.hpp:32
A preset, or the index of a subfolder in children, in display order.
Definition PresetTree.hpp:38
Definition PresetTree.hpp:34
Definition PresetTree.hpp:32
Definition Preset.hpp:11
Definition DocumentContext.hpp:18