Browse Source

Add IResourceService interface.

newNRvisualizers
Daniel Grunwald 13 years ago
parent
commit
92da3798b3
  1. 3
      src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SearchPanelLocalization.cs
  2. 2
      src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs
  3. 2
      src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs
  4. 2
      src/Main/Base/Project/Src/Services/Language/LanguageService.cs
  5. 5
      src/Main/Base/Project/Src/Services/SD.cs
  6. 1
      src/Main/Core/Project/ICSharpCode.Core.csproj
  7. 4
      src/Main/Core/Project/Src/AddInTree/AddInTree.cs
  8. 3
      src/Main/Core/Project/Src/AddInTree/CoreStartup.cs
  9. 4
      src/Main/Core/Project/Src/Services/PropertyService/PropertyService.cs
  10. 60
      src/Main/Core/Project/Src/Services/ResourceService/IResourceService.cs
  11. 9
      src/Main/Core/Project/Src/Services/ResourceService/ResourceNotFoundException.cs
  12. 100
      src/Main/Core/Project/Src/Services/ResourceService/ResourceService.cs
  13. 6
      src/Main/ICSharpCode.Core.Presentation/LanguageChangeWeakEventManager.cs
  14. 10
      src/Main/ICSharpCode.Core.Presentation/PresentationResourceService.cs
  15. 5
      src/Main/ICSharpCode.Core.WinForms/ToolBar/ToolBarService.cs
  16. 11
      src/Main/ICSharpCode.Core.WinForms/WinFormsResourceService.cs
  17. 7
      src/Main/SharpDevelop/Sda/CallHelper.cs
  18. 4
      src/Main/SharpDevelop/Workbench/AvalonWorkbenchWindow.cs
  19. 2
      src/Main/SharpDevelop/Workbench/ChooseLayoutCommand.cs
  20. 2
      src/Main/SharpDevelop/Workbench/WpfWorkbench.cs

3
src/AddIns/DisplayBindings/AvalonEdit.AddIn/Src/SearchPanelLocalization.cs

@ -6,6 +6,7 @@ using System.ComponentModel; @@ -6,6 +6,7 @@ using System.ComponentModel;
using ICSharpCode.AvalonEdit.Search;
using ICSharpCode.Core;
using ICSharpCode.Core.Presentation;
using ICSharpCode.SharpDevelop;
namespace ICSharpCode.AvalonEdit.AddIn
{
@ -23,7 +24,7 @@ namespace ICSharpCode.AvalonEdit.AddIn @@ -23,7 +24,7 @@ namespace ICSharpCode.AvalonEdit.AddIn
public SearchPanelLocalization()
{
ResourceService.LanguageChanged += delegate { PropertiesChanged(); };
SD.ResourceService.LanguageChanged += delegate { PropertiesChanged(); };
}
public override string ErrorText {

2
src/Main/Base/Project/Src/Gui/Pads/ErrorList/ErrorListPad.cs

@ -77,7 +77,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -77,7 +77,7 @@ namespace ICSharpCode.SharpDevelop.Gui
properties = PropertyService.NestedProperties("ErrorListPad");
RedrawContent();
ResourceService.LanguageChanged += delegate { RedrawContent(); };
SD.ResourceService.LanguageChanged += delegate { RedrawContent(); };
TaskService.Cleared += new EventHandler(TaskServiceCleared);
TaskService.Added += new TaskEventHandler(TaskServiceAdded);

2
src/Main/Base/Project/Src/Gui/Pads/TaskList/TaskListPad.cs

@ -61,7 +61,7 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -61,7 +61,7 @@ namespace ICSharpCode.SharpDevelop.Gui
this.displayedTokens = new Dictionary<string, bool>();
RedrawContent();
ResourceService.LanguageChanged += delegate { RedrawContent(); };
SD.ResourceService.LanguageChanged += delegate { RedrawContent(); };
InitializeToolStrip();

2
src/Main/Base/Project/Src/Services/Language/LanguageService.cs

@ -64,7 +64,7 @@ namespace ICSharpCode.SharpDevelop @@ -64,7 +64,7 @@ namespace ICSharpCode.SharpDevelop
/// </summary>
public static void ValidateLanguage()
{
ResourceService.Language = GetLanguage(ResourceService.Language).Code;
SD.ResourceService.Language = GetLanguage(SD.ResourceService.Language).Code;
}
}
}

