mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 11:48:06 +01:00
Add default variable
This commit is contained in:
@@ -194,7 +194,20 @@
|
||||
Header="{x:Bind ViewModel.UserDefaultSet.Name}"
|
||||
HeaderIcon="{ui:FontIcon Glyph=}"
|
||||
ItemTemplate="{StaticResource VariableTemplate}"
|
||||
ItemsSource="{x:Bind ViewModel.UserDefaultSet.Variables, Mode=OneWay}" />
|
||||
ItemsSource="{x:Bind ViewModel.UserDefaultSet.Variables, Mode=OneWay}">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button
|
||||
x:Name="AddDefaultVariableUserBtn"
|
||||
x:Uid="AddDefaultVariableUserBtn"
|
||||
Width="40"
|
||||
Height="36"
|
||||
Click="AddDefaultVariableBtn_Click"
|
||||
CommandParameter="{x:Bind ViewModel.UserDefaultSet}"
|
||||
Content=""
|
||||
FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
||||
Style="{StaticResource SubtleButtonStyle}" />
|
||||
</StackPanel>
|
||||
</controls:SettingsExpander>
|
||||
|
||||
<controls:SettingsExpander
|
||||
Header="{x:Bind ViewModel.SystemDefaultSet.Name}"
|
||||
@@ -211,6 +224,19 @@
|
||||
<TextBlock x:Uid="EditSystemDefaultSetInfoBar" />
|
||||
</StackPanel>
|
||||
</controls:SettingsExpander.Description>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button
|
||||
x:Name="AddDefaultVariableSystemBtn"
|
||||
x:Uid="AddDefaultVariableSystemBtn"
|
||||
Width="40"
|
||||
Height="36"
|
||||
Click="AddDefaultVariableBtn_Click"
|
||||
CommandParameter="{x:Bind ViewModel.SystemDefaultSet}"
|
||||
Content=""
|
||||
FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
||||
IsEnabled="{x:Bind ViewModel.IsElevated}"
|
||||
Style="{StaticResource SubtleButtonStyle}" />
|
||||
</StackPanel>
|
||||
</controls:SettingsExpander>
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
@@ -289,6 +315,39 @@
|
||||
</Grid>
|
||||
</Grid>
|
||||
|
||||
|
||||
<ContentDialog
|
||||
x:Name="AddDefaultVariableDialog"
|
||||
x:Uid="AddDefaultVariableDialog"
|
||||
IsPrimaryButtonEnabled="{Binding Valid, Mode=OneWay}"
|
||||
IsSecondaryButtonEnabled="True"
|
||||
PrimaryButtonStyle="{StaticResource AccentButtonStyle}">
|
||||
<ContentDialog.DataContext>
|
||||
<models:Variable />
|
||||
</ContentDialog.DataContext>
|
||||
<ScrollViewer>
|
||||
<StackPanel
|
||||
MinWidth="320"
|
||||
HorizontalAlignment="Stretch"
|
||||
Spacing="12">
|
||||
<TextBox
|
||||
x:Uid="AddDefaultVariableNameTxtBox"
|
||||
IsSpellCheckEnabled="False"
|
||||
Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<TextBox
|
||||
x:Uid="AddDefaultVariableValueTxtBox"
|
||||
AcceptsReturn="False"
|
||||
IsSpellCheckEnabled="False"
|
||||
ScrollViewer.IsVerticalRailEnabled="True"
|
||||
ScrollViewer.VerticalScrollBarVisibility="Visible"
|
||||
ScrollViewer.VerticalScrollMode="Enabled"
|
||||
Text="{Binding Values, Mode=TwoWay}"
|
||||
TextWrapping="Wrap" />
|
||||
</StackPanel>
|
||||
</ScrollViewer>
|
||||
</ContentDialog>
|
||||
|
||||
|
||||
<ContentDialog
|
||||
x:Name="EditVariableDialog"
|
||||
x:Uid="EditVariableDialog"
|
||||
@@ -304,9 +363,11 @@
|
||||
HorizontalAlignment="Stretch"
|
||||
Spacing="12">
|
||||
<TextBox
|
||||
x:Name="EditVariableDialogNameTxtBox"
|
||||
x:Uid="NameTxtBox"
|
||||
IsSpellCheckEnabled="False"
|
||||
Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
|
||||
Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
TextChanged="EditVariableDialogNameTxtBox_TextChanged" />
|
||||
<TextBox
|
||||
x:Uid="ValueTxtBox"
|
||||
AcceptsReturn="False"
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
@@ -28,6 +29,8 @@ namespace EnvironmentVariables.Views
|
||||
|
||||
public ICommand AddVariableCommand => new RelayCommand(AddVariable);
|
||||
|
||||
public ICommand AddDefaultVariableCommand => new RelayCommand<DefaultVariablesSet>(AddDefaultVariable);
|
||||
|
||||
public MainPage()
|
||||
{
|
||||
this.InitializeComponent();
|
||||
@@ -131,8 +134,11 @@ namespace EnvironmentVariables.Views
|
||||
{
|
||||
foreach (Variable variable in ExistingVariablesListView.SelectedItems)
|
||||
{
|
||||
var clone = variable.Clone(true);
|
||||
profile.Variables.Add(clone);
|
||||
if (!profile.Variables.Where(x => x.Name == variable.Name).Any())
|
||||
{
|
||||
var clone = variable.Clone(true);
|
||||
profile.Variables.Add(clone);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -143,6 +149,14 @@ namespace EnvironmentVariables.Views
|
||||
AddVariableFlyout.Hide();
|
||||
}
|
||||
|
||||
private void AddDefaultVariable(DefaultVariablesSet set)
|
||||
{
|
||||
var variable = AddDefaultVariableDialog.DataContext as Variable;
|
||||
var type = set.Type;
|
||||
|
||||
ViewModel.AddDefaultVariable(variable, type);
|
||||
}
|
||||
|
||||
private async void Delete_Variable_Click(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
|
||||
{
|
||||
MenuFlyoutItem menuItem = sender as MenuFlyoutItem;
|
||||
@@ -170,15 +184,17 @@ namespace EnvironmentVariables.Views
|
||||
private void AddNewVariableName_TextChanged(object sender, TextChangedEventArgs e)
|
||||
{
|
||||
TextBox nameTxtBox = sender as TextBox;
|
||||
var profile = AddProfileDialog.DataContext as ProfileVariablesSet;
|
||||
|
||||
if (nameTxtBox != null)
|
||||
{
|
||||
if (nameTxtBox.Text.Length > 0)
|
||||
if (nameTxtBox.Text.Length == 0 || profile.Variables.Where(x => x.Name == nameTxtBox.Text).Any())
|
||||
{
|
||||
ConfirmAddVariableBtn.IsEnabled = true;
|
||||
ConfirmAddVariableBtn.IsEnabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
ConfirmAddVariableBtn.IsEnabled = false;
|
||||
ConfirmAddVariableBtn.IsEnabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -260,5 +276,57 @@ namespace EnvironmentVariables.Views
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async Task ShowAddDefaultVariableDialogAsync(DefaultVariablesSet set)
|
||||
{
|
||||
var resourceLoader = Helpers.ResourceLoaderInstance.ResourceLoader;
|
||||
|
||||
AddDefaultVariableDialog.Title = resourceLoader.GetString("AddVariable_Title");
|
||||
AddDefaultVariableDialog.PrimaryButtonText = resourceLoader.GetString("SaveBtn");
|
||||
AddDefaultVariableDialog.SecondaryButtonText = resourceLoader.GetString("CancelBtn");
|
||||
AddDefaultVariableDialog.PrimaryButtonCommand = AddDefaultVariableCommand;
|
||||
AddDefaultVariableDialog.PrimaryButtonCommandParameter = set;
|
||||
|
||||
var variableType = set.Id == VariablesSet.SystemGuid ? VariablesSetType.System : VariablesSetType.User;
|
||||
AddDefaultVariableDialog.DataContext = new Variable(string.Empty, string.Empty, variableType);
|
||||
|
||||
await AddDefaultVariableDialog.ShowAsync();
|
||||
}
|
||||
|
||||
private async void AddDefaultVariableBtn_Click(object sender, Microsoft.UI.Xaml.RoutedEventArgs e)
|
||||
{
|
||||
var button = sender as Button;
|
||||
var defaultVariableSet = button.CommandParameter as DefaultVariablesSet;
|
||||
|
||||
if (defaultVariableSet != null)
|
||||
{
|
||||
await ShowAddDefaultVariableDialogAsync(defaultVariableSet);
|
||||
}
|
||||
}
|
||||
|
||||
private void EditVariableDialogNameTxtBox_TextChanged(object sender, TextChangedEventArgs e)
|
||||
{
|
||||
var variable = EditVariableDialog.DataContext as Variable;
|
||||
var settingsCard = EditVariableDialog.PrimaryButtonCommandParameter as SettingsCard;
|
||||
var variableSet = settingsCard.DataContext as VariablesSet;
|
||||
|
||||
if (variableSet == null)
|
||||
{
|
||||
// default set
|
||||
variableSet = variable.ParentType == VariablesSetType.User ? ViewModel.UserDefaultSet : ViewModel.SystemDefaultSet;
|
||||
}
|
||||
|
||||
if (variableSet != null)
|
||||
{
|
||||
if (variableSet.Variables.Where(x => x.Name == EditVariableDialogNameTxtBox.Text).Any() || !variable.Valid)
|
||||
{
|
||||
EditVariableDialog.IsPrimaryButtonEnabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
EditVariableDialog.IsPrimaryButtonEnabled = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,6 +230,9 @@
|
||||
<data name="StateNotUpToDateEnvironmentMessageReceivedMsg" xml:space="preserve">
|
||||
<value>Variables have been modified. Reload to get the latest changes.</value>
|
||||
</data>
|
||||
<data name="AddVariable_Title" xml:space="preserve">
|
||||
<value>Add variable</value>
|
||||
</data>
|
||||
<data name="Delete_Variable_Description" xml:space="preserve">
|
||||
<value>Are you sure you want to delete this variable?</value>
|
||||
</data>
|
||||
|
||||
@@ -136,6 +136,22 @@ namespace EnvironmentVariables.ViewModels
|
||||
AppliedVariables = new ObservableCollection<Variable>(variables);
|
||||
}
|
||||
|
||||
internal void AddDefaultVariable(Variable variable, VariablesSetType type)
|
||||
{
|
||||
if (type == VariablesSetType.User)
|
||||
{
|
||||
UserDefaultSet.Variables.Add(variable);
|
||||
UserDefaultSet.Variables = new ObservableCollection<Variable>(UserDefaultSet.Variables.OrderBy(x => x.Name).ToList());
|
||||
}
|
||||
else if (type == VariablesSetType.System)
|
||||
{
|
||||
SystemDefaultSet.Variables.Add(variable);
|
||||
SystemDefaultSet.Variables = new ObservableCollection<Variable>(SystemDefaultSet.Variables.OrderBy(x => x.Name).ToList());
|
||||
}
|
||||
|
||||
EnvironmentVariablesHelper.SetVariable(variable);
|
||||
}
|
||||
|
||||
internal void EditVariable(Variable original, Variable edited, ProfileVariablesSet variablesSet)
|
||||
{
|
||||
bool propagateChange = variablesSet == null /* not a profile */ || variablesSet.Id.Equals(AppliedProfile?.Id);
|
||||
|
||||
Reference in New Issue
Block a user