From 97c29d6f81e21e20c802b1805d422c52afe263d8 Mon Sep 17 00:00:00 2001 From: "John H. Freeman" Date: Wed, 3 Apr 2024 00:16:55 -0500 Subject: [PATCH] Added UI element remove thread safe code Localization plugins updated to v4.7.1 .NET corrected typo in sample plugin project --- Localization/en-US/ActLocalization.csproj | 13 ++++++-- Localization/en-US/ActLocalizationPlugin.cs | 35 +++++++++++++++++-- Localization/ja-JP/ActLocalization.csproj | 18 +++++++--- Localization/ja-JP/ActLocalizationPlugin.cs | 37 +++++++++++++++++++-- Plugins/ACT_Plugin_Sample/ACT_Plugin.csproj | 6 ++-- 5 files changed, 92 insertions(+), 17 deletions(-) diff --git a/Localization/en-US/ActLocalization.csproj b/Localization/en-US/ActLocalization.csproj index a4d84c6f..8f47aa6f 100644 --- a/Localization/en-US/ActLocalization.csproj +++ b/Localization/en-US/ActLocalization.csproj @@ -9,8 +9,9 @@ Properties ActLocalization ActLocalization_en-US - v4.0 + v4.7.2 512 + true @@ -20,6 +21,7 @@ TRACE;DEBUG;XMLINCLUDED prompt 4 + false pdbonly @@ -28,10 +30,11 @@ TRACE;XMLINCLUDED prompt 4 + false - C:\Program Files (x86)\Advanced Combat Tracker\Advanced Combat Tracker.exe + $(MSBuildProgramFiles32)\Advanced Combat Tracker\Advanced Combat Tracker.exe @@ -71,4 +74,8 @@ - + + IF NOT EXIST "$(APPDATA)\Advanced Combat Tracker\Plugins" mkdir "$(APPDATA)\Advanced Combat Tracker\Plugins" +IF Debug==$(ConfigurationName) copy /Y $(TargetPath) "$(APPDATA)\Advanced Combat Tracker\Plugins" + + \ No newline at end of file diff --git a/Localization/en-US/ActLocalizationPlugin.cs b/Localization/en-US/ActLocalizationPlugin.cs index 25d677b6..aa7399d9 100644 --- a/Localization/en-US/ActLocalizationPlugin.cs +++ b/Localization/en-US/ActLocalizationPlugin.cs @@ -7,12 +7,22 @@ [assembly: AssemblyTitle("ActLocalization en-US")] [assembly: AssemblyDescription("A sample of an ACT plugin that changes localization strings using XML resources.")] -[assembly: AssemblyVersion("276.0.0.0")] +[assembly: AssemblyVersion("276.0.1.0")] namespace ActLocalization { class ActLocalizationPlugin : IActPluginV1 { + void pluginScreenSpaceRemove(TabPage screenSpace) + { + Action removeControl = new Action(() => { screenSpace.Parent.Controls.Remove(screenSpace); }); + if (screenSpace.InvokeRequired) + { + screenSpace.Invoke(removeControl); + } + else + removeControl.Invoke(); + } public void InitPlugin(TabPage pluginScreenSpace, Label pluginStatusText) { //ActLocalization.InternalStrings.EditLocalizations(); @@ -74,8 +84,8 @@ public void InitPlugin(TabPage pluginScreenSpace, Label pluginStatusText) using (Stream s = asm.GetManifestResourceStream("ActLocalization.Advanced Combat Tracker.exe.FormXmlSettingsIO.xml")) ActGlobals.oFormXmlSettingsIO.ImportControlTextXML(s); } - pluginStatusText.Text = "Localization Complete"; - pluginScreenSpace.Parent.Controls.Remove(pluginScreenSpace); + ChangeLblStatus(pluginStatusText, "Localization Complete"); + pluginScreenSpaceRemove(pluginScreenSpace); } internal static bool TryEditLocalization(string Key, string Value) { @@ -91,5 +101,24 @@ internal static bool TryEditLocalization(string Key, string Value) public void DeInitPlugin() { } + + void ChangeLblStatus(Label label, String status) + { + + switch (label.InvokeRequired) + { + case true: + label.Invoke(new Action(() => + { + label.Text = status; + })); + break; + case false: + label.Text = status; + break; + default: + break; + } + } } } diff --git a/Localization/ja-JP/ActLocalization.csproj b/Localization/ja-JP/ActLocalization.csproj index a2b54831..6febca3e 100644 --- a/Localization/ja-JP/ActLocalization.csproj +++ b/Localization/ja-JP/ActLocalization.csproj @@ -7,10 +7,11 @@ {E8253A9D-199D-46A9-A017-572CD97701A0} Library Properties - ActLocalization - ActLocalization - v4.0 + ActLocalization_ja_JP + ActLocalization_ja_JP + v4.7.2 512 + true @@ -20,6 +21,7 @@ TRACE;DEBUG;XMLINCLUDED prompt 4 + false none @@ -28,10 +30,12 @@ TRACE;XMLINCLUDED prompt 4 + false - - .\Advanced Combat Tracker.exe + + False + $(MSBuildProgramFiles32)\Advanced Combat Tracker\Advanced Combat Tracker.exe False @@ -73,4 +77,8 @@ + + IF NOT EXIST "$(APPDATA)\Advanced Combat Tracker\Plugins" mkdir "$(APPDATA)\Advanced Combat Tracker\Plugins" +IF Debug==$(ConfigurationName) copy /Y $(TargetPath) "$(APPDATA)\Advanced Combat Tracker\Plugins" + \ No newline at end of file diff --git a/Localization/ja-JP/ActLocalizationPlugin.cs b/Localization/ja-JP/ActLocalizationPlugin.cs index 9efb5611..81553be5 100644 --- a/Localization/ja-JP/ActLocalizationPlugin.cs +++ b/Localization/ja-JP/ActLocalizationPlugin.cs @@ -1,4 +1,5 @@ -using System.IO; +using System; +using System.IO; using System.Reflection; using System.Windows.Forms; using Advanced_Combat_Tracker; @@ -7,6 +8,17 @@ namespace ActLocalization { internal class ActLocalizationPlugin : IActPluginV1 { + void pluginScreenSpaceRemove(TabPage screenSpace) + { + Action removeControl = new Action(() => { screenSpace.Parent.Controls.Remove(screenSpace); }); + if (screenSpace.InvokeRequired) + { + screenSpace.Invoke(removeControl); + } + else + removeControl.Invoke(); + } + public void InitPlugin(TabPage pluginScreenSpace, Label pluginStatusText) { ActLocalization.InternalStrings.EditLocalizations(); @@ -57,12 +69,31 @@ public void InitPlugin(TabPage pluginScreenSpace, Label pluginStatusText) ActGlobals.oFormXmlSettingsIO.ImportControlTextXML(s); } - pluginStatusText.Text = "Localization Complete"; - pluginScreenSpace.Parent.Controls.Remove(pluginScreenSpace); + ChangeLblStatus(pluginStatusText, "Localization Complete"); + pluginScreenSpaceRemove(pluginScreenSpace); } public void DeInitPlugin() { } + + void ChangeLblStatus(Label label, String status) + { + + switch (label.InvokeRequired) + { + case true: + label.Invoke(new Action(() => + { + label.Text = status; + })); + break; + case false: + label.Text = status; + break; + default: + break; + } + } } } diff --git a/Plugins/ACT_Plugin_Sample/ACT_Plugin.csproj b/Plugins/ACT_Plugin_Sample/ACT_Plugin.csproj index 6280316f..f06bda8b 100644 --- a/Plugins/ACT_Plugin_Sample/ACT_Plugin.csproj +++ b/Plugins/ACT_Plugin_Sample/ACT_Plugin.csproj @@ -31,8 +31,8 @@ prompt 4 Program - >$(MSBuildProgramFiles32)\Advanced Combat Tracker\Advanced Combat Tracker.exe - >$(MSBuildProgramFiles32)\Advanced Combat Tracker\ + $(MSBuildProgramFiles32)\Advanced Combat Tracker\Advanced Combat Tracker.exe + $(MSBuildProgramFiles32)\Advanced Combat Tracker\ pdbonly @@ -52,7 +52,7 @@ --> - >$(MSBuildProgramFiles32)\Advanced Combat Tracker\Advanced Combat Tracker.exe + $(MSBuildProgramFiles32)\Advanced Combat Tracker\Advanced Combat Tracker.exe False