diff options
author | Olli Werwolff <qt-info@nokia.com> | 2011-01-19 14:28:49 +0100 |
---|---|---|
committer | Olli Werwolff <qt-info@nokia.com> | 2011-01-19 14:28:49 +0100 |
commit | 001d24967a3b5afa2f49738dd145c6105b033c84 (patch) | |
tree | 9c02daf3d21969367af3fb65d3fb14218cdbf60b | |
parent | b32d10f1743c0ab6d68175cf1e0498a9b3afc563 (diff) |
Fixed handling of Windows CE platform in wizards
The bug also influenced the handling of Qt versions.
It was not possible to add ce Qt versions, as the
corresponding platform could not be found
(availablePlatforms was always empty).
Task-number: QTVSADDINBUG-42
Reviewed-by: joerg
7 files changed, 26 insertions, 14 deletions
diff --git a/Qt4VS2003/Projects/Qt4WinCELibProject/HTML/1031/default.htm b/Qt4VS2003/Projects/Qt4WinCELibProject/HTML/1031/default.htm index c5b9a4f9..462607a5 100644 --- a/Qt4VS2003/Projects/Qt4WinCELibProject/HTML/1031/default.htm +++ b/Qt4VS2003/Projects/Qt4WinCELibProject/HTML/1031/default.htm @@ -392,7 +392,7 @@ function InitControls() QTMODULES.innerText = strModules; var strHTML = '<select id="PLATFORM_COMBO" name="PLATFORM_COMBO" style="width: 360px" width="250">'; - var qtVersions = QtEngine.GetQtWinCEVersions(); + var qtVersions = QtEngine.GetQtWinCEVersions(window.external.dte); var strDefaultQtWinCEVersion = QtEngine.GetDefaultWinCEVersion(); if (qtVersions.Count > 0) { for (var i=0; i < qtVersions.Count; ++i) { diff --git a/Qt4VS2003/Projects/Qt4WinCELibProject/HTML/1033/default.htm b/Qt4VS2003/Projects/Qt4WinCELibProject/HTML/1033/default.htm index e9b4376d..fd5e7e7b 100644 --- a/Qt4VS2003/Projects/Qt4WinCELibProject/HTML/1033/default.htm +++ b/Qt4VS2003/Projects/Qt4WinCELibProject/HTML/1033/default.htm @@ -394,7 +394,7 @@ function InitControls() QTMODULES.innerText = strModules; var strHTML = '<select id="PLATFORM_COMBO" name="PLATFORM_COMBO" style="width: 360px" width="250">'; - var qtVersions = QtEngine.GetQtWinCEVersions(); + var qtVersions = QtEngine.GetQtWinCEVersions(window.external.dte); var strDefaultQtWinCEVersion = QtEngine.GetDefaultWinCEVersion(); if (qtVersions.Count > 0) { for (var i=0; i < qtVersions.Count; ++i) { diff --git a/Qt4VS2003/Projects/Qt4WinCEProject/HTML/1031/default.htm b/Qt4VS2003/Projects/Qt4WinCEProject/HTML/1031/default.htm index 1c0f95b3..81a32703 100644 --- a/Qt4VS2003/Projects/Qt4WinCEProject/HTML/1031/default.htm +++ b/Qt4VS2003/Projects/Qt4WinCEProject/HTML/1031/default.htm @@ -384,7 +384,7 @@ function InitControls() QTMODULES.innerText = strModules; var strHTML = '<select id="PLATFORM_COMBO" name="PLATFORM_COMBO" style="width: 360px" width="250">'; - var qtVersions = QtEngine.GetQtWinCEVersions(); + var qtVersions = QtEngine.GetQtWinCEVersions(window.external.dte); var strDefaultQtWinCEVersion = QtEngine.GetDefaultWinCEVersion(); if (qtVersions.Count > 0) { for (var i=0; i < qtVersions.Count; ++i) { diff --git a/Qt4VS2003/Projects/Qt4WinCEProject/HTML/1033/default.htm b/Qt4VS2003/Projects/Qt4WinCEProject/HTML/1033/default.htm index 7fe6d95a..898c2aa6 100644 --- a/Qt4VS2003/Projects/Qt4WinCEProject/HTML/1033/default.htm +++ b/Qt4VS2003/Projects/Qt4WinCEProject/HTML/1033/default.htm @@ -390,7 +390,7 @@ function InitControls() QTMODULES.innerText = strModules; var strHTML = '<select id="PLATFORM_COMBO" name="PLATFORM_COMBO" style="width: 360px" width="250">'; - var qtVersions = QtEngine.GetQtWinCEVersions(); + var qtVersions = QtEngine.GetQtWinCEVersions(window.external.dte); var strDefaultQtWinCEVersion = QtEngine.GetDefaultWinCEVersion(); if (qtVersions.Count > 0) { for (var i=0; i < qtVersions.Count; ++i) { diff --git a/Qt4VS2003/Qt4VSAddin/AddQtVersionDialog.cs b/Qt4VS2003/Qt4VSAddin/AddQtVersionDialog.cs index 882a6a69..8a48fef6 100644 --- a/Qt4VS2003/Qt4VSAddin/AddQtVersionDialog.cs +++ b/Qt4VS2003/Qt4VSAddin/AddQtVersionDialog.cs @@ -245,7 +245,7 @@ namespace Qt4VSAddin { // check whether we have an SDK installed for this platform string platformName = versionInfo.GetVSPlatformName(); - if (!HelperFunctions.IsPlatformAvailable(platformName)) + if (!HelperFunctions.IsPlatformAvailable(Connect._applicationObject, platformName)) { MessageBox.Show(SR.GetString("AddQtVersionDialog_PlatformNotFoundError", platformName), null, MessageBoxButtons.OK, diff --git a/Qt4VS2003/QtProjectEngine/QtProjectEngine.cs b/Qt4VS2003/QtProjectEngine/QtProjectEngine.cs index 54864e01..bbe95509 100644 --- a/Qt4VS2003/QtProjectEngine/QtProjectEngine.cs +++ b/Qt4VS2003/QtProjectEngine/QtProjectEngine.cs @@ -486,7 +486,7 @@ namespace Nokia.QtProjectLib /// Returns the Windows CE Qt builds which are available. /// </summary> /// <returns>List of string</returns> - public ArrayList GetQtWinCEVersions() + public ArrayList GetQtWinCEVersions(EnvDTE.DTE dte) { ArrayList list = new ArrayList(); QtVersionManager vm = QtVersionManager.The(); @@ -495,7 +495,7 @@ namespace Nokia.QtProjectLib { VersionInformation vi = vm.GetVersionInfo(qtVersion); string platformName = GetWinCEPlatformName(qtVersion, vm); - if (vi.IsWinCEVersion() && HelperFunctions.IsPlatformAvailable(platformName)) + if (vi.IsWinCEVersion() && HelperFunctions.IsPlatformAvailable(dte, platformName)) list.Add(qtVersion); } return list; diff --git a/Qt4VS2003/QtProjectLib/HelperFunctions.cs b/Qt4VS2003/QtProjectLib/HelperFunctions.cs index 91857969..5debc14c 100644 --- a/Qt4VS2003/QtProjectLib/HelperFunctions.cs +++ b/Qt4VS2003/QtProjectLib/HelperFunctions.cs @@ -42,6 +42,7 @@ namespace Nokia.QtProjectLib using System.Reflection; using System.Text.RegularExpressions; using EnvDTE; + using System.Xml; public class HelperFunctions { @@ -1643,16 +1644,27 @@ namespace Nokia.QtProjectLib /// Returns true if the given platform is available in the global settings of Visual Studio. /// On error this function returns false. /// </summary> - public static bool IsPlatformAvailable(string platformName) + public static bool IsPlatformAvailable(EnvDTE.DTE dteObject, string platformName) { - if (availablePlatforms == null) + if (availablePlatforms == null || availablePlatforms.Count == 0) { - VCProjectEngine engine = new VCProjectEngineObject(); - IVCCollection platforms = engine.Platforms as IVCCollection; - availablePlatforms = new List<string>(platforms.Count); - foreach (VCPlatform platform in platforms) + availablePlatforms = new List<string>(); + // Read the available platforms from WCE.VCPlatform.config + // instead of using VCProjectEngine, because for some strange + // reason the project wizards isn't able to create a project if + // we are instantiating the VCProjectEngine here. + String vcPlatformCfg = dteObject.FullName; + int idx = vcPlatformCfg.LastIndexOf("\\"); + idx = vcPlatformCfg.LastIndexOf("\\", idx - 1); + idx = vcPlatformCfg.LastIndexOf("\\", idx - 1); + vcPlatformCfg = vcPlatformCfg.Substring(0, idx + 1); + vcPlatformCfg += "VC\\vcpackages\\WCE.VCPlatform.config"; + + FileStream stream = new FileStream(vcPlatformCfg, FileMode.Open); + XmlReader reader = new XmlTextReader(stream); + while (reader.ReadToFollowing("PlatformName")) { - availablePlatforms.Add(platform.Name); + availablePlatforms.Add(reader.ReadElementContentAsString()); } } |