5
src/Main/Base/Project/Src/Services/SD.cs

@ -4,6 +4,7 @@ @@ -4,6 +4,7 @@
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using ICSharpCode.Core;
using ICSharpCode.Core.Implementation;
using ICSharpCode.SharpDevelop.Editor;
@ -84,6 +85,10 @@ namespace ICSharpCode.SharpDevelop @@ -84,6 +85,10 @@ namespace ICSharpCode.SharpDevelop
get { return GetRequiredService<IPropertyService>(); }
}
public static Core.IResourceService ResourceService {
get { return GetRequiredService<Core.IResourceService>(); }
}
public static IEditorControlService EditorControlService {
get { return GetRequiredService<IEditorControlService>(); }
}

1
src/Main/Core/Project/ICSharpCode.Core.csproj

@ -122,6 +122,7 @@ @@ -122,6 +122,7 @@
<Compile Include="Src\Services\PropertyService\Properties.cs" />
<Compile Include="Src\Services\PropertyService\PropertyService.cs" />
<Compile Include="Src\Services\PropertyService\PropertyServiceImpl.cs" />
<Compile Include="Src\Services\ResourceService\IResourceService.cs" />
<Compile Include="Src\Services\ResourceService\ResourceNotFoundException.cs" />
<Compile Include="Src\Services\ResourceService\ResourceService.cs" />
<Compile Include="Src\Services\ServiceSingleton.cs" />

4
src/Main/Core/Project/Src/AddInTree/AddInTree.cs

@ -234,14 +234,14 @@ namespace ICSharpCode.Core @@ -234,14 +234,14 @@ namespace ICSharpCode.Core
{
string path = Path.Combine(addInRoot, bitmapResource);
ResourceManager resourceManager = ResourceManager.CreateFileBasedResourceManager(Path.GetFileNameWithoutExtension(path), Path.GetDirectoryName(path), null);
ResourceService.RegisterNeutralImages(resourceManager);
ServiceSingleton.ServiceProvider.GetRequiredService<IResourceService>().RegisterNeutralImages(resourceManager);
}
foreach(string stringResource in addIn.StringResources)
{
string path = Path.Combine(addInRoot, stringResource);
ResourceManager resourceManager = ResourceManager.CreateFileBasedResourceManager(Path.GetFileNameWithoutExtension(path), Path.GetDirectoryName(path), null);
ResourceService.RegisterNeutralStrings(resourceManager);
ServiceSingleton.ServiceProvider.GetRequiredService<IResourceService>().RegisterNeutralStrings(resourceManager);
}
}
addIns.Add(addIn);

3
src/Main/Core/Project/Src/AddInTree/CoreStartup.cs

@ -207,7 +207,8 @@ namespace ICSharpCode.Core @@ -207,7 +207,8 @@ namespace ICSharpCode.Core
dataDirectory ?? Path.Combine(FileUtility.ApplicationRootPath, "data"),
propertiesName);
container.AddService(typeof(IPropertyService), propertyService);
ResourceService.InitializeService(Path.Combine(propertyService.DataDirectory, "resources"), propertyService);
container.AddService(typeof(IResourceService), new ResourceServiceImpl(
Path.Combine(propertyService.DataDirectory, "resources"), propertyService));
StringParser.RegisterStringTagProvider(new AppNameProvider { appName = applicationName });
}

4
src/Main/Core/Project/Src/Services/PropertyService/PropertyService.cs

