X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=simgear%2Fpackage%2FPackage.hxx;h=840a22cd66d2458f47fa1c4630e1e5eec2a4403e;hb=cb6406361061578db779ada90624374f325bfbb9;hp=2c2ce556c350ddf45688852e20b72a4de4a75a16;hpb=bb5e07d958e175717e9e8699b13fa53fe4312079;p=simgear.git diff --git a/simgear/package/Package.hxx b/simgear/package/Package.hxx index 2c2ce556..840a22cd 100644 --- a/simgear/package/Package.hxx +++ b/simgear/package/Package.hxx @@ -24,6 +24,7 @@ #include #include +#include #include #include @@ -49,12 +50,16 @@ typedef std::vector PackageList; class Package : public SGReferenced { public: + + typedef boost::function InstallCallback; + /** * get or create an install for the package */ InstallRef install(); - InstallRef existingInstall() const; + InstallRef + existingInstall(const InstallCallback& cb = InstallCallback()) const; bool isInstalled() const; @@ -70,6 +75,11 @@ public: * Fully-qualified ID, including our catalog'd ID */ std::string qualifiedId() const; + + /** + * Fully-qualified ID, including our catalog'd ID + */ + std::string qualifiedVariantId(const unsigned int variantIndex) const; /** * human-readable name - note this is probably not localised, @@ -82,6 +92,8 @@ public: */ std::string nameForVariant(const std::string& vid) const; + std::string nameForVariant(const unsigned int vIndex) const; + /** * syntactic sugar to get the localised description */ @@ -107,7 +119,9 @@ public: { return m_catalog; } bool matches(const SGPropertyNode* aFilter) const; - + + string_set tags() const; + /** * download URLs for the package */ @@ -115,16 +129,28 @@ public: string_list thumbnailUrls() const; + /** + * thumbnail file paths within the package on disk + */ + string_list thumbnails() const; + /** * Packages we depend upon. * If the dependency list cannot be satisifed for some reason, * this will raise an sg_exception. */ PackageList dependencies() const; + + /** + * Name of the package directory on disk. This may or may not be the + * same as the primary ID, depending on the aircraft author + */ + std::string dirName() const; private: SGPath pathOnDisk() const; friend class Catalog; + friend class Root; Package(const SGPropertyNode* aProps, CatalogRef aCatalog); @@ -138,6 +164,8 @@ private: std::string m_id; string_set m_tags; CatalogRef m_catalog; + + mutable function_list _install_cb; };