Loading...
Searching...
No Matches
PatternLibrary.hpp
1#pragma once
2#include <Process/Drop/ProcessDropHandler.hpp>
3
4#include <Library/LibraryInterface.hpp>
5#include <Library/LibrarySettings.hpp>
6#include <Library/ProcessesItemModel.hpp>
7
8#include <QFileInfo>
9#include <QTimer>
10
11#include <Patternist/Commands/PatternProperties.hpp>
12#include <Patternist/PatternFactory.hpp>
13#include <Patternist/PatternModel.hpp>
14#include <Patternist/PatternParsing.hpp>
15
16namespace Patternist
17{
18class LibraryHandler final
19 : public QObject
21{
22 SCORE_CONCRETE("81375b6a-2172-49e5-bbf9-0d2eecc30677")
23
24 QSet<QString> acceptedFiles() const noexcept override { return {"pat"}; }
25
26 Library::CategoryPaths categories;
27
29 override
30 {
31 categories.init(
33 }
34
35 std::optional<Library::ProcessEntry> scanPath(std::string_view path) override
36 {
37 score::PathInfo file{path};
39 pdata.prettyName
40 = QString::fromUtf8(file.completeBaseName.data(), file.completeBaseName.size());
42 pdata.customData
43 = QString::fromUtf8(file.absoluteFilePath.data(), file.absoluteFilePath.size());
44
45 return Library::ProcessEntry{pdata.key, categories(file), {std::move(pdata), {}}};
46 }
47};
48
50{
51 SCORE_CONCRETE("6ba4246f-45cd-49f5-a103-8718ec52576b")
52
53 QSet<QString> fileExtensions() const noexcept override { return {"pat"}; }
54
55 void dropData(
56 std::vector<ProcessDrop>& vec, const DroppedFile& data,
57 const score::DocumentContext& ctx) const noexcept override
58 {
59 const auto& [filename, content] = data;
60
61 auto pat = parsePatterns(content);
62 if(!pat.empty())
63 {
66 p.creation.prettyName = filename.basename;
67 p.setup = [pat = std::move(pat)](
68 Process::ProcessModel& m, score::Dispatcher& disp) mutable {
69 auto& proc = static_cast<Patternist::ProcessModel&>(m);
70 disp.submit(new Patternist::UpdatePatterns{proc, std::move(pat)});
71 };
72 vec.push_back(std::move(p));
73 }
74 }
75};
76
77}
Definition ProcessEntry.hpp:64
void init(std::string processName, const score::ApplicationContext &ctx)
GUI thread (setup). processName is the process's pretty name.
Definition LibraryInterface.cpp:32
Definition LibraryInterface.hpp:26
Definition ProcessesItemModel.hpp:38
Definition PatternLibrary.hpp:50
Definition PatternLibrary.hpp:21
Definition PatternModel.hpp:48
Definition PatternProperties.hpp:58
Definition ProcessDropHandler.hpp:25
The Process class.
Definition score-lib-process/Process/Process.hpp:75
Definition ProcessEntry.hpp:25
Definition ProcessEntry.hpp:40
Static metadata implementation.
Definition lib/score/tools/Metadata.hpp:36
Definition ProcessDropHandler.hpp:36
Definition ProcessDropHandler.hpp:29
Definition RuntimeDispatcher.hpp:7
Definition DocumentContext.hpp:18
Specializes ApplicationContext with the QMainWindow.
Definition GUIApplicationContext.hpp:15
Definition lib/score/tools/File.hpp:20