@ -12,6 +12,10 @@ using System.Xml; @@ -12,6 +12,10 @@ using System.Xml;
namespace ICSharpCode.Core
{
/// <summary>
/// Compatibility class; forwards calls to the IPropertyService.
/// TODO: Remove
/// </summary>
public static class PropertyService
{
static IPropertyService Service {

60
src/Main/Core/Project/Src/Services/ResourceService/IResourceService.cs

@ -0,0 +1,60 @@ @@ -0,0 +1,60 @@
// 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.Reflection;
using System.Resources;
namespace ICSharpCode.Core
{
/// <summary>
/// Provides string and bitmap resources.
/// </summary>
public interface IResourceService
{
/// <summary>
/// Gets/Sets the current UI language.
/// </summary>
string Language { get; set; }
event EventHandler LanguageChanged;
/// <summary>
/// Returns a string from the resource database, it handles localization
/// transparent for the user.
/// </summary>
/// <returns>
/// The string in the (localized) resource database.
/// </returns>
/// <param name="name">
/// The name of the requested resource.
/// </param>
/// <exception cref="ResourceNotFoundException">
/// Is thrown when the GlobalResource manager can't find a requested resource.
/// </exception>
string GetString(string name);
object GetImageResource(string name);
/// <summary>
/// Registers string resources in the resource service.
/// </summary>
/// <param name="baseResourceName">The base name of the resource file embedded in the assembly.</param>
/// <param name="assembly">The assembly which contains the resource file.</param>
/// <example><c>ResourceService.RegisterStrings("TestAddin.Resources.StringResources", GetType().Assembly);</c></example>
void RegisterStrings(string baseResourceName, Assembly assembly);
void RegisterNeutralStrings(ResourceManager stringManager);
/// <summary>
/// Registers image resources in the resource service.
/// </summary>
/// <param name="baseResourceName">The base name of the resource file embedded in the assembly.</param>
/// <param name="assembly">The assembly which contains the resource file.</param>
/// <example><c>ResourceService.RegisterImages("TestAddin.Resources.BitmapResources", GetType().Assembly);</c></example>
void RegisterImages(string baseResourceName, Assembly assembly);
void RegisterNeutralImages(ResourceManager imageManager);
}
}

9
src/Main/Core/Project/Src/Services/ResourceService/ResourceNotFoundException.cs

@ -13,16 +13,21 @@ namespace ICSharpCode.Core @@ -13,16 +13,21 @@ namespace ICSharpCode.Core
[Serializable()]
public class ResourceNotFoundException : CoreException
{
public ResourceNotFoundException(string resource) : base("Resource not found : " + resource)
string resourceName;
public string ResourceName { get { return resourceName; } }
public ResourceNotFoundException(string resourceName) : base("Resource not found : " + resourceName)
{
this.resourceName = resourceName;
}
public ResourceNotFoundException() : base()
{
}
public ResourceNotFoundException(string message, Exception innerException) : base(message, innerException)
public ResourceNotFoundException(string resourceName, Exception innerException) : base("Resource not found : " + resourceName, innerException)
{
this.resourceName = resourceName;
}
protected ResourceNotFoundException(SerializationInfo info, StreamingContext context) : base(info, context)

100
src/Main/Core/Project/Src/Services/ResourceService/ResourceService.cs

@ -12,34 +12,54 @@ using System.Threading; @@ -12,34 +12,54 @@ using System.Threading;
namespace ICSharpCode.Core
{
/// <summary>
/// Compatibility class; forwards calls to the IResourceService.
/// TODO: Remove
/// </summary>
public static class ResourceService
{
static IResourceService Service {
get { return ServiceSingleton.ServiceProvider.GetRequiredService<IResourceService>(); }
}
public static string GetString(string resourceName)
{
return Service.GetString(resourceName);
}
public static string Language {
get { return Service.Language; }
}
}
/// <summary>
/// This Class contains two ResourceManagers, which handle string and image resources
/// for the application. It do handle localization strings on this level.
/// </summary>
public static class ResourceService
public class ResourceServiceImpl : IResourceService
{
const string uiLanguageProperty = "CoreProperties.UILanguage";
const string stringResources = "StringResources";
const string imageResources = "BitmapResources";
static string resourceDirectory;
static IPropertyService propertyService;
string resourceDirectory;
IPropertyService propertyService;
public static void InitializeService(string resourceDirectory, IPropertyService propertyService)
public ResourceServiceImpl(string resourceDirectory, IPropertyService propertyService)
{
if (ResourceService.resourceDirectory != null)
throw new InvalidOperationException("Service is already initialized.");
if (resourceDirectory == null)
throw new ArgumentNullException("resourceDirectory");
if (propertyService == null)
throw new ArgumentNullException("propertyService");
ResourceService.resourceDirectory = resourceDirectory;
ResourceService.propertyService = propertyService;
this.resourceDirectory = resourceDirectory;
this.propertyService = propertyService;
propertyService.PropertyChanged += new PropertyChangedEventHandler(OnPropertyChange);
LoadLanguageResources(ResourceService.Language);
LoadLanguageResources(this.Language);
}
public static string Language {
public string Language {
get {
return propertyService.Get(uiLanguageProperty, Thread.CurrentThread.CurrentUICulture.Name);
}
@ -50,33 +70,35 @@ namespace ICSharpCode.Core @@ -50,33 +70,35 @@ namespace ICSharpCode.Core
}
}
static readonly object loadLock = new object();
readonly object loadLock = new object();
/// <summary>English strings (list of resource managers)</summary>
static List<ResourceManager> strings = new List<ResourceManager>();
List<ResourceManager> strings = new List<ResourceManager>();
/// <summary>Neutral/English images (list of resource managers)</summary>
static List<ResourceManager> icons = new List<ResourceManager>();
List<ResourceManager> icons = new List<ResourceManager>();
/// <summary>Hashtable containing the local strings from the main application.</summary>
static Hashtable localStrings = null;
static Hashtable localIcons = null;
Hashtable localStrings = null;
Hashtable localIcons = null;
/// <summary>Strings resource managers for the current language</summary>
static List<ResourceManager> localStringsResMgrs = new List<ResourceManager>();
List<ResourceManager> localStringsResMgrs = new List<ResourceManager>();
/// <summary>Image resource managers for the current language</summary>
static List<ResourceManager> localIconsResMgrs = new List<ResourceManager>();
List<ResourceManager> localIconsResMgrs = new List<ResourceManager>();
/// <summary>List of ResourceAssembly</summary>
static List<ResourceAssembly> resourceAssemblies = new List<ResourceAssembly>();
List<ResourceAssembly> resourceAssemblies = new List<ResourceAssembly>();
class ResourceAssembly
{
ResourceServiceImpl service;
Assembly assembly;
string baseResourceName;
bool isIcons;
public ResourceAssembly(Assembly assembly, string baseResourceName, bool isIcons)
public ResourceAssembly(ResourceServiceImpl service, Assembly assembly, string baseResourceName, bool isIcons)
{
this.service = service;
this.assembly = assembly;
this.baseResourceName = baseResourceName;
this.isIcons = isIcons;
@ -98,6 +120,7 @@ namespace ICSharpCode.Core @@ -98,6 +120,7 @@ namespace ICSharpCode.Core
public void Load()
{
string currentLanguage = service.currentLanguage;
string logMessage = "Loading resources " + baseResourceName + "." + currentLanguage + ": ";
ResourceManager manager = null;
if (assembly.GetManifestResourceInfo(baseResourceName + "." + currentLanguage + ".resources") != null) {
@ -119,9 +142,9 @@ namespace ICSharpCode.Core @@ -119,9 +142,9 @@ namespace ICSharpCode.Core
LoggingService.Warn(logMessage + "NOT FOUND");
} else {
if (isIcons)
localIconsResMgrs.Add(manager);
service.localIconsResMgrs.Add(manager);
else
localStringsResMgrs.Add(manager);
service.localStringsResMgrs.Add(manager);
}
}
}
@ -132,15 +155,15 @@ namespace ICSharpCode.Core @@ -132,15 +155,15 @@ namespace ICSharpCode.Core
/// <param name="baseResourceName">The base name of the resource file embedded in the assembly.</param>
/// <param name="assembly">The assembly which contains the resource file.</param>
/// <example><c>ResourceService.RegisterStrings("TestAddin.Resources.StringResources", GetType().Assembly);</c></example>
public static void RegisterStrings(string baseResourceName, Assembly assembly)
public void RegisterStrings(string baseResourceName, Assembly assembly)
{
RegisterNeutralStrings(new ResourceManager(baseResourceName, assembly));
ResourceAssembly ra = new ResourceAssembly(assembly, baseResourceName, false);
ResourceAssembly ra = new ResourceAssembly(this, assembly, baseResourceName, false);
resourceAssemblies.Add(ra);
ra.Load();
}
public static void RegisterNeutralStrings(ResourceManager stringManager)
public void RegisterNeutralStrings(ResourceManager stringManager)
{
strings.Add(stringManager);
}
@ -151,35 +174,33 @@ namespace ICSharpCode.Core @@ -151,35 +174,33 @@ namespace ICSharpCode.Core
/// <param name="baseResourceName">The base name of the resource file embedded in the assembly.</param>
/// <param name="assembly">The assembly which contains the resource file.</param>
/// <example><c>ResourceService.RegisterImages("TestAddin.Resources.BitmapResources", GetType().Assembly);</c></example>
public static void RegisterImages(string baseResourceName, Assembly assembly)
public void RegisterImages(string baseResourceName, Assembly assembly)
{
RegisterNeutralImages(new ResourceManager(baseResourceName, assembly));
ResourceAssembly ra = new ResourceAssembly(assembly, baseResourceName, true);
ResourceAssembly ra = new ResourceAssembly(this, assembly, baseResourceName, true);
resourceAssemblies.Add(ra);
ra.Load();
}
public static void RegisterNeutralImages(ResourceManager imageManager)
public void RegisterNeutralImages(ResourceManager imageManager)
{
icons.Add(imageManager);
}
static void OnPropertyChange(object sender, PropertyChangedEventArgs e)
void OnPropertyChange(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == uiLanguageProperty) {
LoadLanguageResources(Language);
EventHandler handler = LanguageChanged;
if (handler != null)
handler(null, e);
handler(this, e);
}
}
public static event EventHandler ClearCaches;
public static event EventHandler LanguageChanged;
static string currentLanguage;
public event EventHandler LanguageChanged;
string currentLanguage;
static void LoadLanguageResources(string language)
void LoadLanguageResources(string language)
{
lock (loadLock) {
try {
@ -207,12 +228,9 @@ namespace ICSharpCode.Core @@ -207,12 +228,9 @@ namespace ICSharpCode.Core
ra.Load();
}
}
EventHandler handler = ClearCaches;
if (handler != null)
handler(null, EventArgs.Empty);
}
static Hashtable Load(string fileName)
Hashtable Load(string fileName)
{
if (File.Exists(fileName)) {
Hashtable resources = new Hashtable();
@ -226,7 +244,7 @@ namespace ICSharpCode.Core @@ -226,7 +244,7 @@ namespace ICSharpCode.Core
return null;
}
static Hashtable Load(string name, string language)
Hashtable Load(string name, string language)
{
return Load(resourceDirectory + Path.DirectorySeparatorChar + name + "." + language + ".resources");
}
@ -244,7 +262,7 @@ namespace ICSharpCode.Core @@ -244,7 +262,7 @@ namespace ICSharpCode.Core
/// <exception cref="ResourceNotFoundException">
/// Is thrown when the GlobalResource manager can't find a requested resource.
/// </exception>
public static string GetString(string name)
public string GetString(string name)
{
lock (loadLock) {
if (localStrings != null && localStrings[name] != null) {
@ -283,7 +301,7 @@ namespace ICSharpCode.Core @@ -283,7 +301,7 @@ namespace ICSharpCode.Core
}
}
public static object GetImageResource(string name)
public object GetImageResource(string name)
{
lock (loadLock) {
object iconobj = null;

6
src/Main/ICSharpCode.Core.Presentation/LanguageChangeWeakEventManager.cs

@ -39,14 +39,16 @@ namespace ICSharpCode.Core.Presentation @@ -39,14 +39,16 @@ namespace ICSharpCode.Core.Presentation
}
}
readonly IResourceService resourceService = ServiceSingleton.ServiceProvider.GetRequiredService<IResourceService>();
protected override void StartListening(object source)
{
ResourceService.LanguageChanged += DeliverEvent;
resourceService.LanguageChanged += DeliverEvent;
}
protected override void StopListening(object source)
{
ResourceService.LanguageChanged -= DeliverEvent;
resourceService.LanguageChanged -= DeliverEvent;
}
}
}

10
src/Main/ICSharpCode.Core.Presentation/PresentationResourceService.cs

@ -17,13 +17,15 @@ namespace ICSharpCode.Core.Presentation @@ -17,13 +17,15 @@ namespace ICSharpCode.Core.Presentation
public static class PresentationResourceService
{
static readonly Dictionary<string, BitmapSource> bitmapCache = new Dictionary<string, BitmapSource>();
static readonly IResourceService resourceService;
static PresentationResourceService()
{
ResourceService.ClearCaches += ResourceService_ClearCaches;
resourceService = ServiceSingleton.ServiceProvider.GetRequiredService<IResourceService>();
resourceService.LanguageChanged += OnLanguageChanged;
}
static void ResourceService_ClearCaches(object sender, EventArgs e)
static void OnLanguageChanged(object sender, EventArgs e)
{
lock (bitmapCache) {
bitmapCache.Clear();
@ -59,11 +61,13 @@ namespace ICSharpCode.Core.Presentation @@ -59,11 +61,13 @@ namespace ICSharpCode.Core.Presentation
/// </exception>
public static BitmapSource GetBitmapSource(string name)
{
if (resourceService == null)
throw new ArgumentNullException("resourceService");
lock (bitmapCache) {
BitmapSource bs;
if (bitmapCache.TryGetValue(name, out bs))
return bs;
System.Drawing.Bitmap bmp = (System.Drawing.Bitmap)ResourceService.GetImageResource(name);
System.Drawing.Bitmap bmp = (System.Drawing.Bitmap)resourceService.GetImageResource(name);
if (bmp == null) {
throw new ResourceNotFoundException(name);
}

5
src/Main/ICSharpCode.Core.WinForms/ToolBar/ToolBarService.cs

@ -74,17 +74,18 @@ namespace ICSharpCode.Core.WinForms @@ -74,17 +74,18 @@ namespace ICSharpCode.Core.WinForms
}
class LanguageChangeWatcher {
readonly IResourceService resourceService = ServiceSingleton.ServiceProvider.GetRequiredService<IResourceService>();
ToolStrip toolStrip;
public LanguageChangeWatcher(ToolStrip toolStrip) {
this.toolStrip = toolStrip;
toolStrip.Disposed += Disposed;
ResourceService.LanguageChanged += OnLanguageChanged;
resourceService.LanguageChanged += OnLanguageChanged;
}
void OnLanguageChanged(object sender, EventArgs e) {
ToolbarService.UpdateToolbarText(toolStrip);
}
void Disposed(object sender, EventArgs e) {
ResourceService.LanguageChanged -= OnLanguageChanged;
resourceService.LanguageChanged -= OnLanguageChanged;
}
}

11
src/Main/ICSharpCode.Core.WinForms/WinFormsResourceService.cs

@ -17,12 +17,15 @@ namespace ICSharpCode.Core.WinForms @@ -17,12 +17,15 @@ namespace ICSharpCode.Core.WinForms
static Dictionary<string, Icon> iconCache = new Dictionary<string, Icon>();
static Dictionary<string, Bitmap> bitmapCache = new Dictionary<string, Bitmap>();
static readonly IResourceService resourceService;
static WinFormsResourceService()
{
ResourceService.ClearCaches += ResourceService_ClearCaches;
resourceService = ServiceSingleton.ServiceProvider.GetRequiredService<IResourceService>();
resourceService.LanguageChanged += OnLanguageChanged;
}
static void ResourceService_ClearCaches(object sender, EventArgs e)
static void OnLanguageChanged(object sender, EventArgs e)
{
lock (iconCache) {
iconCache.Clear();
@ -162,7 +165,7 @@ namespace ICSharpCode.Core.WinForms @@ -162,7 +165,7 @@ namespace ICSharpCode.Core.WinForms
if (iconCache.TryGetValue(name, out ico))
return ico;
object iconobj = ResourceService.GetImageResource(name);
object iconobj = resourceService.GetImageResource(name);
if (iconobj == null) {
return null;
}
@ -218,7 +221,7 @@ namespace ICSharpCode.Core.WinForms @@ -218,7 +221,7 @@ namespace ICSharpCode.Core.WinForms
Bitmap bmp;
if (bitmapCache.TryGetValue(name, out bmp))
return bmp;
bmp = (Bitmap)ResourceService.GetImageResource(name);
bmp = (Bitmap)resourceService.GetImageResource(name);
if (bmp == null) {
throw new ResourceNotFoundException(name);
}

7
src/Main/SharpDevelop/Sda/CallHelper.cs

@ -62,8 +62,8 @@ namespace ICSharpCode.SharpDevelop.Sda @@ -62,8 +62,8 @@ namespace ICSharpCode.SharpDevelop.Sda
startup.StartCoreServices();
Assembly exe = Assembly.Load(properties.ResourceAssemblyName);
ResourceService.RegisterNeutralStrings(new ResourceManager("ICSharpCode.SharpDevelop.Resources.StringResources", exe));
ResourceService.RegisterNeutralImages(new ResourceManager("ICSharpCode.SharpDevelop.Resources.BitmapResources", exe));
SD.ResourceService.RegisterNeutralStrings(new ResourceManager("ICSharpCode.SharpDevelop.Resources.StringResources", exe));
SD.ResourceService.RegisterNeutralImages(new ResourceManager("ICSharpCode.SharpDevelop.Resources.BitmapResources", exe));
MenuCommand.LinkCommandCreator = delegate(string link) { return new LinkCommand(link); };
MenuCommand.KnownCommandCreator = CreateICommandForWPFCommand;
@ -181,8 +181,9 @@ namespace ICSharpCode.SharpDevelop.Sda @@ -181,8 +181,9 @@ namespace ICSharpCode.SharpDevelop.Sda
LoggingService.Info("Unloading services...");
try {
WorkbenchSingleton.OnWorkbenchUnloaded();
var propertyService = SD.PropertyService;
((IDisposable)SD.Services).Dispose(); // dispose all services
PropertyService.Save();
propertyService.Save();
} catch (Exception ex) {
LoggingService.Warn("Exception during unloading", ex);
if (exception == null) {

4
src/Main/SharpDevelop/Workbench/AvalonWorkbenchWindow.cs

@ -34,7 +34,7 @@ namespace ICSharpCode.SharpDevelop.Workbench @@ -34,7 +34,7 @@ namespace ICSharpCode.SharpDevelop.Workbench
this.dockLayout = dockLayout;
viewContents = new ViewContentCollection(this);
ResourceService.LanguageChanged += OnTabPageTextChanged;
SD.ResourceService.LanguageChanged += OnTabPageTextChanged;
}
protected override void FocusContent()
@ -284,7 +284,7 @@ namespace ICSharpCode.SharpDevelop.Workbench @@ -284,7 +284,7 @@ namespace ICSharpCode.SharpDevelop.Workbench
void Dispose()
{
ResourceService.LanguageChanged -= OnTabPageTextChanged;
SD.ResourceService.LanguageChanged -= OnTabPageTextChanged;
// DetachContent must be called before the controls are disposed
List<IViewContent> viewContents = this.ViewContents.ToList();
this.ViewContents.Clear();

2
src/Main/SharpDevelop/Workbench/ChooseLayoutCommand.cs

@ -22,7 +22,7 @@ namespace ICSharpCode.SharpDevelop.Workbench @@ -22,7 +22,7 @@ namespace ICSharpCode.SharpDevelop.Workbench
public ChooseLayoutCommand()
{
LayoutConfiguration.LayoutChanged += new EventHandler(LayoutChanged);
ResourceService.LanguageChanged += new EventHandler(ResourceService_LanguageChanged);
SD.ResourceService.LanguageChanged += new EventHandler(ResourceService_LanguageChanged);
}
void ResourceService_LanguageChanged(object sender, EventArgs e)

2
src/Main/SharpDevelop/Workbench/WpfWorkbench.cs

@ -133,7 +133,7 @@ namespace ICSharpCode.SharpDevelop.Workbench @@ -133,7 +133,7 @@ namespace ICSharpCode.SharpDevelop.Workbench
requerySuggestedEventHandler = new EventHandler(CommandManager_RequerySuggested);
CommandManager.RequerySuggested += requerySuggestedEventHandler;
ResourceService.LanguageChanged += OnLanguageChanged;
SD.ResourceService.LanguageChanged += OnLanguageChanged;
SD.StatusBar.SetMessage("${res:MainWindow.StatusBar.ReadyMessage}");
}

Loading…
Cancel
Save