blob: cd8c9533638f54e679555ff99f36821da5269eb9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
|
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include "api/config.h"
#include "compilerexploreraspects.h"
#include <utils/aspects.h>
#include <utils/networkaccessmanager.h>
#include <texteditor/textdocument.h>
namespace CompilerExplorer {
class SourceSettings;
class CompilerSettings;
using ApiConfigFunction = std::function<Api::Config()>;
class PluginSettings : public Utils::AspectContainer
{
public:
PluginSettings();
Utils::StringAspect defaultDocument{this};
};
PluginSettings &settings();
class CompilerExplorerSettings : public Utils::AspectContainer
{
public:
CompilerExplorerSettings();
~CompilerExplorerSettings();
Utils::StringAspect compilerExplorerUrl{this};
Utils::TypedAspect<Utils::Store> windowState{this};
Utils::AspectList m_sources{this};
Api::Config apiConfig() const
{
return Api::Config(Utils::NetworkAccessManager::instance(),
compilerExplorerUrl.volatileValue());
}
};
class SourceSettings : public Utils::AspectContainer,
public std::enable_shared_from_this<SourceSettings>
{
Q_OBJECT
public:
SourceSettings(const ApiConfigFunction &apiConfigFunction);
void refresh();
ApiConfigFunction apiConfigFunction() const { return m_apiConfigFunction; }
TextEditor::TextDocumentPtr sourceTextDocument() const { return m_sourceTextDocument; }
void setSourceTextDocument(TextEditor::TextDocumentPtr sourceTextDocument)
{
m_sourceTextDocument = sourceTextDocument;
}
public:
Utils::StringSelectionAspect languageId{this};
Utils::StringAspect source{this};
Utils::AspectList compilers{this};
public:
QString languageExtension() const;
signals:
void languagesChanged();
private:
void fillLanguageIdModel(const Utils::StringSelectionAspect::ResultCallback &cb);
private:
CompilerExplorerSettings *m_parent;
ApiConfigFunction m_apiConfigFunction;
TextEditor::TextDocumentPtr m_sourceTextDocument{nullptr};
};
class CompilerSettings : public Utils::AspectContainer,
public std::enable_shared_from_this<CompilerSettings>
{
public:
CompilerSettings(const ApiConfigFunction &apiConfigFunction);
Utils::StringSelectionAspect compiler{this};
Utils::StringAspect compilerOptions{this};
LibrarySelectionAspect libraries{this};
// "Filters"
Utils::BoolAspect executeCode{this};
Utils::BoolAspect compileToBinaryObject{this};
Utils::BoolAspect intelAsmSyntax{this};
Utils::BoolAspect demangleIdentifiers{this};
void refresh();
void setLanguageId(const QString &languageId);
private:
void fillCompilerModel(const Utils::StringSelectionAspect::ResultCallback &cb);
void fillLibraries(const LibrarySelectionAspect::ResultCallback &cb);
QString m_languageId;
ApiConfigFunction m_apiConfigFunction;
};
} // namespace CompilerExplorer
|