Loading...
Searching...
No Matches
ApplicationContext.hpp
1#pragma once
2#include <score/application/ApplicationComponents.hpp>
3
4namespace score
5{
6class ApplicationComponents;
7struct ApplicationSettings;
8class SettingsDelegateModel;
9class SettingsDelegateFactory;
10class DocumentManager;
11class MenuManager;
12class ToolbarManager;
13class ActionManager;
14struct DocumentList;
15struct DocumentContext;
24struct SCORE_LIB_BASE_EXPORT ApplicationContext
25{
26 explicit ApplicationContext(
28 const std::vector<std::unique_ptr<score::SettingsDelegateModel>>&);
31 ApplicationContext& operator=(const ApplicationContext&) = delete;
32
34
40 template <typename T>
41 T& settings() const
42 {
43 if(auto c = findSettings<T>())
44 return *c;
45
46 SCORE_ABORT;
47 throw;
48 }
49
59 template <typename T>
60 T* findSettings() const noexcept
61 {
62 for(auto& elt : this->m_settings)
63 {
64 if(auto c = dynamic_cast<T*>(elt.get()))
65 {
66 return c;
67 }
68 }
69 return nullptr;
70 }
71
72 const auto& allSettings() const noexcept { return m_settings; }
73
79 const auto& addons() const { return components.addons(); }
80
86 template <typename T>
87 const T& interfaces() const
88 {
89 return components.interfaces<T>();
90 }
91
103 auto instantiateUndoCommand(const CommandData& cmd) const
104 {
105 return components.instantiateUndoCommand(cmd);
106 }
107
108 const score::DocumentContext* currentDocument() const noexcept;
109
111 const score::ApplicationSettings& applicationSettings;
112
113 const score::ApplicationComponents& components;
114
115 DocumentList& documents;
116
117private:
118 const std::vector<std::unique_ptr<score::SettingsDelegateModel>>& m_settings;
119};
120
121// By default this is defined in score::Application
122SCORE_LIB_BASE_EXPORT const ApplicationContext& AppContext();
123}
Definition ApplicationComponents.hpp:68
Definition SettingsDelegateModel.hpp:18
Base toolkit upon which the software is built.
Definition Application.cpp:117
STL namespace.
Used to access all the application-wide state and structures.
Definition ApplicationContext.hpp:25
T & settings() const
Access a specific Settings model instance.
Definition ApplicationContext.hpp:41
T * findSettings() const noexcept
Access a Settings model instance, or null when its plug-in did not register one.
Definition ApplicationContext.hpp:60
const auto & addons() const
List of all the registered addons.
Definition ApplicationContext.hpp:79
auto instantiateUndoCommand(const CommandData &cmd) const
instantiateUndoCommand Is used to generate a Command from its serialized data.
Definition ApplicationContext.hpp:103
const T & interfaces() const
Access to a specific interface list.
Definition ApplicationContext.hpp:87
Load-time settings.
Definition ApplicationSettings.hpp:26
Utility class for the serialization and deserialization of commands.
Definition CommandData.hpp:14
Definition DocumentContext.hpp:18
Definition DocumentManager.hpp:28