diff --git a/app/MindWork AI Studio/Components/Pages/Settings.razor b/app/MindWork AI Studio/Components/Pages/Settings.razor
index 195529d8..39df9d1c 100644
--- a/app/MindWork AI Studio/Components/Pages/Settings.razor
+++ b/app/MindWork AI Studio/Components/Pages/Settings.razor
@@ -1,6 +1,7 @@
@page "/settings"
@using AIStudio.Provider
@using AIStudio.Settings
+@using AIStudio.Tools
@using Host = AIStudio.Provider.SelfHosted.Host
Settings
@@ -78,11 +79,25 @@
Assistants Options
+
Icon Finder Options
+
+ Translator Options
+
+
+
+
+
+ @if (this.SettingsManager.ConfigurationData.PreselectedTranslationTargetLanguage is CommonLanguages.OTHER)
+ {
+
+ }
+
+
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Components/Pages/Settings.razor.cs b/app/MindWork AI Studio/Components/Pages/Settings.razor.cs
index 650e40d7..db8f12fc 100644
--- a/app/MindWork AI Studio/Components/Pages/Settings.razor.cs
+++ b/app/MindWork AI Studio/Components/Pages/Settings.razor.cs
@@ -11,7 +11,7 @@ using DialogOptions = AIStudio.Components.CommonDialogs.DialogOptions;
namespace AIStudio.Components.Pages;
-public partial class Settings : ComponentBase
+public partial class Settings : ComponentBase, IMessageBusReceiver
{
[Inject]
public SettingsManager SettingsManager { get; init; } = null!;
@@ -31,6 +31,10 @@ public partial class Settings : ComponentBase
protected override async Task OnInitializedAsync()
{
+ // Register this component with the message bus:
+ this.MessageBus.RegisterComponent(this);
+ this.MessageBus.ApplyFilters(this, [], [ Event.CONFIGURATION_CHANGED ]);
+
this.UpdateProviders();
await base.OnInitializedAsync();
}
@@ -154,4 +158,25 @@ public partial class Settings : ComponentBase
}
#endregion
+
+ #region Implementation of IMessageBusReceiver
+
+ public Task ProcessMessage(ComponentBase? sendingComponent, Event triggeredEvent, TMsg? data)
+ {
+ switch (triggeredEvent)
+ {
+ case Event.CONFIGURATION_CHANGED:
+ this.StateHasChanged();
+ break;
+ }
+
+ return Task.CompletedTask;
+ }
+
+ public Task ProcessMessageWithResult(ComponentBase? sendingComponent, Event triggeredEvent, TPayload? data)
+ {
+ return Task.FromResult(default);
+ }
+
+ #endregion
}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor.cs b/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor.cs
index fcfcef30..ea214a2e 100644
--- a/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor.cs
+++ b/app/MindWork AI Studio/Components/Pages/Translator/AssistantTranslator.razor.cs
@@ -24,7 +24,24 @@ public partial class AssistantTranslator : AssistantBaseCore
private string inputTextLastTranslation = string.Empty;
private CommonLanguages selectedTargetLanguage;
private string customTargetLanguage = string.Empty;
-
+
+ #region Overrides of ComponentBase
+
+ protected override async Task OnInitializedAsync()
+ {
+ if (this.SettingsManager.ConfigurationData.PreselectTranslatorOptions)
+ {
+ this.liveTranslation = this.SettingsManager.ConfigurationData.PreselectLiveTranslation;
+ this.selectedTargetLanguage = this.SettingsManager.ConfigurationData.PreselectedTranslationTargetLanguage;
+ this.customTargetLanguage = this.SettingsManager.ConfigurationData.PreselectTranslationOtherLanguage;
+ this.providerSettings = this.SettingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.SettingsManager.ConfigurationData.PreselectedTranslationProvider);
+ }
+
+ await base.OnInitializedAsync();
+ }
+
+ #endregion
+
private string? ValidatingText(string text)
{
if(string.IsNullOrWhiteSpace(text))
diff --git a/app/MindWork AI Studio/Settings/ConfigurationSelectData.cs b/app/MindWork AI Studio/Settings/ConfigurationSelectData.cs
index 82e01531..1dcb633a 100644
--- a/app/MindWork AI Studio/Settings/ConfigurationSelectData.cs
+++ b/app/MindWork AI Studio/Settings/ConfigurationSelectData.cs
@@ -1,5 +1,6 @@
using AIStudio.Components.Pages.IconFinder;
using AIStudio.Settings.DataModel;
+using AIStudio.Tools;
namespace AIStudio.Settings;
@@ -60,6 +61,12 @@ public static class ConfigurationSelectDataFactory
public static IEnumerable> GetIconSourcesData()
{
foreach (var source in Enum.GetValues())
- yield return new(source.ToString(), source);
+ yield return new(source.Name(), source);
+ }
+
+ public static IEnumerable> GetCommonLanguagesData()
+ {
+ foreach (var language in Enum.GetValues())
+ yield return new(language.Name(), language);
}
}
\ No newline at end of file
diff --git a/app/MindWork AI Studio/Settings/DataModel/Data.cs b/app/MindWork AI Studio/Settings/DataModel/Data.cs
index 569de264..ff5f21e2 100644
--- a/app/MindWork AI Studio/Settings/DataModel/Data.cs
+++ b/app/MindWork AI Studio/Settings/DataModel/Data.cs
@@ -1,4 +1,5 @@
using AIStudio.Components.Pages.IconFinder;
+using AIStudio.Tools;
namespace AIStudio.Settings.DataModel;
@@ -89,4 +90,38 @@ public sealed class Data
public string PreselectedIconProvider { get; set; } = string.Empty;
#endregion
+
+ #region Assistant: Translator Settings
+
+ ///
+ /// The live translation interval for debouncing in milliseconds.
+ ///
+ public int LiveTranslationDebounceIntervalMilliseconds { get; set; } = 1_000;
+
+ ///
+ /// Do we want to preselect any translator options?
+ ///
+ public bool PreselectTranslatorOptions { get; set; }
+
+ ///
+ /// Preselect the live translation?
+ ///
+ public bool PreselectLiveTranslation { get; set; }
+
+ ///
+ /// Preselect the target language?
+ ///
+ public CommonLanguages PreselectedTranslationTargetLanguage { get; set; } = CommonLanguages.EN_US;
+
+ ///
+ /// Preselect any other language?
+ ///
+ public string PreselectTranslationOtherLanguage { get; set; } = string.Empty;
+
+ ///
+ /// The preselected translator provider.
+ ///
+ public string PreselectedTranslationProvider { get; set; } = string.Empty;
+
+ #endregion
}
\ No newline at end of file