Browse Source

Merge branch 'newNR' of github.com:icsharpcode/SharpDevelop into newNR

pull/59/merge
Peter Forstmeier 13 years ago
parent
commit
2d9811c57b
  1. 15
      src/AddIns/Misc/AddInManager2/Project/Src/Model/AddInSetup.cs
  2. 2
      src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs
  3. 2
      src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs
  4. 2
      src/Main/ICSharpCode.Core.Presentation/Menu/MenuCheckBox.cs
  5. 2
      src/Main/ICSharpCode.Core.Presentation/Menu/MenuCommand.cs
  6. 78
      src/Main/ICSharpCode.Core.Presentation/Menu/MenuService.cs
  7. 2
      src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarButton.cs

15
src/AddIns/Misc/AddInManager2/Project/Src/Model/AddInSetup.cs

@ -808,7 +808,20 @@ namespace ICSharpCode.AddInManager2.Model @@ -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()

2
src/AddIns/Misc/AddInManager2/Project/Src/Model/PackageRepositories.cs

@ -25,7 +25,7 @@ namespace ICSharpCode.AddInManager2.Model @@ -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)
{

2
src/Main/Base/Project/Src/Commands/MenuItemBuilders.cs

@ -442,7 +442,7 @@ namespace ICSharpCode.SharpDevelop.Commands @@ -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);

2
src/Main/ICSharpCode.Core.Presentation/Menu/MenuCheckBox.cs

@ -34,7 +34,7 @@ namespace ICSharpCode.Core.Presentation @@ -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);
}
}

2
src/Main/ICSharpCode.Core.Presentation/Menu/MenuCommand.cs

@ -29,7 +29,7 @@ namespace ICSharpCode.Core.Presentation @@ -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);
}
}

78
src/Main/ICSharpCode.Core.Presentation/Menu/MenuService.cs

@ -4,7 +4,11 @@ @@ -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 @@ -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);
/// <remarks>Only works with Windows.Forms.Keys. The WPF Key enum seems to be horribly distorted!</remarks>
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;
}
}
}

2
src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarButton.cs

@ -42,7 +42,7 @@ namespace ICSharpCode.Core.Presentation @@ -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();

Loading…
Cancel
Save