mirror of
				https://github.com/MindWorkAI/AI-Studio.git
				synced 2025-11-04 02:40:20 +00:00 
			
		
		
		
	Add language behavior to the app settings
This commit is contained in:
		
							parent
							
								
									7f6190a883
								
							
						
					
					
						commit
						900b65edf5
					
				@ -3,6 +3,17 @@
 | 
				
			|||||||
@inherits SettingsPanelBase
 | 
					@inherits SettingsPanelBase
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Apps" HeaderText="App Options">
 | 
					<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Apps" HeaderText="App Options">
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    @if (PreviewFeatures.PRE_PLUGINS_2025.IsEnabled(this.SettingsManager))
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        <ConfigurationSelect OptionDescription="Language behavior" SelectedValue="@(() => this.SettingsManager.ConfigurationData.App.LanguageBehavior)" Data="@ConfigurationSelectDataFactory.GetLangBehaviorData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.App.LanguageBehavior = selectedValue)" OptionHelp="Select the language behavior for the app. The default is to use the system language. You might want to choose a language manually?"/>
 | 
				
			||||||
 | 
					        
 | 
				
			||||||
 | 
					        @if (this.SettingsManager.ConfigurationData.App.LanguageBehavior is LangBehavior.MANUAL)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            <ConfigurationSelect OptionDescription="Language" SelectedValue="@(() => this.SettingsManager.ConfigurationData.App.LanguagePluginId)" Data="@ConfigurationSelectDataFactory.GetLanguagesData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.App.LanguagePluginId = selectedValue)" OptionHelp="Select the language for the app."/>
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    <ConfigurationSelect OptionDescription="Color theme" SelectedValue="@(() => this.SettingsManager.ConfigurationData.App.PreferredTheme)" Data="@ConfigurationSelectDataFactory.GetThemesData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.App.PreferredTheme = selectedValue)" OptionHelp="Choose the color theme that best suits for you."/>
 | 
					    <ConfigurationSelect OptionDescription="Color theme" SelectedValue="@(() => this.SettingsManager.ConfigurationData.App.PreferredTheme)" Data="@ConfigurationSelectDataFactory.GetThemesData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.App.PreferredTheme = selectedValue)" OptionHelp="Choose the color theme that best suits for you."/>
 | 
				
			||||||
    <ConfigurationOption OptionDescription="Save energy?" LabelOn="Energy saving is enabled" LabelOff="Energy saving is disabled" State="@(() => this.SettingsManager.ConfigurationData.App.IsSavingEnergy)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.App.IsSavingEnergy = updatedState)" OptionHelp="When enabled, streamed content from the AI is updated once every third second. When disabled, streamed content will be updated as soon as it is available."/>
 | 
					    <ConfigurationOption OptionDescription="Save energy?" LabelOn="Energy saving is enabled" LabelOff="Energy saving is disabled" State="@(() => this.SettingsManager.ConfigurationData.App.IsSavingEnergy)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.App.IsSavingEnergy = updatedState)" OptionHelp="When enabled, streamed content from the AI is updated once every third second. When disabled, streamed content will be updated as soon as it is available."/>
 | 
				
			||||||
    <ConfigurationOption OptionDescription="Enable spellchecking?" LabelOn="Spellchecking is enabled" LabelOff="Spellchecking is disabled" State="@(() => this.SettingsManager.ConfigurationData.App.EnableSpellchecking)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.App.EnableSpellchecking = updatedState)" OptionHelp="When enabled, spellchecking will be active in all input fields. Depending on your operating system, errors may not be visually highlighted, but right-clicking may still offer possible corrections." />
 | 
					    <ConfigurationOption OptionDescription="Enable spellchecking?" LabelOn="Spellchecking is enabled" LabelOff="Spellchecking is disabled" State="@(() => this.SettingsManager.ConfigurationData.App.EnableSpellchecking)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.App.EnableSpellchecking = updatedState)" OptionHelp="When enabled, spellchecking will be active in all input fields. Depending on your operating system, errors may not be visually highlighted, but right-clicking may still offer possible corrections." />
 | 
				
			||||||
 | 
				
			|||||||
