summaryrefslogtreecommitdiffstats
path: root/Source/CPack/WiX/cmWIXShortcut.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/CPack/WiX/cmWIXShortcut.h')
-rw-r--r--Source/CPack/WiX/cmWIXShortcut.h62
1 files changed, 53 insertions, 9 deletions
diff --git a/Source/CPack/WiX/cmWIXShortcut.h b/Source/CPack/WiX/cmWIXShortcut.h
index 93095e0..5945e43 100644
--- a/Source/CPack/WiX/cmWIXShortcut.h
+++ b/Source/CPack/WiX/cmWIXShortcut.h
@@ -1,6 +1,6 @@
/*============================================================================
CMake - Cross Platform Makefile Generator
- Copyright 2014 Kitware, Inc.
+ Copyright 2014-2015 Kitware, Inc.
Distributed under the OSI-approved BSD License (the "License");
see accompanying file Copyright.txt for details.
@@ -10,20 +10,64 @@
See the License for more information.
============================================================================*/
-#ifndef cmWIXFilesShortcut_h
-#define cmWIXFilesShortcut_h
+#ifndef cmWIXShortcut_h
+#define cmWIXShortcut_h
#include <string>
+#include <map>
+#include <set>
+#include <vector>
+
+#include <cmInstalledFile.h>
+
+class cmWIXFilesSourceWriter;
struct cmWIXShortcut
{
- cmWIXShortcut()
- :desktop(false)
- {}
-
- std::string textLabel;
+ std::string label;
std::string workingDirectoryId;
- bool desktop;
+};
+
+class cmWIXShortcuts
+{
+public:
+ enum Type
+ {
+ START_MENU,
+ DESKTOP,
+ STARTUP
+ };
+
+ typedef std::vector<cmWIXShortcut> shortcut_list_t;
+ typedef std::map<std::string, shortcut_list_t> shortcut_id_map_t;
+
+ void insert(Type type, std::string const& id, cmWIXShortcut const& shortcut);
+
+ bool empty(Type type) const;
+
+ bool EmitShortcuts(
+ Type type,
+ std::string const& registryKey,
+ std::string const& cpackComponentName,
+ cmWIXFilesSourceWriter& fileDefinitions) const;
+
+ void AddShortcutTypes(std::set<Type>& types);
+
+ void CreateFromProperties(std::string const& id,
+ std::string const& directoryId, cmInstalledFile const& installedFile);
+
+private:
+ typedef std::map<Type, shortcut_id_map_t> shortcut_type_map_t;
+
+ void CreateFromProperty(
+ std::string const& propertyName,
+ Type type,
+ std::string const& id,
+ std::string const& directoryId,
+ cmInstalledFile const& installedFile);
+
+ shortcut_type_map_t Shortcuts;
+ shortcut_id_map_t EmptyIdMap;
};
#endif