diff --git a/data/resources/StringResources.it.resx b/data/resources/StringResources.it.resx
index 40dd09b7fb..f15ed87494 100644
--- a/data/resources/StringResources.it.resx
+++ b/data/resources/StringResources.it.resx
@@ -229,6 +229,69 @@ Scaricare un componente da internet, poi cliccare 'Install AddIn' e selezionare
Formato file sconosciuto:
+
+ Installa da archivio...
+
+
+ Repository:
+
+
+ Cerca:
+
+
+ Creato da:
+
+
+ Dipendenze:
+
+
+ Nome file:
+
+
+ Versione installata:
+
+
+ Più informazioni
+
+
+ Nuova versione:
+
+
+ Versione:
+
+
+ Mostra i Termini di Licenza
+
+
+ &Accetto
+
+
+ &Rifiuto
+
+
+ Aggiungi
+
+
+ Nome:
+
+
+ Elimina
+
+
+ Sorgente:
+
+
+ Repositories
+
+
+ Disponibile
+
+
+ Installato
+
+
+ Aggiornamenti
+
Questo file contiene dei ritorni a capo inconsistenti.
@@ -5760,6 +5823,9 @@ Microsoft.Tools.WindowsInstallerXml.Extensions.NetFxCompiler, WixNetFxExtension<
Copia nome risorsa
+
+ Modifica descrizione
+
&Rinomina
diff --git a/data/resources/StringResources.nl.resx b/data/resources/StringResources.nl.resx
index 04ca250840..24dd8cdf57 100644
--- a/data/resources/StringResources.nl.resx
+++ b/data/resources/StringResources.nl.resx
@@ -358,6 +358,12 @@ Deze stoppen met werken na verwijderen van deze AddIn.
SharpDevelop AddIns|*.sdaddin;*.addin|Alle bestanden|*.*
+
+ Hier klikken om de updates te zien.
+
+
+ Er zijn updates voor SharpDevelop beschikbaar.
+
Beschikbaar
diff --git a/data/resources/StringResources.resx b/data/resources/StringResources.resx
index 29396b9650..b2468ce9ed 100644
--- a/data/resources/StringResources.resx
+++ b/data/resources/StringResources.resx
@@ -3910,6 +3910,12 @@ has been changed externally. Do you want to reload it?
Reverse Incremental Search:
+
+ {0} is not a valid .NET assembly.
+
+
+ {0} is not accessible or doesn't exist anymore.
+
Error loading code-completion information for ${Assembly} from ${Filename}:
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
index 69acfbe1e4..16005a2258 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.addin
@@ -317,6 +317,7 @@
+
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
index 472481f796..0cfab3c3ae 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
@@ -88,6 +88,7 @@
+
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/ConvertInterfaceToAbstractClassContextAction.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/ConvertInterfaceToAbstractClassContextAction.cs
new file mode 100644
index 0000000000..1e630de303
--- /dev/null
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/ConvertInterfaceToAbstractClassContextAction.cs
@@ -0,0 +1,62 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using ICSharpCode.NRefactory.CSharp;
+using ICSharpCode.NRefactory.CSharp.Refactoring;
+using ICSharpCode.SharpDevelop.Refactoring;
+using CSharpBinding.Parser;
+
+namespace CSharpBinding.Refactoring
+{
+ [ContextAction("Convert interface to abstract class", Description = "Converts an interface to a class with abstract members.")]
+ public class ConvertInterfaceToAbstractClassContextAction : ContextAction
+ {
+ public override async Task IsAvailableAsync(EditorRefactoringContext context, CancellationToken cancellationToken)
+ {
+ SyntaxTree st = await context.GetSyntaxTreeAsync().ConfigureAwait(false);
+ Identifier identifier = (Identifier) st.GetNodeAt(context.CaretLocation, node => node.Role == Roles.Identifier);
+ if (identifier == null)
+ return false;
+ TypeDeclaration typeDeclaration = identifier.Parent as TypeDeclaration;
+ return (typeDeclaration != null) && (typeDeclaration.ClassType == ClassType.Interface);
+ }
+
+ public override void Execute(EditorRefactoringContext context)
+ {
+ CSharpFullParseInformation parseInformation = context.GetParseInformation() as CSharpFullParseInformation;
+ if (parseInformation != null) {
+ SyntaxTree st = parseInformation.SyntaxTree;
+ Identifier identifier = (Identifier) st.GetNodeAt(context.CaretLocation, node => node.Role == Roles.Identifier);
+ if (identifier == null)
+ return;
+ TypeDeclaration interfaceTypeDeclaration = identifier.Parent as TypeDeclaration;
+ if (interfaceTypeDeclaration != null) {
+ // Generate abstract class from interface and abstract members from interface members
+ TypeDeclaration abstractClassTypeNode = (TypeDeclaration) interfaceTypeDeclaration.Clone();
+ abstractClassTypeNode.ClassType = ClassType.Class;
+ abstractClassTypeNode.Modifiers |= Modifiers.Abstract;
+ foreach (var entity in abstractClassTypeNode.Children.OfType()) {
+ entity.Modifiers |= Modifiers.Abstract | Modifiers.Public;
+ }
+
+ var refactoringContext = SDRefactoringContext.Create(context.Editor, CancellationToken.None);
+ using (Script script = refactoringContext.StartScript()) {
+ // Replace interface node with node of abstract class
+ script.Replace(interfaceTypeDeclaration, abstractClassTypeNode);
+ }
+ }
+ }
+ }
+
+ public override string DisplayName
+ {
+ get {
+ return "Convert interface to abstract class";
+ }
+ }
+ }
+}
diff --git a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/PropertyOrFieldWrapper.cs b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/PropertyOrFieldWrapper.cs
index 011896a1f1..d19a36417e 100644
--- a/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/PropertyOrFieldWrapper.cs
+++ b/src/AddIns/BackendBindings/CSharpBinding/Project/Src/Refactoring/PropertyOrFieldWrapper.cs
@@ -45,6 +45,11 @@ namespace CSharpBinding.Refactoring
}
set {
isIncluded = value;
+ if (!value) {
+ // Remove other flags, too
+ AddCheckForNull = false;
+ AddRangeCheck = false;
+ }
OnPropertyChanged("IsIncluded");
}
}
@@ -90,6 +95,11 @@ namespace CSharpBinding.Refactoring
get { return addCheckForNull; }
set {
addCheckForNull = value;
+ if (value) {
+ // Assure that IsIncluded is set to true as well
+ IsIncluded = true;
+ }
+ OnPropertyChanged("AddCheckForNull");
}
}
@@ -98,6 +108,11 @@ namespace CSharpBinding.Refactoring
get { return addRangeCheck; }
set {
addRangeCheck = value;
+ if (value) {
+ // Assure that IsIncluded is set to true as well
+ IsIncluded = true;
+ }
+ OnPropertyChanged("AddRangeCheck");
}
}
diff --git a/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin b/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin
index 4d7ad92c6b..5115ddb504 100644
--- a/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin
+++ b/src/AddIns/Debugger/Debugger.AddIn/Debugger.AddIn.addin
@@ -14,7 +14,7 @@
-
+
-
+
+
+
+
+
diff --git a/src/AddIns/Debugger/Debugger.AddIn/Pads/ClassBrowserSupport.cs b/src/AddIns/Debugger/Debugger.AddIn/Pads/ClassBrowserSupport.cs
index c64f58d09a..dd9c069aed 100644
--- a/src/AddIns/Debugger/Debugger.AddIn/Pads/ClassBrowserSupport.cs
+++ b/src/AddIns/Debugger/Debugger.AddIn/Pads/ClassBrowserSupport.cs
@@ -4,6 +4,7 @@
using System;
using System.IO;
using Debugger;
+using ICSharpCode.Core.Presentation;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop.Dom;
@@ -137,7 +138,10 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
public override void ShowContextMenu()
{
- // Don't show context menu as for usual AssemblyTreeNodes.
+ var assemblyModel = this.Model as IAssemblyModel;
+ if (assemblyModel != null) {
+ var ctx = MenuService.ShowContextMenu(null, assemblyModel, "/SharpDevelop/Services/DebuggerService/ModuleContextMenu");
+ }
}
static IAssemblyModel CreateAssemblyModel(Module module)
@@ -151,4 +155,30 @@ namespace ICSharpCode.SharpDevelop.Gui.Pads
return model;
}
}
+
+ ///
+ /// RunAssemblyWithDebuggerCommand.
+ ///
+ class AddModuleToWorkspaceCommand : SimpleCommand
+ {
+ public override bool CanExecute(object parameter)
+ {
+ IAssemblyModel assemblyModel = parameter as IAssemblyModel;
+ return (assemblyModel != null) && assemblyModel.Context.IsValid;
+ }
+
+ public override void Execute(object parameter)
+ {
+ var classBrowser = SD.GetService();
+ var modelFactory = SD.GetService();
+ if ((classBrowser != null) && (modelFactory != null)) {
+ IAssemblyModel assemblyModel = (IAssemblyModel) parameter;
+
+ // Create a new copy of this assembly model
+ IAssemblyModel newAssemblyModel = modelFactory.SafelyCreateAssemblyModelFromFile(assemblyModel.Context.Location);
+ if (newAssemblyModel != null)
+ classBrowser.AssemblyList.Assemblies.Add(newAssemblyModel);
+ }
+ }
+ }
}
diff --git a/src/AddIns/Misc/AddInManager2/Project/Src/View/AddInsView.xaml b/src/AddIns/Misc/AddInManager2/Project/Src/View/AddInsView.xaml
index 9acd6404d9..5ba8aafd61 100644
--- a/src/AddIns/Misc/AddInManager2/Project/Src/View/AddInsView.xaml
+++ b/src/AddIns/Misc/AddInManager2/Project/Src/View/AddInsView.xaml
@@ -119,6 +119,10 @@
-->
+
+
@@ -491,7 +495,7 @@
-