From 06555aeb0efa5c9611996e87bc92b923bc12c980 Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Wed, 19 Jun 2013 17:20:49 +0200 Subject: [PATCH 1/3] Change default MyGet feed url MyGet will stop supporting accessing the feed through http on July 1st. --- .../Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs b/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs index d4ba2d1cc9..4723ee6b78 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs @@ -25,7 +25,7 @@ namespace ICSharpCode.AddInManager2.Model private IAddInManagerSettings _settings; public const string DefaultRepositoryName = "SharpDevelop AddIn Repository"; - public const string DefaultRepositorySource = "http://www.myget.org/F/sharpdevelop/"; + public const string DefaultRepositorySource = "https://www.myget.org/F/sharpdevelop/"; public PackageRepositories(IAddInManagerEvents events, IAddInManagerSettings settings) { From b324394326d0873310048110bdff875f97c82521 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Wed, 19 Jun 2013 18:42:33 +0200 Subject: [PATCH 2/3] implement proper display of generic shortcut keys such as OemQuestion --- .../Project/Src/Commands/MenuItemBuilders.cs | 2 +- .../Menu/MenuCheckBox.cs | 2 +- .../Menu/MenuCommand.cs | 2 +- .../Menu/MenuService.cs | 78 +++++++++++++++++++ .../ToolBar/ToolBarButton.cs | 2 +- 5 files changed, 82 insertions(+), 4 deletions(-) diff --git a/src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs b/src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs index 84623a1227..cc88bc0693 100644 --- a/src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs +++ b/src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs @@ -442,7 +442,7 @@ namespace ICSharpCode.SharpDevelop.Commands SD.Workbench.MainWindow.InputBindings.Add( new System.Windows.Input.InputBinding(item.Command, kg) ); - item.InputGestureText = kg.GetDisplayStringForCulture(Thread.CurrentThread.CurrentUICulture); + item.InputGestureText = MenuService.GetDisplayStringForShortcut(kg); } list.Add(item); diff --git a/src/Main/ICSharpCode.Core.Presentation/Menu/MenuCheckBox.cs b/src/Main/ICSharpCode.Core.Presentation/Menu/MenuCheckBox.cs index 765f68cc94..dba8643bfd 100644 --- a/src/Main/ICSharpCode.Core.Presentation/Menu/MenuCheckBox.cs +++ b/src/Main/ICSharpCode.Core.Presentation/Menu/MenuCheckBox.cs @@ -34,7 +34,7 @@ namespace ICSharpCode.Core.Presentation if (!string.IsNullOrEmpty(codon.Properties["shortcut"])) { KeyGesture kg = MenuService.ParseShortcut(codon.Properties["shortcut"]); MenuCommand.AddGestureToInputBindingOwner(inputBindingOwner, kg, this.Command, null); - this.InputGestureText = kg.GetDisplayStringForCulture(Thread.CurrentThread.CurrentUICulture); + this.InputGestureText = MenuService.GetDisplayStringForShortcut(kg); } } diff --git a/src/Main/ICSharpCode.Core.Presentation/Menu/MenuCommand.cs b/src/Main/ICSharpCode.Core.Presentation/Menu/MenuCommand.cs index b46f010e2d..f9d25c446d 100644 --- a/src/Main/ICSharpCode.Core.Presentation/Menu/MenuCommand.cs +++ b/src/Main/ICSharpCode.Core.Presentation/Menu/MenuCommand.cs @@ -29,7 +29,7 @@ namespace ICSharpCode.Core.Presentation if (!string.IsNullOrEmpty(codon.Properties["shortcut"])) { KeyGesture kg = MenuService.ParseShortcut(codon.Properties["shortcut"]); AddGestureToInputBindingOwner(inputBindingOwner, kg, this.Command, GetFeatureName()); - this.InputGestureText = kg.GetDisplayStringForCulture(Thread.CurrentThread.CurrentUICulture); + this.InputGestureText = MenuService.GetDisplayStringForShortcut(kg); } } diff --git a/src/Main/ICSharpCode.Core.Presentation/Menu/MenuService.cs b/src/Main/ICSharpCode.Core.Presentation/Menu/MenuService.cs index 6c89195d45..5eab73752a 100644 --- a/src/Main/ICSharpCode.Core.Presentation/Menu/MenuService.cs +++ b/src/Main/ICSharpCode.Core.Presentation/Menu/MenuService.cs @@ -4,7 +4,11 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Globalization; using System.Reflection; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading; using System.Windows; using System.Windows.Controls; using System.Windows.Controls.Primitives; @@ -240,5 +244,79 @@ namespace ICSharpCode.Core.Presentation { return (KeyGesture)new KeyGestureConverter().ConvertFromInvariantString(text.Replace('|', '+')); } + + public static string GetDisplayStringForShortcut(KeyGesture kg) + { + string old = kg.GetDisplayStringForCulture(Thread.CurrentThread.CurrentUICulture); + string text = KeyCodeConversion.KeyToUnicode(kg.Key.ToKeys()); + if (text != null) { + if ((kg.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt) + text = "Alt+" + text; + if ((kg.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift) + text = "Shift+" + text; + if ((kg.Modifiers & ModifierKeys.Control) == ModifierKeys.Control) + text = "Ctrl+" + text; + if ((kg.Modifiers & ModifierKeys.Windows) == ModifierKeys.Windows) + text = "Win+" + text; + return text; + } + return old; + } + } + + static class KeyCodeConversion + { + [DllImport("user32.dll")] + static extern int ToUnicodeEx(uint wVirtKey, uint wScanCode, byte [] + lpKeyState, [Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pwszBuff, + int cchBuff, uint wFlags, IntPtr dwhkl); + + [DllImport("user32.dll")] + static extern bool GetKeyboardState(byte[] pbKeyState); + + [DllImport("user32.dll")] + static extern uint MapVirtualKeyEx(uint uCode, uint uMapType, IntPtr dwhkl); + + [DllImport("user32.dll")] + static extern IntPtr GetKeyboardLayout(uint idThread); + + /// Only works with Windows.Forms.Keys. The WPF Key enum seems to be horribly distorted! + public static string KeyToUnicode(WinForms.Keys key) + { + StringBuilder sb = new StringBuilder(255); + byte[] keyState = new byte[255]; + IntPtr hkl = GetKeyboardLayout(0); + + if (!GetKeyboardState(keyState)) return null; + + uint scanCode = MapVirtualKeyEx((uint)key, 0, hkl); + if (scanCode < 1) return null; + + ClearKeyboardBuffer(hkl); + int len = ToUnicodeEx((uint)key, scanCode, keyState, sb, sb.Capacity, 0, hkl); + if (len > 0) + return sb.ToString(0, len).ToUpper(); + + ClearKeyboardBuffer(hkl); + return null; + } + + static void ClearKeyboardBuffer(IntPtr hkl) + { + StringBuilder sb = new StringBuilder(10); + uint key = (uint)WinForms.Keys.Space; + int rc; + do { + rc = ToUnicodeEx(key, MapVirtualKeyEx(key, 0, hkl), new byte[255], sb, sb.Capacity, 0, hkl); + } while(rc < 0); + } + + public static WinForms.Keys ToKeys(this Key key) + { + WinForms.Keys result; + if (Enum.TryParse(key.ToString(), out result)) + return result; + return WinForms.Keys.None; + } } } diff --git a/src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarButton.cs b/src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarButton.cs index 6dde062a06..d770adea41 100644 --- a/src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarButton.cs +++ b/src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarButton.cs @@ -42,7 +42,7 @@ namespace ICSharpCode.Core.Presentation if (!string.IsNullOrEmpty(codon.Properties["shortcut"])) { KeyGesture kg = MenuService.ParseShortcut(codon.Properties["shortcut"]); MenuCommand.AddGestureToInputBindingOwner(inputBindingOwner, kg, this.Command, GetFeatureName()); - this.inputGestureText = kg.GetDisplayStringForCulture(Thread.CurrentThread.CurrentUICulture); + this.inputGestureText = MenuService.GetDisplayStringForShortcut(kg); } UpdateText(); From f948a9cbdaf39d4ae1244e01a86e3419e83808a5 Mon Sep 17 00:00:00 2001 From: Andreas Weizel Date: Thu, 20 Jun 2013 01:53:56 +0200 Subject: [PATCH 3/3] Fix for version comparison issue showing already installed packages as "update" in repository. --- .../AddInManager2/Project/Src/Model/AddInSetup.cs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/Model/AddInSetup.cs b/src/AddIns/Misc/AddInManager2/Project/Src/Model/AddInSetup.cs index 7554d400cc..a7b18f701d 100644 --- a/src/AddIns/Misc/AddInManager2/Project/Src/Model/AddInSetup.cs +++ b/src/AddIns/Misc/AddInManager2/Project/Src/Model/AddInSetup.cs @@ -808,7 +808,20 @@ namespace ICSharpCode.AddInManager2.Model } } - return addInVersion.CompareTo(nuGetPackage.Version.Version); + // Patch versions to have all 4 sub-numbers in both (workarounding bad NuGet Core behaviour with versions) + Version fixedAddInVersion = new Version( + (addInVersion.Major >= 0) ? addInVersion.Major : 0, + (addInVersion.Minor >= 0) ? addInVersion.Minor : 0, + (addInVersion.Build >= 0) ? addInVersion.Build : 0, + (addInVersion.Revision >= 0) ? addInVersion.Revision : 0); + Version nuGetVersion = nuGetPackage.Version.Version; + Version fixedNuGetVersion = new Version( + (nuGetVersion.Major >= 0) ? nuGetVersion.Major : 0, + (nuGetVersion.Minor >= 0) ? nuGetVersion.Minor : 0, + (nuGetVersion.Build >= 0) ? nuGetVersion.Build : 0, + (nuGetVersion.Revision >= 0) ? nuGetVersion.Revision : 0); + + return fixedAddInVersion.CompareTo(fixedNuGetVersion); } public void RemoveUnreferencedNuGetPackages()