Replaced the old VS templates with ones that offer more flexiblity. Started replacing the Content Project for the samples with our custom project type. Inlcuded a basic not yet working AssimpImporter.
137 lines
4.1 KiB
C#
137 lines
4.1 KiB
C#
using ANX.Framework.VisualStudio.Nodes;
|
|
using Microsoft.VisualStudio.Shell.Interop;
|
|
using Microsoft.Win32;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace ANX.Framework.VisualStudio.Controls
|
|
{
|
|
public class SDKComboBox : ComboBox
|
|
{
|
|
public class Platform
|
|
{
|
|
string folder;
|
|
string displayName;
|
|
string name;
|
|
string version;
|
|
string registryPath;
|
|
|
|
public Platform(string folder, string name, string displayName, string version, string registryPath)
|
|
{
|
|
this.folder = folder;
|
|
this.name = name;
|
|
this.displayName = displayName;
|
|
this.version = version;
|
|
this.registryPath = registryPath;
|
|
}
|
|
|
|
public string Folder
|
|
{
|
|
get { return this.folder; }
|
|
}
|
|
|
|
public string DisplayName
|
|
{
|
|
get { return this.displayName; }
|
|
}
|
|
|
|
public string Name
|
|
{
|
|
get { return this.name; }
|
|
}
|
|
|
|
public string Version
|
|
{
|
|
get { return version; }
|
|
}
|
|
|
|
public string RegistryPath
|
|
{
|
|
get { return registryPath; }
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return displayName;
|
|
}
|
|
|
|
public static Platform[] GetSupportedSdks()
|
|
{
|
|
List<Platform> platforms = new List<Platform>();
|
|
|
|
var windows8 =Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0", false);
|
|
if (windows8 != null)
|
|
{
|
|
platforms.Add(GetPlatform(windows8));
|
|
}
|
|
|
|
var windows81 = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.1", false);
|
|
if (windows81 != null)
|
|
{
|
|
platforms.Add(GetPlatform(windows81));
|
|
}
|
|
|
|
/*var windowsPhone8 = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Microsoft SDKs\Windows Phone\v8.0", false);
|
|
if (windowsPhone8 != null)
|
|
{
|
|
platforms.Add(GetPlatform(windowsPhone8));
|
|
}*/
|
|
|
|
return platforms.Where((x) => x != null).ToArray();
|
|
}
|
|
|
|
private static Platform GetPlatform(RegistryKey key)
|
|
{
|
|
var folderValue = key.GetValue("InstallationFolder");
|
|
if (folderValue == null || !(folderValue is string) || string.IsNullOrWhiteSpace((string)folderValue))
|
|
return null;
|
|
|
|
var nameValue = key.GetValue("ProductName");
|
|
if (nameValue == null || !(nameValue is string) || string.IsNullOrWhiteSpace((string)nameValue))
|
|
return null;
|
|
|
|
var versionValue = key.GetValue("ProductVersion");
|
|
if (nameValue == null || !(nameValue is string) || string.IsNullOrWhiteSpace((string)nameValue))
|
|
return null;
|
|
|
|
return new Platform((string)folderValue, Path.GetDirectoryName(key.Name), (string)nameValue, (string)versionValue, key.Name);
|
|
}
|
|
}
|
|
|
|
ContentProjectNode node;
|
|
|
|
public SDKComboBox()
|
|
{
|
|
|
|
}
|
|
|
|
public Platform GetSelectedSdk()
|
|
{
|
|
if (this.SelectedIndex == -1 || this.SelectedItem is String)
|
|
return null;
|
|
|
|
Platform platform = this.SelectedItem as Platform;
|
|
if (platform == null)
|
|
return null;
|
|
|
|
return platform;
|
|
}
|
|
|
|
public void Initialize(ContentProjectNode node)
|
|
{
|
|
this.node = node;
|
|
|
|
Items.Clear();
|
|
|
|
Items.Add(PackageResources.GetString(PackageResources.None));
|
|
|
|
Items.AddRange(Platform.GetSupportedSdks());
|
|
}
|
|
}
|
|
}
|