@ -6,6 +6,7 @@ using AIStudio.Assistants.TextSummarizer;
 | 
				
			|||||||
using AIStudio.Assistants.EMail;
 | 
					using AIStudio.Assistants.EMail;
 | 
				
			||||||
using AIStudio.Provider;
 | 
					using AIStudio.Provider;
 | 
				
			||||||
using AIStudio.Settings.DataModel;
 | 
					using AIStudio.Settings.DataModel;
 | 
				
			||||||
 | 
					using AIStudio.Tools.PluginSystem;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
using WritingStylesRewrite = AIStudio.Assistants.RewriteImprove.WritingStyles;
 | 
					using WritingStylesRewrite = AIStudio.Assistants.RewriteImprove.WritingStyles;
 | 
				
			||||||
using WritingStylesEMail = AIStudio.Assistants.EMail.WritingStyles;
 | 
					using WritingStylesEMail = AIStudio.Assistants.EMail.WritingStyles;
 | 
				
			||||||
@ -25,6 +26,21 @@ public readonly record struct ConfigurationSelectData<T>(string Name, T Value);
 | 
				
			|||||||
/// </summary>
 | 
					/// </summary>
 | 
				
			||||||
public static class ConfigurationSelectDataFactory
 | 
					public static class ConfigurationSelectDataFactory
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    public static IEnumerable<ConfigurationSelectData<LangBehavior>> GetLangBehaviorData()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        foreach (var behavior in Enum.GetValues<LangBehavior>())
 | 
				
			||||||
 | 
					            yield return new(behavior.Name(), behavior);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    public static IEnumerable<ConfigurationSelectData<Guid>> GetLanguagesData()
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        foreach (var availablePlugin in PluginFactory.RunningPlugins)
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            if(availablePlugin is ILanguagePlugin languagePlugin)
 | 
				
			||||||
 | 
					                yield return new(languagePlugin.LangName, availablePlugin.Id);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    public static IEnumerable<ConfigurationSelectData<LoadingChatProviderBehavior>> GetLoadingChatProviderBehavior()
 | 
					    public static IEnumerable<ConfigurationSelectData<LoadingChatProviderBehavior>> GetLoadingChatProviderBehavior()
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        yield return new("When possible, use the LLM provider which was used for each chat in the first place", LoadingChatProviderBehavior.USE_CHAT_PROVIDER_IF_AVAILABLE);
 | 
					        yield return new("When possible, use the LLM provider which was used for each chat in the first place", LoadingChatProviderBehavior.USE_CHAT_PROVIDER_IF_AVAILABLE);
 | 
				
			||||||
 | 
				
			|||||||
@ -2,6 +2,16 @@ namespace AIStudio.Settings.DataModel;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
public sealed class DataApp
 | 
					public sealed class DataApp
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// The language behavior.
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public LangBehavior LanguageBehavior { get; set; } = LangBehavior.AUTO;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    /// <summary>
 | 
				
			||||||
 | 
					    /// The language plugin ID to use.
 | 
				
			||||||
 | 
					    /// </summary>
 | 
				
			||||||
 | 
					    public Guid LanguagePluginId { get; set; } = Guid.Empty;
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
    /// <summary>
 | 
					    /// <summary>
 | 
				
			||||||
    /// The preferred theme to use.
 | 
					    /// The preferred theme to use.
 | 
				
			||||||
    /// </summary>
 | 
					    /// </summary>
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,7 @@
 | 
				
			|||||||
 | 
					namespace AIStudio.Settings.DataModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public enum LangBehavior
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    AUTO,
 | 
				
			||||||
 | 
					    MANUAL,
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					namespace AIStudio.Settings.DataModel;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public static class LangBehaviorExtensions
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    public static string Name(this LangBehavior langBehavior) => langBehavior switch
 | 
				
			||||||
 | 
					    {
 | 
				
			||||||
 | 
					        LangBehavior.AUTO => "Choose the language automatically, based on your system language.",
 | 
				
			||||||
 | 
					        LangBehavior.MANUAL => "Choose the language manually.",
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        _ => "Unknown option"
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user