MiKTeX 23.10-next
A scalable TeX distribution
Loading...
Searching...
No Matches
Application.h
Go to the documentation of this file.
1
14#pragma once
15
16#include "config.h"
17
18#include <memory>
19#include <string>
20#include <vector>
21
22#include <miktex/App/vi/Version>
23#include <miktex/Core/LibraryVersion>
24#include <miktex/Core/Session>
25#include <miktex/PackageManager/PackageManager>
26#include <miktex/Trace/TraceCallback>
27
30MIKTEX_APP_BEGIN_NAMESPACE;
31
33class MIKTEXAPPTYPEAPI(Application) :
37{
38
39public:
40
41 MIKTEXAPPEXPORT MIKTEXTHISCALL Application();
42 Application(const Application& other) = delete;
43 Application& operator=(const Application& other) = delete;
44 Application(Application && other) = delete;
45 Application& operator=(Application && other) = delete;
46 virtual MIKTEXAPPEXPORT MIKTEXTHISCALL ~Application() noexcept;
47
52 virtual MIKTEXAPPTHISAPI(std::string) ExamineArgs(std::vector<const char*>&args, MiKTeX::Core::Session::InitInfo& initInfo);
53
58 virtual MIKTEXAPPTHISAPI(std::string) ExamineArgs(std::vector<char*>&args, MiKTeX::Core::Session::InitInfo& initInfo);
59
63 virtual MIKTEXAPPTHISAPI(void) Init(const MiKTeX::Core::Session::InitInfo& initInfo, std::vector<const char*>&args);
64
68 virtual MIKTEXAPPTHISAPI(void) Init(const MiKTeX::Core::Session::InitInfo& initInfo, std::vector<char*>&args);
69
72 virtual MIKTEXAPPTHISAPI(void) Init(const MiKTeX::Core::Session::InitInfo& initInfo);
73
76 virtual MIKTEXAPPTHISAPI(void) Init(std::vector<const char*>&args);
77
80 virtual MIKTEXAPPTHISAPI(void) Init(std::vector<char*>&args);
81
84 virtual MIKTEXAPPTHISAPI(void) Init(const std::string& programInvocationName);
85
89 virtual MIKTEXAPPTHISAPI(void) Init(const std::string& programInvocationName, const std::string& theNameOfTheGame);
90
92 virtual MIKTEXAPPTHISAPI(void) Finalize();
93
96 virtual MIKTEXAPPTHISAPI(void) Finalize2(int exitCode);
97
100 virtual void GetLibraryVersions(std::vector<MiKTeX::Core::LibraryVersion>&versions) const
101 {
102 versions.push_back(MiKTeX::App::vi::Version::GetLibraryVersion());
103 auto deps = MiKTeX::App::vi::Runtime::GetDependencies();
104 versions.insert(std::end(versions), std::begin(deps), std::end(deps));
105 }
106
108 virtual MIKTEXAPPTHISAPI(void) ShowLibraryVersions() const;
109
119 MIKTEXAPPTHISAPI(bool) InstallPackage(const std::string& packageId, const MiKTeX::Util::PathName& trigger, MiKTeX::Util::PathName& installRoot) override;
120
129 MIKTEXAPPTHISAPI(bool) TryCreateFile(const MiKTeX::Util::PathName& fileName, MiKTeX::Core::FileType fileType) override;
130
137 MIKTEXAPPTHISAPI(void) ReportLine(const std::string& message) override;
138
145 MIKTEXAPPTHISAPI(bool) OnRetryableError(const std::string& message) override;
146
153 MIKTEXAPPTHISAPI(bool) OnProgress(MiKTeX::Packages::Notification nf) override;
154
160 MIKTEXAPPTHISAPI(bool) Trace(const TraceCallback::TraceMessage& traceMessage) override;
161
165
168 MIKTEXNORETURN MIKTEXAPPCEEAPI(void) FatalError(const std::string& message);
169
172 MIKTEXAPPCEEAPI(void) Warning(const std::string& message);
173
176 MIKTEXAPPCEEAPI(void) SecurityRisk(const std::string& message);
177
183 MIKTEXAPPTHISAPI(void) InvokeEditor(const MiKTeX::Util::PathName& editFileName, int editLineNumber, MiKTeX::Core::FileType editFileType, const MiKTeX::Util::PathName& transcriptFileName) const;
184
188 MIKTEXAPPTHISAPI(void) Sorry(const std::string& name, const MiKTeX::Core::MiKTeXException& ex);
189
193 MIKTEXAPPTHISAPI(void) Sorry(const std::string& name, const std::exception& ex);
194
200 MIKTEXAPPTHISAPI(void) Sorry(const std::string& name, const std::string& description, const std::string& remedy, const std::string& url);
201
204 void Sorry(const std::string& name)
205 {
206 Sorry(name, "", "", "");
207 }
208
212 MIKTEXAPPTHISAPI(bool) GetQuietFlag() const;
213
217 MIKTEXAPPTHISAPI(void) SetQuietFlag(bool b);
218
221 MIKTEXAPPTHISAPI(std::shared_ptr<MiKTeX::Core::Session>) GetSession() const;
222
226
229 MIKTEXAPPTHISAPI(void) LogInfo(const std::string& message) const;
230
233 MIKTEXAPPTHISAPI(void) LogWarn(const std::string& message) const;
234
237 MIKTEXAPPTHISAPI(void) LogError(const std::string& message) const;
238
240 MIKTEXAPPTHISAPI(void) CheckCancel();
241
244 static MIKTEXAPPCEEAPI(Application*) GetApplication();
245
246protected:
247
250 static MIKTEXAPPCEEAPI(bool) Cancelled();
251
252private:
253
254 void FlushPendingTraceMessages();
255 void TraceInternal(const MiKTeX::Trace::TraceCallback::TraceMessage& traceMessage);
256 void ConfigureLogging();
257 void AutoMaintenance();
258 void AutoDiagnose();
259
260 class impl;
261 std::unique_ptr<impl> pimpl;
262};
263
264MIKTEX_APP_END_NAMESPACE;
TriState
Tri-state enum class.
Definition: TriState.h:22
An instance of this class controls the run-time behaviour of a MiKTeX application.
Definition: Application.h:37
void Warning(const std::string &message)
void LogError(const std::string &message) const
bool OnProgress(MiKTeX::Packages::Notification nf) override
Handles an installer notification.
void EnableInstaller(MiKTeX::Configuration::TriState tri)
void Sorry(const std::string &name)
Definition: Application.h:204
std::shared_ptr< MiKTeX::Core::Session > GetSession() const
static Application * GetApplication()
void LogInfo(const std::string &message) const
void InvokeEditor(const MiKTeX::Util::PathName &editFileName, int editLineNumber, MiKTeX::Core::FileType editFileType, const MiKTeX::Util::PathName &transcriptFileName) const
virtual void Init(const MiKTeX::Core::Session::InitInfo &initInfo, std::vector< char * > &args)
void Sorry(const std::string &name, const MiKTeX::Core::MiKTeXException &ex)
virtual void ShowLibraryVersions() const
Prints version information of loaded libraries.
virtual void GetLibraryVersions(std::vector< MiKTeX::Core::LibraryVersion > &versions) const
Definition: Application.h:100
void ReportLine(const std::string &message) override
Prints an installer message.
virtual void Init(const std::string &programInvocationName, const std::string &theNameOfTheGame)
virtual void Finalize2(int exitCode)
bool TryCreateFile(const MiKTeX::Util::PathName &fileName, MiKTeX::Core::FileType fileType) override
Creates a file.
virtual std::string ExamineArgs(std::vector< char * > &args, MiKTeX::Core::Session::InitInfo &initInfo)
void SecurityRisk(const std::string &message)
virtual void Init(const std::string &programInvocationName)
virtual void Init(std::vector< const char * > &args)
bool Trace(const TraceCallback::TraceMessage &traceMessage) override
Logs a trace message.
void FatalError(const std::string &message)
MiKTeX::Configuration::TriState GetEnableInstaller() const
virtual void Init(std::vector< char * > &args)
virtual std::string ExamineArgs(std::vector< const char * > &args, MiKTeX::Core::Session::InitInfo &initInfo)
void Sorry(const std::string &name, const std::string &description, const std::string &remedy, const std::string &url)
virtual void Finalize()
Frees application resources.
bool OnRetryableError(const std::string &message) override
Handles an installer error.
void CheckCancel()
Throws an exception if the application should be terminated.
void LogWarn(const std::string &message) const
void Sorry(const std::string &name, const std::exception &ex)
virtual void Init(const MiKTeX::Core::Session::InitInfo &initInfo)
virtual void Init(const MiKTeX::Core::Session::InitInfo &initInfo, std::vector< const char * > &args)
bool InstallPackage(const std::string &packageId, const MiKTeX::Util::PathName &trigger, MiKTeX::Util::PathName &installRoot) override
Install a package.
Find file callback interface.
Definition: Session.h:370
Extended initialization options.
Definition: Session.h:436
Callback interface.
Definition: PackageInstaller.h:79
Definition: TraceCallback.h:45
Instances of this class can be used to store path names.
Definition: PathName.h:73
FileType
File type enum class.
Definition: FileType.h:33
Notification
Installer notifications.
Definition: PackageInstaller.h:53
Definition: TraceCallback.h:48