Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Kitware
GitHub Repository: Kitware/CMake
Path: blob/master/Source/CPack/cmCPackDragNDropGenerator.h
5000 views
1
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
2
file LICENSE.rst or https://cmake.org/licensing for details. */
3
#pragma once
4
5
#include "cmConfigure.h" // IWYU pragma: keep
6
7
#include <cstddef>
8
#include <sstream>
9
#include <string>
10
#include <vector>
11
12
#include "cmCPackGenerator.h"
13
14
class cmGeneratedFileStream;
15
class cmXMLWriter;
16
17
/** \class cmCPackDragNDropGenerator
18
* \brief A generator for OSX drag-n-drop installs
19
*/
20
class cmCPackDragNDropGenerator : public cmCPackGenerator
21
{
22
public:
23
cmCPackTypeMacro(cmCPackDragNDropGenerator, cmCPackGenerator);
24
25
cmCPackDragNDropGenerator();
26
~cmCPackDragNDropGenerator() override;
27
28
protected:
29
int InitializeInternal() override;
30
char const* GetOutputExtension() override;
31
int PackageFiles() override;
32
bool SupportsComponentInstallation() const override;
33
34
bool CopyFile(std::ostringstream& source, std::ostringstream& target);
35
bool CreateEmptyFile(std::ostringstream& target, size_t size);
36
bool RunCommand(std::string const& command, std::string* output = nullptr);
37
38
std::string GetComponentInstallSuffix(
39
std::string const& componentName) override;
40
std::string GetComponentInstallDirNameSuffix(
41
std::string const& componentName) override;
42
43
int CreateDMG(std::string const& src_dir, std::string const& output_file);
44
45
private:
46
std::string slaDirectory;
47
bool singleLicense;
48
49
struct RezDict
50
{
51
std::string Name;
52
size_t ID;
53
std::vector<unsigned char> Data;
54
};
55
56
struct RezArray
57
{
58
std::string Key;
59
std::vector<RezDict> Entries;
60
};
61
62
struct RezDoc
63
{
64
RezArray LPic = { "LPic", {} };
65
RezArray Menu = { "STR#", {} };
66
RezArray Text = { "TEXT", {} };
67
RezArray RTF = { "RTF ", {} };
68
};
69
70
void WriteRezXML(std::string const& file, RezDoc const& rez);
71
void WriteRezArray(cmXMLWriter& xml, RezArray const& array);
72
void WriteRezDict(cmXMLWriter& xml, RezDict const& dict);
73
74
bool WriteLicense(RezDoc& rez, size_t licenseNumber,
75
std::string licenseLanguage,
76
std::string const& licenseFile, std::string* error);
77
void EncodeLicense(RezDict& dict, std::vector<std::string> const& lines);
78
void EncodeMenu(RezDict& dict, std::vector<std::string> const& lines);
79
bool ReadFile(std::string const& file, std::vector<std::string>& lines,
80
std::string* error);
81
bool BreakLongLine(std::string const& line, std::vector<std::string>& lines,
82
std::string* error);
83
};
84
85