Browse Source

Add "Abort build" and "Set platform" commands to the "Build" menu.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2714 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 18 years ago
parent
commit
922d231e4f
  1. 81
      src/Main/Base/Project/Src/Commands/BuildCommands.cs
  2. 5
      src/Main/Base/Project/Src/Gui/IWorkbench.cs
  3. 8
      src/Main/Base/Project/Src/Gui/Workbench/DefaultWorkbench.cs
  4. BIN
      src/Main/StartUp/Project/Resources/StringResources.resources

81
src/Main/Base/Project/Src/Commands/BuildCommands.cs

@ -199,6 +199,61 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -199,6 +199,61 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
}
}
public class AbortBuild : ISubmenuBuilder
{
public ToolStripItem[] BuildSubmenu(Codon codon, object owner)
{
return new[] { new MenuItem() };
}
sealed class MenuItem : ToolStripMenuItem
{
public MenuItem()
{
WorkbenchSingleton.Workbench.ProcessCommandKey += OnProcessCommandKey;
ResourceService.LanguageChanged += OnLanguageChanged;
OnLanguageChanged(null, null);
}
protected override void Dispose(bool disposing)
{
base.Dispose(disposing);
if (disposing) {
WorkbenchSingleton.Workbench.ProcessCommandKey -= OnProcessCommandKey;
ResourceService.LanguageChanged -= OnLanguageChanged;
}
}
public override bool Enabled {
get { return BuildEngine.IsGuiBuildRunning; }
}
void OnLanguageChanged(object sender, EventArgs e)
{
Text = StringParser.Parse("${res:XML.MainMenu.BuildMenu.AbortBuild}");
ShortcutKeyDisplayString = StringParser.Parse("${res:XML.MainMenu.BuildMenu.BreakKey}");
}
void OnProcessCommandKey(object sender, KeyEventArgs e)
{
// ToolStripMenuItem does not support Pause/Break as shortcut key, so we handle it manually
if (e.KeyData == Keys.Pause) {
if (Enabled) {
LoggingService.Debug("BREAK was pressed, aborting build.");
PerformClick();
e.Handled = true;
}
}
}
protected override void OnClick(EventArgs e)
{
base.OnClick(e);
BuildEngine.CancelGuiBuild();
}
}
}
public class SetConfigurationMenuBuilder : ISubmenuBuilder
{
public ToolStripItem[] BuildSubmenu(Codon codon, object owner)
@ -225,6 +280,32 @@ namespace ICSharpCode.SharpDevelop.Project.Commands @@ -225,6 +280,32 @@ namespace ICSharpCode.SharpDevelop.Project.Commands
}
}
public class SetPlatformMenuBuilder : ISubmenuBuilder
{
public ToolStripItem[] BuildSubmenu(Codon codon, object owner)
{
if (ProjectService.OpenSolution == null)
return new ToolStripItem[0];
IList<string> platformNames = ProjectService.OpenSolution.GetPlatformNames();
string activePlatform = ProjectService.OpenSolution.Preferences.ActivePlatform;
ToolStripMenuItem[] items = new ToolStripMenuItem[platformNames.Count];
for (int i = 0; i < items.Length; i++) {
items[i] = new ToolStripMenuItem(platformNames[i]);
items[i].Click += SetPlatformItemClick;
items[i].Checked = activePlatform == platformNames[i];
}
return items;
}
void SetPlatformItemClick(object sender, EventArgs e)
{
ToolStripMenuItem item = (ToolStripMenuItem)sender;
ProjectService.OpenSolution.Preferences.ActivePlatform = item.Text;
ProjectService.OpenSolution.ApplySolutionConfigurationAndPlatformToProjects();
ProjectBrowserPad.Instance.ProjectBrowserControl.RefreshView();
}
}
public class EditConfigurationsCommand : AbstractMenuCommand
{
public override void Run()

5
src/Main/Base/Project/Src/Gui/IWorkbench.cs

@ -147,5 +147,10 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -147,5 +147,10 @@ namespace ICSharpCode.SharpDevelop.Gui
/// Is called, when a workbench view was closed
/// </summary>
event ViewContentEventHandler ViewClosed;
/// <summary>
/// Is called when a key is pressed. Can be used to intercept command keys.
/// </summary>
event System.Windows.Forms.KeyEventHandler ProcessCommandKey;
}
}

8
src/Main/Base/Project/Src/Gui/Workbench/DefaultWorkbench.cs

@ -615,9 +615,17 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -615,9 +615,17 @@ namespace ICSharpCode.SharpDevelop.Gui
}
}
public event KeyEventHandler ProcessCommandKey;
// Handle keyboard shortcuts
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (ProcessCommandKey != null) {
KeyEventArgs e = new KeyEventArgs(keyData);
ProcessCommandKey(this, e);
if (e.Handled || e.SuppressKeyPress)
return true;
}
if (IsAltGRPressed)
return false;
return base.ProcessCmdKey(ref msg, keyData);

BIN
src/Main/StartUp/Project/Resources/StringResources.resources

Binary file not shown.
Loading…
Cancel
Save