From fad3a5583b0338555901904c804d2680875ffc64 Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Mon, 31 Aug 2009 20:30:03 +0000 Subject: [PATCH] Update strings in main menu and toolbar when changing the language. git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@4855 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61 --- .../Project/Src/Gui/Workbench/WpfWorkbench.cs | 6 ++++++ .../Menu/MenuService.cs | 11 ++++++++++ .../ToolBar/ToolBarService.cs | 21 +++++++++++++++++-- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs b/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs index dbbdc536a1..9f0236a63c 100644 --- a/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs +++ b/src/Main/Base/Project/Src/Gui/Workbench/WpfWorkbench.cs @@ -107,6 +107,7 @@ namespace ICSharpCode.SharpDevelop.Gui requerySuggestedEventHandler = new EventHandler(CommandManager_RequerySuggested); CommandManager.RequerySuggested += requerySuggestedEventHandler; + ResourceService.LanguageChanged += OnLanguageChanged; StatusBarService.SetMessage("${res:MainWindow.StatusBar.ReadyMessage}"); } @@ -186,6 +187,11 @@ namespace ICSharpCode.SharpDevelop.Gui } } + void OnLanguageChanged(object sender, EventArgs e) + { + MenuService.UpdateText(mainMenu.ItemsSource); + } + public ICollection ViewContentCollection { get { WorkbenchSingleton.AssertMainThread(); diff --git a/src/Main/ICSharpCode.Core.Presentation/Menu/MenuService.cs b/src/Main/ICSharpCode.Core.Presentation/Menu/MenuService.cs index 949b86a6b7..cedd14b637 100644 --- a/src/Main/ICSharpCode.Core.Presentation/Menu/MenuService.cs +++ b/src/Main/ICSharpCode.Core.Presentation/Menu/MenuService.cs @@ -92,6 +92,17 @@ namespace ICSharpCode.Core.Presentation } } + public static void UpdateText(IEnumerable menuItems) + { + if (menuItems == null) + return; + foreach (object o in menuItems) { + IStatusUpdate cmi = o as IStatusUpdate; + if (cmi != null) + cmi.UpdateText(); + } + } + public static ContextMenu CreateContextMenu(object owner, string addInTreePath) { ContextMenu menu = new ContextMenu(); diff --git a/src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarService.cs b/src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarService.cs index 06443fe916..213ec02913 100644 --- a/src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarService.cs +++ b/src/Main/ICSharpCode.Core.Presentation/ToolBar/ToolBarService.cs @@ -8,6 +8,7 @@ using System; using System.Collections; using System.Collections.Generic; +using System.Windows; using System.Windows.Controls; namespace ICSharpCode.Core.Presentation @@ -84,14 +85,30 @@ namespace ICSharpCode.Core.Presentation static ToolBar CreateToolBar(object owner, AddInTreeNode treeNode) { - ToolBar tb = new ToolBar(); + ToolBar tb = new CoreToolBar(); ToolBarTray.SetIsLocked(tb, true); tb.ItemsSource = CreateToolBarItems(treeNode.BuildChildItems(owner)); UpdateStatus(tb.ItemsSource); // setting Visible is only possible after the items have been added - //new LanguageChangeWatcher(toolStrip); return tb; } + sealed class CoreToolBar : ToolBar, IWeakEventListener + { + public CoreToolBar() + { + LanguageChangeWeakEventManager.AddListener(this); + } + + bool IWeakEventListener.ReceiveWeakEvent(Type managerType, object sender, EventArgs e) + { + if (managerType == typeof(LanguageChangeWeakEventManager)) { + MenuService.UpdateText(this.ItemsSource); + return true; + } + return false; + } + } + public static ToolBar CreateToolBar(object owner, string addInTreePath) { return CreateToolBar(owner, AddInTree.GetTreeNode(addInTreePath));