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 for(auto& elt : this->m_settings)
44 {
45 if(auto c = dynamic_cast<T*>(elt.get()))
46 {
47 return *c;
48 }
49 }
50
51 SCORE_ABORT;
52 throw;
53 }
54
55 const auto& allSettings() const noexcept { return m_settings; }
56
62 const auto& addons() const { return components.addons(); }
63
69 template <typename T>
70 const T& interfaces() const
71 {
72 return components.interfaces<T>();
73 }
74
86 auto instantiateUndoCommand(const CommandData& cmd) const
87 {
88 return components.instantiateUndoCommand(cmd);
89 }
90
91 const score::DocumentContext* currentDocument() const noexcept;
92
94 const score::ApplicationSettings& applicationSettings;
95
96 const score::ApplicationComponents& components;
97
98 DocumentList& documents;
99
100private:
101 const std::vector<std::unique_ptr<score::SettingsDelegateModel>>& m_settings;
102};
103
104// By default this is defined in score::Application
105SCORE_LIB_BASE_EXPORT const ApplicationContext& AppContext();
106}
Definition ApplicationComponents.hpp:68
Definition SettingsDelegateModel.hpp:18
Base toolkit upon which the software is built.
Definition Application.cpp:112
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
const auto & addons() const
List of all the registered addons.
Definition ApplicationContext.hpp:62
auto instantiateUndoCommand(const CommandData &cmd) const
instantiateUndoCommand Is used to generate a Command from its serialized data.
Definition ApplicationContext.hpp:86
const T & interfaces() const
Access to a specific interface list.
Definition ApplicationContext.hpp:70
Load-time settings.
Definition ApplicationSettings.hpp:17
Utility class for the serialization and deserialization of commands.
Definition CommandData.hpp:14
Definition DocumentContext.hpp:18
Definition DocumentManager.hpp:28