|
|
@ -4,6 +4,7 @@ |
|
|
|
using System; |
|
|
|
using System; |
|
|
|
using System.Collections; |
|
|
|
using System.Collections; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Collections.Generic; |
|
|
|
|
|
|
|
using System.ComponentModel.Design; |
|
|
|
using System.Drawing.Printing; |
|
|
|
using System.Drawing.Printing; |
|
|
|
using System.IO; |
|
|
|
using System.IO; |
|
|
|
using System.Resources; |
|
|
|
using System.Resources; |
|
|
@ -136,16 +137,24 @@ namespace ResourceEditor |
|
|
|
switch (Path.GetExtension(filename).ToLowerInvariant()) { |
|
|
|
switch (Path.GetExtension(filename).ToLowerInvariant()) { |
|
|
|
case ".resx": |
|
|
|
case ".resx": |
|
|
|
ResXResourceReader rx = new ResXResourceReader(stream); |
|
|
|
ResXResourceReader rx = new ResXResourceReader(stream); |
|
|
|
|
|
|
|
ITypeResolutionService typeResolver = null; |
|
|
|
rx.BasePath = Path.GetDirectoryName(filename); |
|
|
|
rx.BasePath = Path.GetDirectoryName(filename); |
|
|
|
|
|
|
|
rx.UseResXDataNodes = true; |
|
|
|
IDictionaryEnumerator n = rx.GetEnumerator(); |
|
|
|
IDictionaryEnumerator n = rx.GetEnumerator(); |
|
|
|
while (n.MoveNext()) |
|
|
|
while (n.MoveNext()) { |
|
|
|
if (!resources.ContainsKey(n.Key.ToString())) |
|
|
|
if (!resources.ContainsKey(n.Key.ToString())) { |
|
|
|
resources.Add(n.Key.ToString(), new ResourceItem(n.Key.ToString(), n.Value)); |
|
|
|
ResXDataNode node = (ResXDataNode)n.Value; |
|
|
|
|
|
|
|
resources.Add(n.Key.ToString(), new ResourceItem(node.Name, node.GetValue(typeResolver), node.Comment)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
n = rx.GetMetadataEnumerator(); |
|
|
|
n = rx.GetMetadataEnumerator(); |
|
|
|
while (n.MoveNext()) |
|
|
|
while (n.MoveNext()) { |
|
|
|
if (!metadata.ContainsKey(n.Key.ToString())) |
|
|
|
if (!metadata.ContainsKey(n.Key.ToString())) { |
|
|
|
metadata.Add(n.Key.ToString(), new ResourceItem(n.Key.ToString(), n.Value)); |
|
|
|
ResXDataNode node = (ResXDataNode)n.Value; |
|
|
|
|
|
|
|
metadata.Add(n.Key.ToString(), new ResourceItem(node.Name, node.GetValue(typeResolver))); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
rx.Close(); |
|
|
|
rx.Close(); |
|
|
|
break; |
|
|
|
break; |
|
|
@ -171,14 +180,13 @@ namespace ResourceEditor |
|
|
|
public void SaveFile(FileName filename, Stream stream) |
|
|
|
public void SaveFile(FileName filename, Stream stream) |
|
|
|
{ |
|
|
|
{ |
|
|
|
switch (Path.GetExtension(filename).ToLowerInvariant()) { |
|
|
|
switch (Path.GetExtension(filename).ToLowerInvariant()) { |
|
|
|
|
|
|
|
|
|
|
|
// write XML resource
|
|
|
|
|
|
|
|
case ".resx": |
|
|
|
case ".resx": |
|
|
|
|
|
|
|
// write XML resource
|
|
|
|
ResXResourceWriter rxw = new ResXResourceWriter(stream, t => ResXConverter.ConvertTypeName(t, filename)); |
|
|
|
ResXResourceWriter rxw = new ResXResourceWriter(stream, t => ResXConverter.ConvertTypeName(t, filename)); |
|
|
|
foreach (KeyValuePair<string, ResourceItem> entry in resources) { |
|
|
|
foreach (KeyValuePair<string, ResourceItem> entry in resources) { |
|
|
|
if (entry.Value != null) { |
|
|
|
if (entry.Value != null) { |
|
|
|
ResourceItem item = entry.Value; |
|
|
|
ResourceItem item = entry.Value; |
|
|
|
rxw.AddResource(item.Name, item.ResourceValue); |
|
|
|
rxw.AddResource(item.ToResXDataNode(t => ResXConverter.ConvertTypeName(t, filename))); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
foreach (KeyValuePair<string, ResourceItem> entry in metadata) { |
|
|
|
foreach (KeyValuePair<string, ResourceItem> entry in metadata) { |
|
|
@ -190,9 +198,8 @@ namespace ResourceEditor |
|
|
|
rxw.Generate(); |
|
|
|
rxw.Generate(); |
|
|
|
rxw.Close(); |
|
|
|
rxw.Close(); |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
// write default resource
|
|
|
|
|
|
|
|
default: |
|
|
|
default: |
|
|
|
|
|
|
|
// write default resource
|
|
|
|
ResourceWriter rw = new ResourceWriter(stream); |
|
|
|
ResourceWriter rw = new ResourceWriter(stream); |
|
|
|
foreach (KeyValuePair<string, ResourceItem> entry in resources) { |
|
|
|
foreach (KeyValuePair<string, ResourceItem> entry in resources) { |
|
|
|
ResourceItem item = (ResourceItem)entry.Value; |
|
|
|
ResourceItem item = (ResourceItem)entry.Value; |
|
|
|