Path: blob/master/Source/CPack/cmCPackDragNDropGenerator.h
5000 views
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying1file LICENSE.rst or https://cmake.org/licensing for details. */2#pragma once34#include "cmConfigure.h" // IWYU pragma: keep56#include <cstddef>7#include <sstream>8#include <string>9#include <vector>1011#include "cmCPackGenerator.h"1213class cmGeneratedFileStream;14class cmXMLWriter;1516/** \class cmCPackDragNDropGenerator17* \brief A generator for OSX drag-n-drop installs18*/19class cmCPackDragNDropGenerator : public cmCPackGenerator20{21public:22cmCPackTypeMacro(cmCPackDragNDropGenerator, cmCPackGenerator);2324cmCPackDragNDropGenerator();25~cmCPackDragNDropGenerator() override;2627protected:28int InitializeInternal() override;29char const* GetOutputExtension() override;30int PackageFiles() override;31bool SupportsComponentInstallation() const override;3233bool CopyFile(std::ostringstream& source, std::ostringstream& target);34bool CreateEmptyFile(std::ostringstream& target, size_t size);35bool RunCommand(std::string const& command, std::string* output = nullptr);3637std::string GetComponentInstallSuffix(38std::string const& componentName) override;39std::string GetComponentInstallDirNameSuffix(40std::string const& componentName) override;4142int CreateDMG(std::string const& src_dir, std::string const& output_file);4344private:45std::string slaDirectory;46bool singleLicense;4748struct RezDict49{50std::string Name;51size_t ID;52std::vector<unsigned char> Data;53};5455struct RezArray56{57std::string Key;58std::vector<RezDict> Entries;59};6061struct RezDoc62{63RezArray LPic = { "LPic", {} };64RezArray Menu = { "STR#", {} };65RezArray Text = { "TEXT", {} };66RezArray RTF = { "RTF ", {} };67};6869void WriteRezXML(std::string const& file, RezDoc const& rez);70void WriteRezArray(cmXMLWriter& xml, RezArray const& array);71void WriteRezDict(cmXMLWriter& xml, RezDict const& dict);7273bool WriteLicense(RezDoc& rez, size_t licenseNumber,74std::string licenseLanguage,75std::string const& licenseFile, std::string* error);76void EncodeLicense(RezDict& dict, std::vector<std::string> const& lines);77void EncodeMenu(RezDict& dict, std::vector<std::string> const& lines);78bool ReadFile(std::string const& file, std::vector<std::string>& lines,79std::string* error);80bool BreakLongLine(std::string const& line, std::vector<std::string>& lines,81std::string* error);82};838485