From bec81ee047b17555b1737d8ac08f70bb48f9801f Mon Sep 17 00:00:00 2001 From: Patrick Andrew Hartnett Date: Wed, 28 Dec 2022 16:02:26 +0100 Subject: [PATCH] - Enable user to override the default system paths for MyDocument & ApplicationData from a configuration file. - Removed 'Sdl.Community.' from the assembly output names. - Bumped release version to 5.1.6.0 Details: Starting with this latest release, a new configuration file 'Qualitivity.config' is now unpacked in plugins folder (e.g. ...\Trados\Trados Studio\17\Plugins\Unpacked\Qualitivity\Qualitivity.config). You will find two new properties MyDocumentsPath & ApplicationDataPath that enable the user to override these default paths from the system. Note: It is possible to specify the same folder for both. If the folder/s specified are empty or not valid, then the default system path/s will be used. Example: (Qualitivity.dll.config) --- Qualitivity/Build/SolutionInfo.cs | 4 +- .../Sdl.Community.Comparison.csproj | 4 +- .../Sdl.Community.Hooks.csproj | 2 +- .../Configuration/ApplicationPaths.cs | 177 +++++++++++------- .../Sdl.Community.Models.csproj | 3 +- .../Sdl.Community.Parser.csproj | 2 +- .../Sdl.Community.Report.csproj | 4 +- .../Sdl.Community.TM.csproj | 4 +- .../Sdl.Community.WPFListView.csproj | 2 +- .../Sdl.Community.Qualitivity/App.config | 7 + .../Sdl.Community.Qualitivity.csproj | 14 +- .../Tracking/TrackedController.cs | 6 +- .../Tracking/TrackedDocument.cs | 8 +- .../pluginpackage.manifest.xml | 37 ++-- .../Sdl.Community.TermExcelerator.csproj | 9 + 15 files changed, 170 insertions(+), 113 deletions(-) create mode 100644 Qualitivity/Sdl.Community.Qualitivity/App.config diff --git a/Qualitivity/Build/SolutionInfo.cs b/Qualitivity/Build/SolutionInfo.cs index ef034667dd..dd54052795 100644 --- a/Qualitivity/Build/SolutionInfo.cs +++ b/Qualitivity/Build/SolutionInfo.cs @@ -3,7 +3,7 @@ [assembly: AssemblyProductAttribute("Qualitivity")] [assembly: AssemblyVersionAttribute("5.0.0.0")] -[assembly: AssemblyFileVersionAttribute("5.1.5.1")] +[assembly: AssemblyFileVersionAttribute("5.1.6.0")] [assembly: ComVisibleAttribute(false)] namespace System { @@ -11,7 +11,7 @@ internal static class AssemblyVersionInformation { internal const System.String AssemblyProduct = "Qualitivity"; internal const System.String AssemblyVersion = "5.0.0.0"; - internal const System.String AssemblyFileVersion = "5.1.5.1"; + internal const System.String AssemblyFileVersion = "5.1.6.0"; internal const System.Boolean ComVisible = false; } } diff --git a/Qualitivity/Sdl.Community.Qualitivity.Comparison/Sdl.Community.Comparison.csproj b/Qualitivity/Sdl.Community.Qualitivity.Comparison/Sdl.Community.Comparison.csproj index af08b62952..44a7dbe3fa 100644 --- a/Qualitivity/Sdl.Community.Qualitivity.Comparison/Sdl.Community.Comparison.csproj +++ b/Qualitivity/Sdl.Community.Qualitivity.Comparison/Sdl.Community.Comparison.csproj @@ -8,7 +8,7 @@ Library Properties Sdl.Community.Comparison - Sdl.Community.Qualitivity.Comparison + Qualitivity.Comparison v4.8 512 @@ -68,4 +68,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/Qualitivity/Sdl.Community.Qualitivity.Hooks/Sdl.Community.Hooks.csproj b/Qualitivity/Sdl.Community.Qualitivity.Hooks/Sdl.Community.Hooks.csproj index 63518fddfc..5e76b5fbb8 100644 --- a/Qualitivity/Sdl.Community.Qualitivity.Hooks/Sdl.Community.Hooks.csproj +++ b/Qualitivity/Sdl.Community.Qualitivity.Hooks/Sdl.Community.Hooks.csproj @@ -8,7 +8,7 @@ Library Properties Sdl.Community.Hooks - Sdl.Community.Qualitivity.Hooks + Qualitivity.Hooks v4.8 512 diff --git a/Qualitivity/Sdl.Community.Qualitivity.Models/Configuration/ApplicationPaths.cs b/Qualitivity/Sdl.Community.Qualitivity.Models/Configuration/ApplicationPaths.cs index 8f09ec87e0..48114e232e 100644 --- a/Qualitivity/Sdl.Community.Qualitivity.Models/Configuration/ApplicationPaths.cs +++ b/Qualitivity/Sdl.Community.Qualitivity.Models/Configuration/ApplicationPaths.cs @@ -1,74 +1,115 @@ using System; +using System.Configuration; using System.IO; +using System.Linq; +using System.Reflection; namespace Sdl.Community.Structures.Configuration { - [Serializable] - public class ApplicationPaths : ICloneable - { - public string ApplicationSettingsPath { get; set; } - - public string ApplicationTrackChangesPath { get; set; } - public string ApplicationTrackChangesReportPath { get; set; } - - public string ApplicationMyDocumentsPath { get; set; } - public string ApplicationMyDocumentsDatabasePath { get; set; } - public string ApplicationMyDocumentsDatabaseSettingsPath { get; set; } - public string ApplicationMyDocumentsDatabaseProjectsPath { get; set; } - - public string ApplicationBackupDatabasePath { get; set; } - - public ApplicationPaths() - { - ApplicationSettingsPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Qualitivity"); - if (!Directory.Exists(ApplicationSettingsPath)) - Directory.CreateDirectory(ApplicationSettingsPath); - - - ApplicationTrackChangesPath = Path.Combine(ApplicationSettingsPath, "Track.Changes"); - if (!Directory.Exists(ApplicationTrackChangesPath)) - Directory.CreateDirectory(ApplicationTrackChangesPath); - - ApplicationTrackChangesReportPath = Path.Combine(ApplicationTrackChangesPath, "Reports"); - if (!Directory.Exists(ApplicationTrackChangesReportPath)) - Directory.CreateDirectory(ApplicationTrackChangesReportPath); - - - ApplicationMyDocumentsPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Qualitivity"); - if (!Directory.Exists(ApplicationMyDocumentsPath)) - Directory.CreateDirectory(ApplicationMyDocumentsPath); - ApplicationMyDocumentsDatabasePath = Path.Combine(ApplicationMyDocumentsPath, "Database"); - if (!Directory.Exists(ApplicationMyDocumentsDatabasePath)) - Directory.CreateDirectory(ApplicationMyDocumentsDatabasePath); - ApplicationMyDocumentsDatabaseSettingsPath = Path.Combine(ApplicationMyDocumentsDatabasePath, "Settings.sqlite"); - ApplicationMyDocumentsDatabaseProjectsPath = Path.Combine(ApplicationMyDocumentsDatabasePath, "Projects.sqlite"); - - - - - ApplicationBackupDatabasePath = Path.Combine(ApplicationMyDocumentsDatabasePath, "Backups"); - if (!Directory.Exists(ApplicationBackupDatabasePath)) - Directory.CreateDirectory(ApplicationBackupDatabasePath); - } - - public object Clone() - { - var applicationPaths = new ApplicationPaths - { - ApplicationSettingsPath = ApplicationSettingsPath, - ApplicationTrackChangesPath = ApplicationTrackChangesPath, - ApplicationTrackChangesReportPath = ApplicationTrackChangesReportPath, - ApplicationMyDocumentsPath = ApplicationMyDocumentsPath, - ApplicationMyDocumentsDatabasePath = ApplicationMyDocumentsDatabasePath, - ApplicationBackupDatabasePath = ApplicationBackupDatabasePath - }; - - - - - - - return applicationPaths; - } - } + [Serializable] + public class ApplicationPaths : ICloneable + { + public string ApplicationSettingsPath { get; set; } + + public string ApplicationTrackChangesPath { get; set; } + public string ApplicationTrackChangesReportPath { get; set; } + + public string ApplicationMyDocumentsPath { get; set; } + public string ApplicationMyDocumentsDatabasePath { get; set; } + public string ApplicationMyDocumentsDatabaseSettingsPath { get; set; } + public string ApplicationMyDocumentsDatabaseProjectsPath { get; set; } + + public string ApplicationBackupDatabasePath { get; set; } + + const string MyDocumentsPath = "MyDocumentsPath"; + const string ApplicationDataPath = "ApplicationDataPath"; + + public ApplicationPaths() + { + var location = Assembly.GetExecutingAssembly().Location; + var unpackedFolder = location.Substring(0, location.LastIndexOf("\\", StringComparison.Ordinal)); + + var assembly = Path.Combine(unpackedFolder, "Qualitivity.dll"); + var config = ConfigurationManager.OpenExeConfiguration(assembly); + + var myDocumentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); + var applicationDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); + + if (config.AppSettings?.Settings != null) + { + var myDocumentsPathCustom = GetConfigValue(config, MyDocumentsPath); + if (myDocumentsPathCustom != null) + { + myDocumentsPath = myDocumentsPathCustom; + } + + var applicationDataPathCustom = GetConfigValue(config, ApplicationDataPath); + if (applicationDataPathCustom != null) + { + applicationDataPath = applicationDataPathCustom; + } + } + + ApplicationMyDocumentsPath = Path.Combine(myDocumentsPath, "Qualitivity"); + if (!Directory.Exists(ApplicationMyDocumentsPath)) + Directory.CreateDirectory(ApplicationMyDocumentsPath); + + ApplicationMyDocumentsDatabasePath = Path.Combine(ApplicationMyDocumentsPath, "Database"); + if (!Directory.Exists(ApplicationMyDocumentsDatabasePath)) + Directory.CreateDirectory(ApplicationMyDocumentsDatabasePath); + + ApplicationMyDocumentsDatabaseSettingsPath = Path.Combine(ApplicationMyDocumentsDatabasePath, "Settings.sqlite"); + ApplicationMyDocumentsDatabaseProjectsPath = Path.Combine(ApplicationMyDocumentsDatabasePath, "Projects.sqlite"); + + ApplicationBackupDatabasePath = Path.Combine(ApplicationMyDocumentsDatabasePath, "Backups"); + if (!Directory.Exists(ApplicationBackupDatabasePath)) + Directory.CreateDirectory(ApplicationBackupDatabasePath); + + ApplicationSettingsPath = Path.Combine(applicationDataPath, "Qualitivity"); + if (!Directory.Exists(ApplicationSettingsPath)) + Directory.CreateDirectory(ApplicationSettingsPath); + + ApplicationTrackChangesPath = Path.Combine(ApplicationSettingsPath, "Track.Changes"); + if (!Directory.Exists(ApplicationTrackChangesPath)) + Directory.CreateDirectory(ApplicationTrackChangesPath); + + ApplicationTrackChangesReportPath = Path.Combine(ApplicationTrackChangesPath, "Reports"); + if (!Directory.Exists(ApplicationTrackChangesReportPath)) + Directory.CreateDirectory(ApplicationTrackChangesReportPath); + } + + private static string GetConfigValue(System.Configuration.Configuration config, string propertyName) + { + if (config.AppSettings.Settings.AllKeys.Any(a => a == propertyName)) + { + var value = config.AppSettings.Settings[propertyName].Value; + if (value != null && Directory.Exists(value)) + { + return value; + } + } + + return null; + } + + public object Clone() + { + var applicationPaths = new ApplicationPaths + { + ApplicationSettingsPath = ApplicationSettingsPath, + ApplicationTrackChangesPath = ApplicationTrackChangesPath, + ApplicationTrackChangesReportPath = ApplicationTrackChangesReportPath, + ApplicationMyDocumentsPath = ApplicationMyDocumentsPath, + ApplicationMyDocumentsDatabasePath = ApplicationMyDocumentsDatabasePath, + ApplicationBackupDatabasePath = ApplicationBackupDatabasePath + }; + + + + + + + return applicationPaths; + } + } } diff --git a/Qualitivity/Sdl.Community.Qualitivity.Models/Sdl.Community.Models.csproj b/Qualitivity/Sdl.Community.Qualitivity.Models/Sdl.Community.Models.csproj index 802e9f185a..aa7144335e 100644 --- a/Qualitivity/Sdl.Community.Qualitivity.Models/Sdl.Community.Models.csproj +++ b/Qualitivity/Sdl.Community.Qualitivity.Models/Sdl.Community.Models.csproj @@ -8,7 +8,7 @@ Library Properties Sdl.Community.Structures - Sdl.Community.Qualitivity.Models + Qualitivity.Models v4.8 512 @@ -44,6 +44,7 @@ + diff --git a/Qualitivity/Sdl.Community.Qualitivity.Parser/Sdl.Community.Parser.csproj b/Qualitivity/Sdl.Community.Qualitivity.Parser/Sdl.Community.Parser.csproj index 64e636ca69..4a0b198dbd 100644 --- a/Qualitivity/Sdl.Community.Qualitivity.Parser/Sdl.Community.Parser.csproj +++ b/Qualitivity/Sdl.Community.Qualitivity.Parser/Sdl.Community.Parser.csproj @@ -8,7 +8,7 @@ Library Properties Sdl.Community.Parser - Sdl.Community.Qualitivity.Parser + Qualitivity.Parser v4.8 512 diff --git a/Qualitivity/Sdl.Community.Qualitivity.Report/Sdl.Community.Report.csproj b/Qualitivity/Sdl.Community.Qualitivity.Report/Sdl.Community.Report.csproj index 2883669973..a354074b8e 100644 --- a/Qualitivity/Sdl.Community.Qualitivity.Report/Sdl.Community.Report.csproj +++ b/Qualitivity/Sdl.Community.Qualitivity.Report/Sdl.Community.Report.csproj @@ -1,4 +1,4 @@ - + @@ -8,7 +8,7 @@ Library Properties Sdl.Community.Report - Sdl.Community.Qualitivity.Report + Qualitivity.Report v4.8 512 diff --git a/Qualitivity/Sdl.Community.Qualitivity.TM/Sdl.Community.TM.csproj b/Qualitivity/Sdl.Community.Qualitivity.TM/Sdl.Community.TM.csproj index f7120f6d78..6577356c46 100644 --- a/Qualitivity/Sdl.Community.Qualitivity.TM/Sdl.Community.TM.csproj +++ b/Qualitivity/Sdl.Community.Qualitivity.TM/Sdl.Community.TM.csproj @@ -1,4 +1,4 @@ - + @@ -8,7 +8,7 @@ Library Properties Sdl.Community.TM - Sdl.Community.Qualitivity.TM + Qualitivity.TM v4.8 512 diff --git a/Qualitivity/Sdl.Community.Qualitivity.WPFListView/Sdl.Community.WPFListView.csproj b/Qualitivity/Sdl.Community.Qualitivity.WPFListView/Sdl.Community.WPFListView.csproj index d14534d55e..ad5c12a9e2 100644 --- a/Qualitivity/Sdl.Community.Qualitivity.WPFListView/Sdl.Community.WPFListView.csproj +++ b/Qualitivity/Sdl.Community.Qualitivity.WPFListView/Sdl.Community.WPFListView.csproj @@ -8,7 +8,7 @@ Library Properties Sdl.Community.WPFListView - Sdl.Community.Qualitivity.WPFListView + Qualitivity.WPFListView v4.8 512 diff --git a/Qualitivity/Sdl.Community.Qualitivity/App.config b/Qualitivity/Sdl.Community.Qualitivity/App.config new file mode 100644 index 0000000000..c203ea4e30 --- /dev/null +++ b/Qualitivity/Sdl.Community.Qualitivity/App.config @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/Qualitivity/Sdl.Community.Qualitivity/Sdl.Community.Qualitivity.csproj b/Qualitivity/Sdl.Community.Qualitivity/Sdl.Community.Qualitivity.csproj index b4a9682fb9..f3394c426c 100644 --- a/Qualitivity/Sdl.Community.Qualitivity/Sdl.Community.Qualitivity.csproj +++ b/Qualitivity/Sdl.Community.Qualitivity/Sdl.Community.Qualitivity.csproj @@ -9,7 +9,7 @@ Library Properties Sdl.Community.Qualitivity - Sdl.Community.Qualitivity + Qualitivity v4.8 @@ -111,6 +111,7 @@ $(MSBuildProgramFiles32)\Trados\Trados Studio\Studio17\Sdl.TranslationStudioAutomation.IntegrationApi.dll + @@ -191,12 +192,6 @@ QualityMetricWeightsAppend.cs - - Form - - - About.cs - Form @@ -389,10 +384,6 @@ - - About.cs - Designer - ActivityReportWizard.cs Designer @@ -544,6 +535,7 @@ SdlCommunity.snk + diff --git a/Qualitivity/Sdl.Community.Qualitivity/Tracking/TrackedController.cs b/Qualitivity/Sdl.Community.Qualitivity/Tracking/TrackedController.cs index b68a05a055..4b5974c042 100644 --- a/Qualitivity/Sdl.Community.Qualitivity/Tracking/TrackedController.cs +++ b/Qualitivity/Sdl.Community.Qualitivity/Tracking/TrackedController.cs @@ -30,7 +30,7 @@ namespace Sdl.Community.Qualitivity.Tracking { public class TrackedController { - + private static string _productName = "Studio 2022"; private static ContentGenerator _contentProcessor; @@ -107,6 +107,7 @@ public static void TrackNewDocumentEntry(IStudioDocument doc) { Id = file.Id.ToString(), Name = file.Name, + ProductName = _productName, SourceLanguage = project.SourceLanguage, TargetLanguage = doc.ActiveFile.Language.CultureInfo.Name }; @@ -507,8 +508,9 @@ public static List InitializeDocumentStatisticalState(IStudioDoc var sourceLanguage = doc.ActiveFileProperties.FileConversionProperties.SourceLanguage.CultureInfo; var targetLanguage = doc.ActiveFileProperties.FileConversionProperties.TargetLanguage.CultureInfo; + var pathInfo = new Trados.Community.Toolkit.LanguagePlatform.Models.PathInfo(_productName); var segmentPairProcessor = new SegmentPairProcessor( - new Trados.Community.Toolkit.LanguagePlatform.Models.Settings(sourceLanguage, targetLanguage), new Trados.Community.Toolkit.LanguagePlatform.Models.PathInfo()); + new Trados.Community.Toolkit.LanguagePlatform.Models.Settings(sourceLanguage, targetLanguage), pathInfo); var parser = new ContentGenerator(); diff --git a/Qualitivity/Sdl.Community.Qualitivity/Tracking/TrackedDocument.cs b/Qualitivity/Sdl.Community.Qualitivity/Tracking/TrackedDocument.cs index 2fe71423ba..4f51774bca 100644 --- a/Qualitivity/Sdl.Community.Qualitivity/Tracking/TrackedDocument.cs +++ b/Qualitivity/Sdl.Community.Qualitivity/Tracking/TrackedDocument.cs @@ -40,6 +40,8 @@ public TrackedDocument() public string Name { get; set; } public string Path { get; set; } + public string ProductName { get; set; } + public string SourceLanguage { get; set; } public string TargetLanguage { get; set; } @@ -71,12 +73,14 @@ public SegmentPairProcessor SegmentPairProcessor if (SourceLanguage == null || TargetLanguage == null) { - throw new Exception(string.Format("Unable to parse the file; {0} langauge cannot be null!", SourceLanguage == null ? "Source" : "Target")); + throw new Exception(string.Format("Unable to parse the file; {0} language cannot be null!", SourceLanguage == null ? "Source" : "Target")); } + var pathInfo = new Trados.Community.Toolkit.LanguagePlatform.Models.PathInfo(ProductName); + _segmentPairProcessor = new SegmentPairProcessor( new Trados.Community.Toolkit.LanguagePlatform.Models.Settings(new CultureInfo(SourceLanguage), new CultureInfo(TargetLanguage)), - new Trados.Community.Toolkit.LanguagePlatform.Models.PathInfo()); + pathInfo); return _segmentPairProcessor; } diff --git a/Qualitivity/Sdl.Community.Qualitivity/pluginpackage.manifest.xml b/Qualitivity/Sdl.Community.Qualitivity/pluginpackage.manifest.xml index ace3c1eadf..ad609c8666 100644 --- a/Qualitivity/Sdl.Community.Qualitivity/pluginpackage.manifest.xml +++ b/Qualitivity/Sdl.Community.Qualitivity/pluginpackage.manifest.xml @@ -1,20 +1,21 @@ - Qualitivity - 5.1.5.1 - Qualitivity - Trados AppStore Team - - Sdl.Community.Qualitivity.Comparison.dll - Sdl.Community.Qualitivity.Hooks.dll - Sdl.Community.Qualitivity.Models.dll - Sdl.Community.Qualitivity.Parser.dll - Sdl.Community.Qualitivity.Report.dll - Sdl.Community.Qualitivity.TM.dll - Sdl.Community.Qualitivity.WPFListView.dll - Trados.Community.Toolkit.LanguagePlatform.dll - Trados.Community.Toolkit.Core.dll - Qualitivity.ObjectListView.dll - System.Data.SQLite.dll - - + Qualitivity + 5.1.6.0 + Qualitivity + Trados AppStore Team + + Qualitivity.dll.config + Qualitivity.Comparison.dll + Qualitivity.Hooks.dll + Qualitivity.Models.dll + Qualitivity.Parser.dll + Qualitivity.Report.dll + Qualitivity.TM.dll + Qualitivity.WPFListView.dll + Qualitivity.ObjectListView.dll + Trados.Community.Toolkit.LanguagePlatform.dll + Trados.Community.Toolkit.Core.dll + System.Data.SQLite.dll + + diff --git a/TermExcelerator/Sdl.Community.TermExcelerator/Sdl.Community.TermExcelerator.csproj b/TermExcelerator/Sdl.Community.TermExcelerator/Sdl.Community.TermExcelerator.csproj index 6da83a60af..1bb1bcd665 100644 --- a/TermExcelerator/Sdl.Community.TermExcelerator/Sdl.Community.TermExcelerator.csproj +++ b/TermExcelerator/Sdl.Community.TermExcelerator/Sdl.Community.TermExcelerator.csproj @@ -6,6 +6,12 @@ false $(AppData)\Trados\Trados Studio\17\Plugins + + + + + + @@ -83,6 +89,9 @@ 17.0.0 + + + true