mirror of
https://github.com/MindWorkAI/AI-Studio.git
synced 2026-11-05 03:27:41 +00:00
Turned getter-like extension methods into extension properties (#1157)
This commit is contained in:
1 parent
0375318b1b
commit
f649febf88
286 files changed
+1379
-1109
No files matched your search
@@ -6,7 +6,7 @@ public static class AudienceAgeGroupExtensions
|
||||
|
||||
extension(AudienceAgeGroup ageGroup)
|
||||
{
|
||||
public string Name() => ageGroup switch
|
||||
public string Name => ageGroup switch
|
||||
{
|
||||
AudienceAgeGroup.UNSPECIFIED => TB("Unspecified age group"),
|
||||
AudienceAgeGroup.CHILDREN => TB("Children"),
|
||||
@@ -16,7 +16,7 @@ public static class AudienceAgeGroupExtensions
|
||||
_ => TB("Unspecified age group"),
|
||||
};
|
||||
|
||||
public string Prompt() => ageGroup switch
|
||||
public string Prompt => ageGroup switch
|
||||
{
|
||||
AudienceAgeGroup.UNSPECIFIED => "Do not tailor the text to a specific age group.",
|
||||
AudienceAgeGroup.CHILDREN => "Use simple, concrete language with short sentences and minimal jargon.",
|
||||
|
||||
@@ -6,7 +6,7 @@ public static class AudienceExpertiseExtensions
|
||||
|
||||
extension(AudienceExpertise expertise)
|
||||
{
|
||||
public string Name() => expertise switch
|
||||
public string Name => expertise switch
|
||||
{
|
||||
AudienceExpertise.UNSPECIFIED => TB("Unspecified expertise"),
|
||||
AudienceExpertise.NON_EXPERTS => TB("No expertise"),
|
||||
@@ -17,7 +17,7 @@ public static class AudienceExpertiseExtensions
|
||||
_ => TB("Unspecified expertise"),
|
||||
};
|
||||
|
||||
public string Prompt() => expertise switch
|
||||
public string Prompt => expertise switch
|
||||
{
|
||||
AudienceExpertise.UNSPECIFIED => "Do not tailor the text to a specific expertise level.",
|
||||
AudienceExpertise.NON_EXPERTS => "Avoid jargon and explain specialized concepts plainly.",
|
||||
|
||||
+2
-2
@@ -6,7 +6,7 @@ public static class AudienceOrganizationalLevelExtensions
|
||||
|
||||
extension(AudienceOrganizationalLevel level)
|
||||
{
|
||||
public string Name() => level switch
|
||||
public string Name => level switch
|
||||
{
|
||||
AudienceOrganizationalLevel.UNSPECIFIED => TB("Unspecified organizational level"),
|
||||
AudienceOrganizationalLevel.TRAINEES => TB("Trainees"),
|
||||
@@ -19,7 +19,7 @@ public static class AudienceOrganizationalLevelExtensions
|
||||
_ => TB("Unspecified organizational level"),
|
||||
};
|
||||
|
||||
public string Prompt() => level switch
|
||||
public string Prompt => level switch
|
||||
{
|
||||
AudienceOrganizationalLevel.UNSPECIFIED => "Do not tailor the text to a specific organizational level.",
|
||||
AudienceOrganizationalLevel.TRAINEES => "Keep the content supportive and introductory. Explain context and avoid assuming prior organizational knowledge.",
|
||||
|
||||
@@ -6,7 +6,7 @@ public static class AudienceProfileExtensions
|
||||
|
||||
extension(AudienceProfile profile)
|
||||
{
|
||||
public string Name() => profile switch
|
||||
public string Name => profile switch
|
||||
{
|
||||
AudienceProfile.UNSPECIFIED => TB("Unspecified audience profile"),
|
||||
AudienceProfile.STUDENTS => TB("Students"),
|
||||
@@ -23,7 +23,7 @@ public static class AudienceProfileExtensions
|
||||
_ => TB("Unspecified audience profile"),
|
||||
};
|
||||
|
||||
public string Prompt() => profile switch
|
||||
public string Prompt => profile switch
|
||||
{
|
||||
AudienceProfile.UNSPECIFIED => "Do not tailor the text to a specific audience profile.",
|
||||
AudienceProfile.STUDENTS => "Write for students. Keep it structured, easy to study, and focused on key takeaways.",
|
||||
|
||||
@@ -7,7 +7,7 @@ public static class PresentationOccasionExtensions
|
||||
/// <param name="occasion">The occasion.</param>
|
||||
extension(PresentationOccasion occasion)
|
||||
{
|
||||
public string Name() => occasion switch
|
||||
public string Name => occasion switch
|
||||
{
|
||||
PresentationOccasion.UNSPECIFIED => TB("Unspecified occasion"),
|
||||
PresentationOccasion.TALK => TB("Talk"),
|
||||
|
||||
@@ -95,22 +95,22 @@
|
||||
</MudGrid>
|
||||
|
||||
<MudText Typo="Typo.h6" Class="mb-1 mt-3"> @T("Language")</MudText>
|
||||
<EnumSelection T="CommonLanguages" NameFunc="@(language => language.Name())" @bind-Value="@this.selectedTargetLanguage" Icon="@Icons.Material.Filled.Translate" Label="@T("Target language")" AllowOther="@true" @bind-OtherInput="@this.customTargetLanguage" OtherValue="CommonLanguages.OTHER" LabelOther="@T("Custom target language")" ValidateOther="@this.ValidateCustomLanguage" />
|
||||
<EnumSelection T="CommonLanguages" NameFunc="@(language => language.Name)" @bind-Value="@this.selectedTargetLanguage" Icon="@Icons.Material.Filled.Translate" Label="@T("Target language")" AllowOther="@true" @bind-OtherInput="@this.customTargetLanguage" OtherValue="CommonLanguages.OTHER" LabelOther="@T("Custom target language")" ValidateOther="@this.ValidateCustomLanguage" />
|
||||
|
||||
<MudText Typo="Typo.h6" Class="mb-1 mt-3">@T("Occasion")</MudText>
|
||||
<MudJustifiedText Typo="Typo.body1" Class="mb-2">
|
||||
@T("The occasion helps the LLM to structure the presentation. A lecture, for example, may close its chapters with an interim summary or with room for questions, and a report to management leads with the key messages.")
|
||||
</MudJustifiedText>
|
||||
<EnumSelection T="PresentationOccasion" NameFunc="@(occasion => occasion.Name())" @bind-Value="@this.selectedOccasion" Icon="@Icons.Material.Filled.Event" Label="@T("Occasion of the presentation")" AllowOther="@true" @bind-OtherInput="@this.customOccasion" OtherValue="PresentationOccasion.OTHER" LabelOther="@T("Other occasion")" ValidateOther="@this.ValidateCustomOccasion" />
|
||||
<EnumSelection T="PresentationOccasion" NameFunc="@(occasion => occasion.Name)" @bind-Value="@this.selectedOccasion" Icon="@Icons.Material.Filled.Event" Label="@T("Occasion of the presentation")" AllowOther="@true" @bind-OtherInput="@this.customOccasion" OtherValue="PresentationOccasion.OTHER" LabelOther="@T("Other occasion")" ValidateOther="@this.ValidateCustomOccasion" />
|
||||
|
||||
<MudText Typo="Typo.h6" Class="mb-1 mt-3"> @T("Audience")</MudText>
|
||||
<MudJustifiedText Typo="Typo.body1" Class="mb-2">
|
||||
@T("Please specify the audience for the planned presentation. This will help the LLM to create a presentation that fits your needs. You can specify the audience profile, the age group, organizational level, and the expertise. You don't have to specify all of these parameters, for example you might only want to specify the audience profile and leave the other parameters at their default values.")
|
||||
</MudJustifiedText>
|
||||
<EnumSelection T="AudienceProfile" NameFunc="@(profile => profile.Name())" @bind-Value="@this.selectedAudienceProfile" Icon="@Icons.Material.Filled.Groups" Label="@T("Audience profile")" />
|
||||
<EnumSelection T="AudienceAgeGroup" NameFunc="@(ageGroup => ageGroup.Name())" @bind-Value="@this.selectedAudienceAgeGroup" Icon="@Icons.Material.Filled.Cake" Label="@T("Audience age group")" />
|
||||
<EnumSelection T="AudienceOrganizationalLevel" NameFunc="@(level => level.Name())" @bind-Value="@this.selectedAudienceOrganizationalLevel" Icon="@Icons.Material.Filled.AccountTree" Label="@T("Audience organizational level")" />
|
||||
<EnumSelection T="AudienceExpertise" NameFunc="@(expertise => expertise.Name())" @bind-Value="@this.selectedAudienceExpertise" Icon="@Icons.Material.Filled.School" Label="@T("Audience expertise")" />
|
||||
<EnumSelection T="AudienceProfile" NameFunc="@(profile => profile.Name)" @bind-Value="@this.selectedAudienceProfile" Icon="@Icons.Material.Filled.Groups" Label="@T("Audience profile")" />
|
||||
<EnumSelection T="AudienceAgeGroup" NameFunc="@(ageGroup => ageGroup.Name)" @bind-Value="@this.selectedAudienceAgeGroup" Icon="@Icons.Material.Filled.Cake" Label="@T("Audience age group")" />
|
||||
<EnumSelection T="AudienceOrganizationalLevel" NameFunc="@(level => level.Name)" @bind-Value="@this.selectedAudienceOrganizationalLevel" Icon="@Icons.Material.Filled.AccountTree" Label="@T("Audience organizational level")" />
|
||||
<EnumSelection T="AudienceExpertise" NameFunc="@(expertise => expertise.Name)" @bind-Value="@this.selectedAudienceExpertise" Icon="@Icons.Material.Filled.School" Label="@T("Audience expertise")" />
|
||||
|
||||
<MudText Typo="Typo.h5" Class="mb-1 mt-6"> @T("PowerPoint template")</MudText>
|
||||
<MudJustifiedText Typo="Typo.body1" Class="mb-2">
|
||||
@@ -160,7 +160,7 @@
|
||||
</MudJustifiedText>
|
||||
<LayoutChoicePanels IsChosen="@(purpose => this.LayoutNameOf(purpose).Length > 0)">
|
||||
<ChoiceContent Context="purpose">
|
||||
<MudSelect T="string" Value="@this.LayoutNameOf(purpose)" ValueChanged="@(name => this.SetLayoutName(purpose, name))" Disabled="@this.AreLayoutsLocked" Label="@purpose.Label()" HelperText="@purpose.Help()" Variant="Variant.Outlined" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.ViewQuilt" Class="mb-3">
|
||||
<MudSelect T="string" Value="@this.LayoutNameOf(purpose)" ValueChanged="@(name => this.SetLayoutName(purpose, name))" Disabled="@this.AreLayoutsLocked" Label="@purpose.Label" HelperText="@purpose.Help" Variant="Variant.Outlined" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.ViewQuilt" Class="mb-3">
|
||||
<MudSelectItem T="string" Value="@string.Empty">@LayoutPurposeExtensions.NoPreference</MudSelectItem>
|
||||
@foreach (var layoutName in loadedTemplate.FamilyNames)
|
||||
{
|
||||
@@ -178,7 +178,7 @@
|
||||
</MudJustifiedText>
|
||||
@foreach (var templateSlide in loadedTemplate.Slides)
|
||||
{
|
||||
<EnumSelection T="TemplateSlideUse" NameFunc="@(use => use.Name())" Value="@this.TemplateSlideUseOf(templateSlide.Number)" ValueChanged="@(use => this.SetTemplateSlideUse(templateSlide.Number, use))" ValidateSelection="@(use => this.ValidateTemplateSlideUse(templateSlide, use))" Disabled="@this.AreTemplateSlideUsesLocked" Icon="@Icons.Material.Filled.Slideshow" Label="@templateSlide.Label()"/>
|
||||
<EnumSelection T="TemplateSlideUse" NameFunc="@(use => use.Name)" Value="@this.TemplateSlideUseOf(templateSlide.Number)" ValueChanged="@(use => this.SetTemplateSlideUse(templateSlide.Number, use))" ValidateSelection="@(use => this.ValidateTemplateSlideUse(templateSlide, use))" Disabled="@this.AreTemplateSlideUsesLocked" Icon="@Icons.Material.Filled.Slideshow" Label="@templateSlide.Label"/>
|
||||
}
|
||||
}
|
||||
</CompactExpansionPanel>
|
||||
|
||||
@@ -491,16 +491,16 @@ public partial class SlideAssistant : AssistantBaseCore<SettingsDialogSlideBuild
|
||||
var prompts = new List<string>();
|
||||
|
||||
if (this.selectedAudienceProfile is not AudienceProfile.UNSPECIFIED)
|
||||
prompts.Add(this.selectedAudienceProfile.Prompt());
|
||||
prompts.Add(this.selectedAudienceProfile.Prompt);
|
||||
|
||||
if (this.selectedAudienceAgeGroup is not AudienceAgeGroup.UNSPECIFIED)
|
||||
prompts.Add(this.selectedAudienceAgeGroup.Prompt());
|
||||
prompts.Add(this.selectedAudienceAgeGroup.Prompt);
|
||||
|
||||
if (this.selectedAudienceOrganizationalLevel is not AudienceOrganizationalLevel.UNSPECIFIED)
|
||||
prompts.Add(this.selectedAudienceOrganizationalLevel.Prompt());
|
||||
prompts.Add(this.selectedAudienceOrganizationalLevel.Prompt);
|
||||
|
||||
if (this.selectedAudienceExpertise is not AudienceExpertise.UNSPECIFIED)
|
||||
prompts.Add(this.selectedAudienceExpertise.Prompt());
|
||||
prompts.Add(this.selectedAudienceExpertise.Prompt);
|
||||
|
||||
if (prompts.Count == 0)
|
||||
return " - Do not tailor the text to a specific audience.";
|
||||
|
||||
@@ -20,14 +20,17 @@ internal static class TemplateSlideExtensions
|
||||
/// The title tells the slides apart at a glance, since a template rarely gives its slides more
|
||||
/// than a title. A long one is cut, so that the label stays on one line.
|
||||
/// </remarks>
|
||||
public string Label()
|
||||
public string Label
|
||||
{
|
||||
var title = slide.Title.Length > MAX_SLIDE_TITLE_CHARACTERS ? $"{slide.Title[..MAX_SLIDE_TITLE_CHARACTERS].TrimEnd()}…" : slide.Title;
|
||||
var label = title.Length > 0 ? string.Format(TB("Slide {0}: {1}"), slide.Number, title) : string.Format(TB("Slide {0}"), slide.Number);
|
||||
if (slide.IsHidden)
|
||||
label = $"{label} ({TB("hidden")})";
|
||||
get
|
||||
{
|
||||
var title = slide.Title.Length > MAX_SLIDE_TITLE_CHARACTERS ? $"{slide.Title[..MAX_SLIDE_TITLE_CHARACTERS].TrimEnd()}…" : slide.Title;
|
||||
var label = title.Length > 0 ? string.Format(TB("Slide {0}: {1}"), slide.Number, title) : string.Format(TB("Slide {0}"), slide.Number);
|
||||
if (slide.IsHidden)
|
||||
label = $"{label} ({TB("hidden")})";
|
||||
|
||||
return label;
|
||||
return label;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@ internal static class TemplateSlideUseExtensions
|
||||
|
||||
extension(TemplateSlideUse use)
|
||||
{
|
||||
public string Name() => use switch
|
||||
public string Name => use switch
|
||||
{
|
||||
TemplateSlideUse.OMIT => TB("Leave out"),
|
||||
TemplateSlideUse.KEEP => TB("Keep unchanged"),
|
||||
|
||||
Reference in new issue
Block a user