Browse Source

reintroduce ResourceEditor

pull/45/merge
Siegfried Pammer 13 years ago
parent
commit
01253ffb9c
  1. 17
      SharpDevelop.sln
  2. 1
      src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj
  3. 4
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs
  4. 12
      src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj
  5. 7
      src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj.user
  6. 7
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/CopyResourceNameCommand.cs
  7. 14
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs
  8. 31
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceCodeGeneratorTool.cs
  9. 4
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs
  10. 6
      src/Main/Base/Project/Src/Services/LanguageBinding/DefaultLanguageBinding.cs
  11. 8
      src/Main/Base/Project/Src/Services/LanguageBinding/ILanguageBinding.cs

17
SharpDevelop.sln

@ -69,7 +69,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "src\AddIns\Ba @@ -69,7 +69,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WixBinding", "src\AddIns\Ba
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.Scripting", "src\AddIns\BackendBindings\Scripting\Project\ICSharpCode.Scripting.csproj", "{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}"
EndProject
Project("{00000000-0000-0000-0000-000000000000}") = "VBNetBinding", "src\AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.vbproj", "{EB9FBA17-88C7-4BA6-8471-1088F8C494F5}"
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "VBNetBinding", "src\AddIns\BackendBindings\VBNetBinding\Project\VBNetBinding.vbproj", "{EB9FBA17-88C7-4BA6-8471-1088F8C494F5}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Misc", "Misc", "{F3662720-9EA2-4591-BBC6-97361DCE50A9}"
EndProject
@ -149,6 +149,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.Designer", "src\A @@ -149,6 +149,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WpfDesign.Designer", "src\A
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FormsDesigner", "src\AddIns\DisplayBindings\FormsDesigner\Project\FormsDesigner.csproj", "{0CD86A0B-73BB-4E7E-B476-AB84389164B1}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ResourceEditor", "src\AddIns\DisplayBindings\ResourceEditor\Project\ResourceEditor.csproj", "{E378E217-0C0C-473F-88A2-BF9748207511}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Analysis", "Analysis", "{7019F43E-DFD7-4D1C-8C96-E75D55646DE7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnitTesting", "src\AddIns\Analysis\UnitTesting\UnitTesting.csproj", "{1F261725-6318-4434-A1B1-6C70CE4CD324}"
@ -279,6 +281,10 @@ Global @@ -279,6 +281,10 @@ Global
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7048AE18-EB93-4A84-82D0-DD60EB58ADBD}.Release|Any CPU.Build.0 = Release|Any CPU
{EB9FBA17-88C7-4BA6-8471-1088F8C494F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EB9FBA17-88C7-4BA6-8471-1088F8C494F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB9FBA17-88C7-4BA6-8471-1088F8C494F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EB9FBA17-88C7-4BA6-8471-1088F8C494F5}.Release|Any CPU.Build.0 = Release|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{9196DD8A-B4D4-4780-8742-C5762E547FC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
@ -443,10 +449,10 @@ Global @@ -443,10 +449,10 @@ Global
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3DF4060F-5EE0-41CF-8096-F27355FD5511}.Release|Any CPU.Build.0 = Release|Any CPU
{EB9FBA17-88C7-4BA6-8471-1088F8C494F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EB9FBA17-88C7-4BA6-8471-1088F8C494F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EB9FBA17-88C7-4BA6-8471-1088F8C494F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EB9FBA17-88C7-4BA6-8471-1088F8C494F5}.Release|Any CPU.Build.0 = Release|Any CPU
{E378E217-0C0C-473F-88A2-BF9748207511}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{E378E217-0C0C-473F-88A2-BF9748207511}.Debug|Any CPU.Build.0 = Debug|Any CPU
{E378E217-0C0C-473F-88A2-BF9748207511}.Release|Any CPU.ActiveCfg = Release|Any CPU
{E378E217-0C0C-473F-88A2-BF9748207511}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -521,6 +527,7 @@ Global @@ -521,6 +527,7 @@ Global
{88DA149F-21B2-48AB-82C4-28FB6BDFD783} = {D54BEB89-8CBE-475C-8BB9-836D2FD71260}
{78CC29AC-CC79-4355-B1F2-97936DF198AC} = {D54BEB89-8CBE-475C-8BB9-836D2FD71260}
{0CD86A0B-73BB-4E7E-B476-AB84389164B1} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{E378E217-0C0C-473F-88A2-BF9748207511} = {11BF9245-88A3-4A0A-9A8A-EC9D98036B0F}
{7019F43E-DFD7-4D1C-8C96-E75D55646DE7} = {39327899-ED91-4F7F-988C-4FE4E17C014D}
{1F261725-6318-4434-A1B1-6C70CE4CD324} = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7}
{3EAA45A9-735C-4AC7-A799-947B93EA449D} = {7019F43E-DFD7-4D1C-8C96-E75D55646DE7}

1
src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj

@ -45,6 +45,7 @@ @@ -45,6 +45,7 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.Build.Utilities.v4.0" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="PresentationCore">
<RequiredTargetFramework>3.0</RequiredTargetFramework>
</Reference>

4
src/AddIns/BackendBindings/CSharpBinding/Project/Src/CSharpLanguageBinding.cs

@ -35,5 +35,9 @@ namespace CSharpBinding @@ -35,5 +35,9 @@ namespace CSharpBinding
public override ICodeGenerator CodeGenerator {
get { return new CSharpCodeGenerator(); }
}
public override System.CodeDom.Compiler.CodeDomProvider CodeDomProvider {
get { return new Microsoft.CSharp.CSharpCodeProvider(); }
}
}
}

12
src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj

@ -21,7 +21,7 @@ @@ -21,7 +21,7 @@
<FileAlignment>4096</FileAlignment>
<WarningLevel>4</WarningLevel>
<TreatWarningsAsErrors>false</TreatWarningsAsErrors>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
</PropertyGroup>
@ -92,6 +92,11 @@ @@ -92,6 +92,11 @@
<Compile Include="Src\ResourceCodeGeneratorTool.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\..\..\Libraries\NRefactory\ICSharpCode.NRefactory\ICSharpCode.NRefactory.csproj">
<Project>{3B2A5653-EC97-4001-BB9B-D90F1AF2C371}</Project>
<Name>ICSharpCode.NRefactory</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\Base\Project\ICSharpCode.SharpDevelop.csproj">
<Project>{2748AD25-9C63-4E12-877B-4DCE96FBED54}</Project>
<Name>ICSharpCode.SharpDevelop</Name>
@ -107,11 +112,6 @@ @@ -107,11 +112,6 @@
<Name>ICSharpCode.Core.WinForms</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Dom\Project\ICSharpCode.SharpDevelop.Dom.csproj">
<Project>{924EE450-603D-49C1-A8E5-4AFAA31CE6F3}</Project>
<Name>ICSharpCode.SharpDevelop.Dom</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\..\..\..\Main\ICSharpCode.SharpDevelop.Widgets\Project\ICSharpCode.SharpDevelop.Widgets.csproj">
<Project>{8035765F-D51F-4A0C-A746-2FD100E19419}</Project>
<Name>ICSharpCode.SharpDevelop.Widgets</Name>

7
src/AddIns/DisplayBindings/ResourceEditor/Project/ResourceEditor.csproj.user

@ -1,7 +0,0 @@ @@ -1,7 +0,0 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<LastOpenVersion>8.0.50215</LastOpenVersion>
<ProjectView>ShowAllFiles</ProjectView>
<ProjectTrust>0</ProjectTrust>
</PropertyGroup>
</Project>

7
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/Commands/CopyResourceNameCommand.cs

@ -2,8 +2,9 @@ @@ -2,8 +2,9 @@
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using System.Windows.Forms;
using ICSharpCode.Core;
using ICSharpCode.Core.WinForms;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
namespace ResourceEditor
@ -12,10 +13,10 @@ namespace ResourceEditor @@ -12,10 +13,10 @@ namespace ResourceEditor
{
public override void Run()
{
ResourceEditorControl editor = ((ResourceEditWrapper)WorkbenchSingleton.Workbench.ActiveViewContent).ResourceEditor;
ResourceEditorControl editor = ((ResourceEditWrapper)SD.Workbench.ActiveViewContent).ResourceEditor;
if(editor.ResourceList.SelectedItems.Count > 0) {
ClipboardWrapper.SetText(editor.ResourceList.SelectedItems[0].Text);
Clipboard.SetText(editor.ResourceList.SelectedItems[0].Text);
}
}
}

14
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/DisplayDefinition.cs

@ -10,13 +10,15 @@ using ICSharpCode.Core; @@ -10,13 +10,15 @@ using ICSharpCode.Core;
using ICSharpCode.Core.WinForms;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.WinForms;
using ICSharpCode.SharpDevelop.Workbench;
namespace ResourceEditor
{
public class ResourceEditorDisplayBinding : IDisplayBinding
{
// IDisplayBinding interface
public bool CanCreateContentForFile(string fileName)
public bool CanCreateContentForFile(FileName fileName)
{
return true; // definition in .addin does extension-based filtering
}
@ -26,12 +28,12 @@ namespace ResourceEditor @@ -26,12 +28,12 @@ namespace ResourceEditor
return new ResourceEditWrapper(file);
}
public bool IsPreferredBindingForFile(string fileName)
public bool IsPreferredBindingForFile(FileName fileName)
{
return true;
}
public double AutoDetectFileContent(string fileName, Stream fileContent, string detectedMimeType)
public double AutoDetectFileContent(FileName fileName, Stream fileContent, string detectedMimeType)
{
return 1;
}
@ -146,7 +148,7 @@ namespace ResourceEditor @@ -146,7 +148,7 @@ namespace ResourceEditor
resourceEditor.ResourceList.Items.Remove(item);
}
resourceEditor.ResourceList.OnChanged();
ClipboardWrapper.SetDataObject(tmphash);
SD.Clipboard.SetDataObject(tmphash);
}
public void Copy()
@ -160,7 +162,7 @@ namespace ResourceEditor @@ -160,7 +162,7 @@ namespace ResourceEditor
object resourceValue = GetClonedResource(resourceEditor.ResourceList.Resources[item.Text].ResourceValue);
tmphash.Add(item.Text, resourceValue); // copy a clone to clipboard
}
ClipboardWrapper.SetDataObject(tmphash);
SD.Clipboard.SetDataObject(tmphash);
}
public void Paste()
@ -169,7 +171,7 @@ namespace ResourceEditor @@ -169,7 +171,7 @@ namespace ResourceEditor
return;
}
IDataObject dob = ClipboardWrapper.GetDataObject();
IDataObject dob = Clipboard.GetDataObject();
if (dob == null)
return;

31
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceCodeGeneratorTool.cs

@ -8,6 +8,7 @@ using System.Resources.Tools; @@ -8,6 +8,7 @@ using System.Resources.Tools;
using System.IO;
using ICSharpCode.Core;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Project;
@ -29,12 +30,17 @@ namespace ResourceEditor @@ -29,12 +30,17 @@ namespace ResourceEditor
// Ensure that the generated code will not conflict with an
// existing class.
if (context.Project != null) {
IProjectContent pc = ParserService.GetProjectContent(context.Project);
ICompilation pc = SD.ParserService.GetCompilation(context.Project);
if (pc != null) {
IClass existingClass = pc.GetClass(context.OutputNamespace + "." + StronglyTypedResourceBuilder.VerifyResourceName(Path.GetFileNameWithoutExtension(inputFilePath), pc.Language.CodeDomProvider), 0);
var codeDomProvider = context.Project.LanguageBinding.CodeDomProvider;
string resourceName = Path.GetFileNameWithoutExtension(inputFilePath);
if (codeDomProvider != null) {
resourceName = StronglyTypedResourceBuilder.VerifyResourceName(resourceName, codeDomProvider);
}
var existingClass = pc.FindType(new FullTypeName(context.OutputNamespace + "." + resourceName)).GetDefinition();
if (existingClass != null) {
if (!IsGeneratedResourceClass(existingClass)) {
context.MessageView.AppendLine(String.Format(System.Globalization.CultureInfo.CurrentCulture, ResourceService.GetString("ResourceEditor.ResourceCodeGeneratorTool.ClassConflict"), inputFilePath, existingClass.FullyQualifiedName));
context.MessageView.AppendLine(String.Format(System.Globalization.CultureInfo.CurrentCulture, ResourceService.GetString("ResourceEditor.ResourceCodeGeneratorTool.ClassConflict"), inputFilePath, existingClass.FullName));
return;
}
}
@ -66,7 +72,7 @@ namespace ResourceEditor @@ -66,7 +72,7 @@ namespace ResourceEditor
Path.GetFileNameWithoutExtension(inputFilePath), // baseName
generatedCodeNamespace, // generatedCodeNamespace
context.OutputNamespace, // resourcesNamespace
context.Project.LanguageProperties.CodeDomProvider, // codeProvider
context.Project.LanguageBinding.CodeDomProvider, // codeProvider
createInternalClass, // internal class
out unmatchable
));
@ -80,20 +86,19 @@ namespace ResourceEditor @@ -80,20 +86,19 @@ namespace ResourceEditor
/// Determines whether the specified class is a generated resource
/// class, based on the attached attributes.
/// </summary>
static bool IsGeneratedResourceClass(IClass @class)
static bool IsGeneratedResourceClass(ITypeDefinition type)
{
IClass generatedCodeAttributeClass = @class.ProjectContent.GetClass("System.CodeDom.Compiler.GeneratedCodeAttribute", 0);
if (generatedCodeAttributeClass == null) {
var generatedCodeAttributeType = type.Compilation.FindType(typeof(System.CodeDom.Compiler.GeneratedCodeAttribute));
if (generatedCodeAttributeType.Kind == TypeKind.Unknown) {
LoggingService.Info("Could not find the class for 'System.CodeDom.Compiler.GeneratedCodeAttribute'.");
return false;
}
IReturnType generatedCodeAttribute = generatedCodeAttributeClass.DefaultReturnType;
foreach (IAttribute att in @class.Attributes) {
if (att.AttributeType.Equals(generatedCodeAttribute) &&
att.PositionalArguments.Count == 2 &&
String.Equals("System.Resources.Tools.StronglyTypedResourceBuilder", att.PositionalArguments[0] as string, StringComparison.Ordinal)) {
return true;
foreach (IAttribute att in type.Attributes) {
if (att.AttributeType.Equals(generatedCodeAttributeType) && att.PositionalArguments.Count == 2) {
var firstArg = att.PositionalArguments[0].ConstantValue as string;
if (string.Equals(typeof(StronglyTypedResourceBuilder).FullName, firstArg, StringComparison.Ordinal))
return true;
}
}
return false;

4
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceEdit/ResourceList.cs

@ -129,7 +129,7 @@ namespace ResourceEditor @@ -129,7 +129,7 @@ namespace ResourceEditor
}
}
public void LoadFile(string filename, Stream stream)
public void LoadFile(FileName filename, Stream stream)
{
resources.Clear();
metadata.Clear();
@ -168,7 +168,7 @@ namespace ResourceEditor @@ -168,7 +168,7 @@ namespace ResourceEditor
InitializeListView();
}
public void SaveFile(string filename, Stream stream)
public void SaveFile(FileName filename, Stream stream)
{
switch (Path.GetExtension(filename).ToLowerInvariant()) {

6
src/Main/Base/Project/Src/Services/LanguageBinding/DefaultLanguageBinding.cs

@ -36,5 +36,11 @@ namespace ICSharpCode.SharpDevelop @@ -36,5 +36,11 @@ namespace ICSharpCode.SharpDevelop
return DefaultCodeGenerator.DefaultInstance;
}
}
public virtual System.CodeDom.Compiler.CodeDomProvider CodeDomProvider {
get {
return null;
}
}
}
}

8
src/Main/Base/Project/Src/Services/LanguageBinding/ILanguageBinding.cs

@ -46,5 +46,13 @@ namespace ICSharpCode.SharpDevelop @@ -46,5 +46,13 @@ namespace ICSharpCode.SharpDevelop
ICodeGenerator CodeGenerator {
get;
}
/// <summary>
/// Provides access to the <see cref="System.CodeDom.Compiler.CodeDomProvider" /> for this language.
/// Can be null, if not available.
/// </summary>
System.CodeDom.Compiler.CodeDomProvider CodeDomProvider {
get;
}
}
}

Loading…
Cancel